MicroService Architecture 의 줄임말이다.
대규모 소프트웨어 개발에 적용하기 위한 것으로 단독으로 실행 가능하고 독립적으로 배치될 수 있는 작은 단위로 기능을 분해하여 서비스하는 아키텍처 이다 .
수직 방향의 기능별로 절단하며 절단된 독립적인 작은 모듈을 마이크로서비스라고 한다.
다시 말해서 ,
하나의 큰 application 을 여러개의 작은 단위로 나눈 application 을 변경하고 조합이 가능하도록 만든 아키텍쳐
그러면 이것이 왜 생겼는지 궁금합니다
Monolithic Architecture vs Microservice Architecture
Monolithic Architecture 는 모든 구성요소가 한 프로젝트에 통합되어있는 형태입니다.
이러한 구성요소는 소규모 프로젝트에는 합리적 일수 있어요.
하지만 규모가 커지게 되면 한계점이 보입니다.
규모가 커지면 전체 시스템 구조의 파악에 어렵다.
배포시간이 늘어나게 된다.
부분의 장애가 전체 서비스의 장애로 이어지게 된다.
이러한 Monolithic Architecture 의 한계점과 단점으로 인해 MSA 가 나오게 됬습니다.
각각의 서비스는 독립적으로 배포가 가능해야합니다.
각각의 서비스는 다른 서비스에 대한 의존성이 최소한 되어야합니다.
확장성 용이
부분적 장애에 대한 처리가 좋음
하지만 분명 단점도 존재합니다.
Monolithic Architecture 은 아무래도 한 어플리케이션에서 관리를 하다보니 단순하게 작업이 이루어집니다.
하지만 MSA 는 보다 복잡한 아키텍쳐로 이루어집니다.
이 복잡도는 application 의 규모가 커질수록 복잡도가 더욱 상승하게 됩니다.
테스트 / 트랜잭션 : 서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고 많은 자원을 필요로 한다.
데이터 관리 : 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어렵고 , 데이터의 정합성 또한 관리하기 어렵다 .
참고자료