리전을 서울로 옮겼는데 프록시만 싱가포르에 남아 있었다
DB까지 다녀오는 API보다 아무 일도 안 하는 프록시가 4배 느린 이유를 쫓다 발견한 설정의 사각지대와, getUser()를 로컬 JWT 검증으로 바꾸며 감수한 트레이드오프
8개의 글
DB까지 다녀오는 API보다 아무 일도 안 하는 프록시가 4배 느린 이유를 쫓다 발견한 설정의 사각지대와, getUser()를 로컬 JWT 검증으로 바꾸며 감수한 트레이드오프
배포한 앱의 초기 로딩이 느려서 Supabase 무료 플랜을 의심했다가, 아무 일도 하지 않는 401 응답을 재보고 진짜 원인을 찾은 기록 — Vercel 기본 함수 리전 iad1과 서울 Supabase 사이의 태평양 왕복
await 없이 흘려보낸 프리페치가 만든 하이드레이션 불일치 — e2e 로그에서 18건을 세고, 첫 렌더를 서버와 맞춰 없애기까지
TBT 8배 회귀를 진단하다 발견한 것 — 회귀는 코드가 아니라 데이터 때문이었고, 그 데이터를 세다가 API가 1,000건에서 조용히 잘리고 있다는 걸 알았다
searchParams를 읽는 순간 페이지가 동적 렌더링으로 바뀐다 — 잘 동작하는 기능 뒤에서 렌더링 전략이 바뀐 것을 발견하고, 경로 기반 페이지네이션과 목록 캐싱으로 되돌린 기록
템플릿을 추가해도 일간 목록에 안 뜨던 버그 — 진행 중인 요청에 무효화가 흡수되면서 낡은 응답이 신선한 데이터로 캐시에 앉는 경합을 타임라인으로 재구성하고 고친 기록
rehype-pretty-code 블럭 코드가 인라인 코드로 오판되어 배경이 스크롤 폭을 못 따라가던 문제 — 잘못된 판별 조건과 스크롤 컨테이너 안 grid 요소의 width를 추적한 기록
요청 본문을 그대로 insert에 스프레드하던 Next.js Route Handler를 zod 화이트리스트 검증으로 바꾸기까지 — 코드 감사에서 발견한 문제와 해결 기록