
Node.js
- Non-blocking I/O (싱글 쓰레드 비동기 방식)
- 메모리 사용량과 시스템 리소스 사용량에 변화가 거의 없다.
- 쓰레드 하나가 무너지면, 프로그램 전체가 무너진다.
- Single Thread이므로, 가벼운 I/O가 많은 게시판, 채팅, 스트리밍 같은 웹 서비스에 적합하다. (동시에 여러 Request를 처리해야하는)
- 프로젝트 규모가 커질수록, Type Safe 하지 못한 JavaScript의 특징으로 인해 Type 런타임 에러를 겪을 수 있으며 IDE으이 자동완성 기능 또한 지원받지 못해 리팩토링에 어려움이 있다
-> TypeScript의 탄생
Springboot
- Type Safe한 Java의 특성상 Node.js에서 발생하는 문제를 겪지 안흔다.
- 안정적이다.
- 멀티 쓰레드 운용 (서비스가 쉽게 죽지 않지만, 메모리 사용량이 많다.)
- 리팩토링과 확장에 용이하고, IDE의 기능 지원을 받을 수 있다.
- 러닝 커브가 존재한다. (디자인패턴, 컴포넌트에 대한 이해, 라이브러리들에 대한 이해 등)
References
Node.js와 Spring Boot의 차이점
Node.js vs Spring Boot