Community

Notion이 성능을 높이기 위해서 네이티브 앱에 SQLite로 클라이언트 캐싱을 해서 속도를 높였는데 이번에 WASM SQLite를 사용해서 브라우저에서도 속도를 개선했다고 합니다. 이 글에는 이

Notion이 성능을 높이기 위해서 네이티브 앱에 SQLite로 클라이언트 캐싱을 해서 속도를 높였는데 이번에 WASM SQLite를 사용해서 브라우저에서도 속도를 개선했다고 합니다. 이 글에는 이를 적용하면서 고민했던 내용이 담겨 있어서 재밌습니다. WASM SQLite는 사용자 기기의 파일을 읽고 쓰기 위해 OPFS(Origin Private File System) API를 웹 워커를 통해 사용하도록 구성되어 있는데 막상 적용하려고 보니 OPFS가 크로스 오리진 격리를 요구하는 걸 알게 되었다고 합니다. 이는 노션 서비스의 특성상 서드파티 기능에 큰 문제가 생기기 때문에 그대로 사용할 없었고 이를 회피해서 구현했을 때 데이터가 손상되는 문제를 발견해서 추적해 보니 앱과 달리 브라우저에서는 동시에 여러 탭을 열기 때문에 데이터베이스 접근이 동시에 일어나면서 데이터가 충돌하게 된 것입니다. 이 문제를 해결하기 위해 Shared Worker를 만들고 어느 탭이 활성화된 탭인지는 추적해서 활성화된 탭에서만 데이터베이스에 접근하도록 해서 해결했다고 합니다. https://www.notion.so/blog/how-we-sped-up-notion-in-the-browser-with-wasm-sqlite

알림

알림이 없습니다