Node.js vs Spring Boot

원문

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를 선택하는게 좋습니다.