์ด ํ๋ก์ ํธ๋ MSA ์ํคํ
์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ๋
๋ฆฝ์ ์ธ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
๊ฐ ์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ๊ณ Kubernetes๋ฅผ ์ด์ฉํด ์ค์ผ์คํธ๋ ์ด์
๋ฉ๋๋ค.
์ด๋ฆ | ์ญํ | ๋ด๋น ํํธ |
---|---|---|
๋ ธ๊ฒฝํฌ | Backend | ์ ๊ณ ๊ธ, ์ฐ๋ ๊ธฐ ์ฅ์ |
ํ๊ณ ์ | Backend | ํ์, ํ๋ก๊น ๋ฃจํธ |
Plog-Server
โโโ apigateway-service
โโโ member-service
โโโ plogging-service
โโโ report-service
โโโ trash-service
โโโ eureka-server
โโโ common
โโโ k8s
โ โโโ applications
โ โโโ environments
โโโ .github
โโโ query.sql
โโโ Dockerfile
โโโ README.md
โโโ settings.gradle
๐๐ถ๐ฟ๐ฒ๐ฐ๐๐ผ๐ฟ๐ ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ ๐ฏ๐ ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ
apigateway-service
โโโ src
โ โโโ main
โ โ โโโ java
โ โ โ โโโ com.songspaassta.apigatewayservice
โ โ โ โโโ auth
โ โ โ โโโ config
โ โ โ โโโ filter
โ โ โ โโโ ApigatewayServiceApplication
โ โ โโโ resources
โ โ โโโ application.yml
โ โ โโโ application-k8s.yml
โโโ Dockerfile
โโโ build.gradle
๐ฎ. ๐บ๐ฒ๐บ๐ฏ๐ฒ๐ฟ-๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ (๐ฆ๐ถ๐บ๐ถ๐น๐ฎ๐ฟ ๐๐ผ ๐ฟ๐ฒ๐ฝ๐ผ๐ฟ๐, ๐๐ฟ๐ฎ๐๐ต, ๐ฝ๐น๐ผ๐ด๐ด๐ถ๐ป๐ด)
member-service
โโโ src
โ โโโ main
โ โ โโโ java
โ โ โ โโโ com.songspaassta.memberservice
โ โ โ โโโ client
โ โ โ โโโ config
โ โ โ โโโ controller
โ โ โ โโโ domain
โ โ โ โโโ dto
โ โ โ โโโ service
โ โ โโโ resources
โ โ โโโ application.yml
โ โ โโโ application-k8s.yml
โโโ Dockerfile
โโโ build.gradle
k8s
โโโ applications
โ โโโ apigateway
โ โ โโโ ingress
โ โ โโโ autoscaler.yaml
โ โ โโโ deployment.yaml
โ โ โโโ service.yaml
โ โโโ eureka-server
โ โโโ member-service
โ โโโ plogging-service
โ โโโ report-service
โ โโโ trash-service
โโโ environments
โ โโโ configmaps
โ โ โโโ configmap.yaml
โ โโโ secrets
โ โโโ secret.yaml
๋ถ๋ฅ | ๊ธฐ์ | ์ค๋ช |
---|---|---|
Backend | Spring Boot | MSA์ ์ ํฉํ ๊ฒฝ๋ํ ์น ์๋น์ค ๊ฐ๋ฐ ํ๋ ์์ํฌ |
Spring Data JPA | ORM(Object-Relational Mapping) ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก DB์ ์ํธ์์ฉ | |
Spring Security | ์ฌ์ฉ์ ์ ๊ทผ ์ ์ด ๊ฐํ ๋ฐ ์ธ์ฆ ์์คํ ๊ฐํ | |
Spring Cloud Gateway | API Gateway๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ผ์ฐํ ๋ฐ ์ธ์ฆ ๊ด๋ฆฌ | |
Spring WebFlux | ๋น๋๊ธฐ ๋ฐฉ์์ Spring Gateway | |
Spring Actuator | ์๋ฒ์ ๋ชจ๋ํฐ๋ง๊ณผ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๋ฉฐ Graceful Shutdown ์ง์ | |
Eureka Server & Eureka Client | ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ ๊ณต | |
Java | ๋ฐฑ์๋ ๊ฐ๋ฐ ์ธ์ด | |
DB | PostgreSQL | ์๋น์ค ๋ฐ์ดํฐ ์ ์ฅ DB |
Redis | ๋ฆฌํ๋ ์ ํ ํฐ ๊ด๋ฆฌ | |
CI/CD | Naver Cloud Platform | - SourceCommit: ์ฝ๋ ๋ฒ์ ๊ด๋ฆฌ - SourceBuild: Docker ์ด๋ฏธ์ง ์๋ ๋น๋ - SourcePipeline: ์ฝ๋๋ถํฐ ๋ฐฐํฌ๊น์ง ์๋ํ - SourceDeploy: Kubernetes ๋ฐ ํด๋ฌ์คํฐ ๋ฐฐํฌ ์ง์ - Container Registry: Docker ์ด๋ฏธ์ง ์ ์ฅ, ๋ฐฐํฌ |
K-PaaS | NCloud Kubernetes Service: ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋ฐ ์คํ ์ค์ผ์ผ๋ง | |
Open API | SK Open API | ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ API ์ ๊ณต |
Naver Open API | ์ ๊ณ ์์น ๋ฐ ๊ฑฐ๋ฆฌ ๊ณ์ฐ, ์ง์ ์ ํ์ ์ํ ์ขํ ๋ณํ ๊ธฐ๋ฅ | |
Dataset | ๊ณต๊ณต๋ฐ์ดํฐํฌํธ | ๊ณต๊ณต ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ํ๋ก์ ํธ ๊ตฌ์ฑ |
ํ์ ๋๊ตฌ | Swagger | API ๋ฌธ์ ์๋ํ ๋๊ตฌ |
๐ฆ๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ ๐๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ | ๐ฆ๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ ๐๐ถ๐๐ฐ๐ผ๐๐ฒ๐ฟ๐ |
---|---|
๐๐น๐ผ๐๐ฑ-๐ก๐ฎ๐๐ถ๐๐ฒ ๐๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป(๐๐ก๐) | ๐๐/๐๐ |
---|---|
- Admin์ด Git์ ์ฝ๋๋ฅผ ํธ์ํ๋ฉด CI/CD ํ์ดํ๋ผ์ธ์ด ์์
- SourceCommit์์ ์ฝ๋ ์์ ํ SourceBuild์์ Docker ์ด๋ฏธ์ง๋ก ๋น๋ํ์ฌ Container Registry์ ์ ์ฅ
- SourcePipeline์ด SourceDeploy๋ก ์ด๋ฏธ์ง๋ฅผ ์ ๋ฌํด Kubernetes์ ๋ฐฐํฌ
- ๋ฐฐํฌ๋ ์๋น์ค๋ NCloud Kubernetes Service์์ ์ด์
- Public IP โ Load Balancer โ Ingress๋ฅผ ํตํด API Gateway๊ฐ ์ฌ์ฉ์ ์์ฒญ์ ์๋น์ค์ ๋ผ์ฐํ
- SK Open API์ Naver OpenAPI๋ฅผ ํตํด ์ธ๋ถ ๋ฐ์ดํฐ์ ์ฐ๋
- ํ๋ซํผ: NCloud Kubernetes Service(K-PaaS) ๊ธฐ๋ฐ์์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋๋ฉฐ, ์คํ ์ค์ผ์ผ๋ง์ผ๋ก ์ ์ฐํ ํ์ฅ์ฑ๊ณผ ๋์ ๊ฐ์ฉ์ฑ ์ ๊ณต
- CI/CD: Naver Cloud์ SourceCommit, SourceBuild, SourcePipeline, SourceDeploy๋ก ๊ตฌ์ฑ๋ ์๋ํ๋ ํ์ดํ๋ผ์ธ์ ํตํด Docker ์ด๋ฏธ์ง ๋น๋ ๋ฐ ๋ฐฐํฌ
- MSA ๊ตฌ์ฑ: Plogging, Report, Trash, Member ์๋น์ค์ ์ด๋ฅผ ์ง์ํ๋ API Gateway, Eureka Server๋ก ๊ตฌ์ฑ๋ ๋ ๋ฆฝ์ ์ธ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์กฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: ๊ฐ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ธ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
๐ญ๐ฎ-๐๐ฎ๐ฐ๐๐ผ๐ฟ ๐๐ฝ๐ฝ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ธฐ ์ํ ๐ญ๐ฎ๊ฐ์ง ์์น์
๋๋ค.
์ค์ ์ ์ฝ๋์ ๋ถ๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์์ ๊ด๋ฆฌํ๋ฉฐ, ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ๊ณ ์ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
์ฆ, ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์ง ๋ ๊ฐ๋จํ๊ณ ์์ ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ๊ฐ์ด๋์
๋๋ค.
1. Codebase (์ฝ๋ ๋ฒ ์ด์ค)
2. Dependencies (์ข
์์ฑ)
3. Config (์ค์ )
4. Backing Services (๋ฐฑ์๋ ์๋น์ค)
5. Build, Release, Run
6. Stateless Processes (stateless ํ๋ก์ธ์ค)
7. Port Binding (ํฌํธ ๋ฐ์ธ๋ฉ)
8. Concurrency (๋์์ฑ)
9. Disposability (ํ๊ธฐ ๊ฐ๋ฅ)
10. Dev-Prod Parity (๊ฐ๋ฐ/ํ๋ก๋์
ํ๊ฒฝ ์ผ์น)
11. Logs (๋ก๊ทธ)
12. Admin Processes (๊ด๋ฆฌ ํ๋ก์ธ์ค)
โ๏ธ ๐๐น๐ผ๐๐ฑ-๐ก๐ฎ๐๐ถ๐๐ฒ ๐๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป(๐๐ก๐)
'Plog'๋ Cloud-Native Application(CNA) ์์น์ ๊ธฐ๋ฐ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค, ์ปจํ
์ด๋, DevOps, CI/CD๋ฅผ ํ์ฉํด ๋
๋ฆฝ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํคํ
์ฒ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ๋ฅผ ์ํ 4๊ฐ์ง ๊ตฌ์ฑ์์์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ปค๋ฐ ์ ํ | ์ค๋ช |
---|---|
Feat |
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
Fix |
๋ฒ๊ทธ ์์ |
Docs |
๋ฌธ์ ์ ๋ฐ์ดํธ |
Style |
์ฝ๋ ํฌ๋งท ๋ณ๊ฒฝ (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์) |
Refactor |
์ฝ๋ ๋ฆฌํฉํ ๋ง |
Test |
ํ ์คํธ ์ฝ๋ ์ถ๊ฐ |
Chore |
๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ (๋น๋ ์ค์ , ํจํค์ง ์์ ๋ฑ) |
Design |
UI/UX ๊ด๋ จ ๋์์ธ ์์ |
Comment |
์ฃผ์ ์ถ๊ฐ ๋ฐ ์์ |
Rename |
ํ์ผ ๋๋ ํด๋ ์ด๋ฆ ๋ณ๊ฒฝ |
Remove |
ํ์ผ ์ญ์ |
!BREAKING CHANGE |
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ |
!HOTFIX |
๊ธด๊ธ ์์ |
- ์ ๋ชฉ์ 50์ ์ด๋ด๋ก ์์ฑํ๋ฉฐ ๋์๋ ๋ง์นจํ๋ฅผ ์ฌ์ฉํ์ง ์์
- ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ์ ํ ์ค ๋์ ๊ตฌ๋ถ
- ๋ณธ๋ฌธ์๋ ๋ณ๊ฒฝ ๋ด์ฉ๊ณผ ์ด์ ๋ฅผ ์์ธํ ์์ฑ
git commit -m "feat: ํ์๊ฐ์
๊ธฐ๋ฅ ์ถ๊ฐ
- ํ์๊ฐ์
API ๊ตฌํ
- ์ ํจ์ฑ ๊ฒ์ฌ ์ถ๊ฐ"
๋ธ๋์น ์ ํ | ์ค๋ช |
---|---|
develop |
๋ฐฐํฌํ ์ต์ข ์ฝ๋ |
feature/#<์ด์๋ฒํธ>-<๊ธฐ๋ฅ๋ช
> |
์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ธ๋์น |
refactor/#<์ด์๋ฒํธ>-<๊ธฐ๋ฅ๋ช
> |
์ฝ๋ ๋ฆฌํํ ๋ง ๋ธ๋์น |