* MSA (Microservice Architecture)

  • 하나의 큰 애플리케이션을 여러 개의 다른 역할을 수행하는 애플리케이션으로 분리하였을 때 각 애플리케이션을 의미
  • 마이크로서비스를 분리하여 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 마이크로서비스 아키텍처라고 말한다.

* Monolithic VS MSA

1. 모놀리식 아키텍처 (Monolithic Architecture)

* 장점
1. End to End 테스트가 쉽다. (MSA의 경우 테스트에 필요한 기능을 맡은 서비스들을 모두 동작시켜야함)
2. 어떤 기능이든지 개발되어있는 환경이 같아서 복잡하지 않음
* 단점
1. 프로젝트의 규모가 커질수록 애플리케이션의 덩치가 너무 커서 구동시간이 늘어나고 빌드,배포 시간 또한 길다.
2. 작은 수정을 해도 전체를 다시 빌드하고 배포를 해야한다.
3. 일부분의 오류가 전체에 영향을 미친다.

2. 마이크로 서비스(MicroService)

* 장점
1. 기능별로 마이크로서비스를 개발하고, 작업 할당을 서비스 단위로 하면 개발자가 해당 부분을 온전히 이해할 수 있음
2. 해당 기능에 맞게 기술, 언어 등을 선택하여 사용할 수 있음
3. 일부분의 오류가 있으면 해당 기능만 오류를 고치면 된다.
* 단점
1. 작은 여러 서비스들로 분산되어 있어 관리가 힘들다. 모니터링이 힘듦
2. 작은 서비스들이 서로가 연결되어 전체 서비스를 이루기 때문에 무조건 한번씩은 호출하는데 모놀리식 아키텍쳐의 개발보다 까다롭다.
3. End to End 테스트가 불편하다.