전통적 SSR의 한계를 넘어: 당근마켓이 도입한 Streaming SSR

최근 당근마켓을 사용하면서 UX가 괜찮다고 느꼇는데요. 이미 Streaming SSR을 도입하고 있네요. Streaming SSR은 전통적인 SSR 한계를 극복하는 렌더링 기법인데요


SSR vs Streaming SSR

  • 기존 SSR: 전체 HTML을 생성한 후 한 번에 전송하기 때문에 모든 데이터 fetching과 렌더링이 완료될때 까지 기다립니다. 완전한 페이지를 한 번에 받기 때문에 유저는 일정시간동안 빈 화면을 봅니다.

  • Streaming SSR: Streaming SSR은 HTML을 Chunk(조각) 단위로 부분 스트리밍하여 전송합니다. 가령 API 페칭이 필요없는 GNB, 네비게이션 등은 먼저 렌더링을 하고 이후에 데이터 fetching이 된 부분은 나중에 순차적으로 렌더링 합니다. 따라서, 중요 컨텐츠를 먼저 사용자에게 전달할 수 있어 전체 로딩 시간은 동일하더라도, 사용자가 체감하는 속도가 더 빨라집니다


Streaming SSR 구현 방법

당근마켓의 StremingSSR은 아래와 같은 단계로 이루어집니다.

  1. 데이터 프리페칭 및 직렬화: TanStack Query로 데이터를 미리 가져옵니다. 이후 dehydrate를 사용해 쿼리 상태를 JSON 으로 직렬화(SSR에서 가져온 데이터를 클라이언트로 전달) 합니다. 이를 통해 직렬화된 상태는 HTML 응답에 포함되어 클라이언트로 전송됩니다.

  2. HTML 스트리밍: ReactDOM의 renderToPipeableSteream함수를 이용해서 HTML 스트림을 청크 단위로 스트리밍합니다. 이를 통해 HTML부분 렌더링을 적용 합니다.

  3. TanstackQuery 하이드레이션: dehydrate 를 통해 JSON 형태로 직렬화된 데이터를 TanstackQuery의 HydrationBounary 함수를 사용하여 TanstackQuery 캐시에 hydrate 합니다. 이 과정을 통해 TanStack Query 캐시에는 서버에서 가져온 데이터가 들어있게됩니다.


국내 IT 기업도 점차 UX의 중요성에 대해 인식하고 기술적으로 많은 시도와 도입을 하는것 같습니다. 고객 경험을 중시하는 이런 시도는 사용자 만족도 향상과 비즈니스 성과 개선으로 이어지는데요. 이런 시도를 통해 당근마켓이 국내를 넘어 글로벌 시장에서도 더욱 성공적으로 성장하기를 기대해 봅니다.


https://medium.com/daangn/%EC%9E%85%EC%82%AC-1%EA%B0%9C%EC%9B%94%EC%B0%A8-%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%9E%90%EC%B2%B4-%EA%B8%B0%EC%88%A0-%EC%98%A8%EB%B3%B4%EB%94%A9-streaming-ssr%ED%8E%B8-aabaee57f660

입사 1개월차 프론트엔드 개발자의 자체 기술 온보딩 : Streaming SSR편

Medium

입사 1개월차 프론트엔드 개발자의 자체 기술 온보딩 : Streaming SSR편

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 9월 25일 오전 1:30

 • 

저장 87조회 4,110

댓글 0

    함께 읽은 게시물

    나는 가끔 조합형 한글의 아름다움에 대해 생각한다.


    그 아름다움은 단순히 예쁜 글꼴이나 정갈한 종이 위의 자소 배열에서 끝나지 않는다. 진짜 매력은, 정밀한 정보 구조와 이산 수학적 규칙성 속에 숨어 있다.


    ... 더 보기

    앱 개발 개척시대

    A

    ... 더 보기

    앱 개발 개척시대

    K리그 프로그래머

    앱 개발 개척시대

     • 

    저장 2 • 조회 778


    직장인으로서 10년 정도 일하게 되면 피할 수 없는 순간이 바로 조직에서 리더의 역할을 받게 되는 인사발령이다. 팀원이었을 때는 내게 주어진 업무를 내가 가진 능력과 주변 동료들의 도움으로 해결하고, 그에 합당한 평가와 보상을 기다리며, 나쁘지 않는 리워드와 내 위치에 안도하며 또 새해를 맞이하고 하루하루를 버텨나가는 과정에 큰 어려움이 없다.

    ... 더 보기

     • 

    저장 3 • 조회 735


    📰 OpenAI가 ChatGPT의 커넥터 기능을 업데이트하면서 MCP 지원을 추가했네요.

    ... 더 보기

    2025 쿠팡이츠 테크 신입 개발자 공개 채용

    ... 더 보기

    2025 쿠팡이츠 테크 신입 개발자 공개 채용

    Coupang Careers

    2025 쿠팡이츠 테크 신입 개발자 공개 채용

    AI(LLM) 애플리케이션의 발전 속도가 AI 지능(능력)의 발전 속도를 따라가지 못하고 있는 상태가 되었다. 즉, 이제 AI가 부족한 것이 문제가 아니라, AI의 능력을 100% 활용하지 못하고 있는 것이 문제인 상태가 되었다는 이야기.