1강 30분

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

마이크로서비스 아키텍처의 기본 개념과 모놀리식 아키텍처와의 차이점을 이해합니다. 마이크로서비스가 필요한 이유와 장단점을 살펴봅니다.

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

학습 목표

이 강의를 마치면 다음을 이해하게 됩니다:

  • 마이크로서비스 아키텍처의 정의
  • 모놀리식 vs 마이크로서비스
  • 마이크로서비스의 핵심 특징
  • 언제 마이크로서비스를 선택해야 하는가

마이크로서비스란?

마이크로서비스 아키텍처(MSA)는 애플리케이션을 작고 독립적인 서비스들의 집합으로 구성하는 아키텍처 패턴입니다.

핵심 특징

  1. 독립성: 각 서비스는 독립적으로 배포 가능
  2. 비즈니스 중심: 비즈니스 기능 단위로 분리
  3. 기술 다양성: 서비스마다 다른 기술 스택 사용 가능
  4. 느슨한 결합: 서비스 간 의존성 최소화

모놀리식 vs 마이크로서비스

모놀리식 아키텍처

graph TB
    subgraph Monolithic["모놀리식 애플리케이션"]
        UI[UI Layer]
        BL[Business Logic]
        DAL[Data Access Layer]
        UI --> BL
        BL --> DAL
    end
    DAL --> DB[(Single Database)]

    style Monolithic fill:#f0f0f0,stroke:#333,stroke-width:2px
    style DB fill:#4a90e2,stroke:#333,stroke-width:2px

장점:

  • 개발 초기 단순함
  • 쉬운 배포
  • 통합 테스트 용이

단점:

  • 확장성 제한
  • 기술 스택 고정
  • 배포 리스크 높음
  • 팀 간 의존성

마이크로서비스 아키텍처

graph TB
    subgraph ServiceA["Service A"]
        A[Business Logic A]
        A --> DBA[(DB A)]
    end

    subgraph ServiceB["Service B"]
        B[Business Logic B]
        B --> DBB[(DB B)]
    end

    subgraph ServiceC["Service C"]
        C[Business Logic C]
        C --> DBC[(DB C)]
    end

    Client[Client] --> ServiceA
    Client --> ServiceB
    Client --> ServiceC

    ServiceA -.통신.-> ServiceB
    ServiceB -.통신.-> ServiceC

    style ServiceA fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
    style ServiceB fill:#e3f2fd,stroke:#2196f3,stroke-width:2px
    style ServiceC fill:#fff3e0,stroke:#ff9800,stroke-width:2px
    style Client fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px

장점:

  • 독립적 확장
  • 기술 선택 자유
  • 장애 격리
  • 팀 자율성

단점:

  • 분산 시스템 복잡도
  • 네트워크 레이턴시
  • 데이터 일관성 관리
  • 운영 오버헤드

언제 마이크로서비스를 선택할까?

적합한 경우

✅ 대규모 팀으로 개발 ✅ 서비스별로 다른 확장 요구사항 ✅ 빠른 배포 주기 필요 ✅ 기술 실험과 혁신 중요

부적합한 경우

❌ 소규모 프로젝트 ❌ 제한된 리소스 ❌ 도메인 이해 부족 ❌ 분산 시스템 경험 부족

실제 사례: 넷플릭스

넷플릭스는 2008년부터 모놀리식에서 마이크로서비스로 전환했습니다.

결과:

  • 1일 수십 번 배포 가능
  • 글로벌 1억+ 사용자 지원
  • 99.99% 가용성 달성

다음 강의

다음 강의에서는 마이크로서비스를 어떻게 분리할지 **도메인 주도 설계(DDD)**를 배웁니다.

핵심 정리

  • 마이크로서비스는 독립적인 서비스들의 집합
  • 모놀리식보다 복잡하지만 확장성과 유연성이 뛰어남
  • 프로젝트 규모와 팀 역량에 따라 선택
  • 넷플릭스, 아마존 등 대규모 서비스에서 성공적으로 사용 중