개요 및 이 글에서 다룰 것
SAP BTP에서 가장 흔하게 발생하는 운영 장애 중 하나가 Quota 초과입니다. 갑자기 서비스 인스턴스를 만들 수 없거나, 앱 배포가 실패하거나, 라이선스 비용이 예상보다 폭증하는 상황을 사전에 막으려면 Entitlement 구조와 Cockpit 운영, Alert Notification Service(ANS)를 함께 이해해야 합니다. 본 글은 BTP 관리자가 Quota를 사전 모니터링하고 임계치 도달 전에 자동으로 조치할 수 있는 체계를 만드는 것을 목표로 합니다.
- Entitlement / Service Plan / Quota 개념 구분
- Cockpit에서 Subaccount별 Quota 현황 조회
- Alert Notification Service로 80% 임계치 알림 구성
- Entitlement 재분배 및 플랜 업그레이드 절차
- Dev/Test 환경 Quota 회수로 비용 절감
사전 가정
본 가이드를 따라가려면 BTP의 계정 구조(Global Account, Directory, Subaccount)에 대한 기본 이해가 필요합니다. 또한 Cloud Foundry 또는 Kyma 런타임에서 서비스 인스턴스를 생성해 본 경험, BTP Cockpit의 Role Collection(Global Account Administrator, Subaccount Administrator) 권한이 있어야 실습이 가능합니다. JSON 포맷과 REST API 호출 개념을 알고 있으면 Alert Notification 구성을 더 빠르게 진행할 수 있습니다.
환경 / 버전 / 준비물
- SAP BTP 에디션: Enterprise Agreement 또는 Pay-As-You-Go (CPEA 포함 가능)
- Cockpit 버전: 2026년 기준 최신 Cockpit UI (Entitlements 탭 기준)
- 런타임: Cloud Foundry 환경 또는 Kyma 환경
- 권한: Global Account Administrator + Subaccount Administrator
- 서비스: Alert Notification Service (Standard 플랜 권장, Free 플랜으로도 PoC 가능)
- CLI: btp CLI 최신 버전, cf CLI v8 이상
- 알림 채널: 이메일, Microsoft Teams Webhook 또는 Slack Webhook
일반적으로 Production Subaccount는 Standard 이상의 ANS 플랜을 사용하는 것이 권장됩니다. Free 플랜은 월간 알림 건수 제한이 있어 대규모 모니터링에는 적합하지 않을 수 있습니다.
핵심 개념
Entitlement, Service Plan, Quota의 관계
세 개념은 자주 혼용되지만 계층이 다릅니다. 도식으로 표현하면 다음과 같습니다.
Global Account
└─ Entitlement Pool (계약된 총량)
└─ Subaccount A
└─ Service Assignment
└─ Service Plan (예: hana / standard)
└─ Quota (예: 5 instances)
Entitlement는 Global Account가 계약을 통해 보유한 자격의 총량입니다. 마치 회사 전체가 매입한 식권 묶음과 같습니다. Service Plan은 각 서비스가 제공하는 요금/기능 등급이며(예: HANA Cloud의 hana, hana-cloud-trial, application 플랜), Quota는 특정 Subaccount에 배정된 사용 가능 수량입니다. 식권 묶음에서 부서별로 나눠준 식권 매수에 해당합니다.
Quota 초과가 발생하는 시점
Quota는 두 차원에서 카운트됩니다. 첫째는 인스턴스 수 기반(예: 5개 인스턴스까지 생성 가능), 둘째는 용량/시간 기반(예: HANA Cloud의 GB·시간, Build Service의 빌드 분). 인스턴스 한도는 즉시 차단되지만, 용량 기반은 월말 정산에서 오버차지로 청구되는 경우가 일반적이므로 더 위험합니다.
Alert Notification Service의 역할
ANS는 BTP 자체의 이벤트 게이트웨이입니다. Quota, 운영 이벤트, 사용자 정의 메트릭을 Subscription/Condition으로 필터링해 Action(이메일, Webhook, Teams, ServiceNow 등)으로 라우팅합니다. 우리는 BTP 플랫폼이 자체적으로 발행하는 Quota 카테고리 이벤트를 구독하여 80%에서 사전 경고를 받도록 설정합니다.
실전 코드 3단계
1단계 — 기본: Cockpit에서 Quota 조회
가장 먼저 현재 사용량을 시각적으로 확인합니다. Cockpit 경로는 다음과 같습니다.
Global Account
→ Entitlements
→ Entity Assignments # 서브계정별 배정 현황
→ Subaccount 선택
→ Entitlements
→ Service Assignments # 서비스별 quota 사용량
CLI로 동일한 정보를 조회할 수 있습니다.
# 로그인
btp login --url https://cli.btp.cloud.sap
# 글로벌 계정 entitlement 전체 조회
btp list accounts/entitlement --global-account <GA-GUID>
# 특정 subaccount에 할당된 quota 조회
btp list accounts/entitlement \
--subaccount <SUBACCOUNT-GUID>
출력에서 amount(할당량)와 used(사용량)를 비교해 사용률을 계산합니다. 70%를 넘어가는 항목은 노란불, 90%는 빨간불 후보입니다.
2단계 — 실무: Alert Notification으로 80% 알림
BTP 표준 이벤트인 QuotaUsage 카테고리를 구독하는 Subscription을 만듭니다. ANS Dashboard 또는 REST API로 구성할 수 있습니다.
{
"name": "quota-80-percent-warning",
"description": "BTP Quota 80% 도달 시 운영팀 알림",
"conditions": [
{
"propertyKey": "category",
"predicate": "EQUALS",
"propertyValue": "NOTIFICATION"
},
{
"propertyKey": "subject",
"predicate": "CONTAINS",
"propertyValue": "QuotaUsage"
},
{
"propertyKey": "body",
"predicate": "NUMBER_GREATER_THAN",
"propertyValue": "80"
}
],
"actions": [
"email-ops-team",
"teams-webhook-platform"
],
"labels": ["production", "quota"]
}
Action 측에서도 재시도(backoff), Rate Limit, 인증 헤더를 별도로 정의합니다. Teams Webhook 예시는 다음과 같습니다.
{
"name": "teams-webhook-platform",
"type": "WEBHOOK",
"description": "Platform Ops Teams 채널",
"properties": {
"url": "https://outlook.office.com/webhook/...",
"http.method": "POST",
"http.headers.Content-Type": "application/json",
"payload-template": "{\"text\": \"[BTP Quota] ${subject} - ${body}\"}"
}
}
등록 후 ANS Dashboard의 Test 기능으로 가짜 이벤트를 발생시켜 알림 채널이 정상 동작하는지 확인합니다. 운영 환경에서는 80%/90%/95% 3단계 임계치를 분리해 단계별 에스컬레이션을 구성하는 것이 일반적입니다.
3단계 — 프로덕션: 재분배 자동화 & 비용 최적화
알림을 받은 뒤의 대응 절차를 표준화해야 진짜 사고를 막을 수 있습니다. 다음은 btp CLI로 Dev Subaccount의 잉여 Quota를 Prod로 재분배하는 스크립트입니다.
# 1) Dev에서 회수
btp assign accounts/entitlement \
--to-subaccount <DEV-GUID> \
--for-service hana-cloud \
--plan hana \
--amount 0 # 회수
# 2) Prod로 재할당
btp assign accounts/entitlement \
--to-subaccount <PROD-GUID> \
--for-service hana-cloud \
--plan hana \
--amount 8
# 3) 플랜 업그레이드 (예: standard → premium)
btp assign accounts/entitlement \
--to-subaccount <PROD-GUID> \
--for-service application-logs \
--plan premium \
--amount 2
여기에 더해 비용 최적화를 위해 다음 점검을 주기적으로 수행합니다.
- 유휴 인스턴스 삭제:
cf services로 30일간 바인딩 없는 인스턴스 식별 후 정리 - Dev/Test 환경 야간 스케일다운: HANA Cloud는 Stop API로 비업무시간 중지
- 플랜 다운그레이드 검토: Standard에서 Trial/Lite로 회귀 가능한 비핵심 서비스 식별
- 월간 리포트 자동화: Usage Analytics API + Cron Job으로 Excel/CSV 산출
보안 관점에서 btp CLI 토큰은 짧은 만료시간으로 발급하고, CI/CD에서 사용 시 OAuth Client Credentials를 별도 비밀로 관리합니다.
흔한 실수 / 트러블슈팅
FAQ 1. Cockpit에 표시되는 사용량이 실제와 다릅니다
Cockpit의 Quota 표시는 일반적으로 캐시되어 수 분~수 시간 지연될 수 있습니다. 정확한 실시간 수치가 필요하면 Usage Data Management API를 호출하거나, 해당 서비스의 자체 대시보드(HANA Cloud Central, Build Service Logs 등)를 교차 확인하는 것이 권장됩니다.
FAQ 2. Entitlement를 할당했는데 인스턴스 생성이 여전히 실패합니다
두 가지 원인이 흔합니다. 첫째, Subaccount는 받았지만 Cloud Foundry Space 레벨에서 해당 서비스가 활성화되지 않은 경우 — Spaces → Service Marketplace에서 활성화가 필요합니다. 둘째, Directory 레벨에서 분배 모드가 Manual이면 자동으로 흘러내려 가지 않습니다. Automatic Distribution으로 전환하거나 명시적으로 Subaccount에 다시 배정하세요.
FAQ 3. ANS 알림이 오지 않습니다
가장 흔한 원인은 Subscription Condition의 propertyKey 오타입니다. subject, body, category는 대소문자에 민감하지 않지만 predicate 이름은 정확히 일치해야 합니다. 또한 Free 플랜의 월간 한도 초과, Action의 Webhook URL 인증 실패도 자주 발생합니다. ANS Dashboard의 Action 통계 탭에서 Success/Failure 카운트와 마지막 오류 메시지를 확인하세요.
FAQ 4. 플랜 업그레이드 후 기존 인스턴스가 마이그레이션되나요?
대부분 서비스는 플랜 변경 시 새 인스턴스를 만들고 기존 데이터를 마이그레이션해야 하는 경우가 일반적입니다. HANA Cloud처럼 In-place Scale-up을 지원하는 서비스는 예외입니다. 변경 전 서비스별 가이드를 반드시 확인하세요.
다음 단계 / 관련 주제
- Usage Analytics API로 월간 비용 대시보드를 Grafana/SAC와 연동하기
- SAP Cloud ALM에서 BTP 운영 이벤트를 통합 모니터링
- FinOps 거버넌스: Directory 단위로 비용 단위(Cost Center) 매핑
- BTP Setup Automator로 신규 Subaccount의 Entitlement Baseline 자동 적용
- Terraform Provider for BTP로 Entitlement를 IaC로 관리
참고 자료
- help.sap.com — Entitlements and Quotas
- help.sap.com — SAP Alert Notification Service
- help.sap.com — Managing Entitlements Using Cockpit
- help.sap.com — btp CLI Command Reference
- SAP Developers — Configure Entitlements Tutorial
- SAP Community — Alert Notification Service Blogs
핵심 한 줄
BTP Quota 운영의 핵심은 "보이게 만들고(Cockpit), 자동으로 외치게 만들고(ANS 80%), 즉시 재배분(btp CLI)할 수 있는 체계"를 갖추는 것입니다.
댓글 0
아직 댓글이 없습니다.