☀️ 개요
인프런 이도원 님의 Spring Cloud로 개발하는 MSA 강의를 통해 공부한 내용을 바탕으로 기존의
Monolithic 아키텍처의 감정일기장 프로젝트를 MSA 아키텍처로 전환 한다.
🏗️ MSA 아키텍처

1. Spring Cloud Eureka
2. Spring Cloud Gateway
- 로드 밸런싱
- 인증 및 권한 부여
- 로깅 추적
- 응답 캐싱
- 써킷브레이커 등
- Netty 기반 비동기 방식 수행
3. Spring Cloud Config
- RabbitMQ + Spring Cloud Bus AMQP + Spring Actuator 와 연동하여 설정파일 서버 재기동 없이 HotDeploy 기능 수행
- Github Private Repository 연동
4. Spring Cloud OpenFeign
- 인터페이스 방식으로 다른 마이크로 서비스로 API 호출 시 사용
- Spring Cloud Gateway + Eureka 와 연동으로 로드 밸런싱 지원
- FailOver, Retry 기능 지원
5. Spring Cloud Circuit Breaker Resilience4j
- 장애 발생하는 서비스에 반복적인 호출 하지 않도록 차단하고 대체 기능 수행 지원
6. Zipkin
- Spring Cloud Sleuth 와 연동해서 traceId, spanId 를 부여 해서 로깅 추적 기능을 제공 했으나 Spring Boot 3.0 이후 부터는 io.github.openfeign 으로 이전 되었음
7. Apache Kafka
- 이벤트 스트리밍 방식
: 이벤트가 발생하면 실시간으로 stream 형태로 처리
- End-To-End 방식이 아닌 Kafka 중앙 집중화, 허브 역할로서 서비스 간 의존성 감소
- 배치 단위로 묶어서 처리 -> 높은 데이터 처리량
- 데이터 유실 보증
- 메모리가 아닌 파일 시스템에 저장
- 파일 I/O 성능 향상을 위해 페이지 캐시(Page Cache)
- 일부 서버 장애 발생하더라도 FailOver 시스템 가동
- 무중단으로 Scale-In/Out 가능
8. Prometheus
- Spring Actuator 와 연동하여 서버 관련 Metrics 집계
9. Grafana
- Prometheus 와 연동하여 집계된 데이터 시각화, 모니터링 및 분석
10. Docker
- OS 리소스를 적게 사용하는 컨테이너 가상화 기술
- 최소한의 라이브러리와 도구 포함
- 애플리케이션의 배포, 실행에 있어서 일관된 환경 지원
★ GitHub
front-end("front-msa" 브랜치) : https://github.com/onlydev7777/emotion-diary-react
back-end : https://github.com/onlydev7777/emotion-diary-msa
inflearn-msa : https://github.com/onlydev7777/springboot-msa-3.0/tree/master