← 프리뷰 목록으로

분산 시스템의 진화 추적: 2023년 회고

게시일: 2025년 11월 22일 | 원문 작성일: 2024년 1월 4일 | 저자: Martin Kleppmann | 원문 보기

핵심 요약

분산 시스템 분야의 핵심 연구자 Martin Kleppmann이 2023년을 되돌아보며, 연구 성과와 더불어 “로컬 우선 소프트웨어” 개념이 틈새 학술 용어에서 주류 기술 운동으로 성장한 과정을 공유해요.

주요 내용:

  • 커리어 전환: 케임브리지 대학교 정년 보장 부교수직으로 이동하며 파트타임 근무를 선택해 연구와 육아의 균형을 추구
  • 연구 성과: 프라이버시 보호 사용자 발견(Pudding), 협업 텍스트 편집 알고리즘, 실시간-버전관리 통합(Upwelling) 등 발표
  • Automerge 2.0: Rust 재구현으로 성능을 10배 가까이 개선하고 크로스 플랫폼 지원 강화
  • 로컬 우선 운동: 2019년 에세이에서 시작된 개념이 2023년에 1,600명 이상의 Discord 커뮤니티, 수십 개의 스타트업, WIRED 특집 기사로 발전
  • DDIA의 지속적 영향: 2017년 출판된 “Designing Data-Intensive Applications”가 23만 부 이상 판매되며 원리 중심 접근법의 가치 입증

전문직 전환과 학술적 헌신

2023년의 가장 큰 변화는 케임브리지 대학교 정년 보장 부교수직으로의 전환이었어요(2024년 1월부터). TU 뮌헨의 기간제 연구직에서 이곳으로 옮긴 건 단순한 지리적 이동이 아니었죠. 장기적인 학술 연구에 뿌리를 내리겠다는 근본적인 결단이었어요. 파트타임(65% 근무)으로 협상한 것도 의미가 있었어요. 연구 야망과 육아 사이에서 현실적인 균형점을 찾은 거예요. 무한 생산성을 추구하기보다 지속 가능한 지적 작업을 택한 거죠.

물론 대가가 있었어요. 이전 직책에는 박사과정생과 박사후연구원 여러 명을 지원하는 연구비가 딸려 있었는데, 이 자금은 새 역할로 넘어오지 않았어요. 더 작은 연구 예산과 축소된 팀 규모가 영구직과 유연성의 교환 조건이었죠. 하지만 이런 제약이 오히려 생산적일 수 있어요. 더 적은 연구원과 밀도 높게 협업하면, 큰 그룹을 관리할 때보다 지적으로 더 깊이 파고들 수 있거든요.

기술적 성과: 연구에서 구현까지

Pudding: 프라이버시 보호 사용자 발견

Pudding 프로젝트는 익명 네트워크의 근본적인 딜레마를 다뤘어요. 프라이버시를 깨지 않으면서 사용자들이 서로를 어떻게 찾게 할 것인가? 이 연구는 2024년 5월 IEEE 보안 및 프라이버시 심포지엄에 채택됐는데요, 이론적 암호학과 실용적 시스템 설계가 만나는 지점을 보여줘요. 익명 네트워크는 감시로부터 사용자를 보호하지만, 사용성이 떨어지는 문제가 있거든요. 소셜 그래프를 노출하지 않으면서 단순히 연락처 목록을 검색하는 것조차 불가능하니까요.

Pudding의 핵심은 프라이버시 속성을 유지하면서도 사용자 발견을 가능하게 하는 프로토콜이에요. 최고 수준의 보안 학회에서 채택된 건 이 접근법이 기술적으로 엄격하면서도 실용적이라는 증거죠. 분산 시스템 연구가 이론적 견고함과 실제 배포 가능성 사이에서 어떻게 균형을 잡아야 하는지 잘 보여주는 사례예요.

협업 텍스트 편집: 푸가의 예술

