문득, 내가 작업하고 있는 서비스에 왜 나는 하필 Spring을 사용했을까? 라는 의문이 들었다.
실제 많은 회사에서 면접을 통해 지원자에게 특정 언어, 프레임워크의 선택이유를 묻는 경우를 전해들은 바 있다. 그럼 나는 왜 Java를 사용하고, Spring을 사용하는 것일까?
생각을 정리해 보았다.
1. 가장 익숙한 언어, 그리고 그에 맞는 프레임워크
- 진부한 답이지만 프로젝트를 시작한 시점에 나에게 가장 익숙한 언어는 Java언어였다. Java 언어를 선택한 시점에서 내가 Spring 을 웹 프레임워크로 선택한 것은 이상하지 않은 선택이었다.
2. 시간이 흐르며 단단해진 프레임워크
- 초창기 Spring이 나왔을때부터 지금까지 Spring에는 많은 변화가 있었다. Spring MVC이후 Boot가 나오며 Spring을 이용한 개발에 탄력이 붙기 시작했고, Annotation이 추가되며 더욱 편리하게 개발이 가능해졌다.
- Spring은 또한 상황에 맞는 모듈들을 꾸준히 추가해나가며, 새로운 모듈이 추가되었다 할지라도 내가 원하는 부분만 선택하여 사용할 수 있도록 추구하고 있다.
- Spring 프레임워크 자체, 그리고 여러 라이브러리들은 오랜 시간 동안 사용자에 의해 충분히 검증되었고, 이는 개발 서비스의 안정성으로 이어진다고 생각한다.
- 많은 스타트업에서 여러 이유로 다양한 프레임워크를 선택하겠지만 특히나 생산성과 초기 퍼포먼스를 이유로 node.js, django와 같은 언어, 프레임워크를 선택하는 걸로 알고 있다.
그러나 서비스 규모가 커지며 기존 서비스를 Spring으로 마이그레이션하는 사례가 많다는 소식도 간간히 들려옴.
3. 다양한 개발사례와 문서, 레퍼런스를 찾기 쉬움
- Java, Spring 조합은 특히나 한국이라는 나라의 특성상 절대적으로 많은 점유율을 자랑하고 있다.
(특히나 SI에서..)
물론 가장 로우레벨에서의 관련 레퍼런스를 찾는 것이 베스트겠지만, 필요한 경우 한국어로 잘 정리된 여러 블로그, 문서들을 쉽게 찾아 볼 수 있는 것이 Spring의 장점이라는 개인적인 생각이 든다. 물론 최근 Node.js, Django 등등 여러 언어들이 점유율을 높여가고 있지만, 내가 프로젝트를 시작한 시점에서는 아직까지도 Java, Spring의 벽을 뛰어넘지는 못하고 있는 것 같다.
4. 트렌드에 맞추어 꾸준히 개발되는 프레임워크
- 물론 다른 프레임워크 또한 그렇겠지만, Spring은 최근의 트렌드, 혹은 더 나은 프로그래밍 방법을 찾기위해 트렌드에 맞추어 개발자들이 좀 더 능동적으로 개발할 수 있는 다양한 모듈들과 방법론을 적용시키고 있다.
최근 스프링5.0에서는 리액티브 프로그래밍이 추가되었다.