본문 바로가기

Study

[내일배움캠프 TIL] 4일차 - MSA (Microservice Architecture)

728x90
반응형

오늘은 MSA 강의를 들었습니다.

모놀리식 아키텍처와 MSA를 알게 되었고,

왜 MSA 방식으로 나왔는지, 장단점이 무엇이 있는지 알게 되었습니다.

 

1. 오늘의 학습 키워드

 

  • 아키텍처: MSA (Microservice Architecture), 모놀리틱 아키텍처 (Monolithic Architecture)
  • 서비스 등록 및 탐색: Eureka (Service Discovery)
  • 서비스 간 통신: FeignClient, Ribbon (Load Balancer)
  • 시스템 진입점: API Gateway
  • 장애 탄력성: Resilience4j (Circuit Breaker)

 

2. 핵심 키워드 상세 정리

🔹 모놀리틱 vs MSA 장단점 비교

  • 모놀리틱 아키텍처: 모든 기능이 하나의 코드 베이스에 있는 구조입니다.
    • 장점: 개발 및 배포 초기 단계가 단순하고, 서비스 간 호출 오버헤드가 없습니다.
    • 단점: 규모가 커지면 빌드/배포 시간이 급증하고, 한 부분의 장애가 전체 시스템 마비로 이어집니다.
  • MSA (Microservice Architecture): 서비스를 독립적인 최소 단위로 분할한 구조입니다.
    • 장점: 개별 배포가 가능해 변경에 유연하며, 특정 서비스만 확장(Scaling)하기 용이합니다.
    • 단점: 서비스 간 통신 설정이 복잡하며 데이터 일관성 유지가 어렵습니다.

🔹 Eureka (Service Discovery)

  • 역할: 분산된 마이크로서비스들의 위치(IP, Port)를 중앙에서 관리하는 전화번호부 역할을 합니다.
  • 특징: 각 서비스가 기동될 때 Eureka 서버에 자신의 정보를 등록하며, 클라이언트는 Eureka를 통해 필요한 서비스의 주소를 동적으로 찾아냅니다.

🔹 FeignClient & Ribbon

  • FeignClient: 인터페이스 선언만으로 HTTP 클라이언트를 구현할 수 있게 해주는 선언적 REST Client입니다. 코드의 가독성이 높고 작성이 간편합니다.
  • Ribbon: 클라이언트 사이드 로드밸런서입니다. 여러 대의 서버 중 어디로 요청을 보낼지 결정하며, 현재는 Spring Cloud LoadBalancer로 대체되는 추세이지만 개념적으로는 부하 분산을 담당합니다.

🔹 API Gateway

  • 역할: 모든 클라이언트 요청의 단일 진입점입니다.
  • 주요 기능: 인증 및 인가(Security), 공통 헤더 처리, 라우팅(요청을 적절한 서비스로 전달), 부하 분산 등을 수행하여 클라이언트가 내부 구조를 알 필요 없게 만듭니다.

🔹 Resilience4j (Circuit Breaker)

  • 역할: 특정 서비스에 장애가 발생했을 때, 장애가 전체 시스템으로 전파되지 않도록 차단기(Circuit)를 내리는 역할을 합니다.
  • 작동 방식: 설정된 임계치 이상의 에러가 발생하면 호출을 즉시 차단하고, 미리 준비된 Fallback(우회) 로직을 실행하여 시스템의 안정성을 보장합니다.
반응형