주말에 Erlang OTP(Open Telecom Platform)에 대한 학습과 생각을 조금 해봤다.
OTP라는 줄임말이 주는 의미보다 더 큰 가능성과 기능을 가지고 있다는게 가장 처음 든 생각이였다.
대용량(large-scale), 에러에 강한(fault-tolerant) 분산 어플리케이션을 만들 수 있는 하나의 어플리케이션 운영체제라는 말이 맞을 정도다.
요걸 보다보니 이런 어플리케이션을 만들고 싶다는 생각이 불끈 불끈 솓아 오른다.
OTP를 보면서 이를 이용해 웹 크롤러 시스템을 만들면 어떨까 하는 생각이 가장 먼저 들었다.
OTP의 supervision tree를 이용해 다수의 크롤러 프로세스를 관리하는 그런 모습을 그려봤다. 무엇보다 크롤러 코드
업그레이드를 할때 굳이 크롤러 시스템을 셧다운 하지 않고도 가능하게 될테고, 어떠한 충돌이 일어날때에도 다시 살아나게끔 만들수
있을 것이다. 게다가 얼랭 프로세스는 굉장히 가벼우니 동적으로 웹페이지 다운로딩하는 프로세스의 개수를 자유롭게 핸들링 가능할것이다.
하지만 얼랭으로 이걸 만든다 하더라도 한가지 아쉬운 점이 있다.
이런 분산 어플리케이션을 가장 안정적으로 만들수 있는 언어라는데는 이견이 없지만 내부적으로 데이터 처리를 할 수 있는 라이브러리가 좀 부족하다는 것은 어쩔수 없는 현실인거 같다.
단적인 예로 텍스트 처리를 할 수 있는 정규식 라이브러리의 기능이 많이 빈약하다.(많은 정규식 옵션이 누락되어 있고 Search기능도 없다.)
따라서 예외가 많은 텍스트 처리를 할때 코드가 복잡해지는 측면이 없지않아 있을 것이다.
게다가 이뿐만 아니라 전반적으로 텍스트 처리 라이브러리의 기능이 많이 취약하다.
그래서 2가지 언어를 사용해서 이런 어플리케이션을 만들면 어떨까 고민이 된다.
메인 서버 클라이언트 로직의 얼개는 OTP와 얼랭으로 하고 내부적인 프로세싱 작업을 하는 것은 C++이나 Python같은 텍스트 처리가 편한 절차형 언어로 하는 것이다.
그런데, 이런 두가지 언어를 혼합해서 사용하기에 편한 방법이 얼랭에서는 거의 없다.
Python같은 편리성을 기대했던게 무리였나?
좋은 라이브러리를 기다리거나, 아니면 얼랭에서 두가지 언어를 혼용해서 쓰는것에 익숙해 지거나…
하지만 후자가 더 재미있을거 같다.
얼랭(Erlang) OTP에 대한 단상 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.