|
1 | 1 | <!-- logo --> |
2 | 2 |  |
3 | 3 |
|
4 | | - |
5 | | - |
6 | | - |
| 4 | +<!--- |
7 | 5 | ## 당신의 중개 업무에 필요한 단 하나의 라인 ZIPLINE |
8 | | - |
| 6 | +---> |
9 | 7 |
|
10 | 8 | <div align="center"> |
11 | 9 | <a href="https://zip-line.kr"> |
|
145 | 143 |
|
146 | 144 | <br /> |
147 | 145 |
|
148 | | -## ⚙ 인프라 구성 |
| 146 | +## ⚙ **GithubAction + DockerHub CI/CD Process** |
| 147 | +<details> |
| 148 | +<summary>1. GitHub Actions + DockerHub 기반 Java 멀티모듈 CI/CD (백엔드)</summary> |
| 149 | + |
| 150 | +이 전략은 apiserver와 crawlerserver 두 가지 Java 멀티모듈 프로젝트의 백엔드 배포를 자동화합니다. |
| 151 | + |
| 152 | +핵심 기능: |
| 153 | + |
| 154 | + 코드 변경 감지: dev 또는 test 브랜치에 푸시되거나 PR이 생성되면 CI/CD 워크플로우가 자동으로 시작됩니다. |
| 155 | + 자동화된 테스트 및 빌드: 각 모듈의 유닛 및 통합 테스트를 실행하여 코드 안정성을 검증하고, 독립적인 JAR 파일로 빌드합니다. |
| 156 | + Docker 이미지 관리: 빌드된 JAR 파일은 전용 Dockerfile을 통해 Docker 이미지로 변환되며, 이 이미지들은 Docker Hub에 푸시되어 중앙에서 관리됩니다. |
| 157 | + dev 브랜치: apiserver:dev, crawlerserver:dev 태그로 이미지를 푸시하고 개발 전용 EC2 인스턴스에 배포됩니다. SPRING_PROFILES_ACTIVE=dev와 같은 개발 환경 변수가 주입됩니다. |
| 158 | + test 브랜치: apiserver:test, crawlerserver:test 태그로 이미지를 푸시하고 테스트 전용 EC2 인스턴스에 배포됩니다. SPRING_PROFILES_ACTIVE=test와 같은 테스트 환경 변수가 주입됩니다. |
| 159 | + 분기별 EC2 배포: 각 브랜치(dev/test)에 맞는 EC2 인스턴스에 SSH로 접속하여, 기존 컨테이너를 중지 및 제거하고 최신 Docker 이미지를 Pull 받아 실행합니다. |
| 160 | + 환경 변수 주입: GitHub Secrets에 정의된 민감한 환경 변수들이 안전하게 Docker 컨테이너에 주입됩니다. |
| 161 | + |
| 162 | +</details> |
| 163 | + |
| 164 | +<details> |
| 165 | +<summary>2. Vercel을 활용한 프론트엔드 배포</summary> |
| 166 | +이 전략은 프론트엔드 애플리케이션의 배포를 효율적으로 처리합니다. |
| 167 | + |
| 168 | +핵심 기능: |
| 169 | + |
| 170 | + 자동 배포: Vercel의 통합 CI/CD 기능을 활용하여 Git 저장소에 푸시되는 변경 사항을 자동으로 감지하고 빌드하여 배포합니다. |
| 171 | + Preview Deployments: PR 생성 시 자동으로 Preview 환경을 제공하여, 실제 병합 전에 변경 사항을 쉽게 검토할 수 있습니다. |
| 172 | + 글로벌 CDN: Vercel의 글로벌 CDN을 통해 사용자에게 빠르고 안정적인 서비스 접근성을 제공합니다. |
| 173 | + 간편한 환경 설정: Vercel 대시보드에서 환경 변수 및 도메인 설정을 직관적으로 관리할 수 있습니다. |
| 174 | + |
| 175 | +</details> |
| 176 | + |
| 177 | +<details> |
| 178 | + |
| 179 | +<summary>3. Redis, S3, RDS를 용도에 맞게 분리하여 확장성 보장</summary> |
| 180 | + |
| 181 | +이 전략은 클라우드 서비스를 용도에 따라 분리하여 사용함으로써 시스템의 확장성과 안정성을 극대화합니다. |
| 182 | + |
| 183 | +핵심 기능: |
| 184 | + |
| 185 | + Redis (캐싱/세션 관리): 인메모리 데이터 스토어인 Redis를 활용하여 빠른 데이터 접근이 필요한 캐싱, 사용자 세션 관리, 실시간 데이터 처리 등에 사용합니다. 이를 통해 데이터베이스 부하를 줄이고 애플리케이션 응답 속도를 향상시킵니다. |
| 186 | + Amazon S3 (객체 스토리지): 확장 가능한 클라우드 객체 스토리지인 S3를 이용하여 이미지, 동영상, 문서 등 정적 파일 및 대용량 데이터를 저장하고 관리합니다. 웹 서버와 분리하여 파일 저장 공간에 대한 확장성 문제를 해결합니다. |
| 187 | + Amazon RDS (관계형 데이터베이스): 관계형 데이터베이스 서비스인 RDS를 사용하여 애플리케이션의 핵심 비즈니스 로직과 관련된 구조화된 데이터를 저장하고 관리합니다. RDS는 자동 백업, 복제, 패치 등 관리형 서비스를 제공하여 데이터베이스 운영 부담을 줄입니다. |
| 188 | +</details> |
| 189 | + |
149 | 190 |
|
150 | | -1. **GithubAction + DockerHub** |
151 | | - - Github Action과 DockerHub를 활용한 CI/CD 파이프라인 구축 |
152 | 191 |
|
153 | 192 | 2. **Vercel** |
154 | 193 | - Vercel을 사용한 프론트엔드 배포 |
|
0 commit comments