인사이트

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

분류없음 2008/07/02 20:09 Posted by 인사이트
사용자 삽입 이미지

얼랭(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년대 개발된 얼랭은 오히려 최근에 더 주목받고 있는 매력적인 언어이다. 얼랭은 프로그래밍 언어 차원에서 병렬성, 결함 허용성, 안정성을 논하고 있으며, 얼랭 개발자는 자연스럽게 이런 개념을 채득해 나갈 수 있다. 올해 아직 어떤 새로운 언어를 배울지 고르지 못했다면, 얼랭을 배워보면 어떨까?

이올린에 북마크하기(0) 이올린에 추천하기(0)

인사이트가 이사했습니다^^
공지에서 말씀드렸듯이 서교동에서 서교동으로!

5년 동안 정든 사무실을 떠나 새 장소로 옮기는 마음은 서운하기도 하고
설레기도 했습니다.
이런 저런 단점들이 있는 사무실이었지만,
그 아늑함! 운치! 놀랍도록 활용도가 높은
공간들이 그 단점들을 충분히 상쇄시켜 주었기 때문이지요.^^
하지만 무엇보다 떠나는 마음이 아쉬웠던 이유는 그곳에서 지낸 시간의 흔적들이 곳곳에
묻어나기 때문이 아니었을까요.

어쨌든 이런 아쉬움을 뒤로 하고!
새 사무실을 소개하고자 합니다.


처음으로 눈에 들어온 것은 넓은 공간!
이전 사무실이 세 개 이상(?)은 들어갈 것 같은 넓은 공간에 다들 놀랐습니다. ^^
무엇보다 모든 직원을 감동시켰던 건 사무실 안으로 불어 들어오는 시원한 바람!!
(살랑살랑~)

사용자 삽입 이미지

본격적인 여름이 시작되기도 전부터 찜통 같던 전과 비교하면
새 사무실은 그야말로 냉장고였습니다!!

이사를 하고 나서 생긴 몇 가지 변화들 가운데 눈에 ‘확’ 띄는 점이 두 개 있는데,
바로 회의실과 책들에게 생긴 새로운 보금자리입니다.

사용자 삽입 이미지
   회의실
사용자 삽입 이미지
          책장 1

작지만 분위기와 정감이 넘치는 사무실은 좋았지만, 항상 아쉬웠던 것이 바로 회의실이었습니다.
개방된 공간에서 손님을 맞으려니 사소한 것들 하나하나가 '신경써야 할 점'이 되었습니다.ㅠ_ㅠ

새 사무실에 있는 큰 방을 회의실로 삼고, 널찍한 회의실용 탁자도 장만했지요.
(인사이트의 재산 목록이 점점 늘어나네요^^)

회의실 덕분에 손님들과도 편한 공간에서 이야기를 나누고, 예전보다 농도 짙은(!) 회의도
할 수 있겠네요. ^^

그리고 인사이트에 책 이야기가 빠질 수 없습니다.
이삿날, 이사 전문가들이 혀를 내두를 정도로 끊임없이 책이 쏟아져 나왔고,
인사이트 식구들도 보물찾기 하듯 나오는 책들을 보며 여기가 출판사라는 사실을 새삼 실감했답니다. ^^;;

그 책들을 새 사무실에 때깔 좋게 마련된 책장(디자인 만족! 색상 만족!)에
일목요연하게 꽂았을 때는 뿌듯함이 방울방울~

사용자 삽입 이미지

사용자 삽입 이미지

구석구석 숨어 있던 책들을 밝은 곳(?)으로 꺼내 쾌적한 보금자리를 마련해줬다는 것에
모두 보람을 느꼈습니다.

서늘한 바람, 넓은 공간, 잘 정돈된 책장까지-
아직 새로 이사한 티를 벗지 못해 곳곳에 허한 부분이 남아 있긴 하지만
지금까지 접한 새 사무실 환경은 ‘불만 제로’입니다! (현재는 ^^)

이제 사무실 정리도 다 되어 가고 새로운 환경에 둘러싸이니 마음도 새로워지는 것 같습니다.
새 장소에서 새 출발하는 기분으로
앞으로도 좋은 책을 만들기 위해 노력하는 인사이트가 되겠습니다. ^^



이올린에 북마크하기(0) 이올린에 추천하기(0)