통신 장비는 업그레이드 중에도 수년간 멈추지 않고 작동해야 합니다. 1986년 에릭슨의 조 암스트롱과 동료들은 그러한 세계를 위한 언어를 만들기 시작했습니다. 바로 얼랭으로, 공유 메모리와 스레드 대신 경량 프로세스, 메시지 전달, 핫 코드 교체를 갖추고 있습니다.

대표적인 증거는 1998년에 발표된 AXD301 ATM 스위치였습니다. 이 스위치는 이중화된 하드웨어에서 분산 얼랭을 실행하며, 10에서 160 Gbit/s까지 확장되고, 트래픽을 중단하지 않고 하드웨어와 소프트웨어를 변경할 수 있도록 설계되었습니다. 2001년 기준으로 2,248개 모듈에 113만 줄의 얼랭 코드를 담고 있었으며, 관측된 나인나인 신뢰성인 99.9999999%를 달성했습니다.

얼랭의 "그냥 죽게 놔두기" 철학, 즉 실패한 프로세스를 재시작하는 슈퍼바이저 트리는 생산성 측면에서도 성과였습니다. HOPL 역사 기록에 따르면 이 프로젝트에서 개발자 생산성이 4배 증가했습니다. AXD301이 출시된 같은 해에 얼랭은 에릭슨의 신제품에 사용이 금지되었고, 대신 1998년 12월에 오픈 소스로 공개되었습니다.

작은 프로세스는 죽게 놔두고, 슈퍼바이저가 재시작한다

프로세스 격리는 하나의 실패가 시스템 전체를 무너뜨리지 않게 한다

슈퍼바이저가 실패를 자동으로 재시작하며, 사람이 개입할 필요가 없다

핫 코드 업그레이드로 다운타임이 배포 제약에서 사라진다

작은 프로세스 모델은 수천 건의 동시 통화를 저렴하게 처리하는 데 적합하다

결코 멈춰서는 안 되는 시스템이라면 오류 전략을 뒤집어야 합니다. 실패를 예상하고, 작은 프로세스로 격리하며, 복구를 자동화하여 시스템이 완벽하기보다는 살아남도록 설계해야 합니다.

1998년 얼랭을 오픈 소스로 공개한 것은 얼랭을 에릭슨 훨씬 너머로 퍼뜨렸습니다. 같은 모델이 이제 RabbitMQ, 메타의 WhatsApp, Elixir/Discord 시스템을 운영합니다. 에릭슨 내부에서는 AXD301이 회사에서 가장 성공적인 신제품 중 하나가 되었고, 논문은 이를 에릭슨이 만든 가장 신뢰할 수 있는 제품 중 하나로 기록했습니다.

근거 확인하기

출처

  1. Making Reliable Distributed Systems in the Presence of Software Errors (PhD thesis) Royal Institute of Technology, via erlang.org · erlang.org
  2. A History of Erlang (HOPL III) ACM SIGPLAN, mirror at labouseur.com · labouseur.com
  3. A (Very) Brief History of Erlang Vonage Developer Blog · developer.vonage.com ·