본문 바로가기
SpringBoot/심화 주제

마이크로서비스 아키텍처(MSA) 입문

by DEVLIB 2025. 4. 16.
728x90

마이크로서비스 아키텍처란?

정의

MSA는 애플리케이션을 작고 자율적인 서비스들로 나누고,
이들 서비스를 독립적으로 배포, 운영, 확장할 수 있게 만드는 아키텍처 스타일입니다.


MSA vs 모놀리식 비교

항목 모놀리식(Monolith) 마이크로서비스(MSA)
구조 하나의 큰 애플리케이션 작고 독립적인 서비스들의 조합
배포 전체 재배포 서비스 단위 배포 가능
개발 협업 어려움 (코드 충돌↑) 팀별 서비스 담당 가능
장애 영향 전체 다운 가능성 ↑ 서비스 격리로 영향 ↓
확장성 수직 확장 수평 확장 가능

예시 시스템 구성

예: 쇼핑몰 시스템을 MSA로 설계 시

마이크로서비스
역할
회원 서비스 회원 가입, 로그인
상품 서비스 상품 등록, 조회
주문 서비스 주문 생성, 결제 처리
배송 서비스 배송 상태 관리
알림 서비스 이메일, 문자 발송
API Gateway 프론트엔드 진입점

스프링 부트 기반 MSA 필수 기술

기술
설명
Spring Boot 각 서비스의 기본 개발 프레임워크
Spring Cloud 마이크로서비스 인프라 지원 (등록, 라우팅, 구성 등)
Eureka 서비스 등록/탐색(Discovery Service)
Spring Cloud Gateway API 게이트웨이 역할
Feign Client 서비스 간 통신 (내부 HTTP 호출 추상화)
Config Server 중앙화된 환경 설정 관리
Circuit Breaker 장애 격리 (Resilience4j 등)
RabbitMQ/Kafka 비동기 메시지 처리
JWT + OAuth2 인증 및 보안 관리

서비스 간 통신 방식

방식
설명 장단점
HTTP REST + Feign 단순하고 직관적 실시간 의존도 ↑
Message Queue (Kafka 등) 비동기 통신 복잡하지만 확장성 ↑

마이크로서비스 개발 흐름 예시

  1. 각 서비스는 별도 프로젝트 또는 멀티모듈로 나눔
  2. 공통 설정은 Config Server에서 관리
  3. 서비스는 Eureka에 등록
  4. API 요청은 Gateway를 통해 라우팅
  5. 서비스 간 데이터 공유는 Feign or MQ
  6. 인증은 OAuth2 + JWT (or Keycloak 등)

프로젝트 구조 예시

msa-project/
├── discovery-service/         ← Eureka 서버
├── config-service/            ← 설정 서버
├── api-gateway/               ← Spring Cloud Gateway
├── user-service/              ← 회원 서비스
├── product-service/           ← 상품 서비스
├── order-service/             ← 주문 서비스
└── common-library/            ← 공통 DTO, Util

MSA 도입 시 장단점

장점 단점
독립 배포 가능 초기 설계 복잡도 ↑
장애 격리 서비스 간 통신 비용 ↑
팀별 병렬 개발 테스트/운영 환경 구성 복잡
유연한 확장성 CI/CD, 모니터링 시스템 필수

입문 단계 추천 학습 순서

  1. 스프링 부트 단일 서비스 개발 익히기
  2. RESTful API 설계 → Feign Client 학습
  3. Eureka & Config Server 설정
  4. Gateway를 통한 라우팅 적용
  5. OAuth2 or JWT 기반 보안 학습
  6. Kafka or RabbitMQ로 비동기 이벤트 처리

마무리 요약

항목 설명
핵심 개념 서비스별 분리, 독립 배포, 확장 가능
스택 Spring Boot + Spring Cloud + Gateway + Eureka + JWT
구성 추천 서비스/게이트웨이/설정/인증 모듈 분리
실무 팁 먼저 단일 서비스 → 점진적 MSA로 이전하는 방식 추천
LIST

'SpringBoot > 심화 주제' 카테고리의 다른 글

멀티모듈 프로젝트 구성  (0) 2025.04.16
WebSocket & 실시간 알림  (0) 2025.04.16
캐시(Cache)  (1) 2025.04.16
QueryDSL  (0) 2025.04.16