AWS EC2 오토스케일링과 CI/CD 동작 정리
이 글은 AI가 작성했습니다.
개요
이 문서는 AWS 환경에서 EC2 오토스케일링과 자동 배포가 결합된 CI/CD 구조의 기본 동작 방식을 정리합니다.
인스턴스 수가 증가하거나 감소하는 상황과 배포 중 특정 인스턴스가 종료될 때 시스템이 어떻게 동작하는지를 설명합니다.
전체 아키텍처 구성
일반적인 구성은 Load Balancer, Auto Scaling Group, EC2, CI/CD 파이프라인으로 이루어집니다.
Load Balancer는 외부 트래픽을 수신해 각 EC2 인스턴스로 분산합니다.
Auto Scaling Group은 사전에 정의된 정책에 따라 EC2 인스턴스 수를 자동으로 조절합니다.
CI/CD 파이프라인은 애플리케이션의 빌드, 테스트, 배포 과정을 자동화합니다.
오토스케일링 기준
오토스케일링은 CloudWatch 지표를 기준으로 동작합니다.
주로 CPU 사용률, 메모리 사용률, 요청 수, 네트워크 트래픽이 사용됩니다.
설정된 임계값을 초과하면 인스턴스를 증가시키고 일정 시간 동안 임계값 이하로 유지되면 인스턴스를 감소시킵니다.
인스턴스 증가 시 동작
Auto Scaling Group은 새로운 EC2 인스턴스를 생성합니다.
Launch Template 또는 Launch Configuration에 정의된 AMI와 인스턴스 설정을 기준으로 인스턴스를 시작합니다.
인스턴스가 헬스 체크를 통과하면 Load Balancer에 자동으로 등록됩니다.
이후 해당 인스턴스는 실제 트래픽을 처리합니다.
인스턴스 감소 시 동작
트래픽이 감소하면 Auto Scaling Group은 인스턴스를 종료합니다.
종료 대상 인스턴스는 기본 정책에 따라 선택되며 보통 가장 오래된 인스턴스나 가용 영역 균형을 고려한 인스턴스가 대상이 됩니다.
종료 전에 Load Balancer에서 연결 해제가 먼저 수행됩니다.
배포 방식과 오토스케일링의 관계
CI/CD 파이프라인은 일반적으로 CodePipeline, CodeBuild, CodeDeploy로 구성됩니다.
선택한 배포 방식에 따라 오토스케일링과의 동작 방식이 달라집니다.
롤링 배포
롤링 배포는 인스턴스를 순차적으로 교체하는 방식입니다.
일부 인스턴스에만 새 버전을 배포한 뒤 점진적으로 배포 범위를 확장합니다.
이 방식은 서비스 중단 없이 배포가 가능하며 오토스케일링과의 충돌이 비교적 적습니다.
블루그린 배포
블루그린 배포는 기존 환경과 신규 환경을 동시에 운영하는 방식입니다.
신규 환경에 배포를 완료한 후 Load Balancer의 대상 그룹을 전환합니다.
오토스케일링은 각 환경별 Auto Scaling Group으로 분리해 관리합니다.
배포 중 인스턴스가 종료될 때 동작
배포 도중 오토스케일링 정책에 의해 인스턴스가 종료될 수 있습니다.
CodeDeploy는 현재 배포 대상 인스턴스를 추적하며 종료된 인스턴스는 배포 실패로 처리하지 않습니다.
Auto Scaling Group은 필요한 경우 새로운 인스턴스를 생성하고 해당 인스턴스에는 최신 애플리케이션 버전이 배포됩니다.
헬스 체크 동작 기준
Load Balancer는 트래픽 전달 여부를 판단하기 위해 헬스 체크를 수행합니다.
HTTP 또는 HTTPS 응답 코드, TCP 연결 성공 여부를 기준으로 대상의 정상 여부를 판단합니다.
연속된 헬스 체크 실패가 Unhealthy Threshold를 초과하면 해당 대상은 트래픽 전달 대상에서 제외됩니다.
Auto Scaling Group은 인스턴스 생존 여부를 판단하기 위해 헬스 체크 결과를 사용합니다.
EC2 상태 검사 또는 Load Balancer 헬스 체크 결과를 기준으로 인스턴스의 정상 여부를 판단합니다.
헬스 체크 실패 상태가 Health Check Grace Period 이후에도 유지되면 인스턴스는 종료 대상이 됩니다.
헬스 체크와 안정성
Load Balancer와 Auto Scaling Group은 지속적으로 헬스 체크를 수행합니다.
애플리케이션이 비정상 상태로 판단되면 해당 인스턴스를 트래픽에서 제외합니다.
이후 인스턴스를 종료하고 새로운 인스턴스를 생성해 서비스 안정성을 유지합니다.
정리
AWS의 EC2 오토스케일링과 CI/CD는 논리적으로는 독립적으로 동작합니다.
그러나 실제 운영 환경에서는 긴밀하게 연계됩니다.
인스턴스 증감이나 배포 중 인스턴스 종료 상황에서도 서비스가 지속되도록 설계됩니다.
이를 위해 헬스 체크, 배포 전략, 오토스케일링 정책을 함께 고려해야 합니다.