QnA

BTP 무료 티어 시작 전 실수 5가지 #shorts #SAP #QnA

📖 개요 및 핵심 체크리스트

SAP BTP(Business Technology Platform)를 처음 접하는 개발자 대부분은 "일단 무료 계정부터 만들자"로 시작합니다. 그런데 Trial과 Free Tier의 차이를 모른 채 계정을 만들면, 90일 뒤 작업물이 사라지거나, 리전을 잘못 골라 원하는 서비스를 아예 쓸 수 없는 상황을 겪게 됩니다. 이 글은 처음 BTP 계정을 만드는 개발자가 자주 실수하는 5가지 포인트를 실전 예제와 함께 정리합니다.

  • Trial 계정과 Free Tier 계정의 구조적 차이를 구분할 수 있다
  • 리전(Region) 선택이 왜 되돌리기 어려운 결정인지 이해한다
  • 엔타이틀먼트(Entitlement)를 btp CLI로 직접 확인·할당할 수 있다
  • Cloud Foundry와 Kyma 중 무엇을 먼저 선택할지 판단 기준을 세운다
  • 무료 → 유료 전환 시 데이터·서비스 인스턴스 처리 전략을 세운다

📚 미리 갖추면 좋은 배경

클라우드 플랫폼(AWS, Azure 등)의 계정·리소스 개념을 한 번이라도 접해봤다면 충분합니다. 터미널에서 CLI 명령을 실행해 본 경험이 있으면 실전 예제 섹션을 따라 하기 수월합니다. SAP 제품 사용 경험은 필수가 아니며, 이메일 주소 하나만 있으면 시작할 수 있습니다.

🔧 이 글에서 사용한 환경

이 글의 예제는 2026년 기준 SAP BTP 멀티 클라우드 환경(Cloud Foundry / Kyma)을 대상으로 하며, 다음 도구를 사용합니다.

  • SAP BTP 계정: Trial(hanatrial) 또는 Free Tier 플랜이 포함된 엔터프라이즈 계정(Pay-As-You-Go). 신용카드 등록이 필요한 쪽은 Free Tier이지만, 무료 플랜만 쓰면 일반적으로 과금되지 않습니다.
  • btp CLI: v2.x 이상. SAP Development Tools 사이트에서 OS별 바이너리를 내려받습니다.
  • cf CLI: v8 이상 (Cloud Foundry 환경 사용 시).
  • 브라우저: BTP Cockpit 접속용 (Chrome 권장).

Trial 계정은 account.hanatrial.ondemand.com, 실계정은 account.hana.ondemand.com으로 콕핏 주소 자체가 다르다는 점을 먼저 기억해 두세요.

💡 핵심 개념 이해하기

BTP 계정 구조는 아파트에 비유하면 이해가 빠릅니다. 글로벌 어카운트(Global Account)는 아파트 단지 전체 계약서이고, 서브어카운트(Subaccount)는 개별 호실입니다. 그리고 엔타이틀먼트는 "이 호실에서 수도·전기·가스를 얼마나 쓸 수 있는가"를 정한 배분표입니다. 단지 전체에 수도 사용권이 있어도, 내 호실에 배분(할당)하지 않으면 수도꼭지에서 물이 나오지 않습니다. BTP 입문자가 겪는 "서비스가 목록에 안 보여요" 문제의 80%는 이 배분 단계를 건너뛴 것입니다.

이 구조 위에서 무료로 시작하는 길은 두 갈래입니다.

구분Trial 계정Free Tier (실계정의 무료 플랜)
수명일반적으로 90일 후 만료·삭제기한 없음 (플랜 쿼터 내)
리전제한적 (US East, Singapore 등 일부)플랜별로 다르나 선택 폭이 넓음
유료 전환불가 — 재구축 필요플랜 업데이트로 전환 가능한 서비스 다수
신용카드불필요필요 (무료 플랜만 쓰면 청구 없음이 일반적)

