CodePipeline의 Source/Build/Test/Deploy 4종만으로 커버할 수 없는 상황이 있다. 배포 전에 외부 API를 호출해서 승인 토큰을 받아야 한다거나, 멀티 리전 배포를 순차적으로 진행하면서 각 리전에서 스모크 테스트를 통과해야 다음으로 이동해야 한다거나, 운영팀이 Slack에서 버튼을 눌러야만 프로덕션 배포가 진행되어야 한다거나. 이 확장 지점을 담당하는 것이 Invoke 카테고리(Lambda, Step Functions)와 Approval 카테고리(Manual Approval)다.
이 세 가지 Action Provider는 DOP-C02에서 자주 조합 문제로 나온다. "15분이 초과하는 작업", "복잡한 조건 분기", "Slack 승인" 같은 키워드가 나오면 세 Provider 중 어느 것을 쓸지 즉각 판단할 수 있어야 한다. 그 판단 기준을 오늘 잡는다.
💡 관련 이론: CodePipeline의 Action Provider 확장 모델은 "Open/Closed Principle"의 서비스 레벨 구현이다. 파이프라인 자체는 수정하지 않고(Closed), 새로운 Provider를 추가함으로써 기능을 확장(Open)한다. Lambda Invoke는 이 확장의 가장 강력한 형태—임의 코드를 실행할 수 있는 탈출구(escape hatch)다