마이크로서비스 아키텍처(MSA)

YangJiWon·2020년 6월 13일
0

마이크로서비스 아키텍처

  • 마이크로서비스 아키텍처는 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 말합니다.
  • 애플리케이션을 특화된 기능별로 나누게 되면 자연스럽게 애플리케이션의 추상화가 가능해집니다.
  • 모놀리틱 아키텍처로 구성된 하나의 큰 서비스를 독립적인 역할을 수행하는 작은 단위의 서비스로 분리하여 설계하는 패턴을 말합니다.
  • 여기서 독립적인 역할이란 주로, '사용자 관리', '결제 관리', '알림 관리'와 같이 기능적인 요소를 의미합니다.
  • 각각의 마이크로서비스는 그 크기만 작을 뿐, 자세히 살펴보면 각각이 하나의 모놀리틱 아키텍처와 유사한 구조를 갖습니다. 다만, 하나의 서비스에서 처리해야 하는 기능과 규모가 작기 때문에 이를 마이크로서비스라고 부릅니다.
  • 마이크로 서비스의 장점을 활용하기 위해서는 서비스별로 별도의 데이터베이스를 사용하는 것이 필요합니다.

마이크로서비스 아키텍처가 필요한 상황

  1. 애플리케이션의 배포에 한 시간 이상 소요된다.
  2. 단순한 기능 하나를 수정해도 전체 지능에 대한 QA가 필요하다.
  3. 단순한 버그 수정이 더 중대한 버그를 생산하는 일이 많아졌다.
  4. 현재의 애플리케이션을 기능별로 나눈다고 가정했을 때 수십 개의 마이크로서비스가 가능하다.

마이크로서비스 아키텍처의 장점

  • 우선 서비스가 개별적으로 독립적인 단위의 애플리케이션이기 때문에 변경이 용이하고 그 변경이 다른 서비스에 미치는 영향이 적습니다.
  • 개별 서비스 단위의 배포가 가능하기 때문에 하루에도 필요에 따라 여러 번 배포를 하는 것이 가능합니다.
  • 비용적인 측면에서 마이크로서비스 아키텍처는 부하가 집중되는 특정 서비스를 위해 전체 애플리케이션을 스케일 아웃할 필요가 없기 때문에 자원의 낭비를 줄일 수 있습니다.
  • 서비스의 특성에 맞게 자원을 할당하여 스케일 아웃할 수 있기 때문에 효율적인 자원사용이 가능하게 됩니다.
  • 시스템 아키텍처가 개발 조직과 나아가서 회사의 조직 문화에 큰 영향을 미친다는 점입니다.
  • 조직의 의사결정 프로세스와 테스트 및 배포 프로세스 등 많은 부분에 영향을 미친다는 것을 의미합니다.

마이크로서비스 아키텍처의 단점

profile
데이터데이터데이터!!

0개의 댓글