<PonsLink/>
작업
글
주제
시리즈
카테고리
연락
⌘K 검색
About
코드와 제품으로

코드와 제품으로

연결되는 세계

연결되는 세계

PonsLink는 만남 뒤 요청을 세션으로 잇고, PonsWarp는 서버 보관 없이 파일을 직접 전송합니다. 이 블로그는 기능 소개보다 설계 판단과 운영 증거를 남깁니다.

연락처

[email protected]github.com/DeclanJeon

운영

콘텐츠는 WordPress headless CMS, 공개 UI는 Next.js입니다.

초안 미리보기
© 2026 PonsLink Blog|Next.js · WordPress REST · Framer Motion
Local-first · Backup-before-deploy

동기화는 P2P의 영원한 숙제다: 매트릭스 Synapse 1.159 해설

PonsLink Automation·2026년 8월 28일

  • P2P/분산기술

매트릭스가 Synapse 1.159.0rc1을 내놓았다. MSC4429 레거시 동기화 프로필 업데이트와 PostgreSQL 잠금 타임아웃 조정은 분산 실시간 네트워크가 오래된 길(legacy path)을 놓지 못하는 이유를 다시 보여준다. P2P 입장에서 동기화와 상태 전파를 읽는다.

매트릭스 재단이 2026년 8월 14일 주간 소식에서 Synapse v1.159.0rc1 릴리스 후보를 공개했다고 밝혔다. 가장 눈에 띄는 변경은 MSC4429, 줄여서 레거시 동기화용 프로필 업데이트 지원이다. 여기서 레거시 동기화란 지금까지 매트릭스 클라이언트가 쓰던 /sync 방식이다. 이름 그대로 옛날 방식의 /sync에 사용자 프로필 업데이트를 실어 보내는 기능인데, 기본값은 비활성이고 include_profile_updates_in_sync 설정으로 켠다. Element Web 야간 빌드에서는 개발자 모드 아래 ‘User Status’ 랩스 플래그로 실험할 수 있고, /status <emoji> <text> 같은 명령도 붙는다고 한다. 이 작업은 앞으로 Sliding Sync 지원과 연합 전파까지 이어질 예정이라니, 단순 릴리스 후보 이상으로 읽힌다. 출처는 Matrix 블로그의 이번 주 소식이다.
매트릭스는 여러 서버가 서로 연결되는 연합(federation) 구조의 분산 채팅이다. 그런데 클라이언트가 서버에서 최신 상태를 받는 동기화 경로는 사실상 집중형이다. 집중형이 아니어도, 모든 참여자가 같은 방 상태에서 뭘 빠뜨렸는지 계속 맞춰야 한다는 점은 P2P와 같다. MSC4429가 레거시 sync에 프로필 업데이트를 얹는 건, 수많은 기존 클라이언트가 아직 옛 동기화 API에 붙어 있기 때문이다. 새로운 Sliding Sync로만 가면 낡은 구현들이 버려질 수 있지만, 실제 메신저 생태계는 점진적 전환을 강요받는다. 우리 PonsLink도 초기 MVP에서 동기화 경로를 잘못 고르면 나중에 바꾸기 어렵다는 걸 뼈저리게 배웠다. 프로토콜 세대교체는 기술 설계보다 채택 곡선의 문제라는 뜻이다.
이번 릴리스 후보에는 워커 복제(worker replication) 수정 몇 건과, PostgreSQL 연결에 idle_in_transaction_session_timeout 30분을 새로 적용하는 변경이 있다. 한 줄로 보면 트랜잭션을 연 채 놓아둔 연결이 락을 잡고 vacuum을 막는 사고를 차단하는 거다. 분산 시스템에서 단일 홈서버의 DB 세션 누수는 곧 연합 전체로 퍼지는 지연이 된다. 매트릭스 홈서버가 처리해야 하는 상태는 방 이벤트, 프로필, 출력 큐로 나뉘는데, 어느 하나라도 정합성을 놓치면 다른 서버와의 프로토콜 대화가 어긋난다. 그래서 워커 복제 수정과 DB 타임아웃은 메타 관심사처럼 보여도 실시간 네트워크의 뼈대다. 실제로 분산 시스템 운영에서 가장 위험한 건 ‘조용히 죽는’ 상태이지, 명시적으로 터지는 에러가 아니다.
다음 변곡점은 두 가지다. 하나는 MSC4429가 언제 기본값 비활성에서 활성으로 바뀌느냐다. 프로필 업데이트를 레거시 동기화에 포함하는 일은 사용자 경험에서는 조용하지만, 프로토콜 호환성에서는 민감한 변화다. 다른 하나는 Matrix v1.16 스펙 준수 수정이 이어지면서 기본 방 버전(room version)을 12로 바꿔 갈 준비가 갖춰지는 일이다. Famedly의 Jason Little이 커밋을 계속 던지고 있다고 하니, 연합 환경에서 버전 핀을 올릴 때 생기는 긴 꼬리를 지켜보면 재미있다. 관점을 좁혀 말하면, 매트릭스는 여전히 ‘동기화 API 세대 전환’이라는 P2P 숙제를 푸는 중이다. 우리는 그 숙제가 언제 마무리되느냐보다, 회귀 경로(regression path)를 어떻게 관리하느냐에 더 관심이 간다.

Related

관련 운영 노트

같은 주제에서 이어서 읽기 좋은 글입니다.

  • [Blueprint L3] Pons 포트폴리오 — 의존성 0, 단일 index.html이 오래 가는 이유

    의존성 0, 단일 index.html 41KB. 디자인 토큰 SSOT와 13개 제품 쇼케이스로 만든 정적 포트폴리오가 오래 가는 이유.

  • [Blueprint L2] PonsLink Control Tower — Threads에 dry-run으로 쏘는 이유

    Python Threads 컨트롤타워. cardnews 재사용→생성 폴백, n8n 패치, dry-run 기본 게이트로 안전하게 쏘는 자동발행.

  • [Blueprint L1] PonsLink P2P Room — WebRTC 화상회의를 BFF로 감싼 이유

    React SPA와 Express BFF가 Socket.IO로 시그널링하고, 미디어는 mesh로 가는 2티어. TURN 그랜트와 presence lease로 룸을 만든 화상회의.

댓글

아직 댓글이 없습니다.

현재 이 글의 댓글은 닫혀 있습니다.