로그인, 파일 업로드, 결제 등 필요한 역할별로 개발을 하고, 여러 모듈들을 합치는 방식으로 개발하는 것을 모놀리식 아키텍쳐(Monolithic Architecture)라고 한다.
이렇게 하면, 하나의 프로젝트를 개발하고 테스트하고 빌드하기 때문에 단순하지만, 여러 모듈들이 함께 있기 때문에 작은 부분에 문제가 생겨도 다른 부분에 영향을 주게된다. 이처럼 서비스가 점점 커질 경우 하나의 프로젝트로 함게 묶는 것이 버거워지고 복잡해진다. 이를 해결하기 위해 나온 것이 마이크로서비스 아키텍처(Microservice Architecture)이다.
마이크로서비스는 이름에서 알 수 있듯이 한 프로젝트를 여러 작은 서비스로 분리하여 개발하고 운영, 배포하는 방법이다.
마이크로서비스를 개발에 적용하면 여러 모듈로 분리했기 때문에 팀별로 독립적으로 개발할 수 있고,
서비스 운영시, 기존 모놀리식 구조에서는 장애 발생시 서버가 죽게 되면 모든 API가 사용 불가능했지만, 마이크로서비스로 분리하게 되면 어떠한 기능에 장애가 생겨도 해당 API만 사용이 불가능하고, 다른 기능에는 문제없이 서비스를 운영할 수 있다는 장점이 있다.
하지만 마이크로서비스 아키텍쳐를 적용했을 때에는 전체적인 기술 복잡도가 증가 할 수 있으므로 이를 잘 판단하여 서비스의 구조를 결정해야 한다.