모놀리식 아키텍처를 단독으로 실행 가능한 다수의 모듈로 분해한 아키텍처를 마이크로서비스 아키텍처라고 한다. 이때 실행 가능한 하나의 모듈을 마이크로 서비스라고 한다.
각각의 마이크로서비스는 독립적인 프로세스 형태로 각기 배포할 수 있어야 하고, 개별적으로 개발할 수 있어야 한다.
상호 독립적인 구조이기 때문에 프로그래밍 언어나 프레임워크가 같을 필요는 없으며, 서로 독립적인 데이터 저장소와 네트워크 통신 기능을 가질 수 있다.
여러 마이크로서비스가 유기적으로 작동해야 하므로 마이크로서비스 하나는 구조가 작고 가벼워야 한다.
유지 보수와 배포가 어렵고 장애 포인트가 많다면 마이크로서비스 아키텍처는 장점이 없는 아키텍처이다.
대부분의 서비스는 정보를 저장하고 조회하는데 데이터베이스, 파일 등과의 I/O가 필수적인데, I/O가 동기방식이라면 다음요청을 처리하지 못해 성능이 좋지 않다. 이러한 문제는 메시지-큐를 이용해 해결한다.
I/O를 실제로 처리하는 서버를 별도로 두고, 요청을 받는 서버는 큐로 데이터를 전송한 후 이 요청을 처리하고, I/O가 처리되면 클라이언트에 보내는 방식을 사용한다.
Node.js는 내부적으로 이러한 메커니즘을 모두 처리해 주기 때문에 별도로 고민하지 않아도 된다.