AWS 기술 블로그
버드뷰가 이끄는 화해의 K-뷰티 글로벌화: Amazon Bedrock 기반 글로벌 번역 서비스 구축 여정
버드뷰(Birdview) & 화해(Hwahae) 소개
화해(Hwahae)는 2013년 버드뷰(Birdview)가 출시한 이후 국내 뷰티 시장의 혁신을 주도하고 있는 대표적인 뷰티 플랫폼입니다. 현재 월간 130만 명 이상의 활성 사용자를 보유하고 있으며, 특히 20-30대 여성의 80% 이상이 사용하는 필수 뷰티 서비스로 자리잡았습니다. 화해는 뷰티 소비자의 똑똑한 선택을 통해 인디 브랜드의 성장 기회를 제공함으로써 뷰티 시장의 성장을 선도하는 서비스입니다. 실 사용자의 약 890만건에 달하는 꼼꼼하고 솔직한 리뷰를 비롯하여 제품별 성분 정보, 나에게 맞는 제품 랭킹 서비스를 통해 소비자의 똑똑한 선택을 돕고 있습니다.
K-뷰티의 2024년 상반기 북미 수출액이 역대 최대를 기록하는 등 세계적인 수요가 증가함에 따라, 화해는 해외 소비자들을 위해 “가장 신뢰받는 K-뷰티 랭킹”이 포함된 글로벌 버전을 출시했습니다. 이를 통해 해외 소비자들은 한국 소비자들의 실제 사용 리뷰와 이를 기반으로 한 랭킹을 영어로 확인하며, K-뷰티 제품에 대한 정보를 손쉽게 얻을 수 있게 되었습니다.
글로벌 번역 서비스 구축 배경
화해는 K-뷰티의 글로벌 성장세에 발맞춰 해외 소비자들에게 정확하고 신뢰할 수 있는 정보를 제공하기 위해 자사가 보유한 제품 정보와 리뷰 데이터의 영문화를 진행했습니다. 특히 화해는 AI 기술을 활용해 카테고리별 랭킹, 리뷰 토픽, 화장품 성분 정보 등 핵심 기능들을 영문으로 구현한 ‘화해 글로벌 웹‘을 출시했습니다.
이 과정에서 가장 큰 과제는 약 890만 건에 달하는 방대한 양의 리뷰 데이터 번역이었는데, 이는 글자 수로 환산하면 약 17억 자에 이르는 분량이었습니다. 초기에는 전문 번역가를 통한 리뷰 번역을 고려했으나, 프로젝트를 본격적으로 진행하면서 시간과 비용 측면에서 현실적인 어려움이 예상되어 대안을 모색하게 되었습니다.
이러한 상황에서 대규모 텍스트 번역을 효율적으로 처리할 수 있는 다양한 솔루션을 검토한 결과, Amazon Bedrock의 생성형 AI 기능이 방대한 리뷰 데이터의 번역에 가장 적합할 것으로 판단했습니다. 따라서, 아래와같이 AI 모델별 성능과 품질을 테스트한 후, 최종적으로 Amazon Bedrock을 번역 솔루션으로 도입하기로 결정했습니다.
- Claude 3.5 Sonnet, Claude 3 Haiku 모델 비교
화해는 리뷰 번역을 위한 Amazon Bedrock 도입 시 예상 비용을 시뮬레이션했습니다. 한글 텍스트의 경우 1토큰당 2글자로 가정했으며, 출력 토큰의 길이는 입력 토큰과 비슷할 것으로 예상했습니다. 초기 번역 대상인 17억 자는 약 8.5억 토큰으로, 월별 업데이트되는 160만 자의 리뷰는 약 80만 토큰으로 환산했습니다.
비용 분석 결과, Claude 3 Haiku의 비용이 Claude 3.5 Sonnet보다 10배 이상 저렴한 것으로 나타났습니다. 따라서 단순 번역 작업의 경우 Claude 3 Haiku가 더 비용 효율적인 선택이 될 수 있음을 확인했습니다. - 모델별 번역 결과물에 대한 비교
화해는 리뷰 번역의 품질을 평가하기 위해 두 가지 핵심 기준을 설정했습니다. 첫째, 번역문이 자연스러운 구어체로 표현되었는지, 둘째, 원문의 맥락이 어색함 없이 정확하게 전달되었는지를 중점적으로 살펴보았습니다. 다양한 유형의 리뷰 샘플을 선정하여 두 모델로 번역을 진행한 후, 사내에 있는 네이티브 스피커들의 평가를 실시했습니다.
평가 결과, Claude 3 Haiku가 번역의 품질 면에서 더 우수한 점수를 받았으며, 비용 효율성까지 고려했을 때 모든 면에서 우세하여 최종적으로 Claude 3 Haiku를 번역 모델로 채택했습니다.
화해의 Amazon Bedrock 기반 번역 시스템 아키텍처
아키텍처는 크게 두 가지 번역 프로세스로 구성되어 있습니다:
- 실시간 비동기 번역 프로세스
실시간으로 업데이트되는 데이터의 안정적인 번역을 위해 Seoul 리전에 이중 VPC 구조를 채택했습니다. 서비스 VPC에는 Amazon ECS와 Amazon RDS를 구성하여 기본 서비스를 운영하고, 별도의 VPC에 Amazon Bedrock Claude 3 Haiku 모델을 호출하여 번역을 처리합니다. - 대규모 데이터 일괄 번역 프로세스
약 890만 개에 달하는 누적 리뷰의 신속한 번역을 위해 다중 리전 구조를 도입했습니다. Oregon과 Virginia 리전에 각각 VPC를 구성하고 Amazon Bedrock Claude 3 Haiku를 설치했으며, cross-region inference를 통해 이들을 연결했습니다.
이러한 이중 구조를 통해 일상적인 실시간 업데이트와 대규모 일괄 번역 작업을 효율적으로 처리할 수 있도록 설계되었습니다.
1. 실시간 비동기 번역 프로세스
위 그림은 실시간 데이터를 비동기 방식으로 번역하는 과정입니다.
- 데이터 생성 또는수정 요청
Amazon API Gateway를 통해 들어온 요청이 ALB(Application Load Balancer)를 거쳐 처리됩니다. 이는 새로운 데이터 생성이나 기존 데이터 수정에 대한 요청을 포함합니다. - 데이터 저장
API 서버는 전달받은 데이터를 Amazon RDS에 저장합니다. 이 과정에서 번역이 필요한 데이터인지 확인하는 로직이 포함됩니다. - 이벤트 발행
번역이 필요한 데이터로 확인되면, API 서버는 Amazon SQS에 번역 이벤트를 발행합니다. 이 이벤트에는 번역할 내용과 관련 메타데이터가 포함됩니다. - 워커 동작
Amazon SQS에 저장된 이벤트는 비동기 워커에 의해 처리됩니다. 워커는 이벤트를 수신하여 번역 작업을 위한 비동기 함수를 실행합니다. - 데이터 번역
비동기 워커는 별도 VPC에 구성된 Amazon Bedrock Claude 3 Haiku에 번역을 요청합니다. 이때 설정된 대상 언어(target language)와 고유명사 처리 규칙이 적용됩니다. - 번역 데이터 저장
번역이 완료된 데이터는 다시 Amazon RDS에 저장되어 원본 데이터와 함께 관리됩니다. 이로써 하나의 번역 사이클이 완료됩니다.
이러한 비동기 처리 방식을 통해 실시간으로 입력되는 데이터를 안정적으로 처리할 수 있습니다.
a. 범용적으로 사용하기위한 코드 구성
i. 번역 프롬프트 설계
화해는 Amazon Bedrock Claude 모델을 활용한 번역 시스템에서 다양한 언어 지원을 위한 유연한 프롬프트 템플릿을 구성했습니다.
번역 프롬프트는 크게 세 가지 주요 요소로 구성됩니다:
- 번역 대상 언어 지정
target_language 파라미터를 통해 번역하고자 하는 목표 언어를 유연하게 지정할 수 있습니다. 이를 통해 영어뿐만 아니라 다양한 언어로의 번역이 가능합니다. - 동의어 처리
synonyms 파라미터를 통해 특정 용어나 브랜드명과 같은 고유 명사에 대한 동의어 목록을 제공합니다. 이를 통해 맥락에 맞는 일관된 번역을 보장합니다. - 출력 형식 정의
split_key_text를 기준으로 번역된 텍스트를 구조화하여 출력합니다. 이는 번역 결과물의 일관성을 유지하고 후처리를 용이하게 합니다.
ii. 번역 서비스 구현
화해는 다양한 도메인의 데이터 번역을 효율적으로 처리하기 위해 별도의 번역 서비스를 구현했습니다. 이 서비스는 번역이 필요한 컬럼과 모델 데이터만 설정하여 이벤트를 발행하면 자동으로 번역이 수행되는 구조로 설계되었습니다.
다음 코드는 실제 구성한 Django Translation을 활용한 LLM Service 클래스 생성자 입니다.
고유명사를 효과적으로 번역하기 위해 Django의 gettext 기능을 활용합니다. 서비스가 초기화될 때 목표 언어와 동의어 목록을 입력받아, Django의 번역 시스템을 해당 언어로 활성화하고 각 고유명사에 대한 번역을 수행합니다. 번역된 결과는 LLM의 시스템 프롬프트에 자동으로 주입되어 활용됩니다.
현재는 처리해야 할 고유명사의 수가 많지 않아 Django의 번역 시스템만으로도 충분히 서비스를 운영할 수 있습니다. 다만 향후 데이터가 증가할 것을 고려하여 OpenSearch와 같은 검색 엔진으로의 전환 가능성도 열어두고 있습니다. 새로운 고유명사를 추가하려면 해당 언어의 번역 파일에 미리 등록하고 컴파일하는 과정이 필요합니다.
ii. LLM을 활용한 효율적인 번역 서비스 동작
화해는 텍스트 번역 시 LLM의 성능을 최대한 활용하면서도 안정적인 결과를 얻기 위해 위 코드와 같이 구성하였습니다.
- 번역 프로세스의 핵심 구성
translate 메서드는 다음 세 단계로 동작합니다:- 전달받은 모델에서 번역이 필요한 필드들의 원본 텍스트를 추출합니다.
- 텍스트를 1024자 단위로 분할합니다.
- 분할된 각 텍스트를 번역하고 결과를 취합합니다.
- 효율적인 번역 처리
LLM의 특성을 고려해 다음과 같은 최적화 전략을 적용했습니다:- 이미 목표 언어로 작성된 텍스트는 번역 과정을 건너뜁니다.
- 대화 이력(conversation)을 유지해 문맥을 고려한 번역을 수행합니다.
- 분할된 텍스트의 번역 결과를 순차적으로 누적해 최종 결과를 생성합니다.
- 오류 처리와 모니터링
번역 과정에서 발생할 수 있는 다음과 같은 오류 상황을 처리합니다. 모든 오류는 로그로 기록되어 모니터링할 수 있으며, 오류 발생 시 해당 필드의 번역은 빈 문자열로 처리됩니다.- 파싱 오류: 응답 형식이 예상과 다른 경우
- 키 오류: split key를 찾을 수 없는 경우
- 기타 알 수 없는 오류
- 환각 현상 방지
LLM의 특성상 한 번에 너무 많은 데이터를 전달하면 환각 현상(hallucination)이 발생할 수 있습니다. 이를 방지하기 위해 텍스트를 작은 단위로 나누어 처리하며, 응답에서 원하는 번역 결과만을 정확히 추출하기 위해 split key를 활용합니다. 이러한 방식으로 번역의 정확성과 신뢰성을 높일 수 있습니다.
2. 대규모 데이터 일괄 번역 프로세스
글로벌 서비스 런칭을 위해 890만 개의 리뷰와 제품 데이터를 2주 내에 영문으로 번역해야 하는 상황에서 앞선 실시간 번역 서비스로는 약 1개월이 소요될 것으로 예상되어 새로운 접근 방식이 필요한 상황이었습니다.
아키텍처 설계 방향
서비스의 안정성을 최우선으로 고려하여, 기존 서비스 환경과 완전히 분리된 번역 전용 아키텍처를 구축했습니다:
- 메인 서비스 영역: Seoul 리전의 Service VPC 내에 Amazon ECS와 RDS가 위치하여 기존 서비스를 안정적으로 운영
- 번역 처리 영역: Oregon과 Virginia 리전에 각각 Amazon Bedrock Claude 3 Haiku 모델을 배치하여 병렬 처리 가능한 구조 구성
- 연결 구조: Cross-region Inference를 통해 여러 리전의 LLM에 번역 작업을 분산하여 처리
이러한 멀티 리전 아키텍처는 번역 처리량을 극대화하면서도, 기존 서비스의 안정성을 해치지 않는 방식으로 설계되었습니다. 특히 두 개의 리전에 LLM을 분산 배치함으로써, 단일 리전 사용 시 발생할 수 있는 처리량 한계를 극복하고자 했습니다.
a. 범용적으로 사용하기위한 코드 구성
AWS의 boto3 SDK는 기본적으로 동기 방식으로 동작합니다. 890만 개의 리뷰 데이터를 순차적으로 처리하면 너무 많은 시간이 소요되기 때문에, 이를 개선하기 위해 비동기 처리 방식을 적용했습니다. 따라서, python의 asyncio와 run_in_executor를 활용하여 동기 함수를 비동기적으로 실행할 수 있도록 구현했습니다. 코드에서는 리뷰 데이터를 일정 크기로 분할(chunk)하고, 각 chunk 내의 리뷰들을 병렬로 처리합니다.
run_in_executor는 내부적으로 스레드 풀을 생성하여 비동기 작업을 관리합니다. 이를 최대한 활용하기 위해 인스턴스의 CPU 성능을 높게 설정하여 동시에 더 많은 번역 작업을 처리할 수 있도록 했습니다.
b. 멀티 리전으로 전체 데이터를 나눠서 동시에 번역 요청
처음에는 Virginia 리전만을 사용하여 번역을 진행했으나, 처리 속도 향상을 위해 Oregon 리전 Seoul 리전을 추가로 구성했습니다. 특히 Seoul 리전의 경우 AWS 측에 API 한도 증설을 요청하여 처리량을 대폭 늘릴 수 있었습니다.
– US 리전: Oregon과 Virginia를 크로스 리전으로 연결하여 총 2000개의 API 동시 처리 가능 (각 리전당 1000개)
– Seoul 리전: API 한도 증설을 통해 2000개의 요청 동시 처리 가능
또한, 대규모 데이터 번역을 위해 리전들(Oregon, Virginia)을 Cross-region Inference로 통합한 것입니다. 개별적으로 요청을 보내던 방식에서 벗어나, 두 리전을 하나의 엔드포인트로 묶어 효율적으로 관리할 수 있게 되었습니다.
이러한 멀티 리전 아키텍처 구성으로 전체 시스템의 번역 처리 용량을 4000개의 동시 요청까지 확장할 수 있었습니다. 특히 크로스 리전 구성을 통해 리전 간 부하 분산과 안정성을 모두 확보할 수 있었습니다.
c. 데이터 특성에 따른 System Prompt 최적화
성능 개선 전략으로 데이터의 길이에 따른 맞춤형 System Prompt 전략을 도입했습니다. 실시간 번역 서비스에서는 LLM의 환각 현상을 방지하고 높은 번역 정확도를 유지하기 위해 텍스트를 최소 단위로 분할하여 처리했습니다. 하지만 기존 리뷰 데이터를 분석해보니 매우 짧은 리뷰들이 상당수 존재한다는 것을 발견했습니다.
이러한 발견을 바탕으로 데이터 길이에 따라 다른 전략을 적용했습니다:
- 짧은 텍스트: 여러 개의 짧은 리뷰를 하나의 요청으로 묶어서 처리할 수 있도록 별도의 System Prompt를 설계했습니다. 이를 통해 API 호출 횟수를 줄이고 전체적인 처리 속도를 향상시켰습니다.
- 긴 텍스트: 기존처럼 세분화된 처리 방식을 유지하여 번역의 정확도를 보장했습니다.
아래는 코드는 데이터 특성에 따라 분기되는 system prompt와 user prompt template입니다.
- 긴 텍스트를 위한 프롬프트
긴 텍스트의 경우 기존의 검증된 방식을 유지했습니다. 단일 텍스트에 대해 정확한 번역을 수행하고, 결과를 명확한 구분자(split_key_text)를 통해 반환받는 방식을 사용했습니다. - 짧은 텍스트를 위한 프롬프트
짧은 텍스트들은 새로운 접근 방식을 도입했습니다:- 여러 개의 텍스트(good_text, bad_text, addition_text)를 하나의 요청으로 묶어서 처리
- 응답 형식을 JSON 형태로 지정하여 구조화된 데이터로 쉽게 파싱할 수 있도록 설계
- JSON 파싱이 실패하는 경우를 대비해 기존의 긴 텍스트용 prompt를 폴백(fallback) 옵션으로 활용
이러한 접근 방식은 매우 효과적이었습니다. 2000개의 번역 요청 중 실패 건수가 10개 미만으로 유지되어 99.5% 이상의 높은 성공률을 달성했습니다. 이는 데이터를 묶어서 처리하더라도 번역의 정확성과 안정성이 유지된다는 것을 입증했습니다. 이러한 이중 전략 접근 방식은 처리 속도를 향상시키면서도 높은 품질의 번역 결과를 보장할 수 있었습니다.
위 개선사항들로 인해 소요시간이 1달로 예상되었던 전체 데이터 번역 작업이 2주만에 끝낼 수 있었습니다.
서비스 구축 결과
화해는 글로벌 웹 서비스를 위한 대규모 번역 프로젝트 통해 K-뷰티 제품의 리뷰와 정보를 해외 소비자들에게 제공할 수 있었습니다. 영문으로 번역된 제품 정보와 리뷰를 통해 해외 소비자들은 한국의 뷰티 제품을 더욱 쉽게 이해하고 선택할 수 있게 되었습니다.
글로벌 웹 서비스 출시를 위한 대규모 번역 프로젝트의 주요 성과는 다음과 같습니다:
- 신속한 데이터 처리: 비동기 처리와 멀티 리전 활용으로 예상 소요 기간 1개월을 2주로 단축했습니다.
- 높은 처리 성능: 멀티 리전 아키텍처를 통해 최대 4,000개의 동시 번역 요청 처리가 가능해졌습니다.
- 안정적인 번역 품질: 데이터 특성에 따른 맞춤형 System Prompt 전략으로 99.5% 이상의 번역 성공률을 달성했습니다.
- 효율적인 리소스 활용: 짧은 텍스트의 일괄 처리를 통해 API 호출을 최적화하고 비용을 절감했습니다.
아래는 글로벌 웹 서비스를 오픈한 이후 사용자의 유입 추세입니다.
데이터를 통해 확인된 서비스 성과는 매우 좋은 결과를 보여줍니다. 주요 지표들을 살펴보면 다음과 같습니다.
- 사용자 유입이 꾸준히 증가하는 추세를 보이고 있으며, 특히 북미와 유럽 지역에서의 방문자 수가 증가하고 있습니다.
- 페이지별 체류 시간이 평균 3분 이상으로, 사용자들이 콘텐츠에 깊이 있게 관여하고 있음을 보여주고 있습니다.
- 리뷰 페이지와 제품 상세 페이지의 높은 방문률은 번역된 콘텐츠의 유용성을 입증하고 있습니다.
이러한 기술적 성과를 바탕으로 화해는 890만 건에 달하는 한국어 리뷰 데이터를 영어로 성공적으로 번역하여, 해외 소비자들에게 신뢰할 수 있는 K-뷰티 정보를 제공할 수 있게 되었습니다.
마무리
이번 프로젝트를 통해 화해는 Amazon Bedrock을 비롯한 클라우드 서비스와 AI 기술을 적극적으로 결합하여 방대한 양의 뷰티 관련 데이터를 다양한 언어로 정확하게 전달할 수 있는 토대를 마련했습니다. 특히 대용량 번역 작업을 단기간에 처리하기 위해 비동기 처리와 멀티 리전 활용, 번역 대상 데이터의 선별적 접근 등 여러 가지 최적화 전략을 도입하며 예상보다 훨씬 빠른 속도로 목표를 달성할 수 있었습니다. 이를 통해 글로벌 소비자들은 신뢰할 수 있는 번역 품질로 제공되는 K-뷰티 정보를 손쉽게 접하게 되었고, 화해는 해외 시장에서의 경쟁력을 한층 강화할 수 있었습니다.
앞으로 고유 명사 처리에 특화된 RAG 전략이나 시스템 프롬프트 형상 관리 솔루션 등 다양한 개선점을 적극 도입해나가며, 새로운 언어권으로의 확대와 서비스 개선을 지속적으로 이어갈 것입니다. 이를 통해 화해는 단순한 서비스 영역을 넘어 전 세계 소비자가 한국 뷰티 문화와 제품을 더욱 깊이 이해하고 즐길 수 있는 글로벌 플랫폼으로 성장해 나갈 것이라 기대합니다.