1. 결론
가. Spring
1) 높은 성능이 필요하고 까다로운 요구사항을 충족해야하는 대규모 프로젝트
나. Django
1) 빠른 개발이 필요한 MVP 프로젝트
2) 중소규모의 웹 기반 프로젝트
다. Node.js
1) IoT 프로젝트
•
기본적으로 비동기로 동작하기 때문에 복수개의 요청이 발생해도 각각의 요청에 대해 비동기 처리하므로 대규모 트래픽을 처리하는 서비스에 적합
2) 웹과 모바일을 동시에 지원 가능한 프로젝트
2. Django
가. 장점
1) 높은 개발 생산성
•
하나의 기능을 개발할 때, Django에서 정해준 표준과 최선의 방법(Best Practice)이 존재함
•
표준을 따르면 되기 때문에 빠르게 개발 가능
2) 과학적 컴퓨팅 솔루션 적용 용이
•
Python 기반의 다양한 computing solution을 프로젝트에 가져와서 사용하기 편리함
나. 단점
1) 중앙집중식 구조
•
다수의 개발자나 하나의 프로젝트를 나눠서 개발하는데 용이하지 않음.
2) 낮은 자유도
•
많이 사용되는 기술에 대해 표준을 정해두었기 때문에 표준을 벗어난 선택이 필요한 개발이 어려움
3. Spring
가. 장점
1) 높은 자유도
•
하나의 기능을 개발할 때, 다양한 옵션이 존재하므로 다방면으로 고려하여 최선의 것을 선택할 수 있음
2) 최적의 결과물 도출
•
요구사항에 가장 밀접한 옵션을 선택하여 결과물 도출 가능
나. 단점
1) 높은 학습비용
•
특정 요구사항을 구현할 때, 표준이나 최선의 방법(best practice)가 존재하지 않으므로 학습영역이 굉장히 넓음
2) 낮은 생산성
•
하나의 기능을 추가할 때, 세부적인 영역에서 다양한 옵션을 고려해야 함
4. NodeJS
가. 장점
1) 높은 자유도
2) 분산형 구조
•
하나의 큰 프로젝트를 여러 작은 프로젝트로 나누기 용이함
나. 단점
1) 낮은 개발 생산성
•
표준 기술이 없으므로 개발자가 처음부터 끝까지 기술적 선택을 해야 함
•
framework와 library가 지속 변경되므로 유지보수 비용이 높은 편임
2) 인식
•
Node.js 기반으로 백엔드 개발자의 역량을 낮게 평가하는 인식이 있음