AWS에서 Google Cloud로 마이그레이션: AWS Lambda에서 Cloud Run으로 마이그레이션

Last reviewed 2024-10-21 UTC

Google Cloud 는 Amazon Web Services(AWS) Lambda에서 Google Cloud로 서버리스 워크로드 마이그레이션을 돕기 위한 도구, 제품, 안내, 전문 서비스를 제공합니다. Google Cloud 는 서버리스 애플리케이션을 개발 및 배포하는 데 사용할 수 있는 여러 서비스를 제공하지만 이 문서에서는 서버리스 런타임 환경인 Cloud Run으로 마이그레이션하는 데 중점을 둡니다. AWS Lambda와 Cloud Run은 자동 리소스 프로비저닝, 클라우드 제공업체별 확장, 사용량 기반 가격 책정 모델과 같은 유사점을 공유합니다.

이 문서는 AWS Lambda에서 Cloud Run으로 서버리스 워크로드를 마이그레이션하는 계획을 설계, 구현, 검증하는 데 도움이 됩니다. 또한 이러한 마이그레이션의 잠재적 이점과 절차를 평가 중인 사용자를 위한 안내도 제공합니다.

이 문서는 AWS에서Google Cloud 로 마이그레이션하는 방법을 다루는 시리즈의 일부로서 이 시리즈에는 다음 문서가 포함됩니다.

비즈니스 로직에 적합한 서버리스 런타임 환경을 선택하기 위해서는 관리형 컨테이너 런타임 환경 선택을 참조하세요. AWS와 Google Cloud 서비스를 포괄적으로 비교하기 위해서는 AWS 및 Azure 서비스와 Google Cloud 서비스 비교를 참조하세요.

Google Cloud로 마이그레이션하기 위해서는 Google Cloud로 마이그레이션: 시작하기에 설명된 마이그레이션 프레임워크를 따르는 것이 좋습니다.

다음 다이어그램은 마이그레이션 과정을 보여줍니다.

4가지 단계로 구성된 마이그레이션 경로

일부 워크로드를 먼저 마이그레이션하고 다른 워크로드는 나중에 마이그레이션하는 방식과 같이 일련의 반복 작업을 통해 원본 환경에서 Google Cloud 로 마이그레이션할 수 있습니다. 개별 마이그레이션을 반복할 때마다 일반 마이그레이션 프레임워크 단계를 수행합니다.

  1. 워크로드와 데이터를 평가하고 탐색합니다.
  2. Google Cloud에서 기반 환경을 계획하고 구축합니다.
  3. 워크로드와 데이터를 Google Cloud로 마이그레이션합니다.
  4. Google Cloud 환경을 최적화합니다.

이 프레임워크의 각 단계에 대한 자세한 내용은 Google Cloud로 마이그레이션: 시작하기를 참조하세요.

효과적인 마이그레이션 계획을 설계하려면 계획의 각 단계를 검증하고 롤백 전략이 있는지 확인하는 것이 좋습니다. 마이그레이션 계획을 검증하려면 Google Cloud로 마이그레이션: 마이그레이션 계획 검증 권장사항을 참조하세요.

서버리스 워크로드를 마이그레이션할 때는 단순히 하나의 클라우드 제공업체에서 다른 클라우드 제공업체로 기능을 이동하는 것 이상을 포함하는 경우가 많습니다. 클라우드 기반 애플리케이션에는 상호 연결된 서비스 망이 사용되기 때문에 AWS에서 Google Cloud 로 마이그레이션하려면 종속된 AWS 서비스를 Google Cloud 서비스로 바꿔야 할 수 있습니다. 예를 들어 Lambda 함수가 Amazon SQS 및 Amazon SNS와 상호작용한다고 가정해보세요. 이 함수를 마이그레이션하려면 비슷한 기능을 얻기 위해 Pub/Sub 및 Cloud Tasks를 채택해야 할 수 있습니다.

또한 마이그레이션은 서버리스 애플리케이션의 아키텍처와 설계 의사결정을 철저하게 검토할 수 있는 좋은 기회입니다. 이러한 검토를 통해 다음과 같은 기회를 발견할 수 있습니다.

  • Google Cloud 기본 제공 기능으로 최적화:Google Cloud 서비스가 고유한 이점을 제공하거나 애플리케이션 요구사항에 더 적합한지 살펴볼 수 있습니다.
  • 아키텍처 단순화: 기능을 통합하거나Google Cloud내에서 서비스를 다르게 사용하여 절차를 간소화할 수 있는지 평가합니다.
  • 비용 효율성 개선: Google Cloud에서 제공되는 인프라에서 리팩터링된 애플리케이션을 실행할 때의 잠재적 비용 차이를 평가합니다.
  • 코드 효율성 개선: 마이그레이션 프로세스에 따라 코드를 리팩터링합니다.

마이그레이션을 전략적으로 계획하세요. 마이그레이션을 단순한 리프트 앤 시프트(수정 없이 시스템을 이동하는 것)로 취급하지 말고, 이 기회를 통해 서버리스 애플리케이션의 전체 설계와 코드 품질을 개선하세요.

원본 환경 평가

평가 단계에서는 원본 환경을 Google Cloud로 마이그레이션하기 위한 요구사항과 종속 항목을 결정합니다.

평가 단계는 마이그레이션의 성공에 매우 중요합니다. 마이그레이션하려는 워크로드, 요구사항, 종속 항목, 현재 환경에 대해 자세히 알고 있어야 합니다. Google Cloud마이그레이션을 성공적으로 계획하고 실행하기 위한 시작점을 이해해야 합니다.

평가 단계는 다음 작업으로 구성됩니다.

  1. 워크로드의 포괄적인 인벤토리를 빌드합니다.
  2. 워크로드의 속성과 종속 항목에 따라 워크로드를 분류합니다.
  3. 팀을 위한 Google Cloud교육과 훈련을 제공합니다.
  4. Google Cloud에 대한 실험을 실행하고 개념 증명을 만듭니다.
  5. 대상 환경의 총 소유 비용(TCO)을 계산합니다.
  6. 워크로드에 적합한 마이그레이션 전략을 선택합니다.
  7. 마이그레이션 도구를 선택합니다.
  8. 마이그레이션 계획 및 타임라인을 정의합니다.
  9. 마이그레이션 계획을 검증합니다.

