[PonsWarp] 2GB를 넘기자 브라우저 메모리가 먼저 무너졌다
작은 파일에서는 멀쩡하던 전송이 큰 파일에서 브라우저 메모리에 그대로 쌓이던 발견이 먼저 떠오른다. 같은 입력인데 어떤 환경에서만 PonsWarp가 도드라졌다. 그래서 용어 사전 대신, 그 날 무엇을 보고 무엇을 바꿨는지부터 적는다. 숫자로 포장하기보다, 재현 조건과 운영에서 고정한 규칙을 중심으로 적었다.

2GB를 넘기자 메모리가 무너진 지점
그래서 대용량 전송을 '더 빠르게'가 아니라 '덜 무너지게' 만드는 과정으로 다시 써야 한다. 전송은 단순히 빨리 보내는 문제가 아니었다. 브라우저 메모리, 수신 속도, 저장 방식, ACK, 백프레셔가 한꺼번에 걸렸다. 특히 큰 파일에서는 마지막 몇 퍼센트에서 실패하는 순간이 제일 잔인했다. 전송 성공과 저장 성공은 같은 말이 아니었다. 2GB 근처에서 깨지는 문제는 속도 문제가 아니라 제품이 파일을 어디에 들고 있느냐의 문제였다.

처음에는 메모리가 무한할 줄 알았다
전송 성공과 저장 성공은 다르며, 브라우저가 파일을 어디에 들고 있는지가 제품의 생존 문제였다는 문제가 있었다. 다음 글에서는 OPFS/저장 안전망 판단을 이어진다. 2GB를 넘기자 브라우저
정성적으로는 사용자가 '거의 다 됐는데 왜 깨졌지'라는 불신을 덜 느끼게 하는 게 목표였다. 방 안에서 파일을 보내면 충분할 줄 알았는데, 파일 크기가 커질수록 회의방의 리듬까지 흔들렸다.
작은 파일에서는 아무 일도 없어 보였다. 문제는 파일이 커진 뒤에야 드러났다. 브라우저가 조각을 얌전히 흘려보내는 게 아니라 메모리 위에 쌓아두고 있었다.
2GB 벽이 선명해진 순간
그래서 PonsWarp는 별도 제품처럼 분리됐다. 서버가 파일을 들고 있지 않는다는 원칙을 유지하면서도 브라우저가 버틸 수 있는 흐름 제어와 저장 전략을 먼저 세워야 했다. 그래서 대용량 전송을 '더 빠르게'가 아니라 '덜 무너지게' 만드는 과정으로 다시 써야 한다. 전송은 단순히 빨리 보내는 문제가 아니었다. 브라우저 메모리, 수신 속도, 저장 방식, ACK, 백프레셔가 한꺼번에 걸렸다.
특히 큰 파일에서는 마지막 몇 퍼센트에서 실패하는 순간이 제일 잔인했다. 전송 성공과 저장 성공은 같은 말이 아니었다. 2GB 근처에서 깨지는 문제는 속도 문제가 아니라 제품이 파일을 어디에 들고 있느냐의 문제였다. 이 흐름은 PonsLink 안에서 고장난 파일 전송이 어떻게 PonsWarp로 분리됐는지 따라간다.
전송 성공과 저장 성공은 다르며, 브라우저가 파일을 어디에 들고 있는지가 제품의 생존 문제였다는 문제가 있었다. PonsWarp를 설명할 때 서버/클라이언트/사용자 중 누구 문장으로 말하는지 먼저 고르면 논쟁이 줄었다.
메모리 경계 나누기
전송 성공과 저장 성공은 다르며, 브라우저가 파일을 어디에 들고 있는지가 제품의 생존 문제였다는 문제가 있었다. 다음 글에서는 OPFS/저장 안전망 판단을 이어진다.
정성적으로는 사용자가 '거의 다 됐는데 왜 깨졌지'라는 불신을 덜 느끼게 하는 게 목표였다. 처음에는 PonsLink 안에 있는 파일 전송 기능이었다.
방 안에서 파일을 보내면 충분할 줄 알았는데, 파일 크기가 커질수록 회의방의 리듬까지 흔들렸다. 작은 파일에서는 아무 일도 없어 보였다. 문제는 파일이 커진 뒤에야 드러났다. 브라우저가 조각을 얌전히 흘려보내는 게 아니라 메모리 위에 쌓아두고 있었다. 그래서 PonsWarp는 별도 제품처럼 분리됐다. 서버가 파일을 들고 있지 않는다는 원칙을 유지하면서도 브라우저가 버틸 수 있는 흐름 제어와 저장 전략을 먼저 세워야 했다.
특히 PonsWarp에서는 재현 조건을 같이 적어야 의미가 있었다.
회고에서 고정한 원칙
그래서 대용량 전송을 '더 빠르게'가 아니라 '덜 무너지게' 만드는 과정으로 다시 써야 한다. 전송은 단순히 빨리 보내는 문제가 아니었다. 브라우저 메모리, 수신 속도, 저장 방식, ACK, 백프레셔가 한꺼번에 걸렸다. 특히 큰 파일에서는 마지막 몇 퍼센트에서 실패하는 순간이 제일 잔인했다. 전송 성공과 저장 성공은 같은 말이 아니었다. 2GB 근처에서 깨지는 문제는 속도 문제가 아니라 제품이 파일을 어디에 들고 있느냐의 문제였다. 2GB를 넘기자 브라우저 이 흐름은 PonsLink 안에서 고장난 파일 전송이 어떻게 PonsWarp로 분리됐는지 따라간다.
마치며
이 글에서 확인한 경계는 다음 변경의 기준으로 남겼다.