”푸가의 예술: 협업 텍스트 편집에서 인터리빙 최소화”는 미묘하지만 중요한 문제를 다뤄요. 여러 사용자가 오프라인에서 같은 문서를 편집할 때, 나중에 동기화되면 동시 삽입을 어떻게 정렬해야 할까요? 문자 단위로 편집을 섞는 단순한 방식은 망가진 텍스트를 만들어요. 사용자 A가 “hello”를 입력하고 사용자 B가 동시에 같은 위치에 “world”를 입력하면, 문자 단위 섞기는 “hweolrllod” 같은 결과를 낼 수 있거든요. 두 편집 모두 보존되긴 하지만 읽을 수가 없죠.

이 논문이 내놓은 알고리즘은 여러 문자로 된 삽입 그룹을 감지하고 보존해요. 상대적 순서를 정해야 할 때도 “hello”와 “world”가 온전한 단어로 유지되도록요. 푸가라는 음악적 제목이 딱 맞아요. 동시 편집을 독립적인 멜로디 라인(성부)으로 취급해서 일관된 방식으로 엮어낸다는 알고리즘의 본질을 담았거든요. 음악이 아닌 텍스트를 위한 푸가인 셈이죠.

이 작업이 중요한 이유는 협업 편집이 점점 더 오프라인 가능 앱에서 일어나고 있기 때문이에요. 소프트웨어가 서버 의존에서 로컬 우선 아키텍처로 옮겨가면서, 충돌 해결 알고리즘은 더 이상 틈새 학술 주제가 아니라 기본 인프라가 되고 있어요.

Upwelling: 실시간 협업과 버전 관리의 통합

Ink & Switch 동료들과 개발한 Upwelling 프로토타입은 하이브리드 협업 모델을 탐구해요. 지금 도구들은 보통 선택을 강요하거든요. 실시간 협업 편집(Google Docs 같은) 아니면 버전 관리 시스템(Git 같은). 실시간 편집은 동시 작업에 뛰어나지만 명시적 버전 관리, 포킹, 병합이 없어요. 버전 관리는 그런 기능을 제공하지만 수동 충돌 해결이 필요하고 유연한 실시간 협업을 지원하지 못해요.

Upwelling은 이 두 패러다임을 통합할 수 있을지 탐색해요. Git 같은 버전 기록, 브랜치, 병합을 유지하면서도 Google Docs 스타일의 실시간 편집을 가능하게 하는 거죠. 이런 통합이 다루는 건 실제로 존재하는 간극이에요. 긴 글을 함께 쓰는 작가들은 즉흥적인 공동 편집과 신중한 버전 관리 둘 다 필요하거든요. 학술 논문, 책, 복잡한 문서는 버전 관리의 명시성으로 이득을 보지만, 활발하게 협업할 때는 그 마찰 때문에 힘들어해요.

아직 프로토타입이긴 하지만, Upwelling은 중요한 설계 영역을 탐색하고 있어요. CRDT(무충돌 복제 데이터 타입)가 성숙해지면서 질문이 바뀌고 있거든요. “올바른 협업 시스템을 만들 수 있나?”에서 “어떤 협업 모델을 만들어야 하나?”로요.

학생 연구 기여

두 명의 석사 학생이 JSON CRDT를 확장하는 연구에 기여했어요:

이동 작업: 기존 CRDT는 삽입과 삭제를 잘 처리하지만 요소 이동에는 어려움을 겪어요. 목록 항목을 재정렬하거나 JSON 문서를 재구조화할 때, 단순한 방식은 이걸 삭제 후 삽입으로 기록해서 의미를 잃고 불필요한 충돌을 만들어요. 이동 작업을 일급 기능으로 지원하면 더 직관적인 충돌 해결이 가능하고 사용자 의도가 보존돼요.

