책의 내용 중 마이크로서비스와 Node.js의 시너지에 대해 설명하는 부분이 있어 정리한다.
- 대부분의 서비스는 정보를 저장하고 조회하는 데 데이터베이스, 파일 등과의 I/O가 필수적이다.
- I/O가 동기 방식이라면 응답이 올 때까지 다음 요청을 처리하지 못하기 때문에 성능이 좋지 않다.
- 보통 이러한 문제는 메시지-큐를 이용해 해결한다.
- I/O를 실제로 처리하는 서버를 별도로 두고, 요청을 받은 서버는 큐로 데이터를 전송한 후 이 요청을 처리하고, I/O가 처리되면 클라이언트에 보내는 방식을 사용한다.
- 위 4번의 메커니즘을 마이크로서비스로 구현해야 한다면, 개발량도 많고 코드 구조도 복잡해진다.
- Node.js는 내부적으로 이러한 메커니즘을 모두 처리해 주기 때문에 개발자가 별도로 고민하지 않아도 된다.
- 이 외에도 Node.js는 싱글 스레드를 기반으로 코딩하기 때문에 스레드 동기화와 교착 상태등을 고려할 필요가 없다.
즉, Node.js는 이벤트 큐가 내부적으로 존재하기 때문에 I/O를 처리하는 데 있어 어려움이 없기 때문에 코드를 작고 가볍게 유지할 수 있어 마이크로서비스에 적합하다는 것이 책의 설명이었다.