제공자별 경계 리팩터링

AWS 특정 통합 코드를 교체하는 동안 비즈니스 로직을 유지합니다.

제공자별 경계를 리팩터링하려면 다음 단계를 수행하십시오.

  1. 비즈니스 논리를 제공자 중립 모듈로 추출합니다. 비교 테스트 중에 캡처된 소스 이벤트를 재생하기 위한 AWS 이벤트 구문 분석기를 추가합니다.
  2. 대상 호출 패턴(요청/응답, CloudEvent, 큐 메시지, 스트림 레코드, 객체 이벤트, 통지 또는 통합 요청)에 대한 OCI 어댑터를 생성합니다.
  3. 직접 AWS SDK 호출을 인터페이스로 대체하고 해당 인터페이스 뒤에 OCI 서비스 호출을 구현합니다. 구성, 암호 액세스, 로깅, 측정 단위에 대해 동일한 작업을 수행하고 처리를 재시도합니다.
  4. 캡처된 람다 이벤트를 재생하고 상태 코드, 헤더, 응답 본문, 객체 메타데이터, 다운스트림 쓰기, 부작용, 오류 메시지 및 멱등성 동작을 비교합니다.

이벤트 구문 분석, SDK 호출, IAM 가정, 로깅, 패키징 및 재시도 처리와 구분되는 업무 논리를 찾습니다.

고려 사항: 제공자 통합과 동시에 업무 논리를 재작성하지 마십시오. 둘 다 바꾸면 동등 테스트가 더 어려워집니다.

OCI가 제공하는 기능 이해

표준 OCI 구성을 사용하는 마이그레이션 단계와 사용자정의 코드가 필요한 마이그레이션 단계를 식별합니다.

Oracle Cloud Infrastructure는 기능 실행, API 관리, 이벤트, 대기열, 일정 잡기, ID, 네트워킹, 관찰 가능성 및 배포를 위한 서비스를 제공합니다. 그러나 마이그레이션을 수행하려면 다음과 같은 작업 로드별 변경이 필요할 수 있습니다.

  • AWS 이벤트 페이로드를 애플리케이션에서 예상한 입력으로 변환
  • AWS SDK 호출을 OCI SDK 호출로 바꾸기
  • 트리거, 재시도, 순서 지정 및 실패 동작 재생성
  • IAM 권한 및 네트워크 액세스 변환
  • CI/CD 파이프라인 및 운영 절차 업데이트

구현하기 전에 표준 OCI 구성을 사용하는 단계와 사용자정의 코드가 필요한 단계를 식별하십시오. 보다 광범위한 마이그레이션을 예측하기 전에 대표적인 워크로드를 사용하여 해당 차이를 검증합니다.

OCI 함수 패키지화 및 배치

이전된 함수를 컨테이너 이미지로 빌드하여 OCI 함수에 배치합니다.

함수를 패키지화하고 배치하려면 다음 단계를 수행합니다.

  1. 함수 프로젝트 및 func.yaml를 생성하거나 업데이트합니다. 기본값이 아닌 측정된 소스 동작에서 메모리 및 시간 초과를 설정합니다.
  2. 이전 Lambda 계층 컨텐츠, 고유 종속성, 런타임 종속성, 인증서 및 시스템 패키지를 이미지 또는 공유 기본 이미지로 적절하게 이동합니다.
  3. 컨테이너 이미지 내에서 이미지 크기, 종속성 버전, 고유 라이브러리 호환성, 시작 동작, 초기화 작업 및 런타임 동작을 추적합니다.
  4. 운용 트리거를 연결하기 전에 대표적인 성공 및 실패 페이로드를 사용하여 함수를 빌드, 푸시, 배치 및 호출합니다.

이미지가 빌드되고, 푸시하고, 배치하고, 성공적으로 호출하고, 암호 유출 없이 예상한 출력을 기록하는지 확인합니다.

고려 사항: 종속성 패키징은 특히 레이어, 네이티브 라이브러리, 확장 및 내장된 SDK 버전에서 숨겨진 Lambda 가정이 나타나는 경우가 많습니다.

반복 가능한 전달 패턴 사용

프로덕션 마이그레이션은 버전 제어 전달 프로세스를 사용해야 합니다.