실행 취소 및 재실행: 협업 환경에서 실행 취소/재실행을 구현하는 건 놀랍도록 복잡해요. 사용자 A가 편집을 취소하는 동안 사용자 B가 동시에 관련 변경을 하면 어떻게 돼야 할까요? 실행 취소가 로컬(자기 편집에만 영향)이어야 하나, 아니면 전역(문서 상태 되돌리기)이어야 하나? 이 연구는 이런 설계 선택과 사용자 경험에 미치는 영향을 탐구해요.

이런 프로젝트들은 CRDT 연구가 어떻게 성숙했는지 보여줘요. 기초적인 정확성 속성 증명에서 실용적인 사용자 기능 다루기로요. 분야 전체가 “이게 이론적으로 작동할 수 있나?”에서 “실제로 어떻게 작동해야 하나?”로 옮겨가고 있어요.

Automerge: 오픈 소스 성숙화

Automerge 프로젝트는 2023년에 중요한 이정표를 찍었어요. 연구 프로토타입에서 프로덕션 준비 인프라로 가는 길을 보여준 거죠.

버전 2.0: Rust 재작성

Automerge 2.0 릴리스의 중심은 완전히 새로운 Rust 재구현이었어요. 원래 JavaScript 구현이 CRDT 알고리즘을 검증했지만, 본격적인 채택에는 Rust가 필요했죠. 성능과 크로스 플랫폼 컴파일 때문이에요. 새 핵심은 WebAssembly(브라우저용), 네이티브 C 라이브러리(기존 시스템 통합용), Go, Swift, Java 바인딩으로 컴파일돼요.

이런 아키텍처 선택은 분산 시스템 인프라의 일반적인 패턴이에요. 빠른 반복을 위해 고수준 언어로 프로토타입을 만들고, 프로덕션 배포를 위해 시스템 언어로 성능 중요 부분을 재작성하는 거죠. Rust 구현은 알고리즘 정확성 보장을 유지하면서도 성능을 10배 가까이 개선했어요.

Automerge-Repo: 통합 스토리지 및 네트워킹

핵심 CRDT 라이브러리 외에도 Automerge-Repo는 통합 스토리지와 네트워크 동기화를 제공해요. 이게 다루는 건 흔한 문제예요. CRDT 알고리즘은 동시 편집을 제대로 처리하지만, 애플리케이션은 지속성, 네트워크 프로토콜, 피어 발견도 필요하거든요. Automerge-Repo는 이런 기능을 묶어서 제공해서, 로컬 우선 앱 만들기가 “복잡한 분산 시스템 인프라 구현”에서 “라이브러리 통합”으로 바뀌었어요.

이렇게 바로 쓸 수 있는 통합 도구에 집중하는 건 성숙의 징표예요. 초기 연구는 알고리즘의 참신함을 우선하죠. 프로덕션 준비 시스템은 개발자 경험과 운영 안정성을 우선해요.

Bluesky: 탈중앙화 소셜 네트워크

Bluesky 팀에 아키텍처와 확장성을 조언하면서 분산 시스템 원리를 대규모 소셜 네트워킹에 적용할 기회가 생겼어요. Bluesky는 AT 프로토콜로 중앙집중식 소셜 플랫폼의 탈중앙화 대안을 만드는 걸 목표로 해요. 연합을 가능하게 하면서도 전통 시스템에 견줄 만한 성능과 사용자 경험을 유지하려고요.

핵심 과제는 탈중앙화와 사용성을 조화시키는 거예요. 완전 탈중앙화 시스템은 흔히 성능과 일관성을 포기하죠. 중앙집중식 시스템은 사용자 제어와 플랫폼 독립성을 포기해요. Bluesky 아키텍처는 중간 길을 찾아요. 합의 없이 검증이 가능한 인증 데이터 구조와, 호스팅을 신원에서 분리하는 콘텐츠 주소 지정 스토리지로요.

