SNS 개발 기술 설정하기

방학을 맞이하여 그간 생각만 하고 있던 SNS구축에 대해 본격적으로 시작해 보려 하고 있다.

 무엇보다 중요한 것은 빠르게 그리고 최대한 디자인적인 수고(?)가 적게 감미되는 개발이 가장 중요했다. 왜냐면 내겐 디자인을 보는 안목은 있다고 하더라도 디자인을 처음부터 끝까지 개발하는데 한계가 분명 존재하기 때문이다. 그래서 나는 개발을 할 때에는 얼마나 예쁜(?) skinning이 가능한지를 먼저 보는 편이다. 때문에 라이브러리의 선택은 내게 있어서 매우 중요하다.

 요즘엔 개발 플랫폼이 너무나도 많아졌다. JVM에서 돌아가는 것만 해도 스칼라니 Groovy니 새로운, 그러나 원래 있었던 언어들도 많이 존재하고 이에 따른 프레임워크도 많이 생겼다. Groovy만 해도 Grail이나 Griffon이라는 것이 존재할 정도이니 말이다.

 어쨌든 개발 플랫폼은 내가 가장 개발을 손쉽게 잘 할 수 있으면서도 확장 가능성이 가장 좋은 것으로 선택하기로 했다. WAS는 Tomcat+Apache, 개발 언어는 Java, 프레임워크는 Spring 3.1, 그리고 Spring MVC에 맞춰진 개발 구조를 따라가기로 했다. 

 여기에 DB는 Mysql 5.1, 그리고 Mybatis와 매핑시킨다. View는 Tiles+JSP로 가려고 하다가 그냥 전부터 좀 유연하게 사용하고 싶던 Velocity를 사용하기로 했다. 생각보다 Velocity에서 클래스를 끌어다 쓰는 게 쉬워서 말이지..

 여튼 거기에 어차피 방학도 했겠다, 전부터 미뤄온 개발 툴의 변경을 시도했다. 원래 이클립스 추종자였는데, 프로젝트가 커질수록 생각보다 이클립스가 빠르게 느려진다. 특히 Spring을 자주 사용하면 할수록 이클립스는 더 느려진다.. (요것 참 문제란 말이지.) 

 그래서 지수형의 추천에 힘입어 JetBrain사의 IntelliJ IDEA를 구매했다. 가격은 무려 $199 허걱.. 솔직히 말해서 IDE는 두번째 구매다. 98년도에 MS FrontPage 98을 한 25만원에 구매한 이후로 말이다. 비싼 돈을 주고 사서 그럴까, 엊그제부터 이틀 내내 원활한 Maven 기반의 개발에 Spring MVC + Tomcat을 돌리기 위한 삽질을 수없이 시도했다. 결론적으론 성공했다. 프로젝트 생성할 때 Maven Module 프로젝트를 생성하고 여기에 Add Framework Support를 통해서 Spring MVC랑 Tomcat을 추가해 주면 된다. 자세한건 여기를(http://wiki.jetbrains.net/intellij/Creating_a_simple_Web_application_and_deploying_it_to_Tomcat)

 어쨌든 IntelliJ IDEA 이거 상당히 괜찮은 툴이다. 내가 이클립스만 약 6년 정도 사용했는데, 솔직히 이클립스 너무 무거워졌고 Classic버전을 받으면 Subversion Client에 Maven에 Ants에 STS에.. 이것 저것 너무 설치할께 많다. 근데 IDEA는 지금까지 단 한번도 뭔가 플러그인으로 설치한 적이 없다. Velocity Template 같은 것도 들어있고.. 아직 사용은 안해봤는데 아마 MyBatis 매핑 파일도 지원하지 않을까 싶다. 톰켓을 비롯해서 왠만한 WAS들도 그저 인터넷에서 다운받아서 경로만 잡아주면 된다. 

 이런 편리한 툴이 있었다니.. 뭐 물론 단점도 있긴 하다. 아직까지 단축키를 잘 몰라서, 예를 들어 이클립스에서는 커맨드+1 을 누르면 가장 첫번째 에러를 포커스 하며 해결책을 제시해주는데 IDEA는 어찌해야 할줄 몰랐는데 알고보니 alt(opt)+Enter 이더라. 단축키를 잘 몰라 불편한 점이 간혹 있지만 한 몇 개월 사용하다 보면 금방 풀리지 않을까 싶다.

 말이 좀 샜는데 어쨌든 툴은 IDEA로 선택하고 위에서 나열한 플랫폼에 이제 문제가 UI적인 요소이다. SNS를 만들려 하다 보니 해외 디자인의 트랜드를 좀 알아봤는데, pinterest와 비슷하게 최초 2단 배열, 컨텐츠 부분이 1단 혹은 페이스북 처럼3단으로 되어있는 부분이 많다. 그런데 내 기획 의도대로라면 횡스크롤 방식으로 개발이 들어갈 예정이기 때문에 컨텐츠 부분은 2단으로 배열하려고 생각하고 있다. 

 개발을 빨리 하기 위해 특히 디자인적인 부분은 아무래도 라이브러리의 힘을 많이 받아야 겠다 생각했는데 찾아보니 Bootstrap이라는 것이 또 있다. CSS로 제공되는데 기본적인 레이아웃을 위한 라이브러리를 제공할 뿐만 아니라 따로 Market에서는 Admin, Index, Content페이지 등 주요한 페이지들을 Bootstrap을 통한 디자인으로 판매하고 있다. 참 나같은 디자인적 안목만 뛰어난(?) 사람에게는 이런 마켓이 참으로 중요한 것 같다. 사실 HTML5korea도 XE Market이 없었으면 제대로 개발하지 못했을 것 같으니 말이다.

 거기에 이제 Spring에서 어차피 뷰리졸버에 JSON 뷰도 추가해 뒀으니 jQuery로 JSON송수신 하고 부분적인 컨트롤에 대한 Skinning은 아마 YUI나 jQuery UI로 할 예정이다. 이거이거참.. 솔직히 퍼블리싱만 내가 하지 디자인은 프렘워크의 힘을 거의 99.9% 빌리는 셈이니.. 한때 디자이너를 꿈꾸던 사람으로써 좀 한심하단 생각이 간혹 들기도 하지만 지금은 플밍이던 디자인이던 일단은 프로토타입까지 아이디어를 창출해 내는 것이 중요하니 말이다.

 그래서 보면 올해 내가 했던 많은 삽질들, 연초에 했던 서버 세팅을 위한 삽질, 그리고 9월부터 했던 스프링과 관련된 삽질들이 헛된 것만은 아니었다. 다 이를 위한 준비였으니깐..

어쨌든 개발때문에 주저리주저리 해봤는데, 이제 천천히 차근차근 만들어가는 아이젝트의 최초 SNS가 되었으면 좋겠다.