[영상] AWS에서 DevOps - CI/CD 시작하기
CI/CD Best Practices
1. 릴리스 자동화 (Automated Releases)
2. 안전한 배포 (Safe Deloyments)
3. 반복 가능한 인프라 변경 (Repeatable Infrastructure Changes)
CI/CD
1. Source : 소스에 대한 관리를 어떻게 할 것인가
2. Build : 빌드 시, 컴파일 후에 진행되는 테스트 수준, 스타일 체크, 컨테이너 환경에서의 진행 수준 결정 필요
3. Test : 가상의 테스트 환경을 자동화
4. Production
이후 단계도 추가적으로 더 있을 수 있음
AWS Developer Tools
1. CodeCommit : 완전 관리형 안전한 Git 기반의 레포지토리
(1) 안전하고 확장 용이한 환경에서 팀원들간에 Code 협업툴
(2) 전송 중 저장 시, 자동으로 파일 암호화 제공
(3) IAM과 통합된 계정 관리 가능
(Github의 무료버전은 Public으로 제공이 되어 있기 때문에 보안사고가 많지만 CodeCommit은 보안에 유리)
(Gitlab은 망분리 환경에서 Git과 같은 환경을 구성하고자 할 때, 많이 사용)
2. CodeBuild : 소스 코드를 컴파일하는 단계부터 테스트 실행 후, SW 패키지를 개발하여 배포하는 단계까지 마칠 수 있는 완전 관리형 빌드 서비스
(인터프리터 언어이면 빌드 서비스를 따로 운영하지 않을 수 있지만, 컴파일 언어의 경우 빌드 단계가 필요!)
(온프레미스 환경에서는 대부분 이를 Jenkins, Github Action으로 구현 가능, 조금 더 커스텀한 설정을 하고 싶다면
Jenkins으로 운영)
(1) 빌드 볼륨에 따라 자동으로 확장 및 축소 (여러 빌드를 병렬로 처리 가능)
(2) 빌드를 완료할 때까지 걸리는 시간(분)을 기준으로 과금
(3) 일관되고 불변하는 환경을 위해 격리된 빌드 컨테이너 (빌드 환경을 컨테이너로 관리 가능)
(4) 모든 공식 CodeBuild 이미지는 Docker와 AWS CLI를 포함
(5) 빌드 환경 커스터마이징 가능
(참고 : Jenkins을 사용하면 따로 빌드 서버를 두어야하는데, 이는 빌드 환경을 Define하기 위해 운영체제, 런타임이 필요하여 따로 서버가 필요. 하지만 jenkins이 아닌 서버리스 tool을 사용할 수 도 있음)
3rd Party Deploy : Jenkins, GitHub Actions
3. CodeDeploy : 코드 빌드 이후, 다양한 배포 전략을 구현할 수 있음
(1) 코드 배포를 자동화하는 완전 관리형 배포 서비스
(2) 복잡한 어플리케이션 업데이트 작업을 처리
(3) 배포중, 다운타임 최소화
(4) 배포 중, 오류 감지 시 자동으로 롤백
(5) Amazon EC2, Fargate, Lambda, ECS, 온프레미스 서버에 배포 가능
3rd Party Deploy : Spinnaker, GitHub Actions
4. CodePipeline : 완전 관리형 지속적 전달 (Continuous delivery) 서비스 그러므로 인프라에 대한 신경이 필요 없음
(1) 릴리즈 프로세스 모델링 및 시각화
(2) 소스 코드 변경 시, 파이프라인 (빌드-테스트-배포 프로세스) 자동 트리거 (AWS 리소스들과 연계)
(3) Third-party 툴과의 긴밀한 연동 (github와 jenkins과 연동 가능)
위 워크플로우 상세 설명
- 사전 수행 task 및 환경 : jenkins를 사용하는 시나리오여서 미리 EC2 서버에 Jenkins를 설치하고 Jekins에서 어떤 조건에서 빌드 할지 트리거를 설정해야함
(1) 개발자가 Git에 commit
(2) Source Provider 가 Source artifact (S3 또는 이미지면 )로 복사
...
참고
https://www.youtube.com/watch?v=E1wHAlJUk2w&t=132s
ㄴㅇㄹㄴ
ㅇㄹㄴ
ㄹ
ㄴㅇㄹ
ㄴㅇ