들어가며 배달의민족에서 음식을 주문할 때 카테고리를 누르면 만나는 화면, 바로 가게목록입니다. 사용자가 가게를 탐색하는 첫 관문이자, 가장 트래픽이 많은 지면 중 하나입니다. 이 글은 그 가게목록 지면의 통신 구조를 재설계한 이야기입니다. 클라이언트가 여러 서버에 각각 요청을 보내던 구조를 하나의 API로 통합하고(1지면 1API), 통합이 만들어낼 병목을 SSE(Server-Sent Events) 스트리밍으로 풀어낸 두 번의 의사결정 과정을 소개합니다. ‘가게목록’이 가게목록이 아니게 되기까지 배달의민족 초기 가게목록 지면은 담백했습니다. 화면에는 말 그대로 가게 리스트만 있었습니다. 이름 그대로의 ‘가게목록’이었습니다. 지금의 가게목록은 어떨까요? 한 지면을 위에서 아래까지 펼쳐 보았습니다. 같은 지면이 맞나 싶을 정도로 많은 것이 생겼습니다. 상단 광고배너 상단 큐레이션 가게 리스트 사이사이에 들어가는 큐레이션 가게 리스트 사이사이에 들어가는 광고배너 다른 가게목록 주제로 넘어가는 테마배너 영역 처음에는 큐레이션 하나가 추가된 정도였습니다. 그런데 서비스가 성장하면서 큐레이션은 점점 늘었고, 극단적인 지면 기준으로는 한 화면에 들어가는 구좌(지면 안의 전시 영역 단위)가 12개에 이릅니다. 지면의 이름은 여전히 ‘가게목록’이었습니다. 하지만 실체는 더 이상 가게목록이 아니었습니다. 가게 리스트에 테마배너, 큐레이션, 광고배너가 섞여 편성되는 하나의 통합 전시 지면이 되어 있었습니다. 문제는 이름과 실체의 괴리가 통신 구조에도 그대로 남아 있었다는 점입니다. 하나의 지면을 그리기 위해 N개의 서버와 통신하다 구좌가 하나 추가될 때마다 클라이언트는 그 구좌의 담당 서버에 요청을 하나씩 추가해 왔습니다. 그 결과, 사용자가 가게목록에 진입하는 순간 클라이언트는 여러 서버에 각각 요청을 보내야 하는 구조가 되었습니다. 일부 구좌는 같은 서버를 바라보기도 하지만, 하나의 지면에 클라이언트가 통신해야 하는 여러 서버가 얽혀 있다는 사실은 변하지 않습니다. 호출 플로우도 단순하지 않았습니다. 먼저 지면 편성을 조회하는 API를 호출하고, 그 편성 결과에 따라 각 구좌의 서버들을 병렬로 호출하는 두 단계의 연쇄 구조였습니다. 이 구조가 만드는 고통은 입장마다 달랐습니다. 클라이언트 입장. 하나의 지면을 그리기 위해 다수의 서버와 통신해야 했습니다. 지면에 새로운 구좌가 하나 생길 때마다, 클라이언트는 그 구좌의 담당 서...
BFF 서버에 SSE를 도입한 이유: 전시 서버의 통신 구조 재설계
Related
한 연구자가 noreply.net을 샀더니 기업 기밀이 쏟아짐
13 minutes ago
0
프랑스, 사전 동의 없는 텔레마케팅 전화 금지
42 minutes ago
0
GitHub Actions에 OIDC audience 제약이 필요한 이유
2 hours ago
0
H3-metal - Apple Silicon용 네이티브 MiniMax-H3 추론
2 hours ago
1
AI가 웹을 잠식하면서 인터넷의 집단 기억이 사라지고 있음
3 hours ago
1
Rails는 DHH 없이도 Rails일 수 있을까
5 hours ago
1
LLM은 PCB 배선을 어디까지 할 수 있을까? 숙련자와 Net 단위로 비교해봤습니다
5 hours ago
1
Hanami - Rails를 대체하는 Ruby 프레임워크
6 hours ago
2
Tips
click
Popular
What's New in SAP S/4HANA Cloud Public Edition 2608 | Releas...
3 weeks ago
209
Codex 사용량 한도 리셋 추적
3 weeks ago
88
NVIDIA·CoreWeave·Nebius가 만든 GPU 붐의 순환 금융 구조
4 weeks ago
62
'킬러들의 쇼핑몰2' 감독 "시즌3 고민 중"⋯이동욱 "시키면 ...
3 weeks ago
57
© Clint IT 2026. All rights are reserved









English (US) ·