링크드인은 Spring MVC 를 사용하다 몇년후에, Play Framework 로 바꿔 버렸는데 . 주요 이유는 다음과 같다.
개발자 생산성 : 스프링은 시작하고 변경을 확인하는데 꽤 오래 시간이 걸리며, 그 때 재시작을 해야하며 그것은 큰 프로젝일 경우 수십분이 걸릴 수 있다. API 들은 무겁고 거추장스럽다. 모던 app 을 빌드하기위해 필요한 내장된 부가기능이 거의 없다. 사실, 규모가 있는 어떤 회사의 스프링 개발자와 대화해 보아도 더티한 면을 많이 보게 될것이다. 허접한 커스텀 프레임워크를 스프링 MVC 위에 쏟아붙고 관리도 제대로 안되고 있다. 링크드인도 예외는 아니었다. 헬~ 심지어 스프링소스에 있는 그 녀석 스스로도 스프링 MVC 위의 또다른 레이어를 빌드하고 자빠져있다. 그것은 스프링 부트라고 불린다.
왜 그러냐고 ? 스프링 MVC 는 그 자체로 맛탱이 간 놈이기때문이지. 반면 Play 는 hot-reload 변경이 가능하고, 그 덕분에 너는 환상적인 코딩-리프레쉬-코딩-리프레쉬 사이클에 따라 리듬을 탈 수 있게되는거지. 코딩하는게 아니라 리듬에 몸을 맡긴다고나 할까? API 들은 또 얼마나 파워풀하고 함수형 프로그래밍이 주는 구성력 덕분에 얼마나 좋은가 말도 못하지. 그리고 이 현대적인 프레임워크는 대부분의 유명인사들을 자체적으로 지원하고 있어, JSON,Web Sockets, DB access, Web Service calls 등등 말야
함수형 프로그래밍: 스프링은 변경가능한 아슬아슬한 객체,어노테이션,XML 설정파일, 그리고 몇가지 마술들 로 이루어져있는데, 이것들은 처음엔 OK 된것으로 보여도 먼가 잘못되기 시작하면 넌 먼가를 해야하지만 그것들이 일으키는 부작용 (부수효과)의 파도에 넌 그대로 익사하고 말꺼야. 간단히 말해서 대부분의 스프링 MVC 어플리케이션은 헝크러진 실타래의 더미라고 봐도 무방. 니가 실타래 풀 수 있을까? 그냥 남들 안보는곳에서 가위로 삭둑하는게 보이네;; 반면 Play 는 함수형 프로그래밍 코어로 만들어져서 함수형 프로그래밍의 장점을 가지고 있지. 그것들은 쩌는 타입시스템을 사용하며 (타입세이프 클래스뿐만아니라 타입세이프 라우트,템플릿,빌드시스템 등등 더 많이) 이것들은 코드를 더 쉽게 이해하고 구성되고 새로 이용되게 해주고 디버그 문제도 쉽게 해결할 수 있게 해주고 커스텀 플러그인도 쉽게 만들어주지. 등등 너무 많다.
쩌는 오류 리포팅 : 스프링 가지고는 거대하고 이해 할 수 없는 스택 트레이스만 보았을꺼야. 그거 이해 하기 힘들었다고? 스프링님은 쩌는데 내가 실력이 없어서 어려웠던거라고 제발 생각하지마 ~ 스프링이 구린거니깐. 플레이님은 말이지 굉장히 명쾌한 오류메세지만 브라우저 상에 잘못된 코드 조각과 보여줄거야. 타입시스템의 더 나은 사용예라고 말 할 수 있을거 같아. 대부분의 에러는 컴파일 타임 에러들 이거든 런타임이 아니라.
더 많은 정보는 다음을 살펴보면되
The Play Framework at LinkedIn. 왜 LinkedIn 이 Play 로 갈아 탔는지 말해주는 영상
2013. 6. 26
Node.js vs Play Framework. Node 와 Play 를 예로 보여주는 영상
Spring Boot이랑 Spring Initializr 를 출발선으로 살펴보면 스프링 부트는 tomcat 또는 jetty 를 임베디드해서 꽤 뚱뚱한 jar 를 만들겁니다. 그냥 그걸 돌리면 완전한 서버로서 시작 할 수 있죠.
Spring Initializr 는 사용하길 원하는 스프링컴포넌트들의 이름을 선택해주면 스타터 프로젝트를 다운로드해서 개발 할 수 있게 해줄 겁니다.
또한 스프링은 비동기 방식을 WebMVC 안에 가지고 있어요. 비동기 프로세싱을 위한 이벤트루프나 빠른 쓰레드풀로 이루어진 Reactor 라는 이름을 가진 새로운 프로젝트 말이죠.
스프링은 또한 XML configuration 대신해서 자바 configuration 을 가지고 있고 classpath 를 스캔할수 있으며 그래서 원치 않으면 명시적인 와이어링을 하지 않아도 되요.
스프링의 에코시스템은 대단한데요. 편하게 upload files, talk to RMQ, talk to Redis, schedule tasks 등등을 패턴지향방식으로 제공합니다. 스프링은 매우 오랬동안 만들어진 단단하고 안전한 프레임워크입니다. 미래를 위해서도 말이죠. 저변이 넓으며 책도 도와줄 문서도 매우 많습니다.