또 다른 E2E 솔루션이 제공되었습니다. 이번에는 CI/CD, AWS EventBridge 및 ECS Fargate와 함께.
Source: Dev.to
최근에 서드파티 시스템의 비밀번호 회전 프로세스를 자동화하는 개인 프로젝트를 완료했습니다.
통합에는 인증이 필요하지만, 해당 시스템은 매월 비밀번호 회전을 강제합니다. 비밀번호가 만료되면 업로드와 다운로드가 실패하고, 이는 곧 운영 이슈로 이어집니다.
수동 업데이트와 잊어버릴 위험을 없애기 위해 엔드‑투‑엔드 자동화를 구축했습니다.
솔루션은 Selenium과 헤드리스 Chromium을 사용하는 Python 워커이며, 일정에 따라 실행되고 전체 CI/CD 파이프라인으로 지원됩니다. main 브랜치에 푸시될 때마다 GitHub Actions가 OIDC를 통해 AWS IAM 역할을 가정하고, Docker 이미지를 빌드하여 Amazon ECR에 푸시한 뒤, 컨테이너 이미지만 업데이트하는 새로운 ECS 태스크 정의 리비전을 등록합니다.
Architecture design solution

CI/CD

Execution (EventBridge)
실행은 Amazon EventBridge가 담당하며, 29일마다 태스크를 트리거합니다.

ECS Cluster
태스크는 퍼블릭 서브넷의 ECS Fargate에서 실행되며, 퍼블릭 IP와 아웃바운드 트래픽이 허용됩니다.


트리거가 발생하면 Fargate가 컨테이너를 시작하고 automation.py를 실행한 뒤 Selenium과 Chromium, Chromedriver를 구동해 시스템에 로그인하고 비밀번호 회전을 수행한 뒤 종료합니다. 성공 시 태스크는 종료 코드 0으로 마무리됩니다. 예외가 발생하면 로그가 CloudWatch에 전송되고 오류가 Slack 알림 채널에 보고됩니다.

Architecture decisions
-
Public subnet – 단순함과 비용 절감을 위해 선택했습니다. 워커는 아웃바운드 인터넷 접속만 필요하고 인바운드 포트를 노출하지 않으므로, 보안 그룹에 인바운드 규칙이 없으면 추가 위험이 없습니다. 또한 프라이빗 서브넷에 필요한 NAT Gateway 비용과 복잡성을 피할 수 있습니다.
-
ECS Fargate vs. Lambda – Lambda에서 Chromium을 사용한 Selenium을 실행하려면 보통 커스텀 레이어와 세밀한 튜닝이 필요하고, 메모리, 패키지 크기, 실행 시간 제한에 쉽게 부딪힙니다. Fargate를 사용하면 전체 환경을 Docker 이미지에 패키징할 수 있어 실행 환경이 예측 가능하고 CPU/메모리 할당이 유연해져 이 워크로드를 더 쉽게 운영할 수 있습니다.
결국 이것은 간단한 배치 워커입니다: 일정에 따라 실행되고, 하나의 작업을 수행한 뒤 종료됩니다. 헤드리스 브라우저 자동화에 있어 이 접근 방식이 더 직관적이고 신뢰성이 높았습니다.