2023년까지 Bluesky는 비공개 베타에서 사용자 300만 명에 도달했어요. 실제 확장 문제가 드러나기에 충분한 규모죠. 이 성장 단계에서 조언한다는 건 이론 프로토콜뿐 아니라 운영 이슈를 다룬다는 뜻이었어요. 탈중앙화 속성을 유지하면서 매일 수백만 게시물을 어떻게 처리하나? 중앙집중식 게이트키퍼 없이 콘텐츠 중재를 어떻게 구현하나?

이런 참여가 보여주는 건 학술 연구자와 프로덕션 시스템이 만날 때의 가치예요. 이론 작업은 실제 제약에서 배우고, 프로덕션 시스템은 원칙적 설계에서 배워요.

로컬 우선 운동: 개념에서 생태계로

아마 2023년의 가장 중요한 발전은 “로컬 우선 소프트웨어” 개념이 폭발적으로 성장한 거예요. 2019년 에세이에서 만든 이 용어는 몇 년간 분산 시스템 연구자들 사이의 틈새 용어로 머물렀어요. 2023년에 이르러서는 주류 인식과 스타트업 생태계 채택을 이뤄냈죠.

미디어 커버리지와 커뮤니티 성장

WIRED가 일반 기술 독자에게 로컬 우선 원리를 설명하는 특집 기사를 실었어요. 커뮤니티 Discord 서버는 1,600명 이상으로 성장했고요. 로컬 우선 앱 만들기에 관심 있는 개발자, 디자이너, 기업가들이죠. 이건 단순한 인식이 아니라 적극적인 참여예요. 사람들이 제품을 만들고, 패턴을 공유하고, 로컬 우선이 실제로 뭘 의미하는지 함께 정의하고 있어요.

이런 커뮤니티 형성은 중요한 전환점이에요. 실무자가 채택하고 적용하기 전까지 개념은 학술적 호기심에 머물거든요. Discord 커뮤니티는 연구 통찰을 구현 패턴으로 번역하고, 통합 문제를 디버깅하고, 프로덕션 경험을 공유하는 곳이 됐어요.

스타트업 생태계 등장

수십 개의 스타트업이 명시적으로 로컬 우선 소프트웨어를 만든다고 자신을 포지셔닝했어요. 이 용어 채택이 중요한 이유는 공유된 가정과 설계 원칙을 드러내기 때문이에요. 회사가 자신을 “로컬 우선”이라 부를 때는 특정 아키텍처 선택에 헌신하는 거예요. 오프라인 우선 기능, 사용자 데이터 소유권, 피어 투 피어 동기화, CRDT 같은 데이터 구조 말이죠.

이런 생태계 등장은 네트워크 효과를 만들어요. 더 많은 회사가 채택할수록 Automerge 같은 공유 도구가 더 가치 있어지죠. 한 스타트업이 개발한 설계 패턴이 다른 스타트업에도 도움이 돼요. 인재는 독점 스택에 갇히기보다 로컬 우선 회사 전반에 걸쳐 전이 가능한 전문성을 키워요.

컨퍼런스 발표 및 학술 채택

여러 컨퍼런스 발표가 로컬 우선 개념을 더 넓은 청중에게 퍼뜨렸어요. 원래 2019년 에세이의 학술 인용 수는 약 100개에 달했어요. 비전통적 출판 장소치고는 상당한 수죠. 컴퓨터 과학 교육에서 로컬 우선 원리를 거의 안 가르치는 이유는 아직 최근 연구이기 때문이에요. 하지만 이 늘어나는 인용 수는 앞으로 10년 안에 대학원 커리큘럼에 통합될 거라고 시사해요.

Designing Data-Intensive Applications: 지속적 영향

2017년에 나온 “Designing Data-Intensive Applications”는 2023년까지 23만 부 이상 팔리며 강력한 상업적 성과를 이어갔어요. 기술 서적이 출판 6년 후에도 판매 모멘텀을 유지한다는 건 이례적인 수명이에요. 대부분 기술 책은 기술이 발전하면서 2-3년 내에 구식이 되거든요.

