BTP

BTP 서비스 인스턴스 vs 바인딩 — 뭐가 다를까 #shorts #SAP #BTP

▶ YouTube에서 보기

서비스 인스턴스와 서비스 바인딩의 차이

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

아직 댓글이 없습니다.