평가 단계와 이러한 태스크에 대한 자세한 내용은 Google Cloud로 마이그레이션: 워크로드 평가 및 탐색을 참조하세요. 다음 섹션은 해당 문서의 정보를 기반으로 합니다.

AWS Lambda 워크로드 인벤토리 빌드

마이그레이션 범위를 정의하기 위해 인벤토리를 만들고 AWS Lambda 워크로드에 대한 정보를 수집합니다.

AWS Lambda 워크로드 인벤토리를 빌드하려면 AWS API, AWS 개발자 도구, AWS 명령줄 인터페이스 기반의 데이터 수집 메커니즘을 구현하는 것이 좋습니다.

인벤토리를 빌드한 후에는 인벤토리에서 각 AWS Lambda 워크로드에 대한 정보를 수집하는 것이 좋습니다. 각 워크로드에 대해 잠재적 문제를 예상하는 데 도움이 되는 측면에 집중합니다. 또한 Cloud Run으로 마이그레이션하기 전에 워크로드를 분석하여 워크로드 및 해당 종속 항목에 필요할 수 있는 수정 방법을 파악합니다. 먼저 각 AWS Lambda 워크로드의 다음 측면에 대한 데이터를 수집하는 것이 좋습니다.

  • 사용 사례 및 설계
  • 소스 코드 저장소
  • 배포 아티팩트
  • 호출, 트리거, 출력
  • 런타임 및 실행 환경
  • 워크로드 구성
  • 액세스 제어 및 권한
  • 규정 준수 및 규제 요구사항
  • 배포 및 운영 프로세스

사용 사례 및 설계

워크로드의 사용 사례와 설계 관련 정보를 수집하면 적합한 마이그레이션 전략을 식별하는 데 도움이 됩니다. 이 정보는 또한 마이그레이션 전에 워크로드 및 해당 종속 항목을 수정해야 하는지 여부를 파악하는 데 도움이 됩니다. 각 워크로드에 대해 다음을 수행하는 것이 좋습니다.

  • 워크로드가 제공하는 특정 사용 사례를 파악하고, 다른 시스템, 리소스, 프로세스와의 종속 항목을 식별합니다.
  • 워크로드의 설계 및 아키텍처를 분석합니다.
  • 워크로드의 지연 시간 요구사항을 평가합니다.

소스 코드 저장소

AWS Lambda 함수의 소스 코드 인벤토리를 작성하는 것은 AWS Lambda 워크로드를 Cloud Run과 호환되도록 리팩터링해야 하는 경우에 도움이 됩니다. 이러한 인벤토리를 만들기 위해서는 일반적으로 Git와 같은 버전 제어 시스템 또는 GitHub 또는 GitLab과 같은 개발 플랫폼에 저장되는 코드페이스를 추적해야 합니다. 소스 코드 인벤토리는 CI/CD(지속적 통합/지속적 개발) 파이프라인과 같은 DevOps 프로세스에 필수적입니다. Cloud Run으로 마이그레이션할 때 이러한 프로세스도 업데이트해야 하기 때문입니다.

배포 아티팩트

AWS Lambda 워크로드를 리팩터링해야 하는지 여부를 평가할 때는 워크로드에 필요한 배포 아티팩트가 무엇인지도 확인할 필요가 있습니다. 워크로드에 필요한 배포 아키텍처를 확인하려면 다음 정보를 수집하세요.

  • 워크로드를 배포할 배포 패키지 유형
  • 라이브러리 및 기타 종속 항목과 같이 추가 코드가 포함된 모든 AWS Lambda 레이어
  • 워크로드에 사용되는 모든 AWS Lambda 확장 프로그램
  • 버전 및 별칭을 지정하도록 구성한 한정자
  • 배포된 워크로드 버전

호출, 트리거, 출력

AWS Lambda는 트리거와 같은 여러 호출 메커니즘과 동기 호출 및 비동기 호출과 같은 여러 호출 모델을 지원합니다. 각 AWS Lambda 워크로드에 대해 트리거 및 호출과 관련된 다음 정보를 수집하는 것이 좋습니다.

  • 워크로드를 호출하는 트리거 및 이벤트 소스 매핑
  • 워크로드가 동기 및 비동기 호출을 지원하는지 여부
  • 워크로드 URL 및 HTTP(S) 엔드포인트

AWS Lambda 워크로드는 다른 리소스 및 시스템과 상호작용할 수 있습니다. 어떤 리소스가 AWS Lambda 워크로드의 출력을 소비하고 이러한 리소스가 해당 출력을 소비하는 방법을 알아야 합니다. 이러한 정보는 이러한 출력에 의존할 수 있는 다른 시스템 또는 워크로드를 수정해야 하는지 여부를 결정하는 데 도움이 됩니다. 각 AWS Lambda 워크로드에 대해 다른 리소스 및 시스템과 관련된 다음 정보를 수집하는 것이 좋습니다.

  • 워크로드가 이벤트를 전송할 수 있는 대상 리소스
  • 동기 호출을 위한 정보 레코드를 받는 대상
  • 워크로드가 처리하는 이벤트 형식
  • AWS Lambda 워크로드 및 해당 확장 프로그램이 AWS Lambda API 또는 기타 AWS API와 상호작용하는 방법

AWS Lambda 워크로드는 영구 데이터를 저장하고 다른 AWS 서비스와 상호작용함으로써 제대로 작동할 수 있습니다. 각 AWS Lambda 워크로드에 대해 데이터 및 기타 서비스와 관련된 다음 정보를 수집하는 것이 좋습니다.

  • 워크로드가 가상 프라이빗 클라우드(VPC) 또는 기타 비공개 네트워크에 액세스하는지 여부
  • 일시적인 데이터 스토리지 및 Amazon Elastic File System(EFS)을 사용하는 것과 같은 워크로드의 영구 데이터 저장 방법

