Google App Engine(이하 GAE)으로 개발하는 것을 결정한 이후 개발에 대한 가속도가 붙었다. GAE는 생각보다 어렵지 않았다. 기존에 자바 기반으로 웹 애플리케이션을 개발한 경험이 있다면 몇 일(빠르면 1~2일, 늦어도 일주일 이내) 정도 시간 투자하면 개발 환경을 익히고 간단한 예제 정도는 따라할 정도의 수준이 된다.

GAE가 생각보다 개발 환경이 잘 구축되어 있으며, 왠만한 자바 기반의 웹 애플리케이션 기술을 사용하다는 것이 가능하다는 것을 알고 그 동안 자바 기반으로 개발할 때 한번쯤 시도해 봤으면 좋겠다고 생각하는 기술을 찾아 적용해 보려고 마음을 먹었다.

첫번째 시도는 Scala & Spring: Combine the best of both worlds 문서를 참고해 Scala와 Spring 프레임워크를 통합하기 위한 시도를 했다. 이 문서의 샘플을 기반으로 간단한 기반 환경 구축을 완료했다.

두번째 시도는 Scala와 Spring MVC를 접목해 보기 위한 시도를 했다. 이 때 참고한 소스는 https://github.com/robertrolandorg/scala-spring-mvc-3 소스를 다운받아 간단한 기반 환경을 만들었다.

GAE는 기본적으로 ANT를 기본 빌드툴로 활용하는 예제가 많은데 그 동안 Maven에 너무 익숙했던 관계로 Maven 기반 개발 환경을 구축하기 위한 시도를 했다. 이 환경들을 조합해 기반 환경을 구축할 때 How To Create a Webapp with Scala, Spring, Hibernate and Maven 문서에서도 많은 도움을 받았다.

그 동안 하고 싶었던 이런 저런 기술들을 조합하다보니 정작 만들어야 할 기능에 집중하지는 못하고 Scala와 Java를 통합하면서 발생하는 문제를 해결하는데 많은 시간을 소모하게 되었다. 그렇게 몇 일 간의 삽질을 한 후에 이건 정말 아니라는 생각을 하고 개발 환경을 다시 구축하기 시작했다. GAE도 익숙하지 않은 상태이기 때문에 일단 지금까지 익숙하다고 생각하는 기술 요소들을 사용하고 점차적으로 내가 적용하고 싶었던 기술을 적용하는 것이 좋겠다는 생각으로 개발 환경을 구축했다. 그렇게 구축한 개발 환경은 Java를 기반으로 Maven 빌드툴, Spring 프레임워크, Freemarker(이 기술 또한 처음 시도해봤다. 삽질하면서 적용한다는 생각으로 시도했다.)를 사용하는 것으로 결정했다. 현재 개발되어 있는 SLiPP은 이 기술 기반으로 구축되어 있다.

위에서 적용하기로 결정한 기술들은 대부분 익숙했다. 물론 GAE와 Freemarker가 생소하기는 했지만 쉽게 극복할 수 있으리라 생각했다. 가장 극복하기 어려울 것으로 생각하는 부분은 GAE의 DataStore 였다. 이 부분에 대한 내용은 다음 글에서 다루도록 하겠다.