Skip to content

kyoona/msa-cd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MSA서비스 CICD 프로젝트

해당 레파지토리는 CD에 해당하는 레파지토리입니다.
간단한 커뮤니티 서비스를 '게시글 서비스', '채팅 서비스'로 분리하여 MSA를 구현하고 Docker, Kubernetes, Git Action을 활용하여 CICD파이프라인을 구축합니다. 프로젝트 목적은 다음과 같습니다.

1. CICD 파이프라인 구축

CI와 CD는 프로세스와 목적이 다르기 때문에 CI레파지토리와 CD레파지토리를 분리하였습니다. image
CI 프로세스

  • CI레파지토리는 서비스의 코드를 관리합니다.
  • CI레파지토리의 main브랜치에 코드 변화가 감지되면 Git Action이 트리거됩니다.
  • 레파지토리의 코드를 jar 파일로 빌드합니다.
  • Dockerfile을 통해 도커 이미지를 빌드합니다.
  • Docker hub에 빌드된 이미지를 푸시합니다.

CD 프로세스

  • CD레파지토리는 배포할 도커 이미지의 태그, 배포 전략과 관련된 설정 파일을 관리합니다.
  • CD레파지토리의 main 브랜치에 배포 설정 변경이 감지되면 Argo CD에서 이를 감지합니다.
  • 마스터 노드에서 실행되는 Argo CD가 CD레파지토리의 배포 설정대로 워커 노드를 동기화합니다.

2. 로드 밸런싱

image

AWS ALB를 사용하여 클라이언트 요청을 적절한 워커 노드의 Kubernetes Ingress로 전달하여 MSA 서비스 간 부하를 분산합니다.

3. 서비스 장애 복구

image

ReplicaSet을 사용하여 항상 지정된 개수의 Pod를 유지될 수 있도록합니다. 특정 Pod가 장애로 종료되면, 자동으로 새로운 Pod를 생성합니다.

4. 사용량에 따른 오토스케일링

image

HPA Controller를 통해 CPU 및 메모리 사용량을 실시간 모니터링 하며, 설정된 임계치를 초과하면 자동으로 Pod를 확장, 감소하면 Pod 수를 줄여 불필요한 리소스 사용을 방지합니다.

🛠️ 기술

Category Stack
Language Java
Framework Spring Boot
Library Spring Data JPA, Query DSL
Database My SQL
Infra Docker, Kubernetes, Argo CD, Helm, Git Action, AWS EKS, AWS Loadbalancer

결과

image Control plane에 해당하는 마스터 노드와 2개의 워커 노드로 쿠버네티스 클러스터가 구성되어 있습니다.
각 워커 노드의 pod에는 라우팅을 위한 Gateway역할을 하는 서비스, 게시판 서비스, 채팅 서비스가 컨테이너로 실행됩니다. 쿠버네티스 클러스터는 AWS의 EKS를 통해 배포되었습니다. k8s-deault

개선점

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published