AWS EC2 + CodeDeploy를 사용하는 망 구성 시 고려해야 할 사항

AWS의 대표 서비스인 EC2, ECS, Lambda와 함께 많이 사용되는 서비스 중 하나는 AWS CodeDeploy입니다.
CodeDeploy는 지속적인 배포 및 전달 작업을 지원하며, 각각의 서비스에서 다음과 같은 역할로 활용됩니다.
- EC2: 지속적 배포(Continuous Deployment) 및 전달(Delivery) 작업 지원.
- ECS 및 Lambda: 블루/그린 배포 및 트래픽 라우팅 작업 지원.
Public Subnet vs Private Subnet
- Public Subnet에 속한 EC2 Public Subnet에 있는 EC2는 Public IP와 Security Group의 Outbound 443 포트 오픈으로 CodeDeploy API 접근이 가능합니다.
- Private Subnet에 속한 EC2 Private Subnet에 위치한 EC2는 두 가지 방식으로 CodeDeploy API에 접근할 수 있습니다.
- NAT Gateway를 사용하는 경우 - Private Subnet의 EC2가 NAT Gateway를 통해 외부 인터넷으로 통신하므로, Security Group의 Outbound 443 포트 오픈만으로 CodeDeploy API 접근이 가능합니다.
- VPC Endpoint를 사용하는 경우 - NAT Gateway 없이 VPC 내부에서만 통신이 가능하도록 설정할 수 있습니다. VPC Endpoint를 생성하고, CodeDeploy 서비스 엔드포인트에 대한 접근을 허용하는 Endpoint Policy를 구성하면 됩니다.
NAT Gateway와 VPC Endpoint 비교
- 비용 측면: 배포 또는 전달 작업의 빈도가 낮다면 NAT Gateway를 유지하는 것이 더 저렴할 수 있습니다.
- 보안 측면: 외부 통신을 최소화해야 하거나 높은 보안성을 요구한다면 VPC Endpoint가 적합합니다.
이와 같은 방법으로 EC2와 CodeDeploy를 이용하여 구성하고자 하는 네트워크 구성의 특성에 맞춰 설계하면, 안정적이고 효율적인 배포 환경을 구축할 수 있습니다.
비용보다 폐쇄망을 유지하면서 외부 통신을 제한한다면 VPC Endpoint를 이용하는게 필수적입니다.
이미지의 초록라인은 NAT Gateway를 통한 데이터 흐름이며, 파란라인은 VPC Endpoint를 통한 데이터 흐름을 간략히 표현하였습니다.