여기서 초보자가 알아야 할 5가지 주의사항을 미리 요약하면 이렇습니다.

  1. Trial은 소모품이다: 만료되면 서브어카운트와 배포물이 함께 삭제됩니다. 학습용 스케치북으로만 쓰세요.
  2. 리전은 사실상 일방통행이다: 서브어카운트의 리전은 생성 후 변경할 수 없어, 옮기려면 새로 만들어 재배포해야 합니다.
  3. Free 플랜에도 쿼터가 있다: 예를 들어 무료 HANA Cloud 인스턴스는 메모리·스토리지 상한이 있고, 미사용 시 자동 정지될 수 있습니다.
  4. CF와 Kyma는 자원 소비가 다르다: Kyma는 쿠버네티스 클러스터라 기동 자체가 무겁습니다. 입문 단계에서는 일반적으로 Cloud Foundry가 가볍고 빠릅니다.
  5. 엔타이틀먼트는 자동이 아니다: 글로벌 어카운트에 있는 서비스라도 서브어카운트에 직접 할당해야 씁니다.

💻 실전 예제 3단계

1단계 — 기본: btp CLI로 계정 구조와 무료 플랜 확인하기

가상의 스타트업 "코나랩스"가 Free Tier로 사내 도구를 만드는 시나리오입니다. 먼저 CLI로 로그인하고, 서브어카운트를 만들고, 무료 플랜을 할당합니다.

# 1) 로그인 (실계정 기준, SSO 브라우저 인증)
btp login --sso

# 2) 글로벌 어카운트에 어떤 서비스·플랜이 있는지 확인
btp list accounts/entitlement --global-account konalabs-ga

# 3) 개발용 서브어카운트 생성 — 리전 선택은 신중히!
btp create accounts/subaccount \
  --display-name "konalabs-dev" \
  --region ap12 \
  --subdomain konalabs-dev

# 4) 무료 플랜(free)을 서브어카운트에 할당 (예: HANA Cloud)
btp assign accounts/entitlement \
  --to-subaccount <서브어카운트-ID> \
  --for-service hana-cloud \
  --plan hana-free \
  --amount 1

핵심은 3번의 --region입니다. ap12(한국 리전) 같은 값은 생성 후 바꿀 수 없으므로, 만들기 전에 SAP Discovery Center에서 내가 쓸 서비스의 free 플랜이 해당 리전에 제공되는지 반드시 교차 확인하세요. 서비스 A는 한국 리전에 있는데 서비스 B는 없어서, 결국 처음부터 다시 만드는 사례가 흔합니다.

2단계 — 실무: Cloud Foundry 환경 구성과 배포 실패 로그 읽기

서브어카운트에 CF 환경을 만들고 첫 앱을 올려봅니다. 무료 쿼터에서 가장 자주 만나는 에러는 메모리 초과입니다.

# CF 환경 인스턴스 생성 (콕핏에서도 가능)
btp create accounts/environment-instance \
  --subaccount <서브어카운트-ID> \
  --environment cloudfoundry \
  --service cloudfoundry \
  --plan free \
  --display-name konalabs-cf \
  --parameters '{"instance_name":"konalabs-org"}'

# cf CLI 로그인 및 배포
cf login -a https://api.cf.ap12.hana.ondemand.com --sso
cf push

배포용 manifest.yml은 무료 쿼터를 고려해 메모리를 명시적으로 낮게 잡는 것이 좋습니다.

applications:
  - name: kona-approval-api
    memory: 256M          # 무료 쿼터 절약 — 기본값(1G)에 의존하지 말 것
    disk_quota: 512M
    instances: 1
    buildpacks:
      - nodejs_buildpack
    env:
      LOG_LEVEL: info

배포가 실패하면 감이 아닌 로그로 원인을 찾습니다.

# 스테이징 실패 원인 확인
cf logs kona-approval-api --recent | grep -i "err\|fail\|OOM"

# 쿼터 부족 여부 확인 (memory_limit vs memory_usage)
cf org konalabs-org
cf quotas

Insufficient resources: memory가 보이면 org 쿼터를 다 쓴 것이므로, 잊고 있던 테스트 앱을 cf apps로 찾아 정리하는 것이 우선입니다.

3단계 — 프로덕션 대비: 쿼터 모니터링과 만료 방어 자동화

Trial 만료나 무료 인스턴스 자동 정지에 당하지 않으려면, 상태 점검을 스크립트로 자동화해 두는 것이 좋습니다. 아래는 매일 아침 무료 리소스 상태를 점검하는 셸 스크립트 예시입니다.

