본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
LIVE · SEOUL · 2026

GRIND.LEARN,REPEAT.

A blog by yceffort, a frontend engineer taking software apart to see how it works: framework internals, performance, and lessons from production.

391posts123tags09ywriting
06 ITEMS

Popular this season

hover · tilt · open
◆ 인기 포스트
#kubernetes#frontend#nodejs

프론트엔드 개발자를 위한 쿠버네티스 개념 지도: 파드에서 오토스케일러까지

2026-08-05·41분
◆ 인기 포스트
#ai#essay#frontend

프론트엔드는 어디서 왔고, 에이전트 이후 어디로 가는가

2026-07-22·34분
◆ 인기 포스트
#ai#essay#code-review

코드를 읽거나 설명할 줄 몰라도, 스펙을 만족하고 버그를 고칠 수 있다면 상관없을까

2026-06-12·41분
◆ 인기 포스트
#kubernetes#docker#nextjs

내 Next.js 앱은 어떻게 파드가 되는가: 컨테이너와 파드를 직접 열어본 기록

2026-08-05·34분
◆ 인기 포스트
#typescript#oxc#eslint

typescript@7을 설치하면 벌어지는 일들: 블로그 모노레포 마이그레이션 기록

2026-08-10·17분
◆ 인기 시리즈

AI 시대의 판단

3편의 글·2026-06-21 업데이트
07 ITEMS

Series one thread

view all →
01

서비스 워커 캐싱 딥다이브

03 POSTS· 2026
『프런트엔드 성능 최적화 Deep Dive』의 캐시 장에서 못 다한 세 번째 캐시 레이어. 프록시와 라이프사이클과 전략의 일반론부터, Next.js 블로그에 직접 적용하고 GA4로 실측한 기록까지
2026-08-28마지막 업데이트
02

OG 스크래핑 서버 설계 노트

02 POSTS· 2026
링크 미리보기 서버를 짓는다면 무엇을 먼저 정해야 하는가. 런타임 선택의 근거부터 SSRF, 인코딩, 캐시 스탬피드까지 원리로 따라가고, 그렇게 쓴 코드를 전부 돌려본 기록
2026-08-22마지막 업데이트
03

프론트엔드 개발자가 알아야 할 쿠버네티스

06 POSTS· 2026
SSR을 운영하는 프론트엔드 개발자가 쿠버네티스를 블랙박스로 두지 않기 위해, kind 클러스터에서 직접 열어보고 실측한 기록
2026-08-10마지막 업데이트
04

AI 시대의 판단

03 POSTS· 2026
AI가 코드를 대신 쓰는 시대에 개발자에게 남는 것은 무엇인지, 판단과 책임이라는 축으로 따져본 에세이
2026-06-21마지막 업데이트
05

디렉티브 딥다이브

03 POSTS· 2026
'use client', 'use server', 'use cache'. 파일 맨 위 한 줄이 빌드와 런타임에서 무엇으로 변하는지 소스 레벨까지 따라간 기록
2026-05-01마지막 업데이트
08 ITEMS

Recent

latest writing
01

『남은 판단은 누가 배우는가』 베타리더와 인터뷰이를 각각 모십니다

#ai#essay
AI가 코드를 쓰는 시대의 개발자와 판단에 대한 에세이입니다. 초고를 읽고 의견을 주실 베타리더와, AI와 함께 일하는 경험을 들려주실 인터뷰이를 각각 찾습니다. 둘 다 9월 30일까지 모집합니다.
2026-09-099분 · read
02

여러 웹뷰에서 하나의 웹 운영하기: 환경 분기를 어댑터로 모은 과정

#webview#architecture#css
자사 앱과 파트너 앱의 iOS, Android 웹뷰를 지원하며 흩어진 환경 분기를 어댑터로 모았다. 인셋과 브릿지, CSS를 정리한 과정과 SSR 시드, hydration에서 겪은 문제를 기록했다.
2026-09-0944분 · read
03

드롭인 호환의 진짜 비용: markdownlint-cli2를 Rust로 옮기며 버린 것들

#rust#markdown#ai
markdownlint-cli2를 Rust로 옮겨 블로그 저장소의 진단 264,114건을 바이트 단위로 맞췄다. 규칙 51개를 옮긴 커밋은 하루에 몰렸지만, 교체해 쓸 도구를 완성하는 일은 보름 동안 이어졌다. 37배 빠른 파서를 포기하고, 성능 측정의 오판을 고치고, 적대 리뷰에서 호환 차이 11건을 더 찾은 기록이다.
2026-09-0845분 · read
04

