서비스 바인딩 마이그레이션

12단계 앱 원칙을 따르는 일반적인 클라우드 네이티브 앱을 사용하여 코드를 단순화 및 업데이트하고 Cloud Foundry와 Code Engine 버전을 모두 작성해 보겠습니다. 이러한 버전은 마이그레이션 단계 및 배치 측면을 설명하기 위한 예로 사용됩니다.

샘플 앱은 Node.jsJavaScript로 작성되고 Express 웹 프레임워크를 사용하는 일반적인 웹 앱입니다. IBM Cloudant NoSQL 데이터베이스는 앱에 표시되는 데이터를 저장하기 위한 지원 서비스로 사용됩니다. 클라우드 네이티브 12단계 앱의 일반적인 경우와 마찬가지로 샘플 앱은 전체 앱을 구성하는 마이크로서비스 역할을 하는 개별적이고 재사용 가능한 컴포넌트를 기반으로 합니다. 배치된 Node.js 프로그램과 데이터베이스는 모두 스케일링, 개선 또는 독립적으로 교체할 수 있습니다. 컴포넌트는 구성 방식 때문에 함께 작동하며 잘 정의된 API를 사용합니다.

백엔드 데이터베이스 서비스가 있는 단순 클라우드-기본 애플리케이션입니다.
Simple cloud-native app with backend database service.

IBM Cloudant 데이터베이스는 Cloud Foundry 배포된 앱 버전 및 Code Engine 함께 첨부된 리소스로 작동하도록 구성할 수 있습니다. 간단히 하기 위해 솔루션은 이러한 두 개의 컴포넌트로 유지됩니다.

서비스 바인드 작성

이 샘플 애플리케이션에는 컨텐츠를 저장할 Cloudant 데이터베이스가 필요합니다. 환경 변수를 수동으로 삽입하여 Cloudant에 대한 액세스를 구성할 수 있지만, 일반적인 프로세스는 서비스 바인딩를 통해 수행됩니다. 앱과 지원 서비스 간의 관계가 명시적으로 명시되어 있으므로 인증 정보가 작성되어 런타임 환경에 자동으로 삽입됩니다. Cloud Foundry 는 VCAP_SERVICES 오브젝트의 일부로 신임 정보를 제공합니다. Code Engine 는 CE_SERVICES 환경 변수를 통해 이 오브젝트를 모방합니다.

Cloud Foundry Code Engine 애플리케이션은 모두 데이터베이스 서비스에 연결됩니다. Code Engine에 배치된 코드는 Cloud Foundry 앱의 다른 최신 버전으로 간주할 수 있습니다. 동일한 데이터베이스 서비스에 계속 바인드되지만, 다른 방법을 통해 바인드됩니다.

Code Engine 버전의 앱을 서비스에 바인딩하려면 다음과 같이 하세요,

  1. Cloudant 데이터베이스 인스턴스에 액세스하십시오. 인스턴스가 없는 경우 작성하십시오.
  2. 설명적인 이름으로 Cloudant 인스턴스에 대한 서비스 인증 정보(IAM 서비스 키)를 작성하십시오. 앱의 IAM 역할 Manager, Writer 또는 Reader)을 지정합니다. 애플리케이션에 필요한 최소 레벨의 권한이 있는 역할을 선택하십시오.
  3. 기존 신임 정보를 사용하여 서비스를 앱에 바인드하십시오. Code Engine 는 서비스를 바인드할 때 사용자를 위해 신임 정보를 작성할 수 있습니다. 그러나 사용자 고유의 신임 정보를 작성하여 Code Engine와 독립적으로 권한을 추적하고 변경할 수도 있습니다.

데이터베이스 서비스로 Cloudant를 사용하는 이 샘플 앱의 경우 다음 명령을 실행하여 Manager 역할로 서비스 키 Cloudant-CF2CE-Manager를 작성한 후 이를 사용하여 서비스를 바인드하십시오.

