마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다. 마이크로서비스 아키텍처에서 서비스들은 섬세(fine-grained)하고 프로토콜은 가벼운 편이다. 애플리케이션을 더 조그마한 여러 서비스로 분해할 때의 장점은 모듈성을 개선하고 애플리케이션의 이해, 개발, 테스트를 더 쉽게 해주고 애플리케이션 침식에 더 탄력적으로 만들어 준다. 규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다. 또, 지속적인 리팩터링을 통해 개개의 서비스 아키텍처가 하나로 병합될 수 있게 허용한다. 마이크로서비스 기반 아키텍처는 지속적 배포와 전개(디플로이)를 가능케 한다. -Wikipedia
Nestjs에서 Microservice를 예로 들자면 Monolith는 하나의 Nest 프로젝트에 API들을 설계한것이라면 Microservice는 API별로 Nest 프로젝트를 만들어 API들을 독립적으로 실행하게 만드는것이다.
Monolith 방식은 서버 오류 발생이나 업데이트로 인해 내부 코드를 변경하였다면 전체 서비스를 중단 시키고 이를 적용해야한다.
반면, Microservice 방식은 예를 들어 결제 서비스에 업데이트가 있다면 다른 서비스들은 유지시키고 결제 서비스만 중단시키고 수정 및 업데이트 작업을 진행하면 된다.
간단한 설명만으로도 Monolish보단 Microservice가 좋아보인다.
하지만 Microservice는 용량이 커지고 서버가 많아지므로 비용이 많이 든다는 단점이 있다.
따라서 작은 서비스에 적합하지 않다.
상황에 맞게 서비스를 구축하는 것이 적절하다.