MSA(Micro Service Architecture)란 직역해서 보자면 작은단위의 서비스 구조 즉 기존의 서비스 구조보다 작은 단위로 쪼개어 생각하는 개발 방법이다.
MSA의 개념이 나오기 전에는 대부분 Monolithic Architecture을 사용했다. 말 그대로 하나도 되어있는 서비스 구조이다.
Micro service의 정의
Martin Folwer는 MSA에 대해 아래와 같이 설명하였다.
"the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery."
여기서 small services, each running in its own process(스스로 돌아 갈 수 있는 작은 서비스) 와, independently deployable(독립적 배포 가능) 이 두 문장이 MicroService가 무엇있지 확실하게 말해주고있다.
Monolithic Acchitecture은 하나의 서비스에 하나의 데이터베이스, Back-End, Front-End 이런식으로 정형화 되어있었다. 그렇기에 하나의 오류가 시스템 전체에 영향을 줄 수 있고 배포또한 수정사항이 생길때마다 다시 해주어야 해서 시간적 효율이 좋지 못했다. 이러한 여러 단점을 해결하기위해 나온 방법이 MSA이다.
MSA는 기능별로 서버, 데이터베이스, Back_End를 구별해 만든다. 해당 기능의 수정이 있을 시 이 부분만 따로 배포가 가능하고 트레픽이 많이 몰리는 기능에 대해서는 그 서버만 업그레이드 해줄 수 있어 CI/CD를 중요시 하는 요즘 상황에 적합한 개발 방법이다. 하지만 장점만 있는것은 아니다. 서비스간 API호출을 사용해야 하기때문에 속도나 비용 측면에 문제가 있고 데이터 관리가 힘들다. 따라서 프로젝트의 규모가 매우 크거나 기능별 분산이 필요할 경우 MSA를 지향하지만 작은 프로젝트에 경우는 지양한다.
정리
MSA의 장단점
MSA의 장점
- 배포(deployment) 관점
* 서비스 별 개별 배포 가능 ( 배포 시 전체 서비스의 중단이 없음)- 요구사항을 신속하게 반영하여 빠르게 배포할 수 있음.
- 확장(scaling) 관점
* 특정 서비스에 대한 확장성이 용이함.- 클라우드 사용에 적합한 아키텍쳐.
- 장애(failure) 관점
* 장애가 전체 서비스로 확장될 가능성이 적음- 부분적 장애에 대한 격리가 수월함
이외에도, 신기술의 적용이 유연하고, 서비스를 polyglot하게 개발/운영 할 수 있다는 장점이 있습니다.
MSA의 단점
- 성능 - 서비스 간 호출 시 API를 사용하기 때문에, 통신 비용이나, Latency가 그만큼 늘어나게 됩니다.
- 테스트 / 트랜잭션 - 서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고, 많은 자원을 필요로 합니다.
- 데이터 관리 - 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어렵고, 데이터의 정합성 또한 관리하기 어렵습니다.
'IT 지식' 카테고리의 다른 글
JWT Token JAVA 구현 방법 (0) | 2023.06.16 |
---|---|
[MATOMO] 마토모 HTTP -> HTTPS #SSL #matomo ssl (0) | 2022.12.22 |
[티스토리 구글 애드센스 정산하기] 지급계좌 등록 (6) | 2022.09.20 |
도커(Docker) VS 가상머신(Virtual Machine) (0) | 2022.08.16 |
[VS Code 깃허브 연동 쉽게 하는법] (0) | 2022.08.14 |