BTP

BTP 배포 90%가 mta.yaml 실수 — MTA 핵심 #shorts #SAP #BTP

▶ YouTube에서 보기

mta.yaml이란 무엇인가

MTA(Multi-Target Application)는 SAP BTP에 복잡한 애플리케이션을 하나의 배포 단위로 패키징하는 방식입니다. mta.yaml 파일이 전체 배포 구성을 정의합니다. 서비스 인스턴스 생성, 앱 바인딩, 환경 변수, 빌드 파라미터가 모두 이 파일 하나에 담깁니다. 배포 실패의 90%는 mta.yaml의 잘못된 구성에서 시작됩니다.

mta.yaml 기본 구조

_schema-version: '3.1'
ID: com.mycompany.salesapp
version: 1.0.0
description: Sales Application

parameters:
  enable-parallel-deployments: true

build-parameters:
  before-all:
    - builder: custom
      commands:
        - npx cds build --production

modules:
  - name: salesapp-srv
    type: nodejs
    path: gen/srv
    parameters:
      buildpack: nodejs_buildpack
      memory: 512M
      disk-quota: 1024M
    requires:
      - name: salesapp-db
      - name: salesapp-xsuaa
      - name: salesapp-destination
    provides:
      - name: srv-api
        properties:
          srv-url: ${default-url}

  - name: salesapp-db-deployer
    type: hdb
    path: gen/db
    parameters:
      buildpack: nodejs_buildpack
    requires:
      - name: salesapp-db

  - name: salesapp-approuter
    type: approuter.nodejs
    path: approuter
    parameters:
      memory: 256M
    requires:
      - name: salesapp-xsuaa
      - name: srv-api
        group: destinations
        properties:
          name: srv-api
          url: ~{srv-url}
          forwardAuthToken: true

resources:
  - name: salesapp-db
    type: com.sap.xs.hdi-container
    parameters:
      service: hana
      service-plan: hdi-shared

  - name: salesapp-xsuaa
    type: org.cloudfoundry.managed-service
    parameters:
      service: xsuaa
      service-plan: application
      path: ./xs-security.json

  - name: salesapp-destination
    type: org.cloudfoundry.managed-service
    parameters:
      service: destination
      service-plan: lite

자주 발생하는 실수 1: requires/provides 연결 오류

# 잘못된 패턴: provides에서 선언한 이름과 requires에서 쓰는 이름 불일치
modules:
  - name: srv
    provides:
      - name: srv_api          # 언더스코어 사용
        properties:
          srv-url: ${default-url}

  - name: approuter
    requires:
      - name: srv-api          # 하이픈 사용 — 연결 안 됨!
        group: destinations

# 올바른 패턴: 이름 완전히 일치
modules:
  - name: srv
    provides:
      - name: srv-api          # 하이픈으로 통일
        properties:
          srv-url: ${default-url}

  - name: approuter
    requires:
      - name: srv-api          # 동일하게 하이픈 사용
        group: destinations
        properties:
          name: srv
          url: ~{srv-url}
          forwardAuthToken: true

자주 발생하는 실수 2: HANA 서비스 플랜 오류

# 잘못된 패턴: BTP Trial에서 hdi-shared가 없는 경우
resources:
  - name: salesapp-db
    type: com.sap.xs.hdi-container
    parameters:
      service: hana
      service-plan: hdi-shared    # Trial에서는 schema 플랜

# BTP Trial 환경:
resources:
  - name: salesapp-db
    type: com.sap.xs.hdi-container
    parameters:
      service: hana
      service-plan: schema        # Trial 전용

# 운영 환경:
resources:
  - name: salesapp-db
    type: com.sap.xs.hdi-container
    parameters:
      service: hana
      service-plan: hdi-shared    # 운영 표준

자주 발생하는 실수 3: 빌드 순서 미설정

build-parameters:
  before-all:
    - builder: custom
      commands:
        # CDS 빌드 먼저
        - npx cds build --production
        # Node.js 종속성 설치
        - npm ci --production

modules:
  - name: salesapp-srv
    build-parameters:
      builder: custom
      commands:
        # 모듈별 빌드 (before-all 이후 실행)
        - npm prune --production
      ignore:
        - node_modules/
        - .env
        - "*.test.js"

mta.yaml 검증 명령어

# MTA 빌드 도구 설치
npm install -g mbt

# mta.yaml 문법 검증
mbt validate

# MTA 아카이브 빌드 (배포 전 로컬 테스트)
mbt build -p cf

# 빌드 결과 확인
ls mta_archives/
# → com.mycompany.salesapp_1.0.0.mtar

# CF에 배포
cf deploy mta_archives/com.mycompany.salesapp_1.0.0.mtar

# 배포 로그 확인
cf dmol -i 

멀티 환경 배포: mtaext 파일 활용

# production.mtaext — 운영 환경 전용 오버라이드
_schema-version: '3.1'
extends: com.mycompany.salesapp

modules:
  - name: salesapp-srv
    parameters:
      memory: 1024M    # 운영 환경 메모리 증설

resources:
  - name: salesapp-xsuaa
    parameters:
      config:
        xsappname: salesapp-prod    # 운영 전용 앱 이름

# 배포 시 mtaext 적용
cf deploy salesapp.mtar -e production.mtaext

공식 문서

mta.yaml 전체 문법과 파라미터는 SAP BTP MTA 공식 문서에서 확인하세요.

댓글 0

아직 댓글이 없습니다.