런타임 및 실행 환경

AWS Lambda는 워크로드에 대해 여러 실행 환경을 지원합니다. AWS Lambda 실행 환경을 Cloud Run 실행 환경과 올바르게 비교하기 위해서는 각 AWS Lambda 워크로드에 대해 다음 항목을 평가하는 것이 좋습니다.

  • 워크로드의 실행 환경
  • 워크로드가 실행되는 컴퓨터 프로세서의 명령 집합 아키텍처

AWS Lambda 워크로드가 언어별 런타임 환경에서 실행될 경우 각 AWS Lambda 워크로드에 대해 다음을 고려하세요.

  • 언어별 런타임 환경의 유형, 버전, 고유 식별자
  • 런타임 환경에 적용한 모든 수정사항

워크로드 구성

AWS Lambda에서 Cloud Run으로 마이그레이션할 때 워크로드를 구성하기 위해서는 각 AWS Lambda 워크로드를 구성한 방법을 평가하는 것이 좋습니다.

각 AWS Lambda 워크로드에 대해 다음 동시 실행 및 확장성 설정에 대한 정보를 수집하세요.

  • 동시 실행 제어
  • 확장성 설정
  • 사용 가능한 메모리 양과 허용되는 최대 실행 시간을 기준으로 하는 워크로드 인스턴스 구성
  • 지연 시간 감소를 위해 AWS Lambda SnapStart, 예약된 동시 실행 또는 프로비저닝된 동시 실행이 워크로드에 사용되는지 여부
  • 사용자가 구성한 환경 변수와 AWS Lambda에 구성되고 워크로드에 사용되는 환경 변수
  • 태그 및 속성 기반 액세스 제어
  • 예외 조건을 처리하는 상태 머신
  • 컨테이너 이미지를 사용하는 배포 패키지를 위한 기본 이미지 및 구성 파일(예: Dockerfile)

액세스 제어 및 권한

평가 중에는 액세스 제어 및 관리 측면에서 AWS Lambda 워크로드와 해당 구성의 보안 요구사항을 평가하는 것이 좋습니다. 이러한 정보는 Google Cloud 환경에서 비슷한 제어를 구현해야 할 때 필수적입니다. 각 워크로드에 대해 다음을 고려하세요.

  • 실행 역할 및 권한
  • 워크로드 및 해당 레이어가 다른 리소스에 액세스하기 위해 사용하는 ID 및 액세스 관리 구성
  • 다른 계정 및 서비스가 워크로드에 액세스하기 위해 사용하는 ID 및 액세스 관리 구성
  • 거버넌스 제어

규정 준수 및 규제 요구사항

각 AWS Lambda 워크로드에 대해 다음을 수행하여 규정 준수 및 규제 요구사항을 파악해야 합니다.

  • 워크로드가 충족해야 하는 규정 준수 및 규제 요구사항을 평가합니다.
  • 워크로드가 해당 요구사항을 현재 충족하는지 확인합니다.
  • 앞으로 충족해야 할 추후 요구사항이 있는지 확인합니다.

규정 준수 및 규제 요구사항은 사용 중인 클라우드 제공업체와 무관할 수 있으며, 이러한 요구사항도 마이그레이션에 영향을 줄 수 있습니다. 예를 들어 데이터 및 네트워크 트래픽이 유럽 연합(EU)과 같은 특정 지역의 경계 내에 머무르도록 보장해야 할 수 있습니다.

배포 및 운영 프로세스 평가

배포 및 운영 프로세스의 작동 방식을 명확하게 이해하는 것이 중요합니다. 이러한 프로세스는 프로덕션 환경과 그 환경에서 실행되는 워크로드를 준비하고 유지관리하는 관행의 중요한 부분입니다.

배포 및 운영 프로세스에서 워크로드가 작동하는 데 필요한 아티팩트를 빌드할 수 있습니다. 따라서 각 아티팩트 유형에 대한 정보를 수집해야 합니다. 예를 들어 아티팩트는 운영체제 패키지, 애플리케이션 배포 패키지, 운영체제 이미지, 컨테이너 이미지 등일 수 있습니다.

