메인 콘텐츠로 건너뛰기

트렁크 기반 개발과 GitHub Actions로 AWS ECS 자동화 배포 완전 정복

설탕사과
설탕사과
조회수 37
요약

트렁크 기반 개발(Trunk-Based Development)은 개발자들이 하나의 메인 브랜치에 자주, 그리고 소규모로 코드를 병합하는 방식을 말합니다. 이 방식은 민첩한 협업과 빠른 배포를 도와주죠. 하지만 다양한 환경에 동일한 브랜치에서 바로 배포해야 하기 때문에, CI/CD 파이프라인 구성은 다소 복잡해질 수 있습니다. 오늘은 GitHub Actions로 트렁크 기반 개발을 효율적으로 적용하여 AWS ECS에 자동으로 배포하는 실질적인 방법과 핵심 노하우를 쉽고 재밌게 소개합니다.

트렁크 기반 개발: 협업과 빠른 배포의 핵심

트렁크 기반 개발이란, 모든 개발자가 자주, 짧은 주기로 메인 브랜치('trunk')에 코드를 병합하는 전략입니다. 예전의 개발 방식(Git Flow 등)에서는 각 환경마다 브랜치를 따로 관리하지만, 이 방식은 모든 환경 배포도 하나의 브랜치에서 처리합니다. 덕분에 코드 충돌이 감소하고, 실시간으로 코드를 공유하며 협업이 한층 편해집니다. 이런 방식이 CI/CD(지속적 통합/지속적 배포)에 최적이라는 점도 큰 장점입니다.

GitHub Actions로 CI/CD 파이프라인 설계하기

자동화 배포를 위해선 강력한 CI/CD 파이프라인이 필수! GitHub Actions는 코드 커밋, PR 등 이벤트를 감지해 원하는 단계를 자동으로 실행해줍니다. 트렁크 기반 개발에서는 'main' 브랜치에 변경 사항이 생기면, 개발/운영환경 모두 이 브랜치에서 배포가 이루어지죠. 워크플로우 파일(dev-deploy-cicd.yml)은 신규 도커 이미지를 빌드하고, ECR에 푸시한 뒤, ECS 서비스와 태스크 정의를 최신으로 업데이트합니다. 그 과정에서 릴리즈 태그도 자동 생성되어, 모든 과정을 한 번에 처리할 수 있습니다.

AWS와의 안전한 연동: OIDC와 보안 토큰 관리

AWS ECS에 안전하게 배포하려면 인증 과정이 중요합니다. 여기서 Open ID Connect(OIDC)를 통해서 GitHub Actions가 짧은 기간만 유효한 AWS 임시 인증 정보를 받아올 수 있습니다. 이런 인증정보는 GitHub Secrets에 저장해 사용하고, 별도의 개인 액세스 토큰으로 태그와 릴리즈 관리까지 처리합니다. 보안과 편의성을 동시에 잡는 똑똑한 방법이죠.

개발과 운영환경 자동화의 차별점

개발(develop)과 운영(production) 환경의 배포 방식은 살짝 다릅니다. 개발 환경엔 main 브랜치에 바로 커밋될 때마다 배포가 이뤄집니다. 반면 운영환경은 릴리즈 초안(Draft Release)이 '공개'로 바뀌는 이벤트에서만 실제로 배포하도록 설계되어 있습니다. 즉, 주요 배포가 승인된 릴리즈에만 운영환경에 자동 적용되어, 실수나 오류로부터 시스템을 지키는 역할도 합니다.

핵심 단계별 자동화 프로세스 한눈에 보기

워크플로우 내 주요 단계를 요약하면 다음과 같습니다:

  • 소스 코드 체크아웃 및 인증정보 획득

  • 도커 이미지를 빌드하고, AWS ECR에 푸시

  • ECS 태스크 정의와 서비스 최신화 및 배포 처리

  • Semantic 버전 태깅 및 릴리즈 생성 모든 과정이 GitHub Actions 스크립트 한 줄, 설정 파일 한 장으로 자동화되어, 더 이상 복잡한 수동 작업이나 배포 걱정 없이 코드를 바로 서비스할 수 있습니다.

실전 활용 팁: 한 번 셋업으로 일상을 자동화하자

트렁크 기반 개발과 CI/CD 파이프라인을 처음 설정할 때는 다소 복잡하게 느껴질 수 있습니다. 하지만 한 번 구조를 이해하고 세팅하면, 개발자들은 코드 작성에만 집중하고, 배포는 마치 투명인간처럼 자동으로 뒤에서 척척 진행됩니다. 특히 작은 수정마다 빠르게 피드백 받고, 운영에 적용될 코드도 꼼꼼하게 검증하는 게 가능하니 생산성 면에서도, 서비스 안정성 면에서도 큰 이득이죠.

마무리하며, 요즘 개발 환경에서는 민첩한 배포와 안전한 자동화가 선택이 아닌 필수입니다. GitHub Actions와 AWS ECS 자동화, 그리고 트렁크 기반 개발을 잘 조합하면, 단순한 반복 작업을 줄이고 본질적인 개발에 에너지를 집중할 수 있습니다. 이제 배포는 걱정 없이, 코드에만 집중하길 추천합니다!

출처 및 참고 : Use Github actions for Trunk Based Development to deploy AWS ECS Service | by Madan Kumar | Medium