Lobsters

Deterministic Concurrency

결정적 동시성

UC Berkeley의 Edward Lee가 동시성과 비결정성을 구분하고, 결정성을 물리 시스템이 아닌 모델의 속성으로 보자고 제안합니다. 결정적 모델이 성능을 반드시 떨어뜨리지 않으며, 동시·분산 시스템의 설계와 장애 허용을 쉽게 할 수 있다는 주장을 소개합니다.

AI 요약

동시성은 흔히 비결정성과 함께 다뤄지지만, Edward Lee는 두 개념을 분리해서 봐야 한다고 주장합니다. 같은 입력에도 출력 시점이 달라지는 일이 흔하지만, 실시간 시스템이 아니라면 출력 시점을 프로그램 동작의 차이로 보지 않는 경우가 많습니다. Lee는 결정성을 실제 물리 시스템이 아니라 시스템을 표현하는 모델의 속성으로 해석하자고 제안합니다.

결정적 모델의 효용

발표 설명에 따르면 Lee는 결정적 모델이 동시·분산 소프트웨어에서 큰 가치를 지닌다고 주장합니다. 결정성을 확보해도 성능 저하가 필연적으로 따르지 않으며, 장애 허용 시스템을 설계하기도 더 쉬워진다고 설명합니다. 발표는 기본적인 reactor 프로그래밍 모델을 소개하고, metric space를 이용한 논의로 이어집니다.

Lobsters 반응

  • @ahelwer — 기존에 다뤄 본 분산·동시 시스템은 모두 비결정적이었고, 추론에 쓰는 모델도 비결정적이었습니다. TLA+에서 비결정성은 핵심입니다. Edward Lee가 현실의 분산·동시 시스템도 결정적으로 만들 수 있다고 주장하는 점이 흥미롭습니다. TigerBeetle DB가 동적 메모리 할당을 하지 않는다는 점도 떠오릅니다. 처음에는 동적 할당을 금지하면 기능을 크게 포기한다고 생각하지만, Joran Dirk Greef가 BugBash 팟캐스트에서 설명한 이야기를 들으면 오히려 새로운 가능성이 보입니다. 여기서 결정성이 주는 매력도 비슷합니다. 발표에서 동시 actor가 서로 상호작용하는 방식은 제가 알던 분산 시스템 개념과 전혀 다른 언어처럼 느껴집니다. 임베디드·저수준·신호 처리 배경에서 나온 접근 같습니다. 무한 신호를 생각하는 방식은 TLA+의 무한 행동을 떠올리는 것과 아주 동떨어져 있지는 않습니다.
    • 발표는 기본 reactor 모델을 소개한 뒤 metric space에 관한 내용을 다루는데, 정리가 실제 reactor 시스템을 만들 때 얼마나 쓸모 있는지 궁금합니다. TLA+ 교육 경험을 보면 간단한 수학적 성질도 도입을 가로막는 큰 개념적 장벽이 되곤 합니다. reactor 프로그램이 런타임에서 어떻게 구현되는지는 발표에서 자세히 다루지 않습니다. 질문에 답하면서 발표자가 관련 논문을 언급하지만, 어느 논문인지는 분명하지 않습니다. 분산 시스템에서는 Google Spanner와 비슷한 하드웨어 시계가 reactor 동작에 필요한 것처럼 들렸습니다. 그렇지 않기를 바라지만, 어차피 그런 분산 시스템 방식도 살펴보려던 참이라 배울 점이 생겼습니다. 결정적 하이퍼바이저가 디스크와 네트워크 같은 비결정적 외부 요소와 상호작용하는 방식을 reactor 모델로 이해할 수 있을지도 궁금합니다. 발표의 Reflex 프로그램 예제와 비슷해 보이지만 아직 풀리지 않은 문제입니다. 네트워크 지연을 이분법적인 네트워크 분할 대신 연속적으로 다루는 CAL 정리도 흥미롭습니다. 발표자의 교재를 읽고 블로그 글도 써 볼 생각입니다.

원문: Lobsters / 번역·요약: Trawling