아티팩트 유형 외에도 다음 태스크를 완료하는 방법을 고려하세요.

  • 워크로드 개발. 개발팀이 워크로드를 빌드하기 위해 마련한 프로세스를 평가합니다. 예를 들어 개발팀이 워크로드를 어떻게 설계, 코딩, 테스트하는지 평가합니다.
  • 원본 환경에 배포하는 아티팩트 생성. 원본 환경에 워크로드를 배포하기 위해 컨테이너 이미지 또는 운영체제 이미지와 같은 배포 가능한 아티팩트를 생성하거나 소프트웨어를 설치 및 구성하여 서드 파티 운영체제 이미지와 같은 기존 아티팩트를 맞춤설정할 수 있습니다. 이러한 아티팩트를 생성하는 방법에 대한 정보를 수집하면 생성된 아티팩트가Google Cloud배포에 적합한지 확인하는 데 도움이 됩니다.
  • 아티팩트 저장. AWS의 Artifact Registry에 저장하는 아티팩트를 생성하는 경우 Google Cloud 환경에서 아티팩트를 사용할 수 있도록 해야 합니다. 다음과 같은 전략을 사용하면 수행할 수 있습니다.

    • 환경 간 통신 채널 설정: 원본 환경의 아티팩트를 대상Google Cloud 환경에서 연결할 수 있도록 합니다.
    • 아티팩트 빌드 프로세스 리팩터링: 원본 환경과 대상 환경 모두에 아티팩트를 저장할 수 있도록 원본 환경의 마이너 리팩터링을 완료합니다. 이 방식은 대상 Google Cloud환경에서 아티팩트 빌드 프로세스를 구현하기 전에 아티팩트 저장소와 같은 인프라를 빌드하여 마이그레이션을 지원합니다. 이 접근 방식을 직접 구현하거나 통신 채널을 먼저 설정하는 이전의 접근 방식으로 빌드할 수 있습니다.

    원본 환경과 대상 환경 모두에서 아티팩트를 사용할 수 있으면 마이그레이션의 일환으로 대상 Google Cloud 환경에서 아티팩트 빌드 프로세스를 구현하지 않고도 마이그레이션에 집중할 수 있습니다.

  • 코드 스캔 및 서명. 아티팩트 빌드 프로세스의 일부로 코드 스캔을 사용하여 일반적인 취약점과 의도하지 않은 네트워크 노출을 방지하고, 코드 서명을 사용하여 신뢰할 수 있는 코드만 환경에서 실행되도록 할 수 있습니다.

  • 원본 환경에 아티팩트 배포. 배포 가능한 아티팩트를 생성한 후 원본 환경에 배포할 수 있습니다. 각 배포 프로세스를 평가하는 것이 좋습니다. 이 평가는 배포 프로세스가 Google Cloud와 호환되는지 확인하는 데 도움이 됩니다. 또한 프로세스를 리팩터링하는 데 필요한 노력을 파악하는 데도 도움이 됩니다. 예를 들어 배포 프로세스가 원본 환경에서만 작동하는 경우 Google Cloud 환경을 타겟팅하도록 이를 리팩터링해야 할 수 있습니다.

  • 런타임 구성 삽입. 특정 클러스터, 런타임 환경 또는 워크로드 배포에 대한 런타임 구성을 삽입할 수 있습니다. 이 구성으로 환경 변수와 보안 비밀, 사용자 인증 정보, 키와 같은 기타 구성 값이 초기화될 수 있습니다. 런타임 구성 삽입 프로세스가 Google Cloud에서 작동하는지 확인하려면 원본 환경에서 실행되는 워크로드를 구성하는 방법을 평가하는 것이 좋습니다.

  • 로깅, 모니터링, 프로파일링. 원본 환경의 상태, 관심 측정항목, 이러한 프로세스에서 제공하는 데이터 사용 방식을 모니터링하기 위해 마련한 로깅, 모니터링, 프로파일링 프로세스를 평가합니다.

  • 인증. 원본 환경에 대해 인증하는 방법을 평가합니다.

  • 리소스 프로비저닝 및 구성. 원본 환경을 준비하기 위해 리소스를 프로비저닝하고 구성하는 프로세스를 설계하고 구현했을 수 있습니다. 예를 들어 구성 관리 도구와 함께 Terraform을 사용하여 원본 환경에서 리소스를 프로비저닝하고 구성할 수 있습니다.

평가 완료

AWS Lambda 환경에서 인벤토리를 빌드한 후 Google Cloud로 마이그레이션: 워크로드 평가 및 탐색에 설명된 대로 평가 단계의 나머지 활동을 완료하세요.

기반 계획 및 빌드

계획 및 빌드 단계에서는 다음을 수행하도록 인프라를 프로비저닝하고 구성합니다.

  • Google Cloud 환경에서 워크로드를 지원합니다.
  • 원본 환경과 Google Cloud 환경을 연결하여 마이그레이션을 완료합니다.

계획 및 빌드 단계는 다음과 같은 태스크로 구성됩니다.

  1. 리소스 계층 구조를 빌드합니다.
  2. Google Cloud의 Identity and Access Management(IAM)를 구성합니다.
  3. 결제를 설정합니다.
  4. 네트워크 연결을 설정합니다.
  5. 보안을 강화합니다.
  6. 로깅, 모니터링, 알림을 설정합니다.

각 태스크에 대한 자세한 내용은 Google Cloud로 마이그레이션: 기반 계획 및 빌드를 참조하세요.

AWS Lambda 워크로드 마이그레이션

AWS Lambda에서 Cloud Run으로 워크로드를 마이그레이션하려면 다음을 수행합니다.

  1. Cloud Run 환경을 설계, 프로비저닝, 구성합니다.
  2. 필요한 경우 Cloud Run과 호환되도록 AWS Lambda 워크로드를 리팩터링합니다.
  3. Cloud Run에서 워크로드를 배포하고 관측하도록 배포 및 운영 프로세스를 리팩터링합니다.
  4. AWS Lambda 워크로드에 필요한 데이터를 마이그레이션합니다.
  5. 기능, 성능, 비용 측면에서 마이그레이션 결과를 검증합니다.

마이그레이션 중에 문제를 방지하고 마이그레이션에 필요한 작업을 추정하려면 AWS Lambda 기능이 비슷한 Cloud Run 기능과 어떻게 다른지 평가하는 것이 좋습니다. AWS Lambda와 Cloud Run 기능은 서로 비교했을 때 비슷하게 보일 수 있습니다. 하지만 두 클라우드 제공업체의 기능 설계와 구현의 차이로 인해 AWS Lambda에서 Cloud Run으로 마이그레이션하는 데 상당한 영향을 줄 수 있습니다. 이러한 차이는 다음 섹션에 표시된 것과 같이 설계 및 리팩터링 의사결정에 모두 영향을 줄 수 있습니다.

Cloud Run 환경 설계, 프로비저닝, 구성

마이그레이션의 첫 번째 단계는 AWS Lambda에서 마이그레이션하려는 워크로드를 지원할 수 있도록 Cloud Run 환경을 설계하는 것입니다.

Cloud Run 환경을 올바르게 설계하려면 각 AWS Lambda 워크로드에 대해 평가 단계 중 수집한 데이터를 사용합니다. 이러한 데이터는 다음을 수행하는 데 도움이 됩니다.

  1. 워크로드를 배포하는 데 올바른 Cloud Run 리소스를 선택합니다.
  2. Cloud Run 리소스 구성을 설계합니다.
  3. Cloud Run 리소스를 프로비저닝하고 구성합니다.

적합한 Cloud Run 리소스 선택

