마이크로서비스를 사용하면 안 되는 경우를 알아보자
마이크로서비스는 잘게 나뉘고 분산되어 있어 모놀리식 애플리케이션에선 없던 복잡성을 가져온다. 따라서 MSA에는 높은 수준의 운영 성숙도가 필요하고 고도로 분산된 애플리케이션을 성공시키는 데 필요한 자동화와 운영 작업에 투자할 의사가 없는 조직이라면 마이크로서비스를 고려하지 않는 것이 좋음
마이크로서비스는 가장 일반적인 배포 모델은 한 서버에 하나의 마이크로서비스 인스턴스를 배포하는 것이다. 대규모 마이크로서비스 기반 애플리케이션의 운영 환경에서만 구축 및 관리가 필요한 서버나 컨테이너가 (일반적으로 가상의) 50~100개 있을 수 있다. 그러면 비용도 더 들어가고 서버를 관리하고 모니터링하는 운영 작업도 복잡해진다.
마이크로서비스는 재사용성을 추구하며 높은 회복성과 확장성이 필요한 대규모 애플리케이션의 구축에 매우 유용하다. 반대로 부서 수준의 소형 애플리케이션이나 소수 사용자를 위한 애플리케이션을 개발할 때 마이크로서비스와 같은 분산 모델로 구축한다면 구축에 따른 복잡성이 얻게 될 가치보다 커질 수 있음
마이크로서비스를 검토할 땐 서비스의 데이터 사용 패턴과 서비스 소비자가 어떻게 서비스를 사용하는지 고민해야 한다. 애플리케이션이 여러 데이터 소스에서 복잡한 데이터를 취합하고 변환해야 할 경우 마이크로서비스의 분산된 특성 때문에 작업이 어려워진다. 마이크로서비스의 책임은 커지고 성능 문제에도 취약해 질 것이다. 또한 현재 마이크로서비스 사이에 트랜잭션을 처리하는 표준이 없다. 따라서 트랜잭션 관리가 필요하다면 직접 만들어야 한다. 이때 메시징을 이용하는데 메시징에선 데이터를 업데이트할 때 지연 시간이 발생ㅎ나다. 따라서 업데이트한 데이터가 즉시 나타나지 않을 수 있어 일관성 유지에도 노력을 기울여야 한다.