JuBin's personal study blog

MicroService Architecture(마이크로서비스 아키텍쳐)란? 본문

ETC

MicroService Architecture(마이크로서비스 아키텍쳐)란?

JuBin 2020. 11. 16. 11:02
반응형
마이크로서비스 아키텍처(MSA)는 하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 말한다.

 

마이크로서비스 아키텍쳐는 왜&언제 필요한가?

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

 

마이크로서비스 아키텍쳐의 장점은?

마이크로서비스 아키텍처는 서비스의 규모가 커지고 복잡도가 증가할 수록 여러가지 장점을 갖습니다.

  1. 변경이 용이하고 변경이 다른 서비스에 미치는 영향이 작다.
  2. 개별 서비스 단위 배포라 여러번 배포가 가능하다.
  3. 전체 서비스에 대한 스케일아웃이 아닌 특정 서비스에 대해서만 스케일아웃을 하면 되서 자원의 낭비를 줄일 ㅜㅅ 있다(효율적인 자원사용이 가능)
  4. 시스템의 아키텍쳐가 개발 조직과, 나아가서 회사의 조직 문화에 큰 영향을 미친다.
  5. 조직의 의사결졍 프로세스와 테스트 및 배포 프로세스 등 많은 부분에 영향을 미친다.

 

마이크로서비스 아키텍쳐의 단점은?

대표적인 단점으로는 모놀리틱 아키텍쳐(하나의 큰 서비스)에 비해 서비스 간의 통신에 대한

추가적인 처리가 필요하다.

이것은 단순히 개발해야 하는 코드의 양이 늘어난다는 점 뿐만 아니라, 사용자의 요청을 처리하기 위한 응답속도의 증가에도 영향을 미칩니다. 뿐만 아니라, 분산된 데이터베이스는 트랜잭션 관리가 용이하지 않기 때문에 데이터의 정합성을 맞추기 위한 노력이 추가적으로 필요합니다. 대부분의 모놀리틱 아키텍처에서는 하나의 데이터베이스를 사용하기 때문에 트랜잭션에 대한 처리가 크게 어렵지 않습니다. 하지만 서로다른 데이터베이스, 심지어 종류도 서로 다른 데이터베이스 내의 데이터의 정합성을 유지하기 위한 트랜잭션 처리는 대부분의 데이터베이스가 자체적으로 지원하지 않기 때문에 애플리케이션의 개발과정에서 항상 고려해야 한다는 어려움이 있습니다.

  1. 요청을 보내야 하는 서비스 갯수가 증갛ㄹ 수록 응답속도가 늦어진다. Ex) 네이버 메인에 뭐하나 추가될때마다 속도느려짐
  2. 코드가 매우 복잡해지게 된다.
  3. 모든 마이크로서비스가 웹 통신에 적합한 프로토콜로 통신하지 않는다.

▷ 이에 대한 해결책으로 API GATEWAY 서버 구축(서비스로 전달되는 모든 API요청의 관문)

 

API Gateway는 전체 시스템의 부하를 분산시키는 로드밸런서 역할, 동일한 요청에 대한 불필요한 반복작업을 줄일 수 있는 캐싱, 시스템상 오고가는 요청와 응답에 대한 모니터링 역할을 수행한다.

시스템 내부의 아키텍쳐를 숨길 수 있는(encapsulate) 특징이 API Gateway의 가장 큰 장점.

 

반응형

'ETC' 카테고리의 다른 글

Proxy Server란? 그리고 사용하는 이유는?  (0) 2020.11.15