독서 기록/마이크로 서비스 패턴

[마이크로 서비스 패턴] 1장 모놀리식 지옥에서 벗어나라

JoJobum 2023. 4. 20.

작은 규모의 소프트웨어에서는 모놀리식이 장점이 많음

  • 개발 편함
  • 쉽게 변경
  • 테스트 용이
  • 배포 용이
  • 업-다운 스케일 용이

서비스가 커지면서, 즉 프로그램 규모가 커질수록 위의 장점은 사라지고 단점들이 많아짐

  1. 너무 복잡해서 개발자가 주눅든다 (매우 공감…) 코드 베이스를 이해하기 힘듬 (만악의 근원)
  2. 자연스럽게 개발이 더뎌짐
  3. 자연스럽게 테스트가 오래걸림
  4. 자연스럽게 수정,배포가 어려움

갈수록 한물간 기술 스택에 발목 붙잡히다

아키텍쳐 때문에 어쩔 수 없이 점점 한물간 기술 스택을 쓸 수 밖에 없고, 그 특성상 최신 기술을 사용하고자 전체 모놀리식 어플리케이션을 재작성하는 것은 비용도 비용이고 리스크가 높아 그냥 따라갈 수 밖에없음

 

💡 == 신한카드의 IT 서비스의 현상황이라고 생각
💡 도입부에서 이미 박수 치고있었음 👏

 

MSA(마이크로 서비스 아키텍쳐)에서 마이크로 서비스의 단위는 사람마다 다름

확장큐브: 3차원 모델

  • X축: 동일한 다중 인스턴스
  • Y축: 기능에 따라 나누어 확장
  • Z축: 요청 속성에 따라 요청 라우팅 (데이터 분할)

X축 확장 = 주로 모놀리식의 확장 수단

X/Z축 확장의 경우 어플리케이션의 능력과 가용성 개선

But, 복잡성에 대한 문제 해결X

⇒ 기능 분해가 필요하다

어플리케이션이 방대해지고 복잡해져 개인이 이해하고 개발하기 어려워지는 것을 막기 위해 모듈성을 지켜야함.

이를 위해 서비스가 다른 서비스를 침범하지 않게 하기 위해 경계선을 가져야함

  • 서비스마다 DB도 따로 두어야함

SOA(서비스 지향 아키텍쳐) vs MSA

SOA MSA

서비스간 통신 엔터프라이즈 서비스 버스 중심의 스마트 파이프 메세지 브로커 또는 서비스 간 통신 중심의 덤 파이프
데이터 전역 데이터 모델 및 공유 DB 서비스 개별 데이터 모델 및 DB
💡 계정계, 채널계, 정보계, 등등 여러 시스템으로 나누어지고 이러한 시스템 간의 통신을 담당하고 있는 EAI, MCI 같은 구조를 보고 어떻게 보면 MSA 아닌가? 라는 생각을 했었는데, SOA가 맞는 것 같다.

 

MSA의 포인트

잘못 분해, 설계하면 모놀리식과 MSA의 단점만 가진 시스템 되어버림

분산 시스템이라는 또 다른 복잡성 생김

테스트가 어려워짐

서비스간의 Dependency 고려해야 함

 

서비스마다 DB를 따로 두었을 때 발생할 수 있는 문제에 대한 내용을 가볍게 언급했는데, 개인적으로 이에 대해 관심이 많아서 뒷 내용이 기대가 된다.

반응형

댓글