1️⃣ 모놀리식 아키텍처 개요

2️⃣ 마이크로서비스 아키텍처 개요

3️⃣ 마이크로서비스 아키텍처 특징

특징 설명
서비스 독립성 서비스별 독립적 개발·배포·운영, 느슨한 결합
분산 데이터 관리 서비스별 데이터 저장소, 필요에 따라 데이터 공유·동기화
유연한 확장성 서비스 단위로 독립적 확장 가능
서비스 복구·격리 한 서비스 장애가 전체에 영향 최소화
서비스 통신 표준화된 API (REST, gRPC, 메시지 큐 등)로 서비스 간 통신
분산 추적·모니터링 요청 추적(분산 트레이싱), 성능 모니터링 등 필요
동적 서비스 검색 서비스 디스커버리 필요 (Eureka 등)
기술 유연성 서비스마다 기술 스택 자유롭게 선택 가능

4️⃣ 마이크로서비스 아키텍처 설계 원칙

원칙 설명
서비스 세분화 비즈니스 기능, 성능, 트랜잭션 경계 등으로 서비스 분리
도메인 주도 설계 (DDD) 비즈니스 도메인을 바운디드 컨텍스트로 분리 (독립성↑)
단일 책임 원칙 (SRP) 클래스·모듈마다 하나의 책임만, 높은 응집도·낮은 결합도
가벼운 통신 HTTP/REST, 메시징 큐 등 효율적 통신 설계
공개 인터페이스 각 서비스의 명시적 API 정의 (Swagger, OpenAPI)
독립적 데이터 저장소 데이터 독립성 확보 (스키마 충돌 최소화, 서비스 장애 영향 최소화)

5️⃣ 모놀리식 vs 마이크로서비스 아키텍처 비교

구분 모놀리식 아키텍처 마이크로서비스 아키텍처
아키텍처 구조 단일 애플리케이션 독립적인 마이크로서비스 집합
배포 단위 전체를 한 번에 배포 서비스별 개별 배포
개발 조직 단일 팀 중심 도메인 기반의 분산 팀 개발
개발/배포 속도 전체 앱 다시 빌드/배포 서비스별 빠른 배포 가능
확장성 수직적 확장(서버 스펙↑) 수평적 확장(서비스별로)
기술 스택 단일 기술 스택 서비스별 적합한 기술 스택 선택 가능
결함 격리 전체 앱 영향 서비스 단위 격리
복잡성 낮음 (코드 한 덩어리) 높음 (서비스 간 통신·데이터 관리·모니터링 등 필요)

6️⃣ MSA 전환 전략

전략 설명
스트랭글러 패턴 기존 모놀리식 앱의 기능을 점진적으로 MSA로 분리 (운영 중에도 점진적 전환 가능)
빅뱅 방식 전체를 새롭게 MSA로 재개발 (리스크·비용↑)

7️⃣ MSA를 위한 클라우드

서비스 설명 예시
IaaS 인프라(서버, 네트워크 등)를 가상화해 제공 AWS EC2, GCP Compute Engine
PaaS 앱 개발·배포 플랫폼 제공 AWS Elastic Beanstalk, Heroku
FaaS 서버리스 함수 실행 환경 제공 AWS Lambda, GCP Cloud Functions
SaaS 소프트웨어를 서비스 형태로 제공 Slack, Google Workspace, Microsoft 365

8️⃣ MSA 기술 스택

구분 기술·도구 예시
환경설정 관리 Spring Cloud Config (Git 기반 중앙 설정)
서비스 디스커버리 Spring Cloud Netflix Eureka
로드밸런싱 Ribbon, Nginx
API 게이트웨이 Spring Cloud Gateway, Zuul
메시징 플랫폼 Apache Kafka, RabbitMQ
분산 DB MongoDB, Cassandra, Redis
컨테이너 플랫폼 Docker, Kubernetes