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
아직 댓글이 없습니다.