우리는 무언가를 만들고자 할때 도구와 재료를 선택해야 한다. 어떤 도구와 재료를 선택하느냐에 따라서 작업의 난이도는 천차만별이 된다. 

소프트웨어를 개발 할 때는 개발 플랫폼과 언어가 가장 큰 선택사항이다. mmorpg server 를 만든다고 한다면 windows 기반에서 c++과 RDBMS(MSSQL이든 뭐든)를 떠올리곤 한다. 어떤 사람은 linux를 떠올릴지도 모르겠다. 좀 더 실험적인 사람은 java를 염두해볼테고, ruby나 python을 생각한 사람도 있을 것이다. 좀 더 이상한 사람은 Lisp이나 Ocaml, F#을 만지작 거릴 것이다. 

나도 그랬다. c++로 하는 것이 가장 무난 하겠지만, 무난한것이 최고의 선택은 아니니까. 

한 1년은 계속 이런저런 언어로 프로토타입을 만들었다. 맨 처음에 ruby로 시작한 모험은 별 이상한 것들을 거쳐서 stackless python과 mysql을 이용한 버전을 만든 후에 erlang으로 결정했다. 프로토타입도 만들어 보지 않고, 그것도 RDBMS를 버리고 mnesia를 써서 만드는 상용 mmorpg server라니. 

가장 큰 문제는 RDBMS를 버린 것이었다. 이놈의 데이타베이스를 어떻게 설계해야 할까? 예전 버릇대로 설계했더니 무언가 어긋나기 시작했다. 맞다. 얼랭에 왔으면 얼랭 법을 따라야 하거늘! 초반에 자꾸 예전 버릇들(c++와 oop에 중독된)이 나와서 애를 먹었다. 난 아주 빠르게 얼랭이란 나라에 적응해나갔다. 그러자 새로운 세상이 펼쳐졌다. 

쓰레드간의 공유메모리가 없는 세상을 상상해보았는가? 유저가 접속해서 몬스터를 공격한다고 했을때 그 전 같았으면 메모리가지고 장난치는 일이었다. 얼랭에서는 어떻게 할까? 유저프로세스가 몬스터프로세스에게 공격메세지를 보낸다. 몬스터는 어이쿠아퍼라고 응답을 보낸다. 모든것은 메시지 전달이다. 훨씬 간단하게 구현이 가능한 것이다. 

구지 다른 장점에 대해서는 언급하지 않겠다. 검색해보면 다 나올테니까. 그리고 도구는 해당 상황에 맞게 써야지 무조건 만능인 도구는 없기 때문이다. (erlang으로 3D 클라이언트를 만들라고 한다면 난 매우매우 회의적으로 검토할 것이다.)

조만간 게임이 출시되고, 차기작을 만들 때도 erlang을 사용할 것이라 확신한다. 많은 사용자가 접속하는 네트워크 소프트웨어에 매우 적합한 도구이기 때문이다. 

2010년에는 erlang책이 두권 정도 더 나온다. 물론 영문이다. 국내에는 얼랭 책이 번역본으로 한권 밖에 없다.이럴때마다 나는 영어 문화권이 부럽다. 그들은 유연한 사고로 실패에 대한 두려움 없이 다양한 시도를 한다. 국내에는 보기 드문 풍경이다. 

erlang과 관련하여 조언이 필요한 분들은 언제든지 환영한다. 업무를 대신 코딩해달란 말만 하지 않는다면 말이다. 


,