SAP BTP API Management 입문 — API Proxy, Policy, Product로 API 라이프사이클 관리하기



SAP BTP API Management 입문 — API Proxy, Policy, Product로 API 라이프사이클 관리하기
1. 개요 및 학습 목표
SAP BTP Integration Suite의 API Management 기능은 기업 내외부 API를 체계적으로 생성, 보호, 배포, 분석하는 통합 플랫폼입니다. 백엔드 시스템의 OData 서비스를 외부에 안전하게 노출하고, 트래픽을 제어하며, 개발자 포털을 통해 API를 소비할 수 있도록 지원합니다. 이 튜토리얼에서는 API Provider부터 Product까지 전체 라이프사이클을 실습합니다.
학습 목표 체크리스트:
- API Provider를 구성하여 SAP 백엔드 시스템과 연결할 수 있다
- API Proxy를 생성하고 OData 서비스를 외부에 노출할 수 있다
- Spike Arrest, Verify API Key, CORS 등 핵심 정책을 적용할 수 있다
- API Product를 만들어 Developer Hub에 게시하고, Analytics로 사용량을 모니터링할 수 있다
2. 선수 지식
이 튜토리얼을 따라 하려면 다음 사항에 대한 기본적인 이해가 필요합니다.
- SAP BTP 계정 구조 (Global Account, Subaccount, Space) 기초
- OData 서비스의 기본 개념 (Entity Set, Service URL)
- RESTful API 호출 경험 (Postman, cURL 등)
- XML 기본 문법 (Policy 정의에 사용)
3. 환경 / 버전 / 준비물
| 항목 | 상세 |
|---|---|
| 플랫폼 | SAP Business Technology Platform (BTP) |
| 서비스 | SAP Integration Suite — API Management capability (2026 Q1 기준) |
| 에디션 | Integration Suite 무료 티어(Free Tier) 또는 CPEA/PAYG 라이선스 |
| 백엔드 테스트 | SAP Gateway Demo System ES5 (sapes5.sapdevcenter.com) |
| 도구 | 웹 브라우저, Postman 또는 cURL, SAP BTP Cockpit 접근 권한 |
사전 준비: Integration Suite 구독을 활성화하고, API Management capability를 켠 상태여야 합니다. 아직 설정하지 않았다면 SAP 공식 튜토리얼 "Set Up API Management from Integration Suite"를 먼저 완료하세요.
4. 핵심 개념
API Management의 구조를 커피 프랜차이즈에 비유하면 이해하기 쉽습니다.
API Provider는 원두 농장(백엔드 시스템)과의 계약서입니다. 어느 농장에서, 어떤 방식으로 원두를 받을지 정의합니다.
API Proxy는 매장의 바리스타입니다. 원두(데이터)를 받아 고객이 원하는 형태로 가공하고, 주문 규칙(정책)을 적용합니다.
API Product는 메뉴판입니다. 여러 음료(프록시)를 묶어 고객(개발자)에게 제공합니다.
Developer Hub는 프랜차이즈 본사 웹사이트입니다. 메뉴판을 열람하고, 가맹 신청(구독)하고, 주문 현황(Analytics)을 확인합니다.
5대 인프라 구성요소:
- API Runtime — API Proxy가 실제로 실행되는 게이트웨이 환경. 요청 수신, 정책 실행, 백엔드 전달을 처리합니다.
- API Portal — 관리자가 Provider, Proxy, Product, Policy를 구성하는 관리 콘솔입니다.
- Developer Hub — 외부/내부 개발자가 API를 탐색하고 구독하며, 코드 스니펫과 문서를 확인하는 셀프서비스 포털입니다.
- API Analytics — 호출 수, 응답 시간, 오류율 등 사용량 지표를 대시보드로 제공합니다.
- API Designer — OpenAPI Specification 기반으로 API를 시각적으로 설계하는 도구입니다.
이 5가지 구성요소가 연동되어 API의 설계 → 구현 → 배포 → 운영 → 폐기까지 전체 라이프사이클을 관리합니다. Policy는 30가지 이상의 유형이 제공되며, 트래픽 관리, 보안, 메시지 변환 등의 카테고리로 분류됩니다.
5. 실전 코드 3단계
1단계: API Provider + API Proxy 생성 (OData 서비스 연결)
먼저 백엔드 시스템과의 연결을 추상화하는 API Provider를 만들고, 이를 기반으로 API Proxy를 생성합니다.
API Provider 생성: Integration Suite → Configure → API Providers → Create로 이동합니다.
{
"name": "ES5_Gateway",
"description": "SAP Gateway Demo System ES5 연결",
"host": "sapes5.sapdevcenter.com",
"port": 443,
"useSSL": true,
"trustStore": "default",
"authType": "Basic",
"userName": "YOUR_ES5_USERNAME",
"pathPrefix": "/sap/opu/odata/iwbep"
}
위 설정에서 host와 port는 백엔드 시스템의 실제 엔드포인트입니다. 인증 방식은 Basic, OAuth, Client Certificate 중 백엔드 환경에 맞게 선택합니다.
API Proxy 생성: Develop → APIs → Create로 이동하여 방금 만든 Provider를 선택합니다.
{
"name": "ProductCatalog_v1",
"title": "Product Catalog API v1",
"description": "ES5 GWSAMPLE_BASIC 서비스의 ProductSet 노출",
"apiProvider": "ES5_Gateway",
"serviceType": "OData",
"servicePath": "/GWSAMPLE_BASIC/ProductSet",
"virtualHost": "https://<your-api-proxy-host>.apimanagement.hana.ondemand.com",
"basePath": "/productcatalog/v1"
}
생성 후 반드시 Deploy 버튼을 클릭해야 API Runtime에 반영됩니다. 배포가 완료되면 아래처럼 테스트할 수 있습니다.
// cURL 테스트
// 배포 후 Proxy URL로 OData 호출 확인
// GET https://<proxy-host>/productcatalog/v1/ProductSet?$top=5&$format=json
fetch("https://<proxy-host>/productcatalog/v1/ProductSet?$top=5&$format=json", {
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.json())
.then(data => {
console.log("Products:", data.d.results);
data.d.results.forEach(p => {
console.log(`${p.ProductID}: ${p.Name} - ${p.Price} ${p.CurrencyCode}`);
});
})
.catch(err => console.error("API 호출 실패:", err));
2단계: Policy 적용 (Spike Arrest, Verify API Key, CORS)
배포된 Proxy를 선택하고 Policies 탭에서 정책을 추가합니다. 정책은 ProxyEndpoint.PreFlow(요청 수신 즉시), TargetEndpoint.PreFlow(백엔드 전달 직전), Subflows(조건부 실행) 등의 위치에 적용할 수 있습니다.
(1) Spike Arrest — 급격한 트래픽 증가 방지:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SpikeArrest async="false" continueOnError="false" enabled="true"
xmlns="http://www.sap.com/apimgmt">
<!-- 초당 최대 10건으로 제한 -->
<Rate>10ps</Rate>
<!-- 분 단위 설정: 30pm (분당 30건) -->
<Identifier ref="request.header.X-Client-ID"/>
</SpikeArrest>
Rate 값에서 ps는 per-second, pm은 per-minute입니다. Identifier를 지정하면 클라이언트별로 독립적인 카운터가 적용됩니다. 이 정책은 일반적으로 ProxyEndpoint → PreFlow → Request에 배치합니다.
(2) Verify API Key — API 키 검증:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<VerifyAPIKey async="false" continueOnError="false" enabled="true"
xmlns="http://www.sap.com/apimgmt">
<!-- 클라이언트가 request header에 APIKey를 포함해야 함 -->
<APIKey ref="request.header.APIKey"/>
</VerifyAPIKey>
이 정책이 활성화되면 모든 요청에 APIKey 헤더가 필수가 됩니다. API Key는 Developer Hub에서 앱을 등록하면 자동 발급됩니다. Spike Arrest 다음에 배치하여, 과도한 트래픽을 먼저 차단한 뒤 키 검증을 수행하는 것이 일반적인 패턴입니다.
(3) CORS — 크로스 오리진 요청 허용:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CORS async="false" continueOnError="false" enabled="true"
xmlns="http://www.sap.com/apimgmt">
<AllowOrigins>https://myapp.example.com, https://dev.example.com</AllowOrigins>
<AllowHeaders>APIKey, Content-Type, Accept, Authorization</AllowHeaders>
<AllowMethods>GET, POST, PUT, DELETE, OPTIONS</AllowMethods>
<MaxAge>3600</MaxAge>
</CORS>
프론트엔드 웹 애플리케이션에서 API를 직접 호출해야 하는 경우 CORS 정책은 필수입니다. AllowOrigins에 *를 사용하면 모든 도메인을 허용하지만, 프로덕션 환경에서는 허용할 도메인을 명시적으로 지정하는 것이 권장됩니다.
모든 정책을 추가한 후 Update → Deploy를 실행하여 변경사항을 반영합니다.
3단계: API Product + Developer Hub + Analytics + 수익화
API Product 생성: Develop → Products → Create에서 하나 이상의 API Proxy를 묶어 제품으로 구성합니다.
{
"name": "ES5_Standard_Plan",
"title": "ES5 Standard Plan",
"description": "GWSAMPLE_BASIC 기반 표준 API 패키지",
"apiProxies": [
"ProductCatalog_v1"
],
"quotaCount": 1000,
"quotaInterval": 1,
"quotaTimeUnit": "day",
"scope": "Public",
"approvalRequired": true
}
Product 레벨에서 Quota를 설정하면 구독자에게 일/주/월 단위 호출 한도를 부여할 수 있습니다. approvalRequired를 true로 설정하면 관리자 승인 후 구독이 활성화됩니다.
Developer Hub 게시: Product를 생성하면 Developer Hub에 자동으로 노출됩니다. 개발자는 Developer Hub에서 다음 작업을 수행할 수 있습니다.
- API Product 목록 탐색 및 상세 문서 확인
- Application 등록 후 API Key 발급
- 내장 콘솔에서 API 테스트 호출
- 각 언어별(JavaScript, Java, Python 등) 코드 스니펫 확인
Analytics 활용: API Portal → Analyze 탭에서 다양한 사용량 지표를 모니터링합니다.
// Analytics에서 확인 가능한 주요 지표 예시
{
"metrics": {
"totalCalls": "일별/주별/월별 총 API 호출 수",
"responseTime": "평균 응답 시간 (ms)",
"errorRate": "4xx/5xx 오류 비율",
"topConsumers": "호출량 상위 앱/개발자",
"apiLatency": "API Proxy 처리 시간 vs 백엔드 응답 시간",
"cacheHitRatio": "캐시 적중률"
},
"alerts": {
"errorSpike": "오류율 임계값 초과 시 알림",
"quotaThreshold": "Quota 80% 소진 시 알림"
}
}
수익화 구성: API Management에서는 Rate Plan을 통해 API 사용량 기반 과금 체계를 설정할 수 있습니다. 예를 들어 무료 티어(일 100건), Standard(일 1,000건, 월 $10), Enterprise(무제한, 월 $100) 같은 다단계 요금제를 구성하고, Developer Hub에서 개발자가 원하는 플랜을 선택하도록 할 수 있습니다.
6. 흔한 실수 / 트러블슈팅
FAQ 1: API Proxy를 생성했는데 호출하면 404가 반환됩니다.
가장 흔한 원인은 Deploy를 누르지 않은 것입니다. Proxy를 생성하거나 Policy를 수정한 후에는 반드시 Deploy를 실행해야 API Runtime에 반영됩니다. 배포 상태가 "Deployed"인지 확인하세요. 또한 basePath가 다른 Proxy와 중복되지 않는지 점검하세요.
FAQ 2: Verify API Key 정책 적용 후 모든 요청이 401 Unauthorized로 실패합니다.
Developer Hub에서 Application을 등록하고 해당 Product를 구독해야 API Key가 발급됩니다. 발급받은 키를 request.header.APIKey에 포함하여 요청하세요. 헤더 이름은 대소문자를 구분하므로 정확히 APIKey로 전송해야 합니다. 구독 승인이 필요한 Product의 경우, 관리자가 승인을 완료했는지도 확인하세요.
FAQ 3: Spike Arrest 설정값과 실제 제한 동작이 다릅니다.
Spike Arrest는 Rate 값을 균등 분배하여 적용합니다. 예를 들어 10ps는 "정확히 초당 10건"이 아니라 약 100ms 간격으로 1건씩 허용하는 방식입니다. 순간 버스트를 허용하려면 Quota 정책을 함께 사용하는 것이 권장됩니다.
FAQ 4: CORS 정책을 적용했는데도 브라우저에서 CORS 오류가 발생합니다.
Preflight 요청(OPTIONS)이 Verify API Key 정책에 의해 차단되는 경우가 많습니다. OPTIONS 메서드에 대해서는 API Key 검증을 건너뛰도록 조건부 흐름(Conditional Flow)을 설정하거나, CORS 정책을 Verify API Key보다 앞에 배치해야 합니다.
7. 다음 단계 / 관련 주제
이 튜토리얼의 기본 과정을 마쳤다면, 다음 주제로 역량을 확장해 보세요.
- OAuth 2.0 정책: API Key 대신 OAuth 2.0 Client Credentials 또는 Authorization Code Grant를 적용하여 엔터프라이즈 수준의 인증 구현
- Custom Policy (JavaScript/Python): 30가지 이상의 기본 정책으로 해결되지 않는 요구사항에 대해 커스텀 스크립트 정책 작성
- Integration Flow 연동: Cloud Integration의 iFlow 엔드포인트를 API Proxy로 노출하여 통합 시나리오 구현
- API Designer로 API-First 설계: OpenAPI Specification을 먼저 작성한 뒤 Proxy를 자동 생성하는 Design-First 접근법 실습
- Graph(Unified API): SAP Graph를 통해 여러 SAP 시스템의 데이터를 하나의 통합 API로 제공
8. 참고 자료
- SAP Help — What is API Management (help.sap.com)
- SAP Help — Setting Up API Management Capability from Integration Suite (help.sap.com)
- SAP Help — API Management Policies (help.sap.com)
- SAP Developers — API Management Initial Setup Tutorial (developers.sap.com)
- SAP Developers — Getting Started with API Management (developers.sap.com)
- GitHub — SAP BTP Integration Suite Documentation Repository
- SAP Zero2Hero — Working with API Management in Integration Suite
📌 본 게시물은 AI(Claude)가 공개된 자료를 기반으로 자동 생성한 콘텐츠입니다. 기술 내용의 정확성은 SAP 공식 문서 와 교차 확인하시기 바랍니다.
™ SAP, S/4HANA, ABAP, Fiori, SAP BTP 등은 SAP SE 또는 그 계열사의 등록 상표입니다. 본 사이트는 SAP SE 와 공식적인 관련이 없는 비공식 학습 자료 입니다.
📧 저작권 침해 / 오류 / 콘텐츠 신고: btpstacks.com 의 "문의" 메뉴를 이용해주세요.