Skip to content

Commit a9faddb

Browse files
committed
(doc)infra.md
1 parent 2aea7c3 commit a9faddb

1 file changed

Lines changed: 46 additions & 7 deletions

File tree

docs/README.md

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
<!-- logo -->
22
![1-caefa227](https://github.com/user-attachments/assets/062fcbb7-3238-463e-8ae5-7c8a66bc321e)
33

4-
5-
6-
4+
<!---
75
## 당신의 중개 업무에 필요한 단 하나의 라인 ZIPLINE
8-
6+
--->
97

108
<div align="center">
119
<a href="https://zip-line.kr">
@@ -145,10 +143,51 @@
145143

146144
<br />
147145

148-
## ⚙ 인프라 구성
146+
## **GithubAction + DockerHub CI/CD Process**
147+
&lt;details>
148+
&lt;summary>1. GitHub Actions + DockerHub 기반 Java 멀티모듈 CI/CD (백엔드)&lt;/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+
&lt;/details>
163+
164+
&lt;details>
165+
&lt;summary>2. Vercel을 활용한 프론트엔드 배포&lt;/summary>
166+
이 전략은 프론트엔드 애플리케이션의 배포를 효율적으로 처리합니다.
167+
168+
핵심 기능:
169+
170+
자동 배포: Vercel의 통합 CI/CD 기능을 활용하여 Git 저장소에 푸시되는 변경 사항을 자동으로 감지하고 빌드하여 배포합니다.
171+
Preview Deployments: PR 생성 시 자동으로 Preview 환경을 제공하여, 실제 병합 전에 변경 사항을 쉽게 검토할 수 있습니다.
172+
글로벌 CDN: Vercel의 글로벌 CDN을 통해 사용자에게 빠르고 안정적인 서비스 접근성을 제공합니다.
173+
간편한 환경 설정: Vercel 대시보드에서 환경 변수 및 도메인 설정을 직관적으로 관리할 수 있습니다.
174+
175+
&lt;/details>
176+
177+
&lt;details>
178+
179+
&lt;summary>3. Redis, S3, RDS를 용도에 맞게 분리하여 확장성 보장&lt;/summary>
180+
181+
이 전략은 클라우드 서비스를 용도에 따라 분리하여 사용함으로써 시스템의 확장성과 안정성을 극대화합니다.
182+
183+
핵심 기능:
184+
185+
Redis (캐싱/세션 관리): 인메모리 데이터 스토어인 Redis를 활용하여 빠른 데이터 접근이 필요한 캐싱, 사용자 세션 관리, 실시간 데이터 처리 등에 사용합니다. 이를 통해 데이터베이스 부하를 줄이고 애플리케이션 응답 속도를 향상시킵니다.
186+
Amazon S3 (객체 스토리지): 확장 가능한 클라우드 객체 스토리지인 S3를 이용하여 이미지, 동영상, 문서 등 정적 파일 및 대용량 데이터를 저장하고 관리합니다. 웹 서버와 분리하여 파일 저장 공간에 대한 확장성 문제를 해결합니다.
187+
Amazon RDS (관계형 데이터베이스): 관계형 데이터베이스 서비스인 RDS를 사용하여 애플리케이션의 핵심 비즈니스 로직과 관련된 구조화된 데이터를 저장하고 관리합니다. RDS는 자동 백업, 복제, 패치 등 관리형 서비스를 제공하여 데이터베이스 운영 부담을 줄입니다.
188+
&lt;/details>
189+
149190

150-
1. **GithubAction + DockerHub**
151-
- Github Action과 DockerHub를 활용한 CI/CD 파이프라인 구축
152191

153192
2. **Vercel**
154193
- Vercel을 사용한 프론트엔드 배포

0 commit comments

Comments
 (0)