마이그레이션하려는 각 AWS Lambda 워크로드에 대해 워크로드를 배포하는 데 적합한 Cloud Run 리소스를 선택합니다. Cloud Run은 다음과 같은 주요 리소스를 지원합니다.

  • Cloud Run 서비스: 컨테이너화된 런타임 환경을 호스트하고, 고유 엔드포인트를 노출하고, 수요에 따라 기본 인프라를 자동으로 확장하는 리소스입니다.
  • Cloud Run 작업: 하나 이상의 컨테이너를 완료될 때까지 실행하는 리소스입니다.

다음 표에서는 AWS Lambda 리소스가 이러한 주요 Cloud Run 리소스와 어떻게 비교되는지 요약해서 보여줍니다.

AWS Lambda 리소스 Cloud Run 리소스
웹사이트, 웹 애플리케이션, API 및 마이크로서비스, 스트리밍 데이터 처리, 이벤트 기반 아키텍처에 사용되는 것과 같이 이벤트가 발생할 때 트리거되는 AWS Lambda 함수 트리거로 호출할 수 있는 Cloud Run 서비스
백그라운드 태스크 및 일괄 작업 등을 실행하도록 예약된 AWS Lambda 함수 완료될 때까지 실행되는 Cloud Run 작업

Cloud Run은 서비스 및 작업 외에도 이러한 주요 리소스를 확장하는 추가 리소스를 제공합니다. 사용 가능한 모든 Cloud Run 리소스에 대한 자세한 내용은 Cloud Run 리소스 모델을 참조하세요.

Cloud Run 리소스 구성 설계

Cloud Run 리소스를 프로비저닝하고 구성하기 전에 구성을 설계합니다. 리소스 한도 및 요청 제한 시간과 같은 특정 AWS Lambda 구성 옵션은 비슷한 Cloud Run 구성 옵션과 비교할 수 있습니다. 다음 섹션에서는 서비스 트리거와 작업 실행, 리소스 구성, 보안을 위해 Cloud Run에서 제공되는 구성 옵션에 대해 설명합니다. 또한 이 섹션에서는 Cloud Run과 비슷한 AWS Lambda 구성 옵션에 대해 자세히 설명합니다.

Cloud Run 서비스 트리거 및 작업 실행

서비스 트리거와 작업 실행은 AWS Lambda 워크로드를 마이그레이션할 때 고려해야 하는 주요 설계 결정 요소입니다. Cloud Run은 AWS Lambda에 사용되는 이벤트 기반 워크로드를 트리거하고 실행하기 위한 다양한 옵션을 제공합니다. 또한 Cloud Run은 스트리밍 워크로드와 예약 작업에 사용할 수 있는 옵션을 제공합니다.

워크로드를 마이그레이션할 때는 먼저 Cloud Run에서 사용 가능한 트리거와 메커니즘이 무엇인지 파악하는 것이 유용한 경우가 많습니다. 이러한 정보는 Cloud Run의 작동 방식을 이해하는 데 도움이 됩니다. 그런 후 이러한 정보를 통해 AWS Lambda 기능과 비슷한 Cloud Run 기능을 파악하고 워크로드를 리팩터링할 때 사용할 수 있는 Cloud Run 기능이 무엇인지 확인할 수 있습니다.

Cloud Run에서 제공하는 서비스 트리거에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

  • HTTPS 호출: HTTPS 요청을 전송하여 Cloud Run 서비스를 트리거합니다.
  • HTTP/2 호출: HTTP/2 요청을 전송하여 Cloud Run 서비스를 트리거합니다.
  • WebSockets: Cloud Run에서 실행되는 WebSockets 서버에 클라이언트를 연결합니다.
  • gRPC 연결: gRPC를 사용하는 Cloud Run 서비스에 연결합니다.
  • 비동기 호출: Cloud Run 서비스에서 비동기적으로 처리되는 Cloud Tasks를 사용하여 태스크를 큐에 추가합니다.
  • 예약된 호출: Cloud Scheduler를 사용하여 일정에 따라 Cloud Run 서비스를 호출합니다.
  • 이벤트 기반 호출: CloudEvents 형식으로 특정 이벤트 발생 시 Cloud Run 서비스를 호출하는 Eventarc 트리거를 만듭니다.
  • Pub/Sub와 통합: Pub/Sub 푸시(push) 구독에서 Cloud Run 서비스를 호출합니다.
  • Workflows 통합: 워크플로에서 Cloud Run 서비스를 호출합니다.

Cloud Run이 제공하는 작업 실행 메커니즘에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

AWS Lambda 호출 메커니즘과 비슷한 Cloud Run 호출 또는 실행 메커니즘을 파악하는 데 도움을 얻으려면 다음 표를 참조하세요. 프로비저닝해야 하는 각 Cloud Run 리소스에 대해 적합한 호출 또는 실행 메커니즘을 선택해야 합니다.

AWS Lambda 기능 Cloud Run 기능
HTTPS 트리거(함수 URL) HTTPS 호출
HTTP/2 트리거(부분적으로 외부 API 게이트웨이를 사용하여 지원됨) HTTP/2 호출(기본적으로 지원됨)
WebSockets(외부 API 게이트웨이를 사용하여 지원됨) WebSockets(기본적으로 지원됨)
해당 사항 없음(gRPC 연결이 지원되지 않음) gRPC 연결
비동기 호출 Cloud Tasks 통합
예약 호출 Cloud Scheduler 통합
독점 이벤트 형식의 이벤트 기반 트리거 CloudEvents 형식의 이벤트 기반 호출
Amazon SQS 및 Amazon SNS 통합 Pub/Sub 통합
AWS Lambda Step Functions Workflows 통합
Cloud Run 리소스 구성

마이그레이션된 워크로드를 트리거 및 실행하기 위해 결정한 설계 요소를 보완하기 위해 Cloud Run은 런타임 환경의 여러 측면을 미세 조정할 수 있는 여러 구성 옵션을 지원합니다. 이러한 구성 옵션은 리소스 서비스와 작업으로 구성됩니다.

