캐시 정리의 최적화라고 생각했다. 서비스 전체에 흩어진 @Cacheable 설정을 보니 TTL이 3분, 7분, 15분, 30분 — 제각각이었다.
프론트엔드에서 탭 UI를 만들 때 가장 짜증나는 순간이 있다. 사용자가 첫 번째 탭에서 폼을 절반 채우고, 두 번째 탭 갔다 돌아왔더니 입력값이 전부 사라진 거다.
주문 API에서 결제 게이트웨이 연동 하나 추가한 게 전부였다. 배포하고 트래픽 올라가자마자 HikariCP 커넥션 대기 큐가 쌓이기 시작했고, 30초 만에 ConnectionTimeoutException이 터졌다.
프로젝트에서 framer-motion이 차지하는 번들 비중을 확인한 게 3주 전이다. 페이지 전환 애니메이션 하나 때문에 120KB, gzip으로 38KB.
운영 서버에 Virtual Thread를 적용한 지 이틀 만에 Slack 알림이 울렸다. Connection is not available, request timed out after 30000ms.
React Compiler가 정식 출시된 지 반년이 지났다. useMemo와 useCallback을 전부 지워도 된다는 이야기가 트위터를 채웠고, 새 프로젝트에서는 실제로 그런 경우가 많다.
2023년 Chrome 115에 animation-timeline: scroll()이 들어왔을 때 팀 슬랙에 "GSAP 드디어 졸업"이라고 올렸다. 3년 뒤에도 GSAP는 package.
3일 전에 findById 하고 save 했더니 데이터가 두 줄 생긴 이야기를 썼다. 그 글을 쓰면서도 속으로 생각했다 — "이걸 왜 아직도 애플리케이션 레벨에서 해결해야 하지?
Vite 프로젝트를 오래 운영해본 사람이라면 한 번쯤 겪어봤을 거다 — dev 서버에서는 멀쩡한 코드가 프로덕션 빌드에서만 미묘하게 깨지는 상황. 원인을 파고들면 대부분 같은 곳에 도달한다.
작년 겨울, 트래픽 피크 때마다 HPA가 Pod를 늘리는데 Spring Boot 앱이 뜨는 데 12초가 걸렸다. 12초면 이미 늦다.
2주 전에 한 사용자가 가격 페이지 결제 버튼이 "가끔 안 눌린다"고 제보했다. 재현이 안 됐다.
"Redis 앞에 Caffeine 하나 놓으면 빨라지잖아요." 코드 리뷰에서 이 말이 나오면 반은 맞고 반은 틀리다.
운영 환경에서 repository.saveAll(list)를 호출하고 슬로우 쿼리 로그를 열었더니 INSERT 문이 10,000줄 찍혀 있었다.
구글이 3월 코어 업데이트에서 INP를 공식 랭킹 시그널로 격상시켰다. LCP 임계값도 2.