마지막 Map state로 Dynamic Parallelism (동적 병렬)을 들 수 있습니다.
Fan out 패턴을 통해서 동일한 Task의 리스트를 보내서 이를 병렬적으로 처리하는 것을 가능케 합니다.
예를 들어, 여러 브랜치에서의 워크플로우 혹은 Scatter-Gather 패턴으로,
다수의 리포지토리에서 변화된 코드의 적용이 필요할 경우와 관련이 있습니다.
자, 그럼 언제 커스텀 파이프라인을 사용해야 될까요?
짧게 말해, 존재하는 툴에서 업무에 바로 사용해야 할 기능이 부족할 때,
우리는 종종 배포 환경에서 복잡한 인프라를 배포하고, 구성 요소 간의 상호 의존성이 여럿인 경우를 빈번하게 볼 수 있습니다.
aws Step Functions는 이러한 프로세스를 모두 관리할 수 있으며,
또한 만약 도중에 실패시 robust 한 재시도 능력 역시 갖고 있습니다.
커스텀 파이프라인은 아티팩트(빌드할 모든 파일)들을 여러 aws 리전으로 퍼블리시하기에도 유용합니다.
- 예를 들어, aws 람다 레이어는 실행될 리전에 퍼블리시 되어야 합니다.
만약, 글로벌 애플리케이션을 운영할 경우, Step Functions Custom Pipeline을 통해서 전 세계에 있는 리전에 람다 레이어 배포를 필요로 하는 곳에 배포할 수 있습니다.
Step Functions는 표준 워크 플로우를 통해서 robust 멀티 레이어 수동 승인을 제공합니다.
마지막으로, 주기적인 빌드는 Step Function의 좋은 활용 사례입니다.
만약 복잡한 태스크를 일정 주기에 따라서 진행하고 싶을때,
- 예를 들어 의존성 업데이트 혹은 보안 취약성 검사와 같은 작업
지난 블로그에 이어서 다시금 나오지만, 위의 내용들은 CodePipeline의 대체품이 아닙니다.
CodePipeline은 스스로 이 많은 업무들을 진행할 수 있지만,
Step Functions는 더 쉽고 더 robust하게 추가적인 업무들을 수행할 수 있습니다.
그래서 대체품으로 사용하기보다 모두 같이 사용하게끔 되어 있습니다.
참조 링크 : s12d.com/stepfunctions-codebuild
어떠한 애플리케이션도 Secrets와 구성 관리 없이 완전하다 할 수 없을 것입니다.
어떠한 CI/CD 레벨에 자리하고 있던지간에 이를 일찍 고려하고 해당 문제를 검토해야 합니다.
애플리케이션에 안전하게 secret을 가져오는 여러 가지 방법들이 있습니다.
#1. AWS SAM Parameters
- 기본 값과 허용되는 값 및 데이터 유형에 대한 제한을 지원합니다.
- 또한, 배포시에 재정의 될 수 있습니다.
그래서 만약 민감하지 않은 데이터가 서브- 프로덕션 레벨에 있고, 민감 데이터가 프로덕션 레벨에 있다고 할 때,
해당 내용을 저장해 두고 배포 시점에 맞춰서 값들을 오버라이드 할 수 있습니다.
- AWS SAM Parameters는 SAM 템플릿에 정의한 Lambda 함수에 환경 변수로 전달될 수 있습니다.
#2. Stage Variables
- 비슷한 콘셉트로 API Gateway의 Stage Variable(단계 변수)가 있습니다.
- 특정 단계의 상황에 사용되는 변수입니다.
- 이러한 값들은 Canary 배포에 의해서 오버라이드 될 수 있습니다.
API Gateway의 다른 특징은 배포를 안전하게 해 줄 수 있다는 점입니다.
#3. Parameter Stores
- 이 파라미터들은 SAM 템플릿을 통해서 배포시점에만 접근이 가능합니다.
- 만약, SDK를 Import 하게 될 경우 런타임에 코드를 통해서 액세스가 가능합니다.
- 암호화를 지원합니다.
- 실행하는 각 계정에 특정되어 있습니다.
#AppConfig
구성관리에 있어 좀 더 견고한 솔루션은 AppConfig입니다.
- 관리형 서비스로 애플리케이션의 생성 / 관리 / 전체 애플리케이션의 구성 배포가 가능합니다.
- 유효성 검사, 변경 분 모니터링 제공합니다.
- CodePipeline을 통한 통합 배포
# AWS AppConfig Lambda extension
- 함수 재배포 없이 Lambda function 구성 파라미터를 업데이트할 수 있습니다.
- 비용을 절감하는 동시에 AppConfig를 사용을 간소화합니다.
- AWS AppConfig 서비스로의 API 호출을 줄여줍니다.
- Lambda 함수 프로세싱 시간을 줄여서 비용을 줄입니다.
참조 링크 : s12d.com/appconfig-extension
추가 참고 자료
- APN 파트너를 위한 CI/CD : s12d.com/cicid-partners
- AWS 서버리스 웹사이트 : serverlessland.com
- AWS 서버리스 유튜브 채널 : youtube.com/c/ServerlessLand
감사합니다.
'IT > AWS' 카테고리의 다른 글
EKS란 #1 Deep Dive on to EKS (2) | 2023.01.27 |
---|---|
Amazon EKS 클러스터 보안 #1 (0) | 2023.01.19 |
서버리스 애플리케이션을 위한 CI/CD 워크플로우 만들기 #4 (2) | 2023.01.16 |
서버리스 애플리케이션을 위한 CI/CD 워크플로우 만들기 #3 (0) | 2023.01.15 |
서버리스 애플리케이션을 위한 CI/CD 워크플로우 만들기 #2 (0) | 2023.01.14 |