OCI 준수 전략 선택

이 페이지에서는 마이그레이션해야 하는 Cloud Foundry 빌드 프로세스를 간략히 설명하고, OCI 호환 컨테이너를 빌드하는 프로세스로 마이그레이션할 수 있는 다양한 방법을 설명합니다.

Cloud Foundry 빌드 프로세스 개요

애플리케이션이 Cloud Foundry로 푸시되면 소스 코드가 Cloud Foundry v2 빌드팩에서 소스 코드를 컴파일되는 빌드 단계를 거칩니다.

Cloud Foundry 빌드 프로세스의 출력은 droplet이라고 하는 실행 가능한 보관 파일을 만듭니다. Droplet은 Cloud Run에서 컨테이너를 실행하기 위한 Open Container Initiative(OCI) 사양과 직접 호환되지 않습니다.

Cloud Foundry에서 Cloud Run으로 애플리케이션을 마이그레이션할 때는 업계 표준 OCI 이미지(Docker 이미지라고도 함)를 생성하도록 애플리케이션 빌드 프로세스를 변경해야 합니다.

Cloud Foundry Droplet이 생성되는 방법을 설명하는 다이어그램

OCI 규정 준수 이미지를 달성하기 위한 전략

OCI 호환 컨테이너를 빌드하기 위해 선택할 수 있는 3가지 마이그레이션 전략이 있습니다.

Cloud Foundry 애플리케이션 수정(리프트 앤 시프트)

Cloud Foundry 생태계의 핵심 구성요소(v2 Buildpacks, Stemcells 등)는 오픈소스입니다. 즉, 핵심 빌드 구성요소를 'Docker화'하여 새로운 OCI 규정 준수 이미지를 만들 수 있도록 가이드에 따라 애플리케이션 컨테이너화 프로세스를 다시 만들 수 있습니다.

장점:

  • 최소한의 애플리케이션 리팩터링과 맞춤설정이 필요합니다.
  • 이 프로세스는 모든 애플리케이션 인스턴스에 대해 반복 가능합니다.

단점:

  • 애플리케이션 컨테이너를 빌드하기 위한 파이프라인은 자체 관리형입니다.
  • 이전 Cloud Foundry 구성요소는 유지보수 및 지원을 줄입니다.
  • 다음과 같이 지속적으로 보안 유지보수 비용이 발생합니다.
    • 빌드 구성요소를 정기적으로 다시 빌드하여 보안 패치를 받습니다.
    • '도커화된' 애플리케이션을 정기적으로 다시 빌드하여 재빌드된 빌드 구성요소의 보안 업데이트를 가져옵니다.

Cloud Native Buildpack 사용

Cloud Native Buildpack(CNB) 사양은 빌드팩 생태계를 현대화하고 통합하기 위해 생성되었습니다. CNB 사양과 호환되는 빌더는 개방형 표준을 따르고 OCI 호환 이미지를 만듭니다. 3개의 일반적인 CNB 제공업체가 있습니다.

장점:

  • 빌드팩 유지보수 담당자 및 플랫폼 제공업체가 빌드팩 유지보수를 담당합니다.
  • 빌드팩은 애플리케이션 컨테이너를 다시 빌드하지 않고도 빠른 보안 업데이트를 위해 새 이미지에서 컨테이너를 다시 기준으로 삼도록 지원합니다.
  • 빌드팩은 이식 가능한 OCI 이미지를 생성합니다.
  • CNB 프로젝트는 Cloud Native Computing Foundation(CNCF)에서 진행되고 유지관리자 및 참여자로 이루어진 활동적인 커뮤니티를 갖고 있습니다.

단점:

  • v2 및 v3 빌드팩 간의 기능 및 구성 격차
  • 자바 CNB 빌드팩에서는 Java v2 빌드팩에 사용자 대신 설치된 프레임워크와 통합을 사용할 수 없습니다.

자체 관리형 Dockerfile 사용

완전히 새로운 Dockerfile을 작성하여 애플리케이션을 컨테이너화할 수 있습니다. Cloud Run에서 허용하는 컨테이너 이미지에 대한 자세한 내용은 컨테이너 빌드를 참조하세요.

장점:

  • 애플리케이션을 유연하게 설계할 수 있습니다.
  • 회사의 기존 컨테이너 도구 및 빌드 전략을 활용합니다.

단점:

  • 애플리케이션마다 Docker화 및 커스텀 구성을 수행해야 하므로 디버깅 및 재작성에 시간이 걸릴 수 있습니다.
  • 여러 팀의 구현을 표준화하기가 어렵습니다.
  • 이미지를 패치하려면 전체 재빌드 및 재배포가 필요합니다.

권장사항

리소스가 제한적이고 가능한 한 많은 애플리케이션을 이동하려는 팀은 먼저 Cloud Foundry를 수정하기 위한 리프트 앤 시프트 전략을 고려해야 합니다. 애플리케이션이 OCI 호환 이미지로 현대화되면 Cloud Native Buildpack 또는 자체 관리형 Dockerfile을 사용하는 것이 좋습니다.

즉시 마이그레이션할 수 있는 팀은 Cloud Native Buildpack을 사용한 후 환경에 대한 높은 수준의 제어가 필요한 경우 자체 관리형 Dockerfile로 이동해야 합니다.

다음 단계