외부 SDK를 뜯어서 내 맘대로 다시 만들기: 단, 로직은 한 줄도 건드리지 않고

#bundler#tree-shaking#testing
상수 하나를 import 했는데 번들의 97.7%가 따라왔다. 벤더는 고칠 일정이 미정이라기에, 배포된 소스맵을 뜯어 400개가 넘는 TypeScript 파일을 되찾고 빌드와 엔트리와 의존성을 내 맘대로 갈아엎었다. 로직만 빼고. 그래서 /send가 raw -77.5%. 그런데 어려운 건 그다음이었다. 테스트 1932개가 전부 통과했는데, 그중 몇 개는 아무것도 보고 있지 않았다.
2026-08-3170분 · read
05

서비스 워커 경유 비용 실측: GA4가 답하지 못한 대조군을 랩에서 만들기

#web-performance#service-worker#pwa
2편 끝에 남긴 "워커 경유 비용 500ms"를 확정하려 했지만, 대조군이 되는 하드 리로드는 하루 한 건이 안 됐다. 그래서 Playwright와 셰이핑 프록시로 대조군을 직접 만들어 재 보니 내비게이션에서 워커 비용은 2ms였고, 비용은 지연이 아니라 글 하나를 클릭할 때마다 배경에서 더 받는 바이트 쪽에 있었다. 랩과 실사용자 데이터 사이에 남겨 둔 간극은 글을 다 쓰고 나서야 103 Early Hints가 만든 측정 정의 차이였다는 것을 알았다. 서비스 워커 캐싱 딥다이브 시리즈의 세 번째 편이다.
2026-08-2881분 · read
06

서비스 워커 캐싱 적용기: App Router의 함정들과 GA4 실측

#web-performance#service-worker#pwa
1편의 일반론을 들고 이 블로그(Next.js App Router)를 오프라인에서도 열리게 만들었다. 첫 배포에서는 방금 읽은 글이 오프라인에서 안 열렸고, 두 번째 배포에서는 글은 열리는데 이미지가 전부 깨졌다. 소프트 내비게이션과 프리페치, next/image가 만든 함정들을 하나씩 고쳐 배포한 연대기와, 그 결과를 GA4 실사용자 데이터로 정산한 기록이다. 재방문자 FCP는 평균 634ms 좋아졌고, TTFB는 평균 525ms 나빠졌다. 서비스 워커 캐싱 딥다이브 시리즈의 두 번째 편이다.
2026-08-2747분 · read
07

OG 스크래핑 서버를 Node.js로 짓는다면 (2): SSRF는 어떻게 뚫리는가

#nodejs#security#ssrf
사용자가 준 URL을 서버가 대신 여는 기능은 SSRF의 교과서적 조건을 명세로 갖고 있다. 화이트리스트를 뚫는 우회 여섯 가지를 먼저 보고, 그것을 막는 방어 원리 다섯 개를 Node에서 실제로 돌려본 기록. 손으로 IPv4-mapped를 벗기면 16진 표기에서 뚫리고, undici의 lookup 훅은 호스트가 IP 리터럴이면 아예 호출되지 않으며, URL.hostname은 IPv6 리터럴의 대괄호를 남긴다. OG 스크래핑 서버 설계 노트 2부작의 마지막 편이다.
2026-08-2239분 · read
08

OG 스크래핑 서버를 Node.js로 짓는다면 (1): 런타임 선택부터 에러율과 지연까지

#nodejs#web#scraping
링크 미리보기 서버의 "에러율 10%"는 성질이 다른 다섯 종류의 실패가 뭉친 숫자다. 이 워크로드가 왜 I/O 바운드에 저 TPS인지, 런타임 선택이 실제로 갈리는 네 지점은 어디인지 따져본 뒤, User-Agent와 인코딩으로 에러율을 낮추는 일로 넘어간다. Node 내장 TextDecoder는 CP949 확장 문자를 에러 없이 다른 글자로 바꾸고, 스크랩해 온 og:title은 API 응답이 아니라 사용자 입력이다. 캐시 스탬피드와 negative caching, 그리고 "P95 1초 미만"을 캐시 히트율에서 역산해 검증하는 200만 건 시뮬레이션까지 담았다. OG 스크래핑 서버 설계 노트 2부작의 첫 편이다.
2026-08-2253분 · read