[PonsWarp] OPFS는 만능키가 아니라 마지막 안전망이었다
IndexedDB를 떠올렸다가 브라우저가 제공하는 파일 시스템 경계를 다시 살펴보게 된 흐름그래서 용어 사전 대신, 그 날 무엇을 보고 무엇을 바꿨는지부터 적는다. 같은 단어를 쓰더라도 제품 문맥이 다르면 답이 갈렸다. 그 갈림길을 숨기지 않는 쪽으로 썼다.

OPFS가 필요해진 지점
정성적으로는 사용자가 '거의 다 됐는데 왜 깨졌지'라는 불신을 덜 느끼게 하는 게 목표였다. 처음에는 PonsLink 안에 있는 파일 전송 기능이었다. 방 안에서 파일을 보내면 충분할 줄 알았는데, 파일 크기가 커질수록 회의방의 리듬까지 흔들렸다. 큰 파일이 브라우저 메모리에 그대로 쌓이는 걸 보고 나서 저장소를 다시 봤다. 처음에는 IndexedDB를 떠올렸지만, 파일을 다루는 감각과는 조금 달랐다. 그래서 PonsWarp는 별도 제품처럼 분리됐다. 서버가 파일을 들고 있지 않는다는 원칙을 유지하면서도 브라우저가 버틸 수 있는 흐름 제어와 저장 전략을 먼저 세워야 했다. 특히 PonsWarp에서는 재현 조건을 같이 적어야 의미가 있었다.

처음에는 OPFS가 만능일 줄 알았다
이 흐름은 PonsLink 안에서 고장난 파일 전송이 어떻게 PonsWarp로 분리됐는지 따라간다. 다음 글에서는 Rust/WASM의 메모리 생존 문제를 넘어간다. OPFS는 만능키가 아니 특히 PonsWarp에서는 재현 조건을 같이 적어야 의미가 있었다. 브라우저 메모리, 수신 속도, 저장 방식, ACK, 백프레셔가 한꺼번에 걸렸다. 특히 큰 파일에서는 마지막 몇 퍼센트에서 실패하는 순간이 제일 잔인했다. OPFS는 만능 도구가 아니었다. 그래도 브라우저 안에서 파일을 파일답게 다룰 수 있는 몇 안 되는 길이었다. 결국 저장 전략은 편의 기능이 아니라 전송이 끝까지 살아남기 위한 생존선이 됐다.
안전망임이 선명해진 순간
OPFS는 만능 해결책이 아니라 브라우저 제약 안에서 선택한 마지막 안전망이라는 긴장을 드러났다. OPFS는 만능키가 아니 정량적으로는 전송 조각, 확인 응답, 저장 경로, 재시도 기준을 나눠 볼 수 있게 만들었다.
정성적으로는 사용자가 '거의 다 됐는데 왜 깨졌지'라는 불신을 덜 느끼게 하는 게 목표였다. 방 안에서 파일을 보내면 충분할 줄 알았는데, 파일 크기가 커질수록 회의방의 리듬까지 흔들렸다. 큰 파일이 브라우저 메모리에 그대로 쌓이는 걸 보고 나서 저장소를 다시 봤다. 처음에는 IndexedDB를 떠올렸지만, 파일을 다루는 감각과는 조금 달랐다.
그래서 PonsWarp는 별도 제품처럼 분리됐다. 서버가 파일을 들고 있지 않는다는 원칙을 유지하면서도 브라우저가 버틸 수 있는 흐름 제어와 저장 전략을 먼저 세워야 했다. 이 흐름은 PonsLink 안에서 고장난 파일 전송이 어떻게 PonsWarp로 분리됐는지 따라간다. PonsWarp를 설명할 때 서버/클라이언트/사용자 중 누구 문장으로 말하는지 먼저 고르면 논쟁이 줄었다.
OPFS 경계 나누기
다음 글에서는 Rust/WASM의 메모리 생존 문제를 넘어간다. 특히 PonsWarp에서는 재현 조건을 같이 적어야 의미가 있었다. 전송은 단순히 빨리 보내는 문제가 아니었다.
브라우저 메모리, 수신 속도, 저장 방식, ACK, 백프레셔가 한꺼번에 걸렸다. 특히 큰 파일에서는 마지막 몇 퍼센트에서 실패하는 순간이 제일 잔인했다. OPFS는 만능 도구가 아니었다. 그래도 브라우저 안에서 파일을 파일답게 다룰 수 있는 몇 안 되는 길이었다. 결국 저장 전략은 편의 기능이 아니라 전송이 끝까지 살아남기 위한 생존선이 됐다.
특히 PonsWarp에서는 재현 조건을 같이 적어야 의미가 있었다. OPFS는 만능키가 아니 OPFS는 만능 해결책이 아니라 브라우저 제약 안에서 선택한 마지막 안전망이라는 긴장을 드러났다.
마치며
정성적으로는 사용자가 '거의 다 됐는데 왜 깨졌지'라는 불신을 덜 느끼게 하는 게 목표였다. 처음에는 PonsLink 안에 있는 파일 전송 기능이었다. 방 안에서 파일을 보내면 충분할 줄 알았는데, 파일 크기가 커질수록 회의방의 리듬까지 흔들렸다. 큰 파일이 브라우저 메모리에 그대로 쌓이는 걸 보고 나서 저장소를 다시 봤다. 처음에는 IndexedDB를 떠올렸지만, 파일을 다루는 감각과는 조금 달랐다. 그래서 PonsWarp는 별도 제품처럼 분리됐다. 서버가 파일을 들고 있지 않는다는 원칙을 유지하면서도 브라우저가 버틸 수 있는 흐름 제어와 저장 전략을 먼저 세워야 했다.