클로저스크립트(ClojureScript)까지 할 차례
저도 웹개발자로서 자바스크립트(JavaScript)를 써야만 한다는 고충이 있습니다. 고충이라 말하는 이유는, 제게는 자바스크립트라는 언어가 즐겁게 쓸 수 있는 언어가 아니기 때문입니다. 그런데, 그 고충이 클로저스크립트(ClojureScript)덕분에 해소될 것 같습니다. 클로저스크립트를 써서 클로저 문법으로 개발한 코드를 자바스크립트로 컴파일해낼 수 있습니다. 결국, 웹 브라우저에서도 클로저 언어로 개발한 코드를 돌릴 수 있지요.
서버사이드 개발자는, 프론트엔드 개발자나 앱개발자에 비해 언어 선택이 자유롭습니다. 프론트엔드(Front-end) 개발자는 응당 웹브라우저 세계의 공용어 자바스크립트를 써야 하고, 앱개발자는 안드로이드(Android)라면 자바(Java), iOS라면 스위프트(Swift)나 오브젝티브-C를 써야 하겠지요. 그러나, 저 같은 백엔드(Back-end)개발자의 경우는 자바, 루비(Ruby), 파이썬(Python), PHP, 노드(Node.js), Go 등 무엇을 서서 개발하든 HTTP 요청을 받고 응답을 줄 수 있으면 됩니다.
그런 선택의 자유도가 있다 보니, 이런 저런 다양한 언어를 접하고 공부하기도 하는데요, 여럿 써보면 특정 언어가 더 좋다는 기호가 생기게 됩니다. 그래서 제 경우에도 루비나 클로저로 개발하게 된 것이구요. 그런 경험으로, 더 좋게 느껴지는 언어들을 쓰다가 자바스크립트를 보면 참 친해지기 어려운 언어라는 생각이 듭니다.
그러나 웹개발하는 데 있어서 브라우저에서 실행되는 자바스크립트를 빼놓을 수는 없다는 점에서 아래와 같은 대안을 고르게 됩니다.
- 자바스크립트는 난 모르겠소. 프론트엔드 개발자에게 모든 걸 위임합시다.
- 자바스크립트를 최소한으로 쓰고, 대부분의 일을 서버사이드에서 다 처리합시다.
- 자바스크립트보다는 나은 커피스크립트(CoffeeScript) 같은 걸 써 봅시다.
어차피 규모가 큰 회사에서는 프론트엔드 업무가 분업 돼 있고, 전담 인력이 따로 있으니 별다른 고민이 필요없지요. 그쪽에서 쌩 jQuery로 개발하든, AngularJS로 하든 React로 개발하든 알아서 할 일입니다. 마치 디자이너들이 포토샵을 써서 하든 일러스트레이터를 써서 하든 나와 무관한 것과 비슷한 입장이지요.
그러나, 규모가 작은 입장이나, 아니면 어차피 혼자 모든 것을 해야 하는 입장이라면 2번이나 3번으로 가야 합니다. 최근에도 루비온레일스로 개발하고 있는 지인 K씨의 얘기를 듣자니 레일스쪽은 2번쪽에 접근이 강해졌다고 들었습니다. 어차피 요새 클라이언트와 서버와의 네트워크 왕복 시간이 길지도 않으니, 서버에서 더 기민하게 이거저거 처리해주는 것도 좋겠습니다. 게다가 이제는 AWS도 서울 리젼이 생겼잖아요?
3번의 경우는 흥미로운데, 커피스크립트 같은 컴파일러(트랜스파일러)를 따로 둬서, 자바스크립트보다는 조금 나은 언어로 개발하고, 그 걸 자바스크립트로 변환해서 웹브라우저(또는 Node.js)에서 실행하는 것이지요. 맵(.map)파일도 같이 떨궈두면, 브라우저에서 디버깅 할때 원본 소스파일(.coffee)도 쫓아가서 볼 수 있습니다.
3번의 변환(?)과정을 한번 더 두면, 자바스크립트보다 더 나은 언어를 쓴다는 장점과 함께, 기본적인 문법 오류를 쉽게 잡을 수 있다는 장점도 따라옵니다.
제 경우, 이런 상황에서 클로저를 공부하다 보니, 3번에 무게가 더 실렸습니다. 클로저와 같은 문법으로 프론트엔드 코드를 작성해서 개발할 수 있게 해주는 클로저스크립트 때문입니다. 그야말로 서버 쪽 코드와 클라이언트 쪽 코드를 동일한 언어로 작성할 수 있지요. 심지어 서버사이드 코드도 클로저스크립트로 작성해서 Node.js에서 돌리기도 한다는군요. 아무래도 JVM은 기동 시간이 길다보니, 간단히 떠서 잠깐 처리하고 끝나는 경우에는 Node.js를 쓰는 게 유용해보입니다. (예. AWS Lambda)
아무튼, 클로저스크립트를 소개하는 동영상을 두어개 보고 나니, 저도 완전히 설득당했습니다. 사실 클라이언트 코드는 그냥 자바스크립트로 개발하고 말지라는 생각이었는데, 요새 프론트엔드코드의 복잡도는 제 수준에서 자바스크립트로 감당하기에는 벅찬 것 같습니다. 언어의 강력함에 올라타서 능으으으으응력 이상의 결과물을 만들어봐야겠습니다.
이쯤되니, 클로저를 접하게된 것이 행운이라 여겨지는군요. 함께 행운을 누려보십시다요~ ^^