서비스 인스턴스와 서비스 바인딩의 차이
SAP BTP Cloud Foundry에서 서비스를 사용하는 과정은 두 단계입니다. 먼저 서비스 인스턴스를 만들고, 그 다음 앱에 바인딩합니다. 이 두 개념을 혼동하면 여러 앱이 하나의 인스턴스를 공유해야 하는지, 각각 별도로 만들어야 하는지 판단하기 어렵습니다.
서비스 인스턴스 (Service Instance)
# 서비스 인스턴스 = 서비스의 구체적인 할당 단위
# 예: XSUAA 인스턴스 하나 = 하나의 앱 보안 구성
# 인스턴스 생성
cf create-service xsuaa application salesapp-xsuaa -c xs-security.json
cf create-service hana hdi-shared salesapp-db
cf create-service destination lite salesapp-destination
# 인스턴스는 앱과 독립적으로 존재
# 앱을 삭제해도 인스턴스는 남아있음
cf services
# salesapp-xsuaa xsuaa application create succeeded
# salesapp-db hana hdi-shared create succeeded
서비스 바인딩 (Service Binding)
# 서비스 바인딩 = 인스턴스 + 앱의 연결
# 바인딩 시 자격증명(credentials)이 VCAP_SERVICES에 주입됨
# 앱에 바인딩
cf bind-service salesapp-srv salesapp-xsuaa
cf bind-service salesapp-srv salesapp-db
cf bind-service salesapp-srv salesapp-destination
# 바인딩 확인
cf env salesapp-srv
# VCAP_SERVICES에 xsuaa, hana, destination 자격증명이 JSON으로 포함됨
# 앱 재시작으로 자격증명 적용
cf restart salesapp-srv
하나의 인스턴스를 여러 앱에서 공유
# 시나리오: 동일 HANA DB를 백엔드 서버 + 데이터 로더가 공유
cf create-service hana hdi-shared shared-db # 인스턴스 1개
cf bind-service salesapp-srv shared-db # 바인딩 1
cf bind-service salesapp-db-deployer shared-db # 바인딩 2
# 두 앱이 동일한 DB 인스턴스에 연결됨
# 각 바인딩은 별도의 자격증명 세트를 받을 수 있음
Service Key — 앱 없이 서비스 접근
# 로컬 개발 또는 외부 툴에서 서비스 접근 시
# 앱 바인딩 대신 Service Key 사용
cf create-service-key salesapp-db local-dev-key
# Service Key 내용 확인
cf service-key salesapp-db local-dev-key
# {
# "host": "abc123.hana.ondemand.com",
# "port": "443",
# "user": "USER_abc123",
# "password": "...",
# "schema": "...",
# ...
# }
# 로컬 .env에 추가하여 개발
# VCAP_SERVICES={"hana":[{"credentials":{...위 내용...}}]}
mta.yaml에서 인스턴스와 바인딩 설정
modules:
- name: salesapp-srv
requires:
- name: salesapp-xsuaa # 바인딩 선언
- name: salesapp-db # 바인딩 선언
- name: salesapp-destination # 바인딩 선언
resources:
# 서비스 인스턴스 선언
- name: salesapp-xsuaa
type: org.cloudfoundry.managed-service
parameters:
service: xsuaa
service-plan: application
path: ./xs-security.json
- name: salesapp-db
type: com.sap.xs.hdi-container
parameters:
service: hana
service-plan: hdi-shared
- name: salesapp-destination
type: org.cloudfoundry.managed-service
parameters:
service: destination
service-plan: lite
기존 인스턴스 재사용 (shared-service)
# 기존에 생성된 인스턴스를 mta.yaml에서 참조 (새로 만들지 않음)
resources:
- name: existing-hana-db
type: org.cloudfoundry.existing-service # 기존 인스턴스 참조
parameters:
service-name: company-shared-hana # 이미 존재하는 인스턴스 이름
핵심 차이 요약
- 서비스 인스턴스: 서비스 자체의 할당. 앱과 독립적. 하나의 인스턴스를 여러 앱이 공유 가능.
- 서비스 바인딩: 인스턴스와 앱의 연결. 바인딩 시 자격증명이 VCAP_SERVICES에 주입.
- Service Key: 앱 없이 서비스에 접근하는 자격증명 세트. 로컬 개발, 외부 툴에서 사용.
공식 문서
BTP 서비스 인스턴스와 바인딩 관리는 SAP BTP 공식 문서에서 확인하세요.
댓글 0
아직 댓글이 없습니다.