앞에서 설명한 것처럼 먼저 Cloud Run에서 사용 가능한 모든 구성 옵션을 파악함으로써 Cloud Run의 작동 방식을 더 효과적으로 이해할 수 있습니다. 그러면 이러한 이해를 통해 AWS Lambda 기능을 비슷한 Cloud Run 기능과 비교하고 워크로드 리팩터링 방법을 효과적으로 파악할 수 있습니다.

Cloud Run 서비스가 제공하는 구성에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

Cloud Run이 제공하는 작업에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

AWS Lambda 구성 옵션과 비슷한 Cloud Run 구성 옵션을 파악하려면 다음 표를 참조하세요. 프로비저닝해야 하는 각 Cloud Run 리소스에 대해 적합한 구성 옵션을 선택해야 합니다.

AWS Lambda 기능 Cloud Run 기능
프로비저닝된 동시 실행 최소 인스턴스 수
인스턴스당 예약된 동시 실행
(동시 실행 풀은 AWS 계정의 AWS Lambda 함수 간에 공유됨)
서비스당 최대 인스턴스 수
해당 사항 없음(지원되지 않음, 요청이 인스턴스에 일대일로 매핑됨) 인스턴스당 동시 요청 수
해당 사항 없음(메모리 할당에 따라 다름) CPU 할당
확장성 설정 서비스 인스턴스 자동 확장
작업 동시 로드
인스턴스 구성(CPU, 메모리) CPU 및 메모리 한도
최대 실행 시간 서비스 요청 제한 시간
작업 태스크 제한 시간
AWS Lambda SnapStart 시작 CPU 부스트
환경 변수 환경 변수
임시 데이터 스토리지 인메모리 볼륨 마운트
Amazon Elastic File System 연결 NFS 볼륨 마운트
S3 볼륨 마운트는 지원되지 않음 Cloud Storage 볼륨 마운트
AWS Lambda 워크로드의 AWS Secrets Manager 보안 비밀
워크로드 URL 및 HTTP(S) 엔드포인트 자동 할당된 URL
Google Cloud 제품과 Cloud Run 통합
Sticky 세션(외부 부하 분산기 사용) 세션 어피니티
Qualifiers 버전

이전 표에 언급된 기능 외에도 AWS Lambda와 Cloud Run에서 각 실행 환경을 프로비저닝하는 방법의 차이를 고려해야 합니다. AWS Lambda는 각 동시 요청에 대해 단일 인스턴스를 프로비저닝합니다. 하지만 Cloud Run에서는 한 인스턴스가 처리할 수 있는 동시 요청 수를 설정하는 것이 가능합니다. 즉, AWS Lambda의 프로비저닝 동작은 Cloud Run에서 인스턴스당 최대 동시 요청 수를 1로 설정하는 것과 동일합니다. 최대 동시 요청 수를 1보다 크게 설정하면 인스턴스의 CPU와 메모리가 동시 요청에 공유되지만 결제가 한 번만 이뤄지기 때문에 비용을 크게 줄일 수 있습니다. 대부분의 HTTP 프레임워크는 요청을 병렬로 처리하도록 설계되어 있습니다.

Cloud Run 보안 및 액세스 제어

또한 Cloud Run 리소스를 설계할 때는 마이그레이션된 워크로드에 필요한 보안 및 액세스 제어를 결정해야 합니다. Cloud Run은 환경 보안에 도움이 되는 여러 구성 옵션을 지원하며 Cloud Run 워크로드에 맞는 역할과 권한을 설정합니다.

이 섹션에서는 Cloud Run에서 제공되는 보안 및 액세스 제어에 대해 자세히 설명합니다. 이러한 정보는 마이그레이션된 워크로드가 Cloud Run에서 작동하는 방법을 파악하고 이러한 워크로드를 리팩터링할 때 필요할 수 있는 Cloud Run 옵션을 식별하는 데 도움이 됩니다.

Cloud Run이 제공하는 인증 메커니즘에 대한 자세한 내용은 다음 리소스를 참조하세요.

Cloud Run이 제공하는 보안 기능에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

AWS Lambda에서 제공되는 것과 비슷한 Cloud Run 보안 및 액세스 제어를 파악하려면 다음 표를 참조하세요. 프로비저닝해야 하는 각 Cloud Run 리소스에 대해 적합한 액세스 제어 및 보안 기능을 선택해야 합니다.

AWS Lambda 기능 Cloud Run 기능
AWS ID 액세스 및 관리로 액세스 제어 Google CloudIAM으로 액세스 제어
실행 역할 Google Cloud의 IAM 역할
권한 경계 Google Cloud의 IAM 권한 및 커스텀 잠재고객
거버넌스 제어 조직 정책 서비스
코드 서명 Binary Authorization
전체 VPC 액세스 세분화된 VPC 이그레스 액세스 제어

Cloud Run 리소스 프로비저닝 및 구성

워크로드를 배포할 Cloud Run 리소스를 선택한 후 해당 리소스를 프로비저닝하고 구성합니다. Cloud Run 리소스 프로비저닝에 대한 자세한 내용은 다음을 참조하세요.

AWS Lambda 워크로드 리팩터링

AWS Lambda 워크로드를 Cloud Run으로 마이그레이션하려면 이를 리팩터링해야 합니다. 예를 들어 이벤트 기반 워크로드에 Amazon CloudWatch 이벤트가 포함된 트리거가 허용될 경우 CloudEvents 형식으로 이벤트를 수락하도록 워크로드를 리팩터링해야 할 수 있습니다.

