🧩 MSA란?
Microservices Architecture (MSA)
- 정의: 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일
- 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장될 수 있음
- 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어짐
- 특징
- 독립적인 배포 가능성: 각 서비스는 독립적으로 배포할 수 있으며, 다른 서비스에 영향을 주지 않고 업데이트할 수 있음
- 작은 팀 구성: 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있음
- 기술 스택의 다양성: 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있음
- 장점
- 확장성: 각 서비스는 독립적으로 확장 가능, 특정 기능에 대한 성능 최적화가 용이
- 유연성: 다양한 기술 스택을 사용하여 서비스별 최적화 가능
- 독립적 배포: 서비스별로 독립적 배포가 가능하여 배포 주기를 단축
- 작은 팀 구성: 서비스별 작은 팀으로 구성되어 빠르게 개발 가능
- 단점
- 복잡성: 서비스 간 통신, 데이터 일관성 유지, 트랜잭션 관리 등의 복잡성이 증가
- 운영비용: 각 서비스의 모니터링, 로깅, 장애 대응 등을 개별적으로 관리해야 하므로 운영 비용이 증가
- 데이터 관리: 분산된 데이터베이스로 인해 데이터 일관성 유지가 어려울 수 있음
- 네트워크 지연: 서비스 간의 통신이 네트워크를 통해 이루어지므로 지연 시간이 발생할 수 있음
MA vs MSA

| 구분 | Monolithic Architecture | Micro-Service Architecture |
| 정의 | 모든 기능이 하나의 애플리케이션 내에 포함됨 | 서로 다른 기능을 수행하는 여러 개의 독립적인 서비스로 구성된 애플리케이션 |
| 장점 | 간단한 배포, 단일 DB | 확장적, 독립적 배포, 유연성 |
| 단점 | 확장성 부족, 긴 개발 주기, 유연성 부족 | 복잡성 증가, 운영비용 증가 |
🧩 Spring Cloud란?
Spring Cloud
- 정의: 마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 Spring 프레임워크의 확장
- MSA를 쉽게 구현하고 운영할 수 있도록 도움
- 주요 기능
- 서비스 등록 및 디스커버리: Eureka, Consul, Zookeeper
- 로드 밸런싱: Ribbon, Spring Cloud LoadBalancer
- 서킷 브레이커: Hystrix, Resilience4j
- API 게이트웨이: Zuul, Spring Cloud Gateway
- 구성 관리: Spring Cloud Config
- 분산 추적: Spring Cloud Sleuth, Zipkin
- 메시징: Spring Cloud Stream
Spring Cloud의 주요 모듈
- 서비스 등록 및 디스커버리
- Eureka
- 넷플릭스가 개발한 서비스 디스커버리 서버
- MSA에서 각 서비스의 위치를 동적으로 관리
- 특징
- 서비스 레지스트리: 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소
- 헬스 체크(Health check): 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장
- Eureka
- 로드 밸런싱
- Ribbon
- 넷플릭스가 개발한 클라이언트 사이드 로드 밸런서
- 서비스 인스턴스 간의 부하를 분산
- 특징
- 서버 리스트 제공자: Eureka로부터 서비스 인스턴스 리스트를 제공받아 로드 밸런싱에 사용
- 로드밸런싱 알고리즘: 라운드 로빈, 가중치 기반 등 다양한 로드 밸런싱 알고리즘 지원
- Failover: 요청 실패 시 다른 인스턴스로 자동 전환
- Ribbon
- 서킷 브레이커
- Hystrix
- 넷플릭스가 개발한 서킷 브레이커 라이브러리
- 서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지
- 특징
- 서킷 브레이커 상태: 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리
- Failback: 호출 실패 시 대체 로직을 제공하여 시스템 안정성 확보
- 모니터링: Hystrix Dashboard를 통해 서킷 브레이커 상태 모니터링
- Resilience4j
- 자바 기반의 경량 서킷 브레이커 라이브러리
- 특징
- 서킷 브레이커: 호출 실패를 감지하고 서킷을 열어 추가적인 호출을 차단하여 시스템의 부하를 줄임
- Failback: 호출 실패 시 대체 로직을 실행하여 시스템의 안정성을 유지
- 타임아웃 설정: 호출의 응답 시간을 설정하여 느린 서비스 호출에 대응할 수 있음
- 재시도: 재시도 기능을 지원하여 일시적인 네트워크 문제 등에 대응할 수 있음
- Hystrix
Spring Cloud 구성 요소의 활용
- API 게이트웨이
- Zuul
- 넷플릭스가 개발한 API 게이트웨이
- 모든 서비스 요청을 중앙에서 관리
- 특징
- 라우팅: 요청 URL에 따라 적절한 서비스로 요청 전달
- 필터: 요청 전후에 다양한 작업을 수행할 수 있는 필터 체인 제공
- 모니터링: 요청 로그 및 메트릭을 통해 서비스 상태 모니터링 할 수 있음
- Cloud Gateway
- 클라우드 게이트웨이는 스프링 클라우드에서 제공하는 API 게이트웨이
- 마이크로서비스 아키텍처에서 필수적인 역할
- 특징
- 루팅 및 필터링: 요청을 받아 특정 서비스로 라우팅하고 필요한 인증 및 권한 부여를 수행
- 보안: 외부 요청으로부터 애플리케이션을 보호하고, 보안 정책을 적용함
- 효율성: 마이크로서비스 아키텍처에서 필요한 요청 처리 및 분산 환경의 관리를 효율적으로 수행
- Zuul
- 구성 관리
- Spring Cloud Config
- 분산된 환경에서 중앙 집중식 설정 관리를 제공
- 특징
- Config 서버: 중앙에서 설정 파일을 관리하고 각 서비스에 제공
- Config 클라이언트: Config 서버에서 설정을 받아서 사용하는 서비스
- 설정갱신: 설정 변경 시 서비스 재시작 없이 실시간으로 반영
- Spring Cloud Config
'내일배움캠프' 카테고리의 다른 글
| [내일배움캠프] 보안 구성, Config 서버, 분산 추적, 이벤트 드리븐 (1) | 2026.04.14 |
|---|---|
| [내일배움캠프] 서비스 디스커버리, 로드 밸런싱, 서킷 브레이커, API 게이트웨이 (0) | 2026.04.13 |
| [내일배움캠프] 예외 처리 (0) | 2026.04.10 |
| [내일배움캠프] Spring AOP (0) | 2026.04.10 |
| [내일배움캠프] 단위 테스트와 통합 테스트 (0) | 2026.04.10 |