ibmcloud resource service-key-create Cloudant-CF2CE-Manager Manager --instance-name Cloudant-CF2CE
ibmcloud ce app bind --name cf2ce-app --service-instance Cloudant-CF2CE --service-credential Cloudant-CF2CE-Manager

Cloud Foundry 앱이 사용자 제공 서비스를 통해 서비스에 연결되는 경우, Code Engine에 대해 시크릿 또는 configmaps 를 사용하는 앱을 작성하십시오. 시크릿 및 구성 맵을 사용하여 서비스 자격 증명을 런타임 환경에 주입하고 Code Engine 프로젝트 내에서 명명된 개체로 관리할 수 있습니다.

코드 마이그레이션

일반적으로 코드 마이그레이션은 간단합니다. 예를 들어 Cloud Foundry 경우 VCAP_SERVICES 환경 변수에서 읽는 대신 Code Engine 경우 CE_SERVICES 코드를 읽어야 합니다. 또한 Cloud Foundry 경우 브로커를 통해 서비스를 제공하는 방식과 Code Engine 경우 IAM 기반 리소스 관리를 통해 서비스를 제공하는 방식에 따라 서비스 이름이 지정되는 방식에 미묘한 차이가 있다는 점에 유의하세요.

프로그래밍 언어에 따라 코드는 코드 라이브러리 또는 모듈을 사용하여 Cloud Foundry 런타임 환경, 로컬에 삽입된 구성("dotenv") 등에 액세스할 수 있습니다. 해당 섹션을 수정해야 합니다.

다음 두 애플리케이션 예제에서 server.js 파일의 코드를 비교하십시오.

애플리케이션 마이그레이션 스테이징

Cloud Foundry에서 Code Engine으로 이동하는 동안 애플리케이션을 작동 중지할 수 없는 경우 중간 단계로 코드 마이그레이션을 수행하는 것을 고려하십시오.

  • 1cloudfoundry_base: 초기 소스로서의 Cloud Foundry 코드 기반입니다. 이 앱은 Cloud Foundry에서만 실행됩니다.
  • 2cf_ce_intermediate_hybrid: Code Engine 배치도 지원하도록 코드를 추가합니다. 이 애플리케이션은 Cloud Foundry 및 Code Engine 모두에서 실행됩니다.
  • 3codeengine_target: 마지막으로, 실제 프로젝트 이주가 완료된 후에 Code Engine전용 코드 베이스로 이동하십시오. 이 애플리케이션은 Code Engine에서만 실행됩니다.

이 접근 방식은 배치 환경과 관계없이 마이그레이션 프로세스 동안 코드 베이스를 계속 유지하거나 향상시킬 수 있기 때문에 유용합니다.

코드 빌드 및 앱 실행

서비스 바인드 설정, 코드 마이그레이션 및 마이그레이션 스테이징 준비를 마쳤으면 이제 코드를 빌드해야 합니다. 첫 번째 마이그레이션 튜토리얼의 단계에 따라 로컬 소스에서 코드를 빌드하십시오. 콘솔을 사용하여 코드를 빌드하려면 코드가 Git 있어야 합니다. 자세한 정보는 소스 코드에서 앱 배치를 참조하십시오.

다음 단계

  1. 마이그레이션을 시작하는 중입니까? 시작하기를 확인하십시오.
  2. Cloud Foundry 용어를 Code Engine과 비교하십시오.
  3. 로컬 빌드 튜토리얼로 Code Engine을 사용해 보십시오.
  4. 서비스 바인딩 마이그레이션(현재 페이지)
  5. 스케일링 및 트래픽 관리에 대해 알아보십시오.
  6. Cloud Foundry 명령에 해당하는 Code Engine 명령을 찾으십시오.
  7. 아직 궁금하신 사항이 있으십니까? Cloud Foundry 애플리케이션을 Code Engine으로 마이그레이션 FAQ를 사용해 보십시오.

기타 정보