이 지속성은 특정 기술보다 원리에 집중한 데서 나와요. 이 책은 특정 데이터베이스나 프레임워크를 넘어서는 근본 개념(복제, 파티셔닝, 트랜잭션, 합의)을 강조해요. 특정 제품은 빠르게 바뀌지만 기본 트레이드오프와 설계 패턴은 놀랍도록 안정적으로 유지돼요.

2판 진행 상황

2판 작업을 신중하게 진행한 지 몇 년이 지났지만 세 개 장만 완성됐어요. 이 느린 속도는 의식적 선택이에요. 출판 마감을 맞추기보다 품질과 철저함을 우선하는 거죠. 분산 시스템 환경은 2017년 이후 진화했어요. 클라우드 네이티브 아키텍처, Kubernetes, 서버리스 컴퓨팅, 현대 CRDT 구현은 신중한 접근이 필요한 진짜 새로운 주제예요.

하지만 1판의 성공이 서두를 압력을 줄여줘요. 기존 책이 독자들에게 여전히 유용하니까요. 2판은 점진적 업데이트가 아니라 상당한 개선이어야 해요.

기술적 진화에 대한 성찰 (2017-2023)

이 회고에서는 1판 개발 중 분산 시스템 기술이 어떻게 변모했는지 되짚어봤어요:

클라우드 아키텍처 성숙: 클라우드 서비스는 틈새 영역에서 지배적인 배포 모델로 발전했어요. “클라우드 네이티브” 아키텍처는 10년이 지났는데도 기업 워크로드의 25% 미만만 마이그레이션했지만, 뚜렷한 패러다임으로 자리 잡았죠.

NoSQL의 유행어로서 쇠퇴: “NoSQL”이 2010년대 초반 논의를 지배했지만, 2023년엔 용어가 거의 사라졌어요. 시스템이 실패해서가 아니에요—많은 게 상업적으로 성공했죠—그들의 아이디어가 주류 데이터베이스에 흡수됐기 때문이에요. PostgreSQL은 JSON 지원을 추가했고, 분산 SQL 데이터베이스가 등장했어요. 날카롭던 NoSQL 대 SQL 이분법은 녹아내렸죠.

MapReduce의 쇠퇴: Hadoop과 MapReduce는 한때 빅 데이터 처리와 동의어였지만 클라우드 데이터 웨어하우스(Snowflake, BigQuery), 데이터 레이크, Spark 같은 현대 처리 프레임워크로 대체됐어요. 추상화는 중요했지만 특정 구현은 레거시 기술이 됐죠.

GDPR의 아키텍처 영향: 2018년 일반 데이터 보호 규정은 데이터 보존, 삭제, 사용자 제어에 대한 근본적인 재고를 강요했어요. “모든 걸 수집하고, 아무것도 삭제하지 않는다”를 중심으로 설계된 시스템은 사용자 데이터 삭제, 이식성, 동의 관리를 지원하려고 아키텍처 점검이 필요했죠.

이런 변화는 분산 시스템이 기술적으로만 진화하는 게 아니라 제도적, 규제적으로도 진화한다는 걸 보여줘요. 순수한 기술적 장점이 채택을 결정하지 않아요. 경제 모델, 규제 프레임워크, 생태계 효과가 어떤 기술이 우세한지 만들어요.

철학적 성찰: 연구 속도와 삶의 균형

육아하면서 파트타임으로 학술 작업을 하기로 한 결정은 지적 작업의 템포에 대한 더 깊은 질문을 던져요. 학술 연구 문화는 흔히 끝없는 생산성을 숭배하죠. 출판물, 연구비, 인용 수, 대학원생. 이 모델은 연구를 균형 잡힌 삶의 한 부분이 아니라 모든 걸 삼키는 소명으로 가정해요.

대안 모델은 지속 가능한 참여를 우선해요. 더 적지만 더 높은 품질의 논문, 더 적은 학생들에 대한 더 깊은 멘토링, 삶의 다른 영역들과 연구를 통합하기. 이 접근법은 더 적은 결과물을 낼 수 있지만, 잠재적으로 더 사려 깊고 지속 가능한 기여를 해요.

