Spring Boot와 Node.js.. 당신의 선택은?
지난 Spring, Spring Boot 그리고 Node.js를 비교한 포스팅에서 살짝 언급한 것처럼 캡스톤 디자인 프로젝트에 어떤 프레임워크를 사용할 것인지 고민을 많이 했다. 그래서 어떤 프레임워크를, 어떤 생각의 과정을 거쳐 선택하게 되었는지 정리해 보았다. 비슷한 고민을 하시는 분에게 조금이나마 고민의 시간을 줄이고 결정을 내리는데 도움이 되기를 바란다.
필자가 명확하게 한 가지를 선택할 수 없을 때는 자신만의 몇 가지 기준을 두고 가지치기 해 나간다. 예를 들어, 프레임워크를 선택한 기준은 다음과 같다.
- 프로젝트의 성격에 적합한가
- 마음에 조금이라도 더 끌리는, 흥미가 가는 프레임워크
- 시간적 여력이 많이 없는 경우, 익숙한 개발 언어를 사용하거나 본인의 현재 상황에서 러닝 커브가 낮은 프레임워크
- 취업 시 가져갈 기술 스택
결론적으로 말하자면, 필자의 팀은 Node.js를 선택했다. 선택한 이유는 다음과 같다.
👩💼 프로젝트 성격
진행하고자 하는 프로젝트의 주제가 모바일 키오스크 & 매장 통합 관리 시스템이었다. 서비스에 있어 실시간성이 중요하다고 생각했고, 낮은 사양의 디바이스를 사용하는 사용자에게도 원활한 서비스를 제공하기에는 메모리 사용률이 낮은 Node.js가 적합하다고 생각했다. 또, 많은 컴퓨팅 작업을 필요로 하지 않으며, 대부분의 비즈니스 로직은 API 서버에서 수행하고 프런트는 사용자에게 보여줄 정보를 처리하는 정도라 Spring Boot는 무겁다고 판단했다.
👩💻 팀 구성원
대부분이 개발 언어는 학교에서 주로 사용하던 Java에 익숙한 상황이었고, 모두 학부 과정에 따라 Spring은 경험해 보았다.
프런트엔드 담당을 맡게 될 팀원들은 React.js나 Vue.js 같은 프레임워크 경험이 없었고, JavaScript도 사용 경험이 많지 않은데 그마저도 오래전에 그쳤다. 필자는 React를 맛보기는 했지만, 백엔드 파트를 희망했다.
각자 맡은 파트를 잘 수행해내면 좋겠지만, 모두들 프로젝트 경험이 많은 것도 아니고 학부생에 불과하기 때문에 각자 파트에 집중하되, 언제든지 도움이 필요하면 누구라도 같이 트러블 슈팅할 수 있도록 JavaScript를 채택하는 것이 좋겠다고 판단했다.
💭 개인적인 생각
위 두 가지 이유가 선택 이유의 대부분을 차지했고, 나머지는 필자의 개인적인 생각이 반영되었다.
일단, Spring Boot와 Node.js 모두 경험이 없는 상황에서 Node.js가 빠르고 적은 코드로 시작하기에 좋다는 점은 익히 들어왔지만, Spring Boot가 아무리 세팅 과정이 편리해졌다고 해도 Spring이 복잡하게 느껴졌기에 경험이 없는 입장에서는 마찬가지로 복잡할 것이라고 추측했다. 물론 이후에 직접 경험해보니 정말 편했다.😅 섣부른 추측은 하지 말고 “Hello world”라도 화면에 띄우는 정도는 해보면서 비교해 보는 것도 좋았겠다는 필자의 뒤늦은 생각이다.
프로그래밍 언어별 특징은 다르지만, 한 언어에 있는 기능은 다른 언어에도 웬만하면 있다. 프레임워크도 상대적인 강점은 있겠지만, 기본적인 것들은 Spring에도 Node.js에도 모두 있으니 Spring을 고집하지 않아도 된다는 생각과 학부 과정에서 Spring과 Spring Boot는 경험할 테니 Node.js를 해 보는 것도 좋겠다고 생각했다.
👀 결론적으로..
기대한 대로 프런트엔드, 백엔드 모두 같은 언어로 진행했기에 상대 파트에서도 도움이 필요한 부분에 적절히 대응할 수 있었고, 비교적 적은 양의 코드로 빠르게 개발할 수 있었다. 다만, 자유도가 높기 때문에 경험이 많지 않은 입장에서는 잘 구조화하기 위한 충분한 고민이 따랐다. 이것도 좋은 경험이었고 결정에 대한 후회는 없지만, 경험이 많지 않은 입장에서는 잘 구조화된 설계를 따라 비즈니스 로직에만 집중할 수 있고, 참고 자료가 많은 Spring도 좋았겠다는 생각은 들었다. 선택하지 않은 것, 가보지 못한 길에 대한 궁금증과 아쉬움 정도랄까..🙂
정해진 정답은 없으니 팀 구성원들과 프로젝트의 성격에 맞춰 결정하면 될 것 같다. 나름의 충분한 고민 끝에 내린 결정에 대한 이유 정도만 잘 정리해두자!