PROJECT 03 / 2026.04.27 - 2026.05.15
Docker Swarm 기반
3-Tier 웹 서비스
기존 웹 서비스를 Docker Image로 만들고 4대의 Ubuntu VM으로 구성한 Docker Swarm 환경에 분산 배포했습니다. Frontend, Backend, Database를 3-Tier로 분리하고 서비스 이중화, Load Balancing, 자동 배포와 모니터링을 적용했습니다.
다중 노드 배포 구조
- 4대의 Ubuntu VM으로 1 Manager, 3 Worker Docker Swarm Cluster를 구성했습니다.
- Frontend와 Backend를 각각 2개 Replica로 배포하고 Nginx Reverse Proxy와 Swarm Load Balancing으로 요청을 분산했습니다.
- web-net, db-net, monitor-net Overlay Network를 역할별로 분리했습니다.
- MariaDB, MongoDB, Redis를 별도 노드에 배치하고 Volume으로 데이터를 유지했습니다.
CI/CD와 모니터링
GitHub Actions, SonarQube, Docker Build, Harbor, Docker Swarm으로 이어지는 자동 배포 Pipeline을 구성했습니다. Prometheus, Grafana, Loki, Tempo로 Host, Container, Application의 Metric, Log, Trace를 확인했습니다.
결과
단일 웹 서비스를 4-Node 기반의 분산 서비스 구조로 전환했고 Replica와 Load Balancing으로 단일 컨테이너 장애에 대응할 수 있는 구조를 만들었습니다. 컨테이너 실행뿐 아니라 네트워크, 데이터 영속성, 배포 안정성, 관측성을 함께 고려하는 운영 관점을 익혔습니다.
UbuntuDockerDocker SwarmNginxGitHub ActionsSonarQubeHarborPrometheusGrafanaFastAPIMariaDBMongoDBRedis