MSA?
MicroService Architecture의 줄임말로 소프트웨어 개발 기법중 하나입니다.
마이크로서비스란
독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크로도 의미합니다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 두고 있습니다.
조금더 쉽게 이해하기 위해 '레고쌓기'를 예를 들어보죠~
작은 레고블럭 하나하나를 붙여서 어떤 큰 결과물을 만드는 형태, 이것이 바로 MSA라고 할 수 있습니다.
마이크로서비스는 최근 많은 조직에서 고도의 애자일성, 전달 신속성, 확장성을 확보할 수 있는 중요한 수단으로 사용중인 아키텍처입니다. 특정 물리적인 서버에 서비스를 올리던 온프레미스 서버기반의 Monolithic 아키텍처에서 마이크로서비스 아키텍처(MSA)로 많은 서비스들이 전환되고 있습니다.
현재 넷플릭스, 트위터, 아마존, 나이키 등의 회사에서 채택한 아키텍처로 소개되면서 14년 초반부터 현재까지 주목 받고 있는 아키텍처입니다.
여기서 잠깐, 모놀로식 아키텍처 (Monolithic Architecture)란?
MSA가 나오기 이전 사용되던 일반적인 개발 기법으로 서비스의 아키텍처를 구성할 때 모든 서비스를 구성하는 비즈니스 로직, DB, UI 등을 한 덩어리로 뭉쳐진 단일 서비스 개발 방식을 의미하며 하나의 프로젝트로 구성되어 단일 패키지로 배포하는 아키텍처입니다.
MAS 의 핵심은 독립
독립된 서비스들은 네트워크를 통해 외부 API로 통신하게 됩니다.
개발 환경을 자유롭게 선택할 수 있으며, 하나의 서비스는 하나의 프로젝트로 만들어지기 때문에 서비스에 맞는 기술과 언어를 선택할 수 있습니다.
또한 확장이 용이합니다. MSA는 서비스들이 최대한 공유하지 않고 독립적으로 운용될 수 있도록 하는 아키텍쳐이기 때문에 기능을 추가하는 것이 쉽고 자유롭습니다.
일부의 오류가 전체에 영향을 미치지 않으며, 오류가 발생 시 해당 서비스만 잠시 내렸다가 고친 후에 배포하면 됩니다.
단, 네트워크를 이용해 원격으로 다른 서비스를 호출해야 하기 때문에 비용이 더 많이 발생하게 됩니다.
서비스들은 각각의 데이터베이스가 존재하며, 각각의 데이터베이스에서 데이터를 가져와야 하기 때문에 한 번에 조회하는 것이 어렵습니다. 관리의 어려움도 단점중 하나입니다.
MAS 의 장점
- 배포 : 서비스별독립적 배포가 가능하며, 배포 시 전체 서비스의 중단없이 가능하다. 따라서 신속하게 반영하여 빠르게 배포할 수 있습니다.
- 확장: 특정 서비스에 대한 확장성이 용입합니다. 클라우드에 적합한 아키텍처입니다.
- 장애: 장애가 전체 서비스로 확장될 가능성이 적습니다. 따라서 부분적 장애에 대한 처리가 수월합니다.
MAS 의 단점
- 성능: 서비스간 호출 시 API를 사용하므로 통신비용이나 Latency가 늘어나게 됩니다.
- 테스트/트랜잭션 : 서비스가 분리되어 있으므로 테스트와 트랜잭션의 복잡도가 증가하고 많은 자원이 필요합니다.
- 데이터 관리: 데이터가 여러서비스에 걸쳐 분산되므로 한번에 조회가 어렵고 데이터의 정합성 관리가 어렵습니다.
<관련자료>
https://martinfowler.com/articles/microservices.html
'- IT TREND' 카테고리의 다른 글
#웹3.0 (0) | 2022.12.02 |
---|---|
#랜섬웨어 (0) | 2022.09.14 |
#퍼네이션(Funation) (0) | 2022.02.21 |
#빅블러(Big Blur) (0) | 2021.12.23 |
#디지털노마드 (0) | 2021.10.19 |