목표
1. CodeCommit Repository를 구성하여 Application Source Control 구성 2. buildspec 파일을 사용하여 새로운 Docker 이미지를 빌드 3. 감사 가능하고 안전한 방법론을 사용하여 Amazon ECR에 저장하는 CodeBuild 프로젝트를 생성 4. 블루/그린 배포에 사용할 동적 필드가 포함된 appspec.yaml 및 taskdef.json 파일을 생성 5. CodeDeploy 및 Amazon ECS에 구성된 블루/그린 배포 전략을 사용하여 현재 위치 애플리케이션 업그레이드를 수행
구성 검토하기 (AWS Cloud9 IDE)
- Cloud9를 생성합니다.
- 생성한 Cloud9 서비스에서 Cloud9 IDE 상태를 확인합니다.
- 아래와 같은 사유로 DevOps 환경에서 많이 사용합니다.
Cloud9를 강추하는 이유는?
Amazon Cloud9는 클라우드 기반의 통합 개발 환경 (IDE)로, 코드를 작성, 실행, 디버깅할 수 있는 웹 기반 인터페이스를 제공합니다. Cloud9의 주요 장점은 다음과 같습니다 1. 어디에서나 액세스 가능: 클라우드 기반 IDE. 보통 IAM User에 대한 Console Access 및 Cloud9 서비스에 관한 정책을 Attached 해주면 인터넷이 연결된 어떤 장치에서든 접속하여 작업 가능 2. 쉬운 협업: Cloud9은 실시간으로 다른 개발자들과 협업을 가능하게 합니다. 팀원들이 동일한 개발 환경에서 동시에 작업하고, 실시간으로 코드 변경 사항을 볼 수 있습니다. 3. 서버리스 애플리케이션 개발: AWS Lambda와 같은 서버리스 애플리케이션을 쉽게 만들고 테스트할 수 있습니다. 4. 사전 구성된 환경: Cloud9은 브라우저만 있으면, 복잡한 개발 환경을 로컬에 설정할 필요 없이 즉시 시작할 수 있는 완전한 개발 환경을 제공합니다. 5. 코드 실행 및 디버깅 지원: Cloud9은 다양한 프로그래밍 언어를 지원하며, 코드 작성 및 디버깅에 필요한 모든 도구를 제공합니다. 6. 직접 통합: AWS 서비스와 직접 통합되어 있어, 다른 AWS 서비스들을 쉽게 이용할 수 있습니다. 7. 비용 효율적: 사용하지 않는 시간 동안은 개발 환경을 중지하여 비용을 절약할 수 있습니다. 별도의 Bastion Host를 두지 않아도 됩니다. 8. 유연성: Cloud9은 개발 환경을 개발자의 입맛에 따라 맞춤 설정할 수 있습니다. 쉽게 말해 커스터마이징이 가능합니다.


서비스 정보:
최근 AWS 서비스 관련 뉴스를 확인할 수 있습니다.
구성 검토(AWS ALB, ECS)

– 위 ALB에서는 3개의 각기 다른 Subnet이 고 가용성으로 분산되어 각각의 Multi-AZ 대역의 PrivateIP로 분산됨을 확인합니다.

– 위와 같이 서비스 Private IP가 Target Groups으로 정상적으로 연결되어 있습니다.
– 해당 Target Groups은 ALB의 TCP 80의 Listener 로 연결되어 있습니다.

– ELB의 DNSName을 그대로 사용하여 서비스 됨을 확인합니다.
구성 검토(FargateCluster)

– FargateService가 Active 상태이고 3/3 Tasks running이 정상적으로 표시되었습니다.

– AWS ECS > FagateCluster > Service > FargateService > Task 실행 및 상태를 확인합니다.
– Cluster(FargateService) 내 실행 중인 Task 상태를 확인합니다.

– AWS ECS > FagateCluster > Service > FargateService > Deploy 에서 배포 유형은 CODE_DEPLOY 임을 확인하였습니다.
(블루/그린 배포에 대한 요구 사항이 반영됨을 확인함)
구성 검토(AWS ECR, Elastic Container Registry)

– Amazon ECR > Private Repository > 활성 ECR Repository > 클릭

– 보유 중인 Repository 를 Edit 합니다.

– 태그 변경 불가능을 비활성화에서 “활성화“로 수정합니다.
Why?
– 보안 상태가 개선되고, 사용자 실수 or 외부 공격에 따른 이미지 스푸핑이 완화
– 동일한 태그를 사용하는 후속 이미지 푸시가 이미지 태그를 덮어쓰는 것을 방지