![[DevOps] Django - CI/CD 파이프라인 자동화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdluxz8%2FbtsLjThETTM%2F2C0C4fmkk1ICkYIKic707k%2Fimg.png)
[DevOps] Django - CI/CD 파이프라인 자동화MLOps & DevOps2024. 12. 16. 20:29
Table of Contents
728x90
WEB(Django) CI/CD 아키텍처

1. 개요
해당 아키텍처는 CI/CD 파이프라인을 통해 애플리케이션 코드를 자동으로 빌드 및 배포하는 과정을 설명합니다.
개발자가 코드를 푸시하면 GitHub Actions가 Docker 이미지를 빌드하고 Amazon ECR에 푸시합니다.
이후 ECS를 통해 Django 애플리케이션이 포함된 컨테이너를 배포하고 서비스를 갱신합니다.
2. 주요 컴포넌트
2.1 개발자
- 역할: 애플리케이션 소스코드를 개발하고 GitHub에 푸시합니다.
2.2 GitHub
- 역할: 버전 관리 시스템으로 코드 변경 사항을 관리합니다.
- 주요 동작:
- 개발자의 코드 푸시를 감지하고 GitHub Actions를 트리거합니다.
2.3 GitHub Actions
- 역할: CI/CD 파이프라인의 핵심 자동화 도구입니다.
- 주요 동작:
- Docker 이미지를 빌드하고 Amazon ECR에 푸시합니다.
- 배포를 위해 ECS에 새로운 이미지 정보를 알립니다.
2.4 Amazon ECR (Elastic Container Registry)
- 역할: Docker 이미지를 저장하는 AWS 컨테이너 이미지 레지스트리입니다.
- 주요 동작:
- GitHub Actions에서 푸시된 Docker 이미지를 저장합니다.
- 저장된 이미지에 대한 알림을 ECS에 전달합니다.
2.5 Amazon ECS (Elastic Container Service)
- 역할: 컨테이너 기반 애플리케이션을 실행하고 관리하는 서비스입니다.
- 주요 동작:
- 새 이미지 정보 알림을 받고 환경에 배포합니다.
- Django 애플리케이션이 포함된 컨테이너를 배포합니다.
- ECS Agent가 Django 컨테이너의 실행 상태를 모니터링합니다.
- Task Definition 업데이트를 통해 새로운 컨테이너 이미지를 사용하도록 서비스 갱신합니다.
- 성공적으로 배포되면 개발자에게 결과를 반환합니다.
2.6 Amazon EC2
- 역할: ECS 클러스터가 호스팅되는 인프라입니다.
- 주요 동작:
- ECS의 작업(Task)이 EC2 인스턴스에서 실행됩니다.
- Django 애플리케이션 컨테이너를 실행하며 서비스 요청을 처리합니다.
3. 배포 흐름
3.1 코드 푸시 및 트리거
- 개발자가 소스코드를 GitHub 리포지토리에 푸시합니다.
- GitHub는 코드 변경을 감지하고 GitHub Actions를 트리거합니다.
3.2 Docker 이미지 빌드 및 푸시
- GitHub Actions는 소스코드를 기반으로 Docker 이미지를 빌드합니다.
- 이 Docker 이미지에는 Django 애플리케이션이 포함되어 있습니다.
- 빌드된 Docker 이미지를 Amazon ECR에 푸시합니다.
3.3 이미지 알림 및 배포
- Amazon ECR은 새로운 Docker 이미지 정보를 ECS에 알립니다.
- ECS는 다음 작업을 수행합니다:
- Task Definition 업데이트
- Django 애플리케이션 컨테이너 배포
- ECS Agent가 컨테이너 상태를 모니터링하며 실행 상태를 관리합니다.
3.4 배포 결과 알림 (슬랙 알림)
- 배포가 성공하거나 실패하면, GitHub Actions에서 자동으로 슬랙 채널로 배포 결과를 알립니다.
- 배포 성공: 배포가 성공적으로 완료되었음을 알리는 메시지를 슬랙에 전송합니다.
- 예시 메시지:
배포가 성공적으로 완료되었습니다. 새로운 버전이 배포되었습니다.
- 예시 메시지:
- 배포 실패: 배포에 실패한 경우, 오류 메시지와 함께 슬랙에 알림을 전송합니다.
- 예시 메시지:
배포가 실패했습니다. 오류 메시지: [에러 내용].
- 예시 메시지:
- 배포 성공: 배포가 성공적으로 완료되었음을 알리는 메시지를 슬랙에 전송합니다.
3.5 결과 반환
- 배포가 성공 또는 실패하면 결과를 GitHub Actions를 통해 개발자에게 반환합니다.
4. 배포 성공 및 실패 처리
- 배포 성공: 개발자에게 성공 메시지를 반환하며, 슬랙 채널로 배포 성공 알림을 전송합니다.
- 배포 실패: 개발자에게 오류 메시지를 반환하고, 슬랙 채널로 배포 실패 알림을 전송합니다.

5. 주요 기술 스택
기능 | 기술 |
---|---|
소스코드 관리 | GitHub |
CI/CD 파이프라인 | GitHub Actions |
컨테이너 레지스트리 | Amazon ECR |
컨테이너 오케스트레이션 | Amazon ECS |
인프라 | Amazon EC2 |
컨테이너화 | Docker |
웹 프레임워크 | Django |
알림 시스템 | Slack |
6. 요약
아키텍처는 CI/CD 파이프라인을 통해 소스코드 변경 사항을 빠르고 효율적으로 배포합니다.
개발자가 코드를 푸시하면 GitHub Actions가 Docker 이미지를 빌드하고 Amazon ECR에 저장한 후 ECS를 통해 Django 애플리케이션이 포함된 컨테이너를 배포합니다.
배포의 성공 여부는 슬랙을 통해 실시간으로 알림을 받으며, 이를 통해 팀원들은 배포 상태를 즉시 확인할 수 있습니다.
자동화된 작업을 통해 개발 생산성을 높이고 배포 오류를 최소화할 수 있습니다. ECS Agent는 Django 컨테이너 상태를 지속적으로 모니터링하여 서비스 안정성을 유지합니다.
'MLOps & DevOps' 카테고리의 다른 글
[Github Actions] GitHub Actions - AWS Credentials 설정 (0) | 2024.12.25 |
---|---|
[DevOps] Django - CI/CD 파이프라인 자동화 (v2) (1) | 2024.12.24 |
[CI/CD] Docker, EC2, ECR, CodeDeploy, Github Actions를 활용한 배포 자동화 (0) | 2024.12.24 |
[CI/CD] Github Actions 기본 문법 정리 (0) | 2024.12.22 |
[MLOps] MLFlow - ML CI/CD 파이프라인 구축 (0) | 2024.12.16 |
@mane Lab :: 마네의 연구소
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!