Erlang이란 무엇인가
Erlang은 1986년 스웨덴 통신회사 에릭슨에서 개발한 함수형 프로그래밍 언어입니다. 40년간 분산 시스템을 연구해온 저로서는 Erlang이 동시성과 내결함성 측면에서 가장 독보적인 언어라고 단언합니다. 전화 교환기 소프트웨어를 위해 설계되었으며, '99.9999999%' 가용성(연간 다운타임 31밀리초)을 달성한 시스템에서 검증되었습니다. WhatsApp, Discord, RabbitMQ 같은 대규모 메시징 시스템의 핵심에 Erlang이 있습니다.
Erlang의 핵심 특징
Erlang의 동시성 모델은 액터(Actor) 모델을 기반으로 합니다. 각 프로세스는 독립적이고, 메시지 전달로만 통신합니다. 공유 상태가 없으므로 락이나 데드락 걱정이 없습니다. Erlang 프로세스는 OS 프로세스가 아니라 매우 가벼운 그린 스레드로, 수백만 개를 동시에 실행할 수 있습니다. 'Let it crash' 철학은 방어적 프로그래밍 대신 실패를 수용하고 빠르게 복구하는 접근법입니다. 슈퍼바이저 트리가 자동으로 죽은 프로세스를 재시작합니다.
OTP 프레임워크
OTP(Open Telecom Platform)는 Erlang의 표준 라이브러리이자 설계 패턴 모음입니다. GenServer, GenStatem, Supervisor 같은 행위(behavior)를 제공하여 일반적인 패턴을 쉽게 구현할 수 있게 합니다. 핫 코드 스왑 기능으로 시스템을 멈추지 않고 코드를 업그레이드할 수 있습니다. 이것이 통신 시스템에서 무중단 운영을 가능하게 합니다. ETS와 DETS는 고성능 인메모리/디스크 테이블을 제공합니다.
BEAM 가상 머신
BEAM은 Erlang 코드가 실행되는 가상 머신입니다. 스케줄러가 프로세스를 공정하게 시분할하여 하나의 프로세스가 시스템을 독점할 수 없습니다. Reduction 카운팅으로 선점형 스케줄링을 구현합니다. 분산 기능이 내장되어 여러 노드가 투명하게 통신할 수 있습니다. 이러한 VM 수준의 지원이 Erlang의 신뢰성을 뒷받침합니다.
Erlang과 Elixir
Erlang의 문법이 익숙하지 않다면 Elixir를 고려해보세요. Elixir는 BEAM 위에서 실행되는 현대적 언어로, Ruby에서 영감을 받은 문법과 강력한 메타프로그래밍 기능을 제공합니다. Phoenix 프레임워크로 웹 개발도 쉽습니다. 하지만 Erlang 자체를 이해하면 OTP를 더 깊이 활용할 수 있습니다. 'Programming Erlang'(조 암스트롱)과 'Learn You Some Erlang'은 훌륭한 학습 자료입니다.
댓글
0