토스는 어떻게 광고 속에 게임을 넣었을까
토스가 광고 시스템을 자체 구축하면서 서드파티 SDK 대신 국제 광고 표준 MRAID를 직접 구현해 플레이어블 광고(앱 설치 전 게임 체험)를 지원한 과정이다. mraid.js 브릿지, 5중 렌더링 완료 신호, 보안 중심 설계, 앱 심사 없는 즉시 배포를 동시에 달성했다.
요약 이어보기카카오웹툰 프론트엔드 팀이 실제로 적용한 CDN, SSR 캐싱, Loading Shimmer, 이미지 최적화 등 성능 개선 전략을 정리한다. 이론적 소개가 아닌 실제 서비스에서 적용하면서 발견한 트레이드오프와 개선 수치를 함께 제공한다.
핵심 포인트 - CDN 기본 적용: 이미지·정적 리소스를 CDN으로 제공해 서버 부하 없이 전 세계 빠른 전송 - SSR 캐싱: 사용자마다 달라지는 추천 영역 포함으로 정적 페이지 불가 → Next.js SSR + 캐싱 적용. 부하 테스트에서 캐싱 적용 후 TPS·응답 시간 수십 배 이상 개선 - 캐시 갱신 전략: 캐시 만료 즉시 무효화 방식에서 "갱신 요청만 발생시키고 완료 시 캐시 업데이트" 방식으로 전환 — 렌더링 중 요청도 즉각 응답 가능 - Loading Shimmer(Skeleton UI): API 대기 중 spinner 대신 로딩 후 레이아웃과 유사한 shimmer 표시로 자연스러운 전환 구현 - ISR(Incremental Static Regeneration): SSR 캐싱 대안으로 고려. 주기적으로 정적 페이지 재생성 - 이미지 최적화: 포맷(WebP/AVIF), 크기 조절(srcset), 지연 로딩(lazy loading) 적용으로 페이지 로드 시간 단축
상세 정리 - 성능-매출 상관관계: Pinterest 40% 로드 감소 → 전환율 15% 증가. BBC 매 초 지연마다 10% 사용자 이탈. Amazon 1초 빠를수록 판매량 1% 증가 - 카카오웹툰 SSR 선택 이유: 개인화 추천 영역 + SEO 동시 충족 필요. CSR은 SEO 불리, SSG는 개인화 불가 - SSR 캐싱 초기 방식의 문제: 캐시 만료 시 재렌더링이 완료될 때까지 해당 시점 요청들이 지연 → 트래픽 몰리면 병목 - 개선된 캐싱 방식: 만료된 캐시를 바로 무효화하지 않고 이전 캐시 응답 유지하면서 백그라운드에서 갱신(stale-while-revalidate 개념) - Loading Shimmer 구현: CSS gradient animation으로 반짝이는 효과, 실제 콘텐츠 레이아웃과 일치하는 뼈대로 사용자 체감 속도 향상 - 실무 조언: "특별히 새로운 내용은 아닙니다 — 구글링에 나오는 방법들의 실제 적용 사례"로 소개. 새 기술보다 검증된 기법의 실전 조합이 핵심
왜 읽나: CDN부터 SSR 캐싱 전략 개선, Loading Shimmer, 이미지 최적화까지 실제 서비스 적용 경험과 수치를 통해 프론트엔드 성능 최적화의 우선순위와 실전 조합 방법을 파악할 수 있다.
토스가 광고 시스템을 자체 구축하면서 서드파티 SDK 대신 국제 광고 표준 MRAID를 직접 구현해 플레이어블 광고(앱 설치 전 게임 체험)를 지원한 과정이다. mraid.js 브릿지, 5중 렌더링 완료 신호, 보안 중심 설계, 앱 심사 없는 즉시 배포를 동시에 달성했다.
요약 이어보기채널톡 고객용 SDK에서 boot→shutdown→boot 연속 호출 시 사이드 이펙트가 중첩되는 타이밍 버그를 RxJS 기반 구조 개편으로 해결한 사례다. 비동기 흐름 직렬화에 RxJS, 동기적 상태 관리에 Zustand를 도입해 타이밍 비결정성을 구조 수준에서 제거했다.
요약 이어보기여기어때 항공 서비스 프론트엔드가 웹과 앱 웹뷰 두 환경에서 동일한 함수 호출로 동작하는 앱 브릿지 추상화 레이어를 설계한 과정을 다룬다. iOS·안드로이드 규약 차이와 "웹에 존재하지 않는 브릿지를 어떻게 호출하나"라는 문제를 단일 추상화 층으로 해결한 구현 사례다.
요약 이어보기