원문 : 호롤리한 하루/MicroService Architecture란?
1. Overview
최근 클라우드, 컨테이너 시장이 급격히 성장하면서 마이크로서비스라는 단어가 많이 들리고 있습니다.
이번 포스팅에서는 마이크로서비스가 무엇인지에 대해서 알아보겠습니다.
2. MicroService Architecture?
마이크로서비스를 공부해보기전에 기존의 서비스 구조가 어떠했는지를 살펴보겠습니다.
Monolithic Architecture
MicroService Architecture
가 각광을 받기 시작하면서 기존의 아키텍처를 지칭하는 의미로 생겨난 단어입니다.
모든 모듈은 하나의 서비스 내부에 종속되어있으며 서비스 자체에 집중할 수 있는 구조로 되어있습니다.
다시말해 각기 다른 역할을 하는 모듈들이 모여서 하나의 프로젝트를 이룬다는 것입니다.
이는 개발, 빌드, 배포가 용이할 수 있지만, 프로젝트의 규모가 커질수록 수정, 새로운 기능의 추가가 어려워집니다.
장점
- 단순한 구조
- 개발환경과 방법의 통일성
- 배포가 간편
- End to End 테스트가 쉬움
단점
- 프로젝트의 규모가 커질수록 복잡도가 심각하게 증가
- 코드 전체를 이해하기 힘듬
- 빌드시간의 증가 (CI/CD 불가능)
- 새로운 기술을 적용하려면 프로젝트를 다 뜯어고쳐야할수있음
MicroService Architecture
이런 기존 아키텍처의 단점을 보완하고자 나온 여러 아키텍처 중 하나가 MicroService Architecture
입니다.
이름에서부터 알수있듯이, 작은 서비스 여러개가 모여서 하나의 시스템을 제공하는 아키텍처를 뜻합니다.
MicroService Architecture
에서 각 서비스는 작고 독립적이며 느슨하게 결합되어 있습니다.
때문에 서비스들을 독립적으로 배포할 수 있으며, 전체 프로그램을 빌드한 뒤에 재배치하지 않고도 기존 서비스들을 업데이트 할 수 있습니다.
서비스들이 독립적이라는 특징덕에 클라우드와 컨테이너와 잘 어울리는 아키텍처이기도 합니다.
장점
- 전체프로그램을 다시 배포하지 않고도 업데이트가 가능
- 독립적으로 개발가능
- 서비스 하나가 다운되더라도 전체 서비스에 영향을 끼치지 않음
- 서비스를 독립적으로 확장가능, 리소스의 유연한 운용 가능
단점
- 서비스간 통신방법이 필요하고 복잡함
- 서비스끼리의 테스트가 어려움
- 복잡하고 독립된 구조로 인해 통합적인 유지관리가 어려워질 수 있음
Why MSA?
그럼 최근들어 MSA 얘기가 자주 나오는 이유는 무엇일까요?
MicroService Architecture
가 클라우드환경과 찰떡궁합이기 때문입니다.
잠시 Monolithic
구조를 다시 살펴보면 각각의 모듈들이 합쳐져 큰덩어리로 시스템이 구축되어 있습니다.
사용량이 적은 모듈을 삭제한다고 하더라도 전체 시스템의 스펙은 변하지 않기 때문에 사용량단위로 과금을 해야하는 cloud환경에서는 비효율적입니다.
하지만 MicroService
구조는 서비스단위로 기능을 분리해서 구축할 수 있기 때문에, 사용하지 않는 기능 또는 사용량이 적은 기능을 축소해서 효율화시킬 수 있습니다.
비용면에서는 클라우드환경에서 MSA가 압승이지만 모든것이 완벽하지는 않습니다.
MSA로 시스템을 구축하게되면 그에 따른 새끼서비스들도 늘어나게되고 관리해야할 포인트가 증가하게 되는 단점도 존재합니다.
그럼에도 불구하고 서비스들의 재사용성, 클라우드환경에 친화적이라는 장점때문에 현재 가장 핫한 아키텍처가 된 것 같습니다.
'IT Note > Cloud' 카테고리의 다른 글
envoy proxy란? (basic) (0) | 2019.12.30 |
---|---|
Multi-Container Design Patterns 정리 (0) | 2019.12.24 |
Helm 3 설치 & 기본 사용방법 (0) | 2019.12.14 |
Kubernetes Service & Ingress (0) | 2019.12.14 |
Kubernetes Controllers : StatefulSet (0) | 2019.12.14 |