각 AWS Lambda 워크로드에 필요한 리팩터링 정도에 영향을 줄 수 있는 몇 가지 요소는 다음과 같습니다.

  • 아키텍처. 아키텍처 측면에서 워크로드 설계 방식을 고려합니다. 예를 들어 비즈니스 로직과 AWS 관련 API 액세스 로직이 명확하게 구분된 AWS Lambda 워크로드는 두 로직이 혼합된 워크로드의 경우보다 필요한 리팩터링이 감소할 수 있습니다.
  • 멱등성. 입력 측면에서 워크로드에 멱등성이 있는지 여부를 고려합니다. 입력에 대해 멱등성이 있는 워크로드는 이미 처리된 입력에 대해 상태를 유지해야 하는 워크로드에 비해 리팩터링에 적게 필요할 수 있습니다.
  • 상태. 워크로드가 스테이트리스(Stateless)인지 여부를 고려합니다. 스테이트리스(Stateless) 워크로드는 상태를 유지하는 워크로드에 비해 리팩터링이 적게 필요할 수 있습니다. Cloud Run이 데이터 저장을 위해 지원하는 서비스에 대한 자세한 내용은 Cloud Run 스토리지 옵션을 참조하세요.
  • 런타임 환경. 워크로드에서 런타임 환경에 특정 조건이 필요한지 여부를 고려합니다. 이러한 워크로드에서는 Cloud Run 런타임 환경에서도 동일한 조건을 충족하도록 하거나 해당 조건을 충족할 수 없는 경우 워크로드를 리팩터링해야 할 수도 있습니다. 예를 들어 워크로드에서 특정 패키지 또는 라이브러리를 사용할 필요가 있으면 해당 워크로드를 호스트할 Cloud Run 런타임 환경에 이를 설치해야 합니다.
  • 구성 삽입. 워크로드에서 해당 구성을 삽입(설정)하기 위해 환경 변수 및 보안 비밀을 사용할 수 있는지 여부를 고려합니다. 이러한 삽입 유형을 지원하는 워크로드는 다른 구성 삽입 메커니즘을 지원하는 워크로드보다 리팩터링이 적게 필요할 수 있습니다.
  • API. 워크로드가 AWS Lambda API와 상호작용하는지 여부를 고려합니다. 이러한 API와 상호작용하는 워크로드는 Cloud API 및 Cloud Run API를 사용하도록 리팩터링해야 할 수 있습니다.
  • 오류 보고. 워크로드에서 표준 출력 및 오류 스트림을 사용하여 오류를 보고하는지 여부를 고려합니다. 이러한 오류 보고를 사용하는 워크로드는 다른 메커니즘을 사용하여 오류를 보고하는 워크로드에 비해 리팩터링이 적게 필요할 수 있습니다.

Cloud Run 워크로드 개발 및 최적화에 대한 자세한 내용은 다음 리소스를 참조하세요.

배포 및 운영 프로세스 리팩터링

워크로드를 리팩터링한 후에는 다음을 수행하도록 배포 및 운영 프로세스를 리팩터링합니다.

  • 원본 환경에서 리소스를 프로비저닝하는 대신 Google Cloud 환경에서 리소스를 프로비저닝하고 구성합니다.
  • 워크로드를 빌드 및 구성하고, 원본 환경에 배포하는 대신 Google Cloud에 배포합니다.

이 프로세스 앞부분의 평가 단계에서는 이러한 프로세스에 대한 정보를 수집한 바 있습니다.

이러한 프로세스에 대해 고려해야 하는 리팩터링 유형은 이를 설계하고 구현한 방법에 따라 달라집니다. 리팩터링은 또한 각 프로세스에서 원하는 최종 상태에 따라 달라집니다. 예를 들어 다음 사항을 고려해 보세요.

  • 이러한 프로세스를 원본 환경에서 구현했고 Google Cloud에서 비슷한 프로세스를 설계하고 구현하려고 합니다. 예를 들어 Cloud Build ,Cloud Deploy, Infrastructure Manager를 사용하도록 프로세스를 리팩터링할 수 있습니다.
  • 이러한 프로세스를 원본 환경 외부의 다른 서드 파티 환경에서 구현했을 수 있습니다. 이 경우에는 원본 환경 대신 Google Cloud 환경을 대상으로 프로세스를 리팩터링해야 합니다.
  • 앞선 접근 방식을 조합합니다.

배포 및 운영 프로세스를 리팩터링하는 작업은 복잡하고 상당한 노력이 필요할 수 있습니다. 워크로드를 마이그레이션하는 중에 이러한 태스크를 수행할 경우에는 워크로드 마이그레이션이 더 복잡해지고 위험에 노출될 수 있습니다. 배포 및 운영 프로세스를 평가한 후에는 설계 및 복잡성을 파악하게 될 가능성이 있습니다. 배포 및 운영 프로세스를 리팩터링하는 데 상당한 노력이 필요한 것으로 예상될 때는 별개의 전용 프로젝트로 이러한 프로세스를 리팩터링하는 것이 좋습니다.

Google Cloud에서 배포 프로세스를 설계 및 구현하는 방법은 다음을 참조하세요.

이 문서에서는 배포할 아티팩트를 생성하고 이를 대상 런타임 환경에 배포하는 배포 프로세스를 집중적으로 다룹니다. 리팩터링 전략은 이러한 프로세스의 복잡성에 따라 크게 달라집니다. 다음은 일반적이고 사용 가능한 리팩터링 전략을 보여줍니다.

  1. Google Cloud에서 아티팩트 저장소를 프로비저닝합니다. 예를 들어 Artifact Registry를 사용하여 아티팩트를 저장하고 종속 항목을 빌드할 수 있습니다.
  2. 원본 환경과 Artifact Registry 모두에 아티팩트를 저장하도록 빌드 프로세스를 리팩터링합니다.
  3. 대상Google Cloud 환경에 워크로드를 배포하도록 배포 프로세스를 리팩터링합니다. 예를 들어 먼저 Artifact Registry에 저장된 아티팩트를 사용하여 Google Cloud에 워크로드의 일부를 배포할 수 있습니다. 그런 후 마이그레이션할 모든 워크로드가Google Cloud에서 실행될 때까지 Google Cloud에 배포되는 워크로드 수를 점차적으로 늘립니다.
  4. Artifact Registry에만 아티팩트를 저장하도록 빌드 프로세스를 리팩터링합니다.
  5. 필요한 경우 배포할 이전 버전의 아티팩트를 원본 환경의 저장소에서 Artifact Registry로 마이그레이션합니다. 예를 들어 Artifact Registry에 컨테이너 이미지를 복사할 수 있습니다.
  6. 더 이상 필요하지 않으면 원본 환경에서 저장소를 사용 중단합니다.

