제공자별 경계 리팩터링
제공자별 경계를 리팩터링하려면 다음 단계를 수행하십시오.
- 비즈니스 논리를 제공자 중립 모듈로 추출합니다. 비교 테스트 중에 캡처된 소스 이벤트를 재생하기 위한 AWS 이벤트 구문 분석기를 추가합니다.
- 대상 호출 패턴(요청/응답, CloudEvent, 큐 메시지, 스트림 레코드, 객체 이벤트, 통지 또는 통합 요청)에 대한 OCI 어댑터를 생성합니다.
- 직접 AWS SDK 호출을 인터페이스로 대체하고 해당 인터페이스 뒤에 OCI 서비스 호출을 구현합니다. 구성, 암호 액세스, 로깅, 측정 단위에 대해 동일한 작업을 수행하고 처리를 재시도합니다.
- 캡처된 람다 이벤트를 재생하고 상태 코드, 헤더, 응답 본문, 객체 메타데이터, 다운스트림 쓰기, 부작용, 오류 메시지 및 멱등성 동작을 비교합니다.
이벤트 구문 분석, SDK 호출, IAM 가정, 로깅, 패키징 및 재시도 처리와 구분되는 업무 논리를 찾습니다.
고려 사항: 제공자 통합과 동시에 업무 논리를 재작성하지 마십시오. 둘 다 바꾸면 동등 테스트가 더 어려워집니다.
OCI가 제공하는 기능 이해
Oracle Cloud Infrastructure는 기능 실행, API 관리, 이벤트, 대기열, 일정 잡기, ID, 네트워킹, 관찰 가능성 및 배포를 위한 서비스를 제공합니다. 그러나 마이그레이션을 수행하려면 다음과 같은 작업 로드별 변경이 필요할 수 있습니다.
- AWS 이벤트 페이로드를 애플리케이션에서 예상한 입력으로 변환
- AWS SDK 호출을 OCI SDK 호출로 바꾸기
- 트리거, 재시도, 순서 지정 및 실패 동작 재생성
- IAM 권한 및 네트워크 액세스 변환
- CI/CD 파이프라인 및 운영 절차 업데이트
구현하기 전에 표준 OCI 구성을 사용하는 단계와 사용자정의 코드가 필요한 단계를 식별하십시오. 보다 광범위한 마이그레이션을 예측하기 전에 대표적인 워크로드를 사용하여 해당 차이를 검증합니다.
OCI 함수 패키지화 및 배치
함수를 패키지화하고 배치하려면 다음 단계를 수행합니다.
- 함수 프로젝트 및
func.yaml를 생성하거나 업데이트합니다. 기본값이 아닌 측정된 소스 동작에서 메모리 및 시간 초과를 설정합니다. - 이전 Lambda 계층 컨텐츠, 고유 종속성, 런타임 종속성, 인증서 및 시스템 패키지를 이미지 또는 공유 기본 이미지로 적절하게 이동합니다.
- 컨테이너 이미지 내에서 이미지 크기, 종속성 버전, 고유 라이브러리 호환성, 시작 동작, 초기화 작업 및 런타임 동작을 추적합니다.
- 운용 트리거를 연결하기 전에 대표적인 성공 및 실패 페이로드를 사용하여 함수를 빌드, 푸시, 배치 및 호출합니다.
이미지가 빌드되고, 푸시하고, 배치하고, 성공적으로 호출하고, 암호 유출 없이 예상한 출력을 기록하는지 확인합니다.
고려 사항: 종속성 패키징은 특히 레이어, 네이티브 라이브러리, 확장 및 내장된 SDK 버전에서 숨겨진 Lambda 가정이 나타나는 경우가 많습니다.
반복 가능한 전달 패턴 사용
반복 가능한 전달 패턴을 사용하려면 다음 단계를 수행하십시오.
- 함수 코드, 구성, 테스트 및 기반 구조 정의를 함께 저장합니다.
- 버전 지정 함수 artifact를 빌드하고 테스트합니다.
- 아티팩트 및 해당 종속성을 스캔합니다.
- 환경 전체에서 동일한 테스트된 아티팩트를 승격합니다.
- Infrastructure as Code를 통해 OCI 리소스를 프로비저닝하거나 업데이트합니다.
- 배포 후 연기 및 통합 테스트를 실행합니다.
- 롤백을 위해 이전 프로덕션 아티팩트와 구성을 유지합니다.
실용적인 경우 기존 CI/CD 플랫폼을 사용합니다. OCI Functions 아키텍처에 필요한 경우가 아니면 툴을 변경할 필요가 없습니다.
트리거 및 통합 이전
트리거 및 통합을 마이그레이션하려면 다음 단계를 수행하십시오.
- HTTP 워크로드의 경우 인증, 메소드, 경로, 헤더, 쿼리 문자열, 본문 스키마, 상태 코드, 오류 본문, 페이로드 크기, 시간 초과, 대기 시간 및 호출자 재시도 동작을 비교합니다.
- 객체 이벤트의 경우 이벤트 스키마, 객체 메타데이터, 네임스페이스, 버킷 및 접두어 필터링, 생성/업데이트/삭제 동작, 재시도 동작, 중복 이벤트, 멱등성 및 입력 경로와 출력 경로 간의 루프 방지 등을 비교합니다.
- 대기열 및 스트림의 경우 일괄 처리 크기, 순서 지정, 부분 실패, 가시성 또는 재시도 동작, DLQ 또는 실패 대상, 독 메시지, 역압력, 중복, 처리량 및 재생에 대한 명시적 처리를 설계합니다.
- 일정, 통지, 로그 및 통합 플로우의 경우 호출 유형, 대기 시간, 재시도 횟수, 실패 경로 지정, 팬아웃 동작, 필터링 및 관찰 가능성을 확인합니다.
각 트리거에 문서화된 OCI 대상 패턴이 있는지 검증하고 일반, 실패, 재시도 및 중복 전달 시나리오에 대한 테스트를 통과합니다.
고려 사항: AWS 이벤트 소스 매핑에 직접 OCI 대체가 있다고 가정하지 마십시오. AWS 제어 이름이 아닌 필수 동작을 유지합니다.
일반적인 람다 트리거 패턴
구현 전에 필요한 동작을 검증합니다.
| 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 서비스의 동작이 동일하다고 가정하지 마십시오. 구현 전에 각 작업 로드에 필요한 동작을 검증합니다.
트리거 및 실패 동작 보존
트리거 및 실패 동작을 보존하려면 다음 단계를 수행하십시오.
분리된 OCI Functions 호출의 경우 성공 및 실패 레코드를 OCI 대기열, OCI Streaming 또는 OCI Notifications 대상으로 전송할 수 있습니다. 이 동작은 분리된 호출에만 해당되며 모든 AWS 데드레터 대기열 패턴에 대한 범용 대체로 설명해서는 안됩니다.
IAM, 암호 및 네트워킹 구성
OCI Identity and Access Management(IAM), 암호 및 네트워킹을 구성하려면 다음 단계를 수행하십시오.
- 각 소스 작업을 OCI 작업, 리소스 및 컴파트먼트에 매핑합니다. 워크로드에 실제로 필요하고 검토자가 승인하지 않는 한 광범위한 정책을 피하십시오.
- OCI 리소스에 대한 런타임 액세스를 위해 동적 그룹 및 리소스 주체를 사용합니다. 잘못된 컴파트먼트, 잘못된 버킷, 잘못된 암호 및 누락된 정책 사례를 포함하여 허용된 경로와 거부된 경로를 모두 테스트합니다.
- OCI Vault 또는 승인된 패턴으로 암호를 이동합니다. 소스 코드, 이미지, 로그, 환경 덤프, CI 출력, 스택 추적 또는 오류 메시지에 암호 값이 표시되지 않는지 확인합니다.
- 경로 규칙, 보안 규칙, 서비스 게이트웨이 또는 NAT 동작, 프라이빗 엔드포인트, DNS, TLS 트러스트, 외부 허용 목록 및 다운스트림 연결 제한을 검증합니다.
허용된 서비스 호출이 성공하고, 거부된 경로가 안전하게 실패하며, 허용되지 않은 경로를 노출하지 않고 필요한 네트워크 경로에 연결할 수 있는지 검증합니다.
고려 사항: IAM 변환은 AWS 정책 이름이나 광범위한 관리 정책이 아닌 관찰된 런타임 동작에서 시작해야 합니다.
관찰 및 작업 재생성
관찰 가능성 및 작업을 재생성하려면 다음 단계를 수행합니다.
- 상관 ID, 요청 ID, 트리거 ID, 객체 또는 메시지 식별자, 상태, 기간, 재시도 횟수, sanitized 오류 세부정보 및 다운스트림 종속성 결과가 포함된 로그를 내보냅니다.
- 호출 수, 기간, 오류율, 시간 초과 수, 스로틀 또는 용량 증상, DLQ 또는 실패 수, 대기열 수명 또는 백로그, 분리된 전달 결과 및 다운스트림 실패에 대한 측정항목 및 알람을 확인합니다.
- 건전성, 대기 시간, 오류, 용량, 트리거 백로그 및 종속성 상태에 대한 대시보드 또는 승인된 뷰를 생성합니다.
- 호출 테스트, 로그 질의, 알람 응답, 에스컬레이션 연락처, 롤백 트리거, 롤백 단계 및 예상 복구 시간으로 런북을 업데이트합니다.
프로덕션 운영자가 트래픽 이동 전에 마이그레이션된 기능을 관찰하고 문제를 해결할 수 있는지 확인합니다.
고려 사항: 함수만 작동하는 경우 마이그레이션이 프로덕션 준비 상태가 아닙니다. 운영자는 실패한 트리거, 암호, 네트워크 경로 또는 다운스트림 종속성을 감지하고 복구할 수 있어야 합니다.