2판의 느린 진행이 이 철학을 보여줘요. 출판을 서두르면 상업적 기대는 충족시키지만, 책의 핵심 특징인 복잡한 개념에 대한 신중하고 철저한 설명을 해칠 수 있어요. 빠르고 대충 하는 것보다 늦더라도 제대로 출판하는 게 나아요.

로컬 우선 정의 재검토

이 글에서는 원래 로컬 우선 에세이의 “7가지 이상”이 명확한 정의를 구성하지 않는다고 인정했어요. 그 이상은 로컬 우선 소프트웨어가 줄 수 있는 최종 사용자 이익을 설명하지만, “로컬 우선”이 아키텍처적으로 정확히 뭘 의미하는지는 정의하지 않아요. 이 정의의 모호함은 양날의 검으로 드러났어요. 다양한 구현을 허용하지만, 뭐가 로컬 우선으로 자격이 있는지 혼란을 만들죠.

새로운 정의안은 가용성에 집중해요. “로컬 우선 소프트웨어에서 다른 컴퓨터의 가용성이 작업을 방해해서는 안 된다.” 이게 핵심 아키텍처 약속을 강조해요. 서버 의존 기능이 아니라 기회주의적 동기화를 가진 로컬 실행과 데이터 지속성이요.

이 정의는 특정 기술 구현보다 사용자 자율성과 소프트웨어 신뢰성을 우선해요. CRDT, 작업 변환, 다른 동기화 메커니즘 중 뭘 쓰는지는 근본적인 보장보다 덜 중요해요. 소프트웨어는 오프라인에서 작동하고, 가능할 때 동기화하고, 핵심 기능에서 서버 가용성에 의존하지 않아요.

결론: 연구에서 운동으로

2023년 회고는 독특한 순간을 담아요. 연구 개념이 실용적 운동으로 바뀌는 순간이요. 로컬 우선 소프트웨어는 분산 시스템 속성에 대한 이론적 탐구로 시작했어요. 2023년까지 설계 철학, 스타트업 생태계, 실천 커뮤니티로 진화했죠.

이런 변모에는 기술 검증뿐 아니라 생태계 구축이 필요했어요. 오픈 소스 도구, 문서, 예제 앱, 공유된 용어 말이죠. 연구 기여도 중요하지만, 커뮤니티 촉진, 멘토링, 학술 통찰을 실무자 언어로 번역하는 덜 주목받는 작업도 중요해요.

계속되는 과제는 로컬 우선이 확장되면서 개념적 일관성을 유지하는 거예요. 수십 개 스타트업이 이 레이블을 채택할 때, 용어가 의미 있는 아키텍처 약속이 아니라 희석된 마케팅 용어가 될 위험이 있어요. 로컬 우선을 실질적인 설계 철학으로 보존하면서 광범위한 채택을 환영하려면 지속적인 정의 작업과 원칙적 적용이 필요해요.

이 이야기의 다음 장은 로컬 우선이 지속적인 패러다임 전환이 될지 일시적 유행어가 될지 밝혀줄 거예요. 기술적 기초는 견고해 보이고, 커뮤니티는 참여하고 있으며, 근본적인 사용자 요구(자율성, 신뢰성, 소유권)는 사라지지 않아요. 2019년의 사변적 에세이에서 2023년 번성하는 생태계로의 진화는 일시적 하이프가 아닌 진짜 모멘텀을 보여줘요.

저자 소개: Martin Kleppmann은 케임브리지 대학교의 부교수이자 Automerge의 주요 기여자로, 분산 시스템과 로컬 우선 소프트웨어 연구의 선두 주자입니다. “Designing Data-Intensive Applications” 저자로도 널리 알려져 있습니다.

원문: 2023 Year in Review - Martin Kleppmann (2024년 1월 4일)

생성: Claude (Anthropic)

총괄: (디노이저denoiser)