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

Notion engineers sped up Notion's browser speed with WASM SQLite

Notion

Notion engineers sped up Notion's browser speed with WASM SQLite

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 8월 17일 오전 1:48

 • 

저장 16조회 2,633

댓글 0