LG CNS Camp 2기/MSA 과정

[MSA 과정] 모놀리식(Monolithic) 아키텍쳐와 마이크로서비스(MSA)

BuSiSi 2025. 5. 29. 00:51

모놀리식 아키텍쳐( Monolithic Architecture )

 - 여러기능 ( ex. 로그인, 상품 조회, 주문, 결제 ... ) 들을 하나의 큰 프로그램으로 만드는 방식

 장점

  초기 스타트업 같은 경우에는 좋을 수 있음.

  빠른개발 : 간단하고 직관적이라 빠르게 만들 수 있음.

  쉬운 배포 : 파일 하나만 서버에 올리면 끝!

  간단한 테스트 : 전체를 한 번에 테스트 하면 됨.

  쉬운 디버깅 : 모든 코드가 한 곳에 있어서 문제를 찾기 쉬움.

 

 단점

  서비스가 커지면서 문제가 생기기 시작함..

  복잡도 폭발 : 코드가 너무 길어짐. 작은 수정하나에 전체를 이해해야 함.

  배포의 공포 : 기능하나 수정하는데 전체를 다시 배포해야함. 근데 다른 기능에서 오류가 나버림..

  확장의 한계 : 기능에 따라 트래픽이 많으면 서버를 늘려야 하고 트래픽이 적으면 줄여줘야 함

  기술선택의 제약 : 개발언어의 선택이 자유롭지 못함 ( python, java 등등 )

 

 

그래서 나온 것이 MSA ( 마이크로 서비스 )

 

MSA란? 

 기능별로 서비스를 나누는 것. ( 사용자 서비스, 상품 서비스, 주문 서비스, 결제 서비스 등등 )

MSA 의 장점

 - 독립적 개발 : 각 팀이 자신의 담당 부분에만 집중 가능!

 - 독립적 배포 : 수정이 필요한 부분만 업데이트하면 됨!

 - 기술 다양성 : 각 서비스마다 최적의 기술 선택 가능

 - 장애 격리 : 한 부분에 문제가 생겨도 다른 부분은 멀쩡함.

 - 확장성 : 필요한 서비스만 서버 증설 가능

 

MSA 의 단점

 - 관리 복잡성 : 서비스가 많아서 관리가 힘듦

 - 네트워크 통신 : 서비스끼리 통신할 때 오류 가능성 있음

 - 복잡한 테스트 : 테스트를 할 때 여러 서비스를 함께 진행해야 함

 - 분산 시스템의 복잡성 : 데이터 일관성, 트랜잭션 관리 등등

 

MSA를 위해 필요한 핵심 기술들

 1. 서비스 디스커버리(Service Discovery)

   - 유레카(Eureka) 서버

   서비스 등록

   주기적으로 상태 체크

   서비스 주소 제공 ( 다른 서비스에서 찾을 때 )

 

 2. 로드 밸런서 (Load Balancer)

   - 같은 서비스에 인스턴스가 여러개 있을 때

  라운드 로빈 : 순서대로 배정

  가중치 : 성능 좋은 서버에 더 많이 배분

  최초 연결 : 현재 일이 적은 서버에 우선 배정

 

3. API Gateway

   라우팅 : 요청을 어떤 서비스로 보낼지?

   인증 : 사용자가 접근 권한이 있는지?

   로깅 : 누가 언제 무엇을 요청했는지 기록

   Rate Limiting : 너무 많은 요청은 차단

 

4. ALB (Application Load Balancer)

   - 외부 트래픽 분산

 

[ 전체적인 동작 흐름 ]

 1) 유레카에 서비스 주소값 등록

 2) 사용자 요청

 3) ALB에서 외부 트래픽 분산

 4) API Gateway에서 적절한 서비스 주소값 찾기

 5) 로드밸런서가 같은 종류 서비스 중 적절하게 배정

 6) 서비스 호출 및 서비스간 통신

 


현재 팀의 상황과 서비스에 맞는 선택을 하는 것이 중요해 보임.

작고 단순한 서비스에는 모놀리식으로 시작해서

크고 복잡한 서비스가 될 수록 MSA를 고려하고 점진적인 전환을 통해 성장하는 서비스

'LG CNS Camp 2기 > MSA 과정' 카테고리의 다른 글

[MSA 과정] 클라우드 네이티브  (0) 2025.05.29