Node.js vs Spring Boot
in Legacy on Web
Node.js
장점
애플리케이션이 복잡하고 데이터 중심적인 처리를 주로 다뤄야한다면 Node.js를 선택하는것이 좋다.
NodeJS는 데이터를 로드하고 처리하는 시간이 옛날의 애플리케이션에 비해 가볍고 빠른 자바스크립트 런타임 환경입니다.
만약 개발하려는 애플리케이션이 유저로부터 많은 입력을 받는 애플리케이션이라면 NodeJS는 그러한 입출력을 처리하는것에 최적화 되어있기 때문에 효율적인 I/O처리가 필요하다면, Node.js를 선택하는것이 좋다.
다른 옛 모바일 앱보다 적은 메모리를 사용한다. 심지어 메모리 부족상태에서도 실행될수 있기때문에 많은 메모리를 절약할수 있다.
또 다른 큰 이점은 Node Package Manager이다. 줄여서 NPM은 꾸준히 성장하고 더 많은 패키지들을 사용할수 있게되었습니다.
단점
높은 computing이 요구되는 애플리케이션에는 부적절합니다. 따라서 이러한 환경속에서는 심지어 노드가 다운되버릴수도 있습니다.
아직 NodeJS에는 몇가지의 버그가 남아있기때문에 이러한 점이 단점이 될수 있지만 미래에는 앱 개발에 있어서 이러한 걱정을 할 필요가 없을것입니다.
Spring Boot
Spring Boot는 production 수준의 애플리케이션을 개발할수 있게 해주는 Java Framework입니다. Spring Boot는 Spring framework에 기반을 두었으며, 대부분의 자바 함수와 특징을 상속하므로 훌륭한 애플리케이션을 만드는데 있어 정말 좋은 선택이 될것입니다.
보안과 멀티 스레드 프로그래밍을 지원하기 때문에, 보안을 중요시 하는 사람들에게 정말 좋은 선택이 될수있다. 스프링 부트를 사용하여 애플리케이션을 개발하는 분들중의 대다수가 security때문에 선택을 한다고 한다.
장점
Spring boot의 제일 큰 장점은 이미 어느정도 갖춰져 있는 자바 커뮤니티입니다. 커뮤니티에 여러분의 문제에 대해서 글을 작성하면, 많은 유저들이 문제를 해결하기 위해 도와줍니다. 이러한 활발한 커뮤니티 활동이 Spring boot를 이용하는 큰 장점입니다.
Spring Boot를 선택만 해도 장기간 지원과 유지보수를 보장 받을수 있습니다. 그 이유는 자바를 기반하고 있기 때문입니다.
멀티 스레딩 프로그래밍이 가능합니다. 멀티 프로세스를 동시에 다룰수 있게되며 멀티 스레드 프로그래밍 환경에서 우리의 애플리케이션을 빠르게 동작할수 있도록 해줍니다.
스프링 부트 애플리케이션에서 어떠한 함수를 만들고 싶을때, 이미 우리가 구현하려는 함수가 구현이 되어있을 가능성이 큽니다. 그래서 이러한것을 그저 복사-붙여넣기만 하게되면 개발하는데 비용과 시간을 단축할수 있게됩니다.
단점
스프링의 가장 큰 단점은 메모리를 정말 많이 사용한다는것입니다. 그래서 애플리케이션을 사용하는 기기가 제한된 메모리를 가지게 된다면 Spring Boot는 별로 좋은 선택이 아닙니다.
Spring boot 개발자는 디버깅을 할때 매우 좌절을 합니다. 이유는 디버깅을 힘들게 하는
boilerplate code
때문입니다.
결론
Node.js와 Spring boot 모두 좋은 기술들이여서 어느게 더 좋다라고 확정 지을수는 없습니다.
만약 많은 I/O가 발생한다면 Node.js를 선택하는게 좋고 보안과 많은 CPU사용량이 요구된다면 Spring Boot를 선택하는게 좋습니다.