#!/bin/bash
# btp-health-check.sh — 무료 리소스 일일 점검
set -euo pipefail

SUBACCOUNT_ID="d3f4-kona-dev-0001"
REPORT="/tmp/btp_report_$(date +%Y%m%d).txt"

# 1) 환경 인스턴스 상태 (Kyma 클러스터 정지 여부 등)
btp list accounts/environment-instance \
  --subaccount "$SUBACCOUNT_ID" >> "$REPORT"

# 2) 엔타이틀먼트 사용량 — 할당량 대비 소비량 비교
btp list accounts/entitlement \
  --subaccount "$SUBACCOUNT_ID" >> "$REPORT"

# 3) 정지된 HANA Cloud 무료 인스턴스가 있으면 경고
if grep -qi "STOPPED" "$REPORT"; then
  echo "[WARN] 정지된 인스턴스 발견 — 콕핏에서 재기동 필요"
fi

보안 관점에서는 무료 계정이라도 다음을 지키는 것이 권장됩니다. (1) 서브어카운트에 팀원을 초대할 때 Subaccount Administrator가 아닌 최소 권한 역할 컬렉션만 부여, (2) 서비스 키를 Git에 커밋하지 않고 cf bind-service 바인딩으로 주입, (3) Trial에서 검증한 앱을 실계정으로 옮길 때는 서비스 키를 전부 재발급. Trial → 실계정은 "이전"이 아니라 "재배포"라는 점을 전제로, MTA(mta.yaml)로 배포를 코드화해 두면 같은 명령 한 줄로 어느 계정에든 다시 세울 수 있습니다.

⚠️ 자주 만나는 함정과 FAQ

Q1. 서비스 마켓플레이스에 쓰려는 서비스가 안 보여요.

엔타이틀먼트 미할당이 가장 흔한 원인입니다. 콕핏에서 서브어카운트 → Entitlements → Edit로 플랜을 추가하거나, 위 1단계의 btp assign accounts/entitlement를 실행하세요. 글로벌 어카운트 자체에 해당 플랜이 없다면 리전 미지원일 수 있습니다.

Q2. 어제까지 되던 HANA Cloud 무료 인스턴스가 멈췄어요.

무료 플랜 인스턴스는 일반적으로 미사용 시 자동 정지 정책이 적용됩니다. 데이터가 즉시 삭제되는 것은 아니지만, 장기간 방치하면 삭제될 수 있으므로 콕핏에서 재기동하고, 3단계의 점검 스크립트로 상태를 주기적으로 확인하세요.

Q3. Trial 90일이 끝나가는데 만든 앱을 살릴 방법이 있나요?

Trial에서 실계정으로의 자동 이관 기능은 없습니다. 소스 코드와 mta.yaml, 서비스 인스턴스 생성 파라미터(JSON)를 저장소에 보관해 두었다면 실계정에서 cf deploy 한 번으로 재구축할 수 있습니다. DB 데이터는 만료 전에 export 해야 합니다.

Q4. free 플랜을 유료로 바꾸면 인스턴스를 다시 만들어야 하나요?

서비스마다 다릅니다. 상당수 서비스는 cf update-service <인스턴스> -p <유료플랜> 방식의 플랜 업데이트를 지원하지만, 일부는 재생성이 필요합니다. Discovery Center의 서비스별 문서에서 "plan update 지원 여부"를 먼저 확인하는 것이 권장됩니다.

🚀 이어서 살펴볼 주제

계정 기초를 잡았다면 다음 순서로 확장해 보세요. (1) SAP Build / CAP 첫 앱 배포 — 무료 쿼터 안에서 Node.js 기반 CAP 서비스를 CF에 올리는 실전, (2) Kyma 환경 입문 — 쿠버네티스 기반 워크로드가 필요해졌을 때의 선택지, (3) Cloud Identity Services 연동 — 기본 SAP ID 서비스에서 커스텀 IdP로 인증을 넘기는 방법, (4) MTA 배포 파이프라인 — 계정 재구축을 두려워하지 않게 만드는 배포 코드화입니다.

📚 더 읽어볼 만한 자료

댓글 0

아직 댓글이 없습니다.