ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서버리스 애플리케이션을 위한 CI/CD 워크플로우 만들기 #5
    IT/AWS 2023. 1. 17. 23:23
    728x90

     

    마지막 Map state로 Dynamic Parallelism (동적 병렬)을 들 수 있습니다.

    Fan out 패턴을 통해서 동일한 Task의 리스트를 보내서 이를 병렬적으로 처리하는 것을 가능케 합니다.

     

    예를 들어, 여러 브랜치에서의 워크플로우 혹은 Scatter-Gather 패턴으로, 

    다수의 리포지토리에서 변화된 코드의 적용이 필요할 경우와 관련이 있습니다.

    자, 그럼 언제 커스텀 파이프라인을 사용해야 될까요?

     

    짧게 말해, 존재하는 툴에서 업무에 바로 사용해야 할 기능이 부족할 때, 

    우리는 종종 배포 환경에서 복잡한 인프라를 배포하고, 구성 요소 간의 상호 의존성이 여럿인 경우를 빈번하게 볼 수 있습니다.

    - 예를 들어, s3에서 오브젝트 세트를 새로운 계정의 새로운 버킷으로 데이터베이스 테이블에서 어떠한 체크 포인트를 저장할 필요가 있을 수 있습니다.

    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

     

    감사합니다.

    728x90
    반응형
Designed by Tistory.