마이그레이션 중 예기치 않은 문제로 인해 결국 롤백이 필요할 때 이를 쉽게 수행하기 위해서는 Google Cloud 로 마이그레이션을 진행하는 동안 컨테이너 이미지를 Google Cloud 의 현재 아티팩트 저장소에 모두 저장할 수 있습니다. 마지막으로 원본 환경을 단계적으로 사용 중단하면서 컨테이너Google Cloud 에만 아티팩트를 저장하도록 이미지 빌드 프로세스를 리팩터링할 수 있습니다.

마이그레이션의 성공에 중요하지 않을 수도 있지만 이전 버전의 아티팩트를 원본 환경에서 Google Cloud의 아티팩트 저장소로 마이그레이션해야 할 수 있습니다. 예를 들어 워크로드를 임의의 시점으로 롤백하는 기능을 지원하려면 이전 버전의 아티팩트를 Artifact Registry로 마이그레이션해야 할 수 있습니다. 자세한 내용은 서드 파티 레지스트리에서 이미지 마이그레이션을 참조하세요.

Artifact Registry를 사용하여 아티팩트를 저장하는 경우 액세스 제어, 데이터 무단 반출 방지, 취약점 스캔, Binary Authorization과 같은 아티팩트 저장소를 보호하는 데 도움이 되는 제어 기능을 구성하는 것이 좋습니다. 자세한 내용은 액세스 제어 및 아티팩트 보호를 참조하세요.

운영 프로세스 리팩터링

Cloud Run으로 마이그레이션하는 중에는 Cloud Run 환경을 일관적이고 효과적으로 모니터링하도록 운영 프로세스를 리팩터링하는 것이 좋습니다.

Cloud Run은 다음 운영 서비스와 통합됩니다.

데이터 마이그레이션

이 프로세스의 앞에서 다룬 평가 단계는 마이그레이션하려는 AWS Lambda 워크로드가 AWS 환경에 있는 데이터에 의존하거나 이를 생성하는지 여부를 확인하는 데 도움이 되었습니다. 예를 들어 AWS S3에서 Cloud Storage로 또는 Amazon RDS 및 Aurora에서 Cloud SQL 및 PostgreSQL용 AlloyDB로 데이터 마이그레이션이 필요한 것으로 확인되었을 수 있습니다. AWS에서Google Cloud로 데이터를 마이그레이션하는 방법은 AWS에서 Google Cloud로 마이그레이션: 시작하기를 참조하세요.

배포 및 운영 프로세스를 리팩터링할 때와 같이 AWS에서 Google Cloud 로 데이터를 마이그레이션하는 작업은 복잡하고 상당한 노력이 필요할 수 있습니다. AWS Lambda 워크로드를 마이그레이션하는 중에 이러한 데이터 마이그레이션 태스크를 수행할 경우에는 마이그레이션이 복잡해지고 위험에 노출될 수 있습니다. 마이그레이션할 데이터를 분석하면 데이터 규모와 복잡성을 파악할 가능성이 높습니다. 이 데이터를 마이그레이션하는 데 상당한 노력이 필요한 것으로 예상될 때는 별개의 전용 프로젝트로 데이터를 마이그레이션하는 것이 좋습니다.

마이그레이션 결과 검증

워크로드 마이그레이션 검증은 일회성 이벤트가 아니라 지속적으로 수행되는 절차입니다. AWS Lambda에서 Cloud Run으로 마이그레이션을 진행하기 전이나 중간 그리고 이후에도 테스트 및 검증에 중점을 두어야 합니다.

성능을 최적화하고 중단을 최소화하여 성공적인 마이그레이션을 보장하기 위해서는 다음 절차에 따라 AWS Lambda에서 Cloud Run으로 마이그레이션 중인 워크로드를 검증하는 것이 좋습니다.

  • 마이그레이션 단계를 시작하기 전에 대상 Google Cloud 환경을 고려해서 기존 테스트 사례를 리팩터링합니다.
  • 마이그레이션 중에는 각 마이그레이션 마일스톤에서 테스트 결과를 검증하고 철저한 통합 테스트를 수행합니다.
  • 마이그레이션 후에는 다음 테스트를 수행합니다.
    • 기준 테스트: 실행 시간, 리소스 사용량, 각 부하별 오류율과 같이 AWS Lambda에서 원본 워크로드의 성능 벤치마크를 설정합니다. Cloud Run에서 이러한 테스트를 복제하여 마이그레이션 또는 구성 문제를 나타낼 수 있는 차이점을 식별합니다.
    • 기능 테스트: 두 환경 모두에서 다양한 입력 및 예상 출력 시나리오가 포함된 테스트 사례를 만들고 실행하여 워크로드의 핵심 로직이 일관성 있게 유지되는지 확인합니다.
    • 부하 테스트: 실제 상황에서 Cloud Run의 성능과 확장성을 평가하기 위해 트래픽을 점차적으로 늘립니다. 원활한 마이그레이션을 보장하기 위해 오류 및 리소스 제한 사항과 같은 문제를 해결합니다.

Google Cloud 환경 최적화

최적화는 마이그레이션의 마지막 단계입니다. 이 단계에서는 대상 환경이 최적화 요구사항을 충족할 때까지 최적화 태스크를 반복합니다. 각 반복 단계는 다음과 같습니다.

  1. 현재 환경, 팀 및 최적화 루프를 평가합니다.
  2. 최적화 요구사항 및 목표를 설정합니다.
  3. 환경 및 팀을 최적화합니다.
  4. 최적화 루프를 조정합니다.

최적화 목표에 도달할 때까지 이 순서를 반복합니다.

Google Cloud 환경 최적화에 대한 자세한 내용은 Google Cloud로 마이그레이션: 환경 최적화Google Cloud 아키텍처 프레임워크: 성능 최적화를 참조하세요.

다음 단계

참여자

저자:

기타 참여자: