15P by xguru 2022-12-05 | favorite | 댓글 1개
  • Fiberplane은 인프라스트럭처용 협업 노트북 도구(사고 대응 및 인프라 디버깅)
  • 두가지 큰 문제를 해결하는데 도움이 되었음

1. Operational Transformation

  • 에디터의 협업 기능에서 충돌을 해결하기 위한 방법이 필요
  • 구글닥스가 이용하는 알고리듬인 OT를 구현했는데, 쉬운일이 아니었음
  • 복잡도의 주요 원인은 지원하는 오퍼레이션들이 많아 지면서, 구현해야 하는 변환의 수가 기하급수적으로 증가한다는 것
  • 이 작업을 적용하기 위한 로직은 클라이언트/서버 모두에 있어야 함. 양쪽의 불일치로 부작용이 생길수 있음(작업자간에 노트북이 다르다거나)
  • 이걸 양쪽에 두번 따로 구현하는 것은 위험. 팀 규모도 작고, 복제해야할 코드가 엄청 늘어날 것
  • 그래서 백엔드 알고리듬을 Rust로 구현했음. 그리고, WASM을 이용해서 프론트에서도 정확히 동일한 코드를 실행
  • 이를 통해서 개발 노력을 절약하고, 불일치의 위험을 감소시켰음

2. Providers

  • 또 다른 문제는 외부 데이터 소스에서 노트북으로 데이터를 가져오는 것
  • 데이터 소스는 다양한 형태와 크기가 있으며, 사용자의 브라우저에서 항상 쉽게 접근할 수 있는 것은 아님
  • 이 문제를 해결하기 위해서, 브라우저와 고객이 호스팅하는 프록시서버 양쪽에서 실행 가능한 WASM기반의 플러그인 "Fiberplane Providers"를 만들었음
  • 이런 기술은 JavaScript도 가능하지만, WASM은 다음과 같은 장점이 있음
    • 더 좋은 성능
    • WASM이 지원하는 모든 언어로 플러그인 작성 가능
    • WASM 플러그인은 샌드박스에서 실행되어 악의적인 프로바이더의 능력을 제한함

fp-bindgen

  • WebAssembly는 다양한 시나리오에서 도움이 됨
  • 자체 제품 개발을 간소화 하거나, 고객 인프라에 접근하는 코드를 안전하게 실행할 수 있음
  • WASM이 중요하고 많이 쓰여서 별도 자체 도구도 만들었음
  • fp-bindgen은 Rust 소스코드에 대해 동작하는 바인딩 생성기임
  • Rust에서 WASM 플러그인을 작성하고, 브라우저 또는 Wasmer 환경에서 호스팅하는데 사용 가능
  • fp-bindgen은 오픈소스로 공개하였음

저는 이런 종류의 스타트업 글을 좋아합니다.
자신이 해결한 문제를 남들에게 도움이 되도록 정리하면서, 관련된 자신들의 오픈소스도 같이 홍보해서 에코시스템에 기여한다는 인상도 주고요.

긱뉴스 위클리 #177 에서 QuickJS-emscripten : QuickJS를 WASM으로 컴파일하여 실행하기 를 소개했는데요.
여기도 비슷하게 샌드박싱을 통한 플러그인 컨셉을 취하고 있네요. 샌드박싱을 위한 컨테이너로서의 WASM 활용은 이제 기본이 되어 가는것 같습니다.