반복 가능한 전달 패턴을 사용하려면 다음 단계를 수행하십시오.

  1. 함수 코드, 구성, 테스트 및 기반 구조 정의를 함께 저장합니다.
  2. 버전 지정 함수 artifact를 빌드하고 테스트합니다.
  3. 아티팩트 및 해당 종속성을 스캔합니다.
  4. 환경 전체에서 동일한 테스트된 아티팩트를 승격합니다.
  5. Infrastructure as Code를 통해 OCI 리소스를 프로비저닝하거나 업데이트합니다.
  6. 배포 후 연기 및 통합 테스트를 실행합니다.
  7. 롤백을 위해 이전 프로덕션 아티팩트와 구성을 유지합니다.

실용적인 경우 기존 CI/CD 플랫폼을 사용합니다. OCI Functions 아키텍처에 필요한 경우가 아니면 툴을 변경할 필요가 없습니다.

트리거 및 통합 이전

OCI에서 필요한 호출 동작을 재생성합니다.

트리거 및 통합을 마이그레이션하려면 다음 단계를 수행하십시오.

  1. HTTP 워크로드의 경우 인증, 메소드, 경로, 헤더, 쿼리 문자열, 본문 스키마, 상태 코드, 오류 본문, 페이로드 크기, 시간 초과, 대기 시간 및 호출자 재시도 동작을 비교합니다.
  2. 객체 이벤트의 경우 이벤트 스키마, 객체 메타데이터, 네임스페이스, 버킷 및 접두어 필터링, 생성/업데이트/삭제 동작, 재시도 동작, 중복 이벤트, 멱등성 및 입력 경로와 출력 경로 간의 루프 방지 등을 비교합니다.
  3. 대기열 및 스트림의 경우 일괄 처리 크기, 순서 지정, 부분 실패, 가시성 또는 재시도 동작, DLQ 또는 실패 대상, 독 메시지, 역압력, 중복, 처리량 및 재생에 대한 명시적 처리를 설계합니다.
  4. 일정, 통지, 로그 및 통합 플로우의 경우 호출 유형, 대기 시간, 재시도 횟수, 실패 경로 지정, 팬아웃 동작, 필터링 및 관찰 가능성을 확인합니다.

각 트리거에 문서화된 OCI 대상 패턴이 있는지 검증하고 일반, 실패, 재시도 및 중복 전달 시나리오에 대한 테스트를 통과합니다.

고려 사항: AWS 이벤트 소스 매핑에 직접 OCI 대체가 있다고 가정하지 마십시오. AWS 제어 이름이 아닌 필수 동작을 유지합니다.

일반적인 람다 트리거 패턴

다음 매핑은 OCI 함수 이전을 위한 시작 패턴입니다.

구현 전에 필요한 동작을 검증합니다.

AWS 패턴 OCI 함수 시작 패턴 검증할 품목
API 게이트웨이 - Lambda OCI Functions에 대한 OCI API Gateway 경로, 메소드, 인증, 요청 및 응답 형식, 페이로드 제한, 시간 초과, 상태 코드 및 동기 오류 동작
EventBridge로 람다 OCI 서비스 이벤트의 경우 OCI 이벤트 - OCI 함수, 광범위한 라우팅 요구 사항에 적용 가능한 OCI 이벤트 라우팅 서비스 사용 이벤트 적용 범위, 필터, 스키마, 전달 동작, 재시도 및 재생 요구 사항
SQS - 람다 Oracle Cloud Infrastructure Queue - OCI Connector Hub - OCI Functions 배치 크기, 가시성 시간 초과, 1회 이상 배송, 주문, 중복 처리, 독 메시지 및 장애 복구
람다행 S3 이벤트 OCI 이벤트를 통한 OCI Object Storage 이벤트 OCI Functions 이벤트 스키마, 필터, 중복 전달, 객체 권한, 재시도 동작 및 다운스트림 부작용
Lambda에 예약된 이벤트 OCI Functions에 대한 OCI 리소스 스케줄러 표현식, 시간대, 입력 페이로드, 시간 초과, 겹치는 실행, 성공 또는 실패 대상 일정 잡기

AWS와 OCI 서비스의 동작이 동일하다고 가정하지 마십시오. 구현 전에 각 작업 로드에 필요한 동작을 검증합니다.

트리거 및 실패 동작 보존

모든 마이그레이션된 트리거에 필요한 동작을 문서화하고 테스트합니다.

