[토이프로젝트][MSA] 감정일기장-4 : Monolithic -> MSA 아키텍처

onlydev7777·2024년 9월 13일

☀️ 개요

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

🏗️ 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

profile
https://github.com/onlydev7777

0개의 댓글