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

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

AWS의 대표 서비스인 EC2, ECS, Lambda와 함께 많이 사용되는 서비스 중 하나는 AWS CodeDeploy입니다.

CodeDeploy는 지속적인 배포 및 전달 작업을 지원하며, 각각의 서비스에서 다음과 같은 역할로 활용됩니다.

  • EC2: 지속적 배포(Continuous Deployment) 및 전달(Delivery) 작업 지원.
  • ECS 및 Lambda: 블루/그린 배포 및 트래픽 라우팅 작업 지원.

Public Subnet vs Private Subnet

  1. Public Subnet에 속한 EC2 Public Subnet에 있는 EC2는 Public IP와 Security Group의 Outbound 443 포트 오픈으로 CodeDeploy API 접근이 가능합니다.
  2. 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를 통한 데이터 흐름을 간략히 표현하였습니다.