트리거 및 실패 동작을 보존하려면 다음 단계를 수행하십시오.

  1. 마이그레이션된 모든 트리거에 대해 다음을 문서화하고 테스트합니다.
    • 전달이 동기 또는 비동기인지 여부
    • 소유자 재시도, 재시도 간격 및 최대 시도 횟수
    • 배달 보장 및 가능한 중복 이벤트
    • 주문 요건
    • Idempotency 동작
    • 일괄 처리 및 부분 실패 동작
    • 가시성 시간 초과 또는 확인 동작
    • 독 메시지 처리
    • Failure 또는 Dead-letter 대상
    • 리플레이 및 복구 절차
  2. 유사한 AWS 및 OCI 서비스가 동일한 전달 또는 실패 동작을 가지고 있다고 가정하지 마십시오.
  3. 중복 전달이 가능한 경우 반복되는 이벤트를 안전하게 처리하는 기능을 설계합니다.

분리된 OCI Functions 호출의 경우 성공 및 실패 레코드를 OCI 대기열, OCI Streaming 또는 OCI Notifications 대상으로 전송할 수 있습니다. 이 동작은 분리된 호출에만 해당되며 모든 AWS 데드레터 대기열 패턴에 대한 범용 대체로 설명해서는 안됩니다.

IAM, 암호 및 네트워킹 구성

런타임 동작을 최소 권한 OCI 액세스 및 승인된 네트워크 접근성으로 변환합니다.

OCI Identity and Access Management(IAM), 암호 및 네트워킹을 구성하려면 다음 단계를 수행하십시오.

  1. 각 소스 작업을 OCI 작업, 리소스 및 컴파트먼트에 매핑합니다. 워크로드에 실제로 필요하고 검토자가 승인하지 않는 한 광범위한 정책을 피하십시오.
  2. OCI 리소스에 대한 런타임 액세스를 위해 동적 그룹 및 리소스 주체를 사용합니다. 잘못된 컴파트먼트, 잘못된 버킷, 잘못된 암호 및 누락된 정책 사례를 포함하여 허용된 경로와 거부된 경로를 모두 테스트합니다.
  3. OCI Vault 또는 승인된 패턴으로 암호를 이동합니다. 소스 코드, 이미지, 로그, 환경 덤프, CI 출력, 스택 추적 또는 오류 메시지에 암호 값이 표시되지 않는지 확인합니다.
  4. 경로 규칙, 보안 규칙, 서비스 게이트웨이 또는 NAT 동작, 프라이빗 엔드포인트, DNS, TLS 트러스트, 외부 허용 목록 및 다운스트림 연결 제한을 검증합니다.

허용된 서비스 호출이 성공하고, 거부된 경로가 안전하게 실패하며, 허용되지 않은 경로를 노출하지 않고 필요한 네트워크 경로에 연결할 수 있는지 검증합니다.

고려 사항: IAM 변환은 AWS 정책 이름이나 광범위한 관리 정책이 아닌 관찰된 런타임 동작에서 시작해야 합니다.

관찰 및 작업 재생성

운영 소유자가 Failure를 감지, 진단 및 Recovery할 수 있도록 합니다.

관찰 가능성 및 작업을 재생성하려면 다음 단계를 수행합니다.

  1. 상관 ID, 요청 ID, 트리거 ID, 객체 또는 메시지 식별자, 상태, 기간, 재시도 횟수, sanitized 오류 세부정보 및 다운스트림 종속성 결과가 포함된 로그를 내보냅니다.
  2. 호출 수, 기간, 오류율, 시간 초과 수, 스로틀 또는 용량 증상, DLQ 또는 실패 수, 대기열 수명 또는 백로그, 분리된 전달 결과 및 다운스트림 실패에 대한 측정항목 및 알람을 확인합니다.
  3. 건전성, 대기 시간, 오류, 용량, 트리거 백로그 및 종속성 상태에 대한 대시보드 또는 승인된 뷰를 생성합니다.
  4. 호출 테스트, 로그 질의, 알람 응답, 에스컬레이션 연락처, 롤백 트리거, 롤백 단계 및 예상 복구 시간으로 런북을 업데이트합니다.

프로덕션 운영자가 트래픽 이동 전에 마이그레이션된 기능을 관찰하고 문제를 해결할 수 있는지 확인합니다.

고려 사항: 함수만 작동하는 경우 마이그레이션이 프로덕션 준비 상태가 아닙니다. 운영자는 실패한 트리거, 암호, 네트워크 경로 또는 다운스트림 종속성을 감지하고 복구할 수 있어야 합니다.