해당 글에서는 필자가 궁금해하는, 흔히 3대장이라 불리는 Express(JS), Spring(Java), Django(Python)만 다루며 이외의 3대장과 관련된 Nest.js, Flask 혹은 다른 언어의 Laravel(PHP), Rails(Ruby) 등은 제외한다.
처음 웹 개발을 할 때 주변 사람들에게 Framework 선정은 매우 중요하다는 소리를 들었다. 때문에 Framework를 선정하는 기준에 대한 궁금증이 생겼다. 다룰 줄 아는 프로그래밍 언어가 유일하거나, 유독 자신 있는 언어가 있었다면 선택권이 없기 때문에 그 언어의 Framework로 진행하겠지만, 개발 공부를 시작한 대학교 1학년 시절부터 학교 커리큘럼을 따라가다 보니 자연스럽게 Back-end와 관련된 다양한 언어들을 다룰 수 있게 되었고, 나에게 선택권이 주어졌기 때문에 어떤 Framework를 선택해야 좋은지에 대한 의문점이 생겼다.
처음 웹 개발을 시작했을 때는 웹과 Framework에 대한 지식이 정말 하나도 없던 시절이었기 때문에 Framework마다 구현할 수 있는 기능이 완전히 다른 줄 알았다.
하지만 알아본 결과 모든 Framework가 웹을 개발할 때 필요한 일반적인 기능들은 구현 가능하고, Framework마다 특정 기능을 구현할 수 있는 디테일적인 차이가 있던 것이었다.
Framework마다 각자의 장점이 있기 때문에 그 부분이 내가 만들려는 웹의 특징과 대응되는 Framework를 선정하면 된다는 뜻이다.
비교적 편하고 생산성이 높은 개발을 하고 싶다.
여러 가지 장점이 있지만 가장 큰 장점은 JS로 개발한다는 점이다.
웹은 Client + Server + DB가 하나의 연결고리를 갖는다. Express로 개발한다면 Client(Front-end)의 코드와 엄청난 호환성을 갖게 되며, Sequelize와 Mongoose를 이용하여 DB까지 사용할 수 있어서 JS라는 한 개의 언어로 Client, Server, DB를 모두 개발할 수 있게 된다.
(물론 Front-end를 완벽하게 구사하기 위해선 추가적인 것들이 필요하다.)
또한 빠른 네트워크 처리 또한 장점이며 npm을 통한 다양하고 질 좋은 Node 모듈의 쉬운 사용과 클라우드 서비스와의 호환이 좋은 것도 편하고 간단한 개발을 도와준다.
마지막으로 객체지향 개념을 도입하고, JS의 단점을 보완한 TS를 이용하는 Nest.js로의 확장이 가능하다.
트래픽이 많고, 비즈니스 모델이 복잡한 웹을 개발하고 싶다.
Spring의 가장 큰 장점은 다량의 트래픽을 처리하기 좋다는 것이다.
Spring이 성능과 안정성 측면에서 탁월하며, Spring의 개발 언어인 Java 또한 속도가 빠르고 안정성이 좋기 때문이다.
때문에 국내 대규모 IT 회사들이 스프링을 많이 사용하고 있다.
또한 국내에 Spring을 잘하는 개발자들이 많고, 자료도 많기 때문에 공부할 자료가 많다는 점과 Spring은 전자정부 표준 Framework. 즉, 정부 산업과 관련된 곳에서는 Spring을 사용한다는 것 또한 장점이라 볼 수 있다.
Python의 강력한 라이브러리를 사용하여 개발하고 싶다.
Django의 가장 큰 장점은 Python의 라이브러리를 이용할 수 있다는 점이다.
Python은 라이브러리가 다양하고 강력하기로 유명하다. 때문에 그 라이브러리를 사용할 수 있다는 점은 매우 큰 장점이며, 웹 개발 시 구현해야 하는 부분인 로그인, 회원가입, 인증, data parsing 등을 라이브러리를 통해 구현이 가능하다.
또한 Python으로 개발한다는 점에서 문법이 간결하여 개발 속도가 빠르고 생산성이 높으며, Full Stack Framework인 만큼 JS를 사용하는 React, Vue를 사용하지 않고 Front-end 부분을 구현할 수 있다.
필자와 같이 다양한 프로그래밍 언어를 다룰 수 있다면, Framework의 특징들을 잘 파악하여 본인이 개발하려는 웹 사이트의 특징과 맞는 Framework를 채택하면 된다.
그러나 아무리 개발하려는 웹 사이트의 특징과 맞는 Framework를 고르는 것이 중요하다고 하더라도, 결과적으론 개발자 본인이 잘 다룰 수 있어야 한다. 또한 대부분의 Framework들은 일반적인 기능은 모두 구현이 가능하고, 채택한 Framework가 특정 기능이 부족하다면 우회하는 방법이 얼마든지 있으므로 본인이 잘 다룰 수 있는 언어의 Framework 인지도 중요하다.
그러므로 본인이 다룰 수 있는 언어가 한 개이거나 자신 있는 언어가 명확하다면 해당 언어의 Framework를 사용하는 것이 좋다고 생각한다.
또한 취업을 위한 프로젝트라면 원하는 기업에서 어떤 Framework를 다루는 개발자를 원하는지를 파악하여 해당 Framework로 프로젝트를 하는 것이 좋을 것이며, 어차피 유능한 Back-end 개발자가 되려면 다 알아야 한다는 마인드라면 해보고 싶은 순서대로 경험해 보는 것도 좋다고 생각한다.
하지만, 프로젝트는 시작했지만 Framework 혹은 웹에 대한 지식이 부족하여 뭐가 뭔지 잘 모르겠거나, 웹에 대한 전반적인 경험을 비교적 간결하게 해보고 싶은 입장이라면 Node.js의 Express로 시작하는 것을 추천한다.
if(다룰 수 있는 언어가 유일하다 || 자신 있는 언어가 명확하다){
해당 언어의 Framework를 이용;
}else if(필자처럼 다양한 언어가 가능하며 선택에서 고민된다){
if(내가 가고 싶은 기업이 있다){
해당 기업이 이용, 개발자 채용 시 공고하는 Framework를 이용;
}else if(내가 해보고 싶은 Framework가 있다){
해당 Framework를 이용;
}else if(내가 만들고 싶은 웹의 특징을 안다){
만들고 싶은 웹의 특징과 Framework 들의 특징을 비교하여 이용;
}else{ //됐고, 난 잘 모르겠다
Express;
}
}
언제나 태클은 환영합니다. 늘 부족하고 배울 점이 많기 때문에 틀린 부분이 있거나 생각이 다르다면 태클해 주시길 바랍니다.
잘읽었습니다 감사합니다 전 java/spring 처음으로 backend를 접하고 지금은 node.js 공부중입니다