Play!+Scala ‘실무’ 개발은 ‘정말로’ 접어야 할듯.

예전에 이런 글을 쓴 적이 있다. ‘스칼라 개발은 당분간 포기

한 2년전부터 Play! Framework에 맛들려서 이리저리 학교 프로젝트에도 적용해보고, 공부하고 개발해보곤 했다.

내가 Play!와 Scala에 빠지게 된 이유는 다음과 같다.

  • Play!가 뭔가 개발이 빨라보인다. 빠른 프로토타이핑으로 좋을 것 같다.
  • Scala가 뭔가 자바보다 나아보인다.(특히 type)
  • 뭔가 Typesafe에서 하는 행동이 멋져보인다. Activator UI같은거 웹브라우저에서 돌아가는 IDE가 매력적이다.
  • Scala의 Methods가 JavaScript의 메소드와 호환되는 부분.(이게 솔직히 가장 땡김)
  • 외국에서의 스칼라 언어의 상승세.
  • 그냥 새로운 언어를 배워보고 싶었다.

그런데 정말 2년간 꽤 힘들게 도전해 보긴 했는데, 결과적으로는 내가 정말 만들고 싶은 것은 만들지 못했다. 이유는 다음과 같다.

  • Java에 너무 익숙해서 Scala가 너무 생소하다. 개인적으로 “체계적(구조적)이지 않다”는 느낌이 계속해서 든다.
  • Spring Framework에 너무 익숙해서 Play! 구조가 생소하다. 물론 좋아보이지만 IDEA에서의 지원이 떨어지는 감도 있고, 기존의 익숙한 플러그인이나 서드파티(Maven, Velocity, MyBatis 등)를 사용하기 힘들다.
  • Reference가 많이 없다.
  • 내가 생각하는 아이디어를 만들기에는, Play!나 Scala에 대한 지식이 너무 많이 부족하다.
  • 가장 치명적인 것은 실무경험. 자바나 스프링의 경우 거의 10년을 실무에서 다뤄왔지만(지금도) 스프링+플레이!의 경우는 학교 프로젝트 하나를 해본 것이 전부.
  • 그냥 일 자체가 안된다.

사실 스프링 3.x시절에는 WebSocket이 지원되지 않아서 사뭇 아쉬운 마음이 있었는데, 4.x부터는 이도 지원되고 개인적으로 스프링 자체가 상당히 심플해졌다는 생각이다. 무엇보다 나 스스로 노하우가 많기 때문에 신규 서비스를 만드는 데에 시간적인 측면을 고려해보면 스프링이 현재까지는 답이다.

자바개발자로써 나의 경험을 비춰보면, Java를 배우는데 3년, JSP와 Model 1,2 그리고 MVC를 배우는데 3년, struts에서 Spring으로 넘어오는데 1년, Spring 환경세팅을 배우기까지 3년의 시간이 걸렸고, 그 3년의 시간동안 endpoint를 담당하며 template engine등에 대해 공부하였는데 Play!+Scala에는 이런 경험이 전무하다 보니 2년간 내가 시도했던 이 언어를 통한 개발은 특히 실무나 Enterprise Web을 개발하는 데에 있어서는 치명적이라는 생각이 든다. (결국 내 게으름 탓이다.)

요즘 웹개발은 Bootstrap이니 jQuery UI니 지원되는 UI도 많고, 게다가 WordPress까지 잘 되어있어서 실상 홈페이지를 만드는 데에 프로그래밍 적인 부분이 얼마나 될까 싶다. 언어나 프레임워크는 단순히 수단일 뿐. 하지만 중요한 것은 내가 얼마나 익숙하고 빠르게 만들 수 있느냐가 아닐까 싶다. 물론 10년간 내가 배운 자바+스프링 기술을 버리는 것은 아니지만, Play!+Scala를 하다보면 그런 느낌이 강하다. 단순히 몇 개의 페이지를 만드는 데에는 플레이가 훨씬 간편하고, 괜찮은 기술이겠지만 수십페이지와 세션, DB풀을 관리하는 데에는 아무래도 익숙한 자바+스프링이 훨씬 나은 것 같다.(물론 나에 한해서.)

어쨌든, 플레이로 실무개발을 한다는 생각은 정말 버려야겠다. 특히나 지금처럼, 프리랜서 생활을 ‘혼자’ 하고있는 경우. 실상 실무에는 플레이 자체도 많이 없기도 하니깐.. 스칼라와 플레이는 단순히 실무적인 입장 보다는 약간 도전적이고, 개척자 정신의 그곳으로(스스로 공부해볼 만한 새로운 분야) 남겨야겠다. 또한, 해외의 language trend또한 스샷처럼 변하고 있으니깐. 미래를 대비하는 데에 스칼라나 Clojure, Go같은 언어를 배워두는 것은 나쁘지 않기 때문에, “공부”는 꾸준히 하되 실무에 함부로 적용하지는 않겠다. 반성, 또 반성.