React, 모놀리식 방식의 Spring Boot, Django 시스템에 Spring Cloud를 적용하고 Jenkins Pipeline을 적용하여 탄력성과 운영 용이성을 고려한 아키텍처로의 전환을 진행한 프로젝트입니다.
🔗원본 프로젝트 에서 전환 이전의 프로젝트를 확인할 수 있습니다.
| 🏗️ AS-IS | 🏢 TO-BE |
|---|---|
![]() |
![]() |
![]() |
![]() |
|---|
1️⃣ 데이터 ERD 및 기능 명세서를 바탕으로 기존 프로그램 분석
2️⃣ 마이크로서비스 전환 대상 서비스 식별 및 분리 → ( User 서비스, Coin 서비스 )
🔐 보안 관리
- 민감 정보: Jenkins Credentials 사용
- 환경 변수: Environment Variables로 관리
📦 CI/CD 과정
1️⃣ 소스코드 checkout
2️⃣ Dockerfile 기반 이미지 생성
3️⃣ Amazon ECR로 이미지 업로드
4️⃣ 배포 단계
- EC2 배포:
(by sshPublisher) - ECS 배포
- 🗒️ Task Definition 정의
- 🚀 ECS 배포 실행
5️⃣ 최종 파이프라인을 Github으로 버전관리
6️⃣ Github webhook을 설정
| 💻 EC2 | 💻 EC2 (Spring Cloud 인프라) |
|---|---|
| 🛠️ Jenkins (CI/CD 자동화) | 🔍 Eureka (서비스 디스커버리) ⚙️ Config Server (설정 중앙 관리) 🚪 Gateway Server (API Gateway 및 로드 밸런싱) 📩 RabbitMQ (비동기 메시지 큐) |
| 📦 ECS (Docker 기반 서비스 배포) | 🗂️ S3 (정적 웹 호스팅) ⚡ CloudFront (CDN 기반 속도 최적화 및 캐싱) |
📂 ECR (Docker 컨테이너 이미지 저장소) |
|---|---|---|
| 🏦 Coin-Service (Spring Boot) 👤 User-Service (Spring Boot) 🐍 Django (백엔드 서비스) |
🖥️ React 배포 | 🫙Django, Spring 이미지 저장 |
| 🚀 Spring Cloud Eureka | 🚪 Spring Cloud Gateway | 📜 Spring Cloud Config |
|---|---|---|
| 서비스 등록 등록된 서비스의 조회 분산 투명성 제공 |
단일 진입지점 부하 분산 분산 투명성 |
Git private Repository에서 설정파일 관리 Git webhook과 연동한 Cloud Bus refresh |
|
김우영 |
조영상 |
채민주 |
최호경 |
- 프로그래밍 언어
- 데이터베이스
- 컨테이너
- 이미지 레지스트리
- CI/CD



