MSA(마이크로 서비스 아키텍처)
Mar 4, 2024
»
dev
마이크로 서비스 아키텍쳐
“작고 독립적인 서비스들이 모여 구성된 어플리케이션 구조”
위 MSA가 왜 나타났고 사용하는지 설명하기 전에 우리는 어떻게 개발을 진행했는지 알아볼 필요가 있다.
모놀리틱 아키텍쳐 (Monolithic Architecture)
모놀리틱 아키텍쳐
란 하나의 어플리케이션에 모든 서비스와 기능들을 가지고 있는것을 말한다.
아직까지 많이 사용하고 있는 방법이지만 소규모 프로젝트에 적합하다.
그러나, 서비스가 방대해지고 하나의 서비스를 운영하는데 있어 수 많은 사람들이 투입하게 됨으로서 서비스의 규모는 더욱 커지게 되고 한명의 개발자가 작업을 수행 후 서버를 재기동 시 많은 부하를 일으키며 만일 그 부분이 에러가 나타날 경우 다른 부분들까지 모두 문제가 발생하게 되는 경우가 발생하게 된다.
또한, 서비스 규모가 커질수록 전체 시스템을 분석하고 파악하는데 어려움이 생겨 유지보수가 힘들어진다.
모몰리틱 아키텍쳐의 문제점
- 서비스가 커질수록 전체 시스템 구조 파악에 어려움이 발생
- 빌드 및 테스트 시간과 배포 시간이 기하급수적으로 늘아나게 됨
- 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생
Micro Service Architecture (MSA)
하나의 큰 서비스에서 위와 같은 문제점들이 발생하여 여러개의 작은 서비스로 구성되어 독립적으로 개발하고 배포하기 구조를 만들기 위해 생겨났다.
하나의 서비스에 하나의 기능만을 집중하여 수행하고 문제가 발생하였을 때 전체 서비스에 문제가 없도록 한다.
또한 서로의 서비스에 대해서 API를 통해 기능들을 추상화 하며, 새로운 서비스가 생겨났을 때 확장성
과 유지관리
가 용이해진다.
장점
- 독립적인 서비스들을 가지며 개별의 배포가 가능 (전체 서비스의 중단이 없다)
- 특정 서비스의 확장성이 용이하다.
- 장애가 전체 서비스에 큰 영향을 미치지 않는다.
단점
- 서비스간 통신이 필요하여, 서로간의 연결 구축 및 관리의 복잡성이 증가
- 설계의 어려움
- 데이터가 여러 서비스에 분산되어 있어 조회하고 관리하기 어렵다.