AI

배민 다국어 서비스 — 5년 백로그를 LLM으로 19일에 끝낸 이야기

5년간 미루던 다국어 번역 파이프라인을 Claude Haiku에서 Amazon Nova로 전환하며 19일 만에 완성한 우아한형제들의 기술 스택과 구현 구조.

6 min read
LLM다국어번역 자동화Spring AIAmazon Bedrock
배민 다국어 서비스 — 5년 백로그를 LLM으로 19일에 끝낸 이야기

5년 된 백로그

2026년 1월 14일, 배민 팀이 다국어 서비스 개발을 시작했다. 2월 3일에 끝냈다. 19일이다. 5년 동안 아무도 못 건드린 일이었다.

왜 5년이 걸렸을까. 번역 대상이 너무 많았다. 수십만 개의 가게 정보, 수천만 개의 메뉴. 각 메뉴는 영어, 일본어, 중국어로 번역돼야 하고, 가게가 메뉴를 바꿀 때마다 실시간으로 반영돼야 한다. 사람이 하면 인력이 감당이 안 되고, 기존 번역 API는 퀄리티가 문제였다. LLM이 이 방정식을 바꿨다.


기술 스택

구성 요소기술역할
LLMAmazon Nova 2 Lite메뉴/가게명 번역
인프라AWS BedrockLLM API 호스팅
프레임워크Spring AI BedrockJava 서버에서 LLM 연동
데이터 허브FDH (Food Data Hub)가게/메뉴 데이터 원천
UI 문구i18n정적 문구 1,600개 이상 관리

처음에는 Claude Haiku로 시작했다. 번역 품질은 좋았지만 비용과 속도 측면에서 Amazon Nova 2 Lite로 전환했다. 실제 배민 서비스처럼 수천만 건을 처리할 때는 단가와 처리량이 더 중요해진다.

[💡 잠깐! 이 용어는?] FDH (Food Data Hub): 배민 내부 플랫폼으로, 가게·메뉴 정보를 통합 관리하는 데이터 허브. 번역 파이프라인의 입력 데이터를 여기서 받는다.


파이프라인 구조

두 개의 파이프라인으로 나뉜다.

번역 파이프라인 (이벤트 기반)

가게나 메뉴 데이터가 변경될 때 이벤트가 발행된다. 파이프라인이 이벤트를 받아 LLM에게 번역을 요청하고, 결과를 언어별 메타데이터로 저장한다.

FDH 데이터 변경 이벤트
  → 번역 파이프라인 트리거
  → Amazon Nova 2 Lite API 호출
  → 영어/일본어/중국어 번역 결과 수신
  → 역번역으로 품질 검증
  → 언어별 메타데이터 저장

역번역 검증이 핵심이다. "짜장면" → "Jajangmyeon" → 다시 번역 → "짜장면"이 나오면 품질이 확보된 것으로 간주한다. 완벽하진 않지만 명백한 번역 실패를 걸러낸다.

응답 처리 파이프라인

사용자 요청이 들어오면 Accept-Language 헤더를 분석해서 언어를 판별하고, 저장된 번역 메타데이터를 매핑해서 응답한다. 번역은 이미 완료된 상태라 런타임 비용이 없다.

HTTP 요청
  → Accept-Language 헤더 파싱
  → 언어별 메타데이터 조회
  → 번역된 가게/메뉴 정보 응답

정적 문구는 i18n으로 분리

LLM 번역은 동적 콘텐츠(가게명, 메뉴명)에만 쓴다. "주문하기", "장바구니", "결제" 같은 UI 고정 문구 1,600개 이상은 i18n으로 관리한다.

이 분리가 중요하다. UI 문구를 LLM으로 번역하면 매 배포마다 번역 결과가 달라질 수 있다. "장바구니"가 어떤 날은 "Shopping Cart"이고 어떤 날은 "Cart"가 되면 사용자 혼란이 생긴다. 정적 문구는 i18n 파일에 고정, 동적 콘텐츠는 LLM 자동화로 역할을 나눈 것이다.


19일이 가능했던 이유

기술보다 흥미로운 건 속도다. 팀은 기획서 없이 PoC 먼저 만들었다. "이게 돼요"를 말로 설득하는 대신, 실제로 동작하는 걸 보여주고 의사결정을 얻었다. 그 다음이 구현이었다.

범위 최소화도 결정적이었다. "오픈하는 데 반드시 필요한 것"만 구현했다. 번역 품질 UI, 번역 수정 기능, 상세 오류 처리 — 이것들은 전부 이후 태스크다. MVP에 집중하지 않으면 "다 되면 오픈하겠다"는 식으로 계속 미뤄진다.


마무리

이 프로젝트의 기술적 교훈은 하나다. LLM이 번역 파이프라인의 "다시 시도할 만한" 수준이 됐다는 것이다. 예전 번역 API로는 퀄리티 문제 때문에 포기했던 일을 다시 꺼낼 수 있게 됐다. 역번역 검증처럼 간단한 품질 보증 레이어를 얹으면 실서비스에서 쓸 수 있는 수준이 된다.

5년 백로그를 19일에 끝낸 건 LLM 덕분이기도 하지만, "지금 당장 오픈할 수 있는 최소한"을 정한 팀의 판단력 덕분이기도 하다.


참고: