해결책
통신 장비는 업그레이드 중에도 수년간 멈추지 않고 작동해야 합니다. 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이 회사에서 가장 성공적인 신제품 중 하나가 되었고, 논문은 이를 에릭슨이 만든 가장 신뢰할 수 있는 제품 중 하나로 기록했습니다.
근거 확인하기
출처
- Making Reliable Distributed Systems in the Presence of Software Errors (PhD thesis) Royal Institute of Technology, via erlang.org · erlang.org
- A History of Erlang (HOPL III) ACM SIGPLAN, mirror at labouseur.com · labouseur.com
- A (Very) Brief History of Erlang Vonage Developer Blog · developer.vonage.com ·