얼랭(Erlang)을 꼭 배워야 하는 이유

By | 2008년 7월 2일

사용자 삽입 이미지
얼랭(Erlang)이 뭐지? 병행성이라니, 함수형 언어라니 너무 현실과는 동떨어져 보이는데?

배울 언어가 수두룩한데 내가 또 다른 무언가를 배워야 할까?

얼랭은 멀티코어 시스템의 확산으로 각광 받고 있고, 분산 프로그래밍, 동시성이 병렬 처리가 큰 특징이며, 속도와 과부하 문제를 탁월하게 해결하는 언어입니다. 기존과 다른 프로그래밍 방식으로 프로그래머의 사고 폭을 넓혀줍니다.

뭐 이런 얘기는 이미 들어서 소개를 통해 알고 계시다구요? 그럼에도 아직 선뜻 ‘프로그래밍 얼랭’에 손이 가지 않고, 장점이 많은 건 알겠는데, 이 모든 장점으로 커버하기엔 생소함이 너무 커서 과연 올바른 선택인지 고심하고 계시다구요?

이런 분들을 위해 우리의 조 암스트롱님께서는 꼭 얼랭을 배워야 하는 이유를 무려 다섯 가지나 제시해 주셨답니다(『프로그래밍 얼랭』1장 제일 첫 페이지에 담겨 있습니다).^^ 그렇다고, 너무 부담감을 갖고, 필요에 의해 얼랭을 펼치진 마세요.

번역을 해주신 김석준 님께서 얼랭을 배우는 걸 ‘새로운 여행’이라고 표현해 주시고, 최고의 루비스트께서 얼랭에 푹 빠져버린 까닭이 바로 ‘재미있어서’라고 말씀하시는 데는 다 이유가 있지 않을까요?^^

엄~청 생소하면서도 왠지 친근한 언어 얼랭을 서광열 님께서 이번에 월간 마이크로소프트웨어에 소개해 주셨습니다.

서광열 님의 글을 마소의 동의를 얻어 저희 블로그에도 그대로 싣습니다.
추천글을 써주신 서광열 님과 글을 저희 블로그에 옮기는 걸 흔쾌히 동의해 주신 마소에 감사. 꾸~벅

이 책의 발견

과거에는 CPU가 새로운 나오면 기존 소프트웨어는 아무런 변경 없이 새로운 CPU의 성능을 마음껏 즐길 수 있었다. 새로운 CPU는 클럭 속도를 더 빠르게 만들고, 주어진 명령어를 개발자가 모르게 더 빠르게 실행시켰기 때문이다. 이런 기술로는 명령 수준 병렬화(Instruction Level Parallelism)가 대표적이다.

이제 반도체 기술의 한계로 인해 인텔이 주도했던 클록 속도 경쟁은 막을 내렸다. 과거 실리콘 밸리의 번영을 주도한 무어의 법칙(Moore’s Law)이 끝났다는 위기감도 있었다. 하지만 CPU 벤더들은 클록 속도를 대체할 새로운 카드로 멀티코어를 내놓았다. 무어의 법칙은 클럭 속도가 아닌 코어 개수를 의미하게 되었다.

소프트웨어 개발자에게 멀티코어는 불행한 소식이다. 멀티코어에 대한 고려 없이 작성된 프로그램은 코어가 100개가 되도 성능이 전혀 개선되지 않기 때문이다. 멀티코어를 활용할 수 있는 멀티쓰레드 프로그래밍은 올바르게 작성하기 어렵기로 유명하다. 인텔과 마이크로소프트는 멀티코어 시대의 새로운 프로그래밍 모델을 제시하기 위해 막대한 돈을 연구비로 쏟아 붓고 있는 실정이다.

이렇게 프로그래밍 환경이 바뀌는 가운데 새롭게 주목받고 있는 언어가 얼랭(Erlang)이다. 얼랭은 멀티코어에 적합한 프로그래밍 모델을 가지고 있다. 동시성, 분산 처리, 결함 허용 등을 중요 요구사항으로 만들어진 얼랭은 1980년 후반 에릭슨(Ericcson)에서 개발되어 에릭슨의 다양한 네트워크 장비 개발에 사용된 함수형 언어이다.

얼랭의 프로그래밍 모델을 독특하다. 공유 메모리 없이 수많은 얼랭 프로세스(운영체제의 프로세스와 다른 얼랭의 경량 프로세스)가 서로 메시지를 주고받으며 자신에게 주어진 임무(task)를 수행하는 모델이다. 공유 메모리가 없기 때문에 멀티쓰레드 프로그래밍의 악몽인 데드락, 레이스 컨디션이 발생하지 않는다. 더불어 사이드 이펙트(side effect)가 없는 함수 언어의 특징은 병렬 프로그래밍과 궁합이 잘 맞다.

최근 루비온레일스 쪽에서 유명하신 김석준님의 번역으로 『프로그래밍 얼랭』(Programming Erlang: Software for a Concurrent World)의 번역본이 나왔다. 『프로그래밍 얼랭』은 얼랭 프로그래밍의 성경과도 같은 책이다. 작년 12월 마소에 내가 기고한 “병렬 프로그래밍과 얼랭”이라는 꼭지에서도 유일한 참고 도서로 조 암스트롱(Joe Armstrong)의 『프로그래밍 얼랭』을 든바 있다. 이 책은 함수 언어 얼랭의 기본기부터 멀티 코어 프로그래밍까지 차근차근 풀어가고 있다. 함수 언어나 멀티쓰레드 프로그래밍을 전혀 모르는 개발자도 쉽게 이해할 수 있다.

새로운 언어를 배우면 사고의 폭이 넓어진다. 실용주의 프로그래머(Pragmatic Programmer)는 매년 새로운 언어를 하나 배우라고 권장하고 있다. 1980년대 개발된 얼랭은 오히려 최근에 더 주목받고 있는 매력적인 언어이다. 얼랭은 프로그래밍 언어 차원에서 병렬성, 결함 허용성, 안정성을 논하고 있으며, 얼랭 개발자는 자연스럽게 이런 개념을 채득해 나갈 수 있다. 올해 아직 어떤 새로운 언어를 배울지 고르지 못했다면, 얼랭을 배워보면 어떨까?


.

4 thoughts on “얼랭(Erlang)을 꼭 배워야 하는 이유

  1. CharSyam

    ㅋㅋㅋ, 그런데 얼랭 너무 어렵습니다. 지인들과 스터디 중인데, 이거
    무슨 코드 하나 이해하는데, 절차형 언어에 익숙한 저로서는 ㅋㅋㅋ
    하나하나가 신기하고 머리가 뽀사지고 있습니다. 그래도 이런 책
    번역해 주셔서 감사드립니다.

    Reply
  2. Pingback: quezina's me2DAY

  3. Pingback: ruby2day's me2DAY

  4. Pingback: 김재호의 디지털보단 아날로그

댓글 남기기