원래 아래 링크의 TaskCat 을 이용한 cloudformation stack 의 ci/cd 파이프라인을 만들어보려고 했으나
aws 강의를 듣던 중 SAM 프레임워크에 대해서 배웠고
이 프레임워크를 jenkins 와 ansible 을 이용해서 통합시킬 수 있을것 같아서 한번 해보려고 한다
https://aws-quickstart.github.io/quickstart-taskcat-ci/#_postdeployment_steps
+ 23.03.02
SAM 프레임워크를 사용해 pipeline 을 만드려고 했으나
SAM 이 서버리스에만 중점을 두고있고 yaml 파일이 지나치게 길어질 수 있어서
CDK 를 사용해 구성해보는 것으로 변경했다
1. Goal
개발 환경 CI/CD 파이프라인의 생성 목적은 다음과 같다
- cloudformation resource 로의 지속적 통합 + 배포
- IaC 를 통한 인프라 관리
- 로컬에서 push 후 개발용 container / Serverless Application / Prod instance 로의 배포 자동화
2. Work Flow - process
글로 먼저 쓰면서 생각을 정리해봤다
1. 코드 작성 후 깃허브로 푸시하면
2. WebHook 이 푸시를 감지하고
3. jenkins 서버에 트리거되서
4. ansible 을 통해 dev-container 로 명령들을 실행
5. 명령에 의해 dev-container 에서 git pull 이 실행, SAM 파일 패키징 실행
6. 패키징으로 인해 S3 버킷에 cloudformation template 이 저장되고
7. 해당 파일을 사용해 SAM deploy 로 스택 배포
정도로 이루어지게 해볼 예정이다.
3. Work Flow - flow chart
For Serverless Application
1. push
- 코드 작성 후 git repo 로 push
2. webhook
- 설정해놓은 jenkins url 로 webhook
3. run jenkinsfile
- 웹훅 트리거 후 jenkinsfile 에 따라 아래 세부 단계 진행
3.1. git pull
- git repo 에서 수정된 코드 pull
3.2. sam package
- sam 프레임워크로 sam 파일을 cloudformation template 로 변환
- application code 를 패키징 후 s3 버킷에 저장 후 객체 uri 를 변환된 template.yaml 에 반영
3.3. sam deploy
- 변환된 template.yaml 을 사용해 cloudformation create/update 실행
4. stack deploy
- changeset 을 참고해 cloudformation 이 stack 에 수정사항 반영
For Autotrade Server
a. push
- 코드 작성 후 git repo 로 push
b. webhook
- 설정해놓은 jenkins url 로 webhook
c. run jenkinsfile
- 웹훅 트리거 후 jenkinsfile 에 따라 아래 세부 단계 진행
c.a. 실행중인 백그라운드 프로세스 종료 + 기존 파일 삭제
c.b. git pull + 백그라운드로 python 스크립트 실행
이렇게 구현해봐야겠다
리포지토리는 서버리스용, 온디멘드용 따로 구성하는걸로하고
업비트 api key 같은 비밀번호는 직접 scp 로 업로드 하는걸로 하자
3. Work Flow - flow chart
For Serverless Application
1. push
- 코드 작성 후 git repo 로 push
2. webhook
- 설정해놓은 jenkins url 로 webhook
3. run jenkinsfile
- 웹훅 트리거 후 jenkinsfile 에 따라 아래 세부 단계 진행
3.1. git pull
- git repo 에서 수정된 코드 pull
3.2. cdk bootstrap
- 애플리케이션을 부트스트랩하고 CloudFormation changeset 을 생성
- 배포를 위해 사용할 필수 S3 버킷과 IAM 역할이 포함된 CDKToolkit 이라는 스택을 생성
- cloudformation 에 사용할 template 생성 (cdk synth 명령으로 확인가능)
3.3. cdk deploy
- 변환된 template.yaml 을 사용해 cloudformation create/update 실행
4. stack deploy
- changeset 을 참고해 cloudformation 이 stack 에 수정사항 반영
For Autotrade Server
a. push
- 코드 작성 후 git repo 로 push
b. webhook
- 설정해놓은 jenkins url 로 webhook
c. run jenkinsfile
- 웹훅 트리거 후 jenkinsfile 에 따라 아래 세부 단계 진행
c.a. 실행중인 백그라운드 프로세스 종료 + 기존 파일 삭제
c.b. git pull + 백그라운드로 python 스크립트 실행
SAM 프레임워크 사용에서 CDK 를 통한 통합으로 바꿨다
AWS 강의에서 CDK 를 깊게 다루지도 않았고 JS 로 실습했지만
하나씩 찾아보면서 CDK 를 활용해 인프라를 python 코드로 작성해볼 예정이다
'1인개발 메이킹로그 > [Infra+k8s+App] 가상화폐 자동매매' 카테고리의 다른 글
[AWS-Server] dev_env-CICD-3-jenkins (0) | 2023.03.23 |
---|---|
[AWS-Server] dev_env-CICD-2-demo_cdk_app_stack.py with chatGPT (0) | 2023.03.19 |
[AWS-Server] dev_env-CICD-1-CDK container setting (0) | 2023.03.02 |
[AWS-Server] Ethereum-auto-trade 설계 (0) | 2023.02.18 |
python 가상화폐 자동매매 docker container 밑그림 (0) | 2023.02.13 |