-
[번역 서비스] 번역 시스템 설계Work 2024. 12. 29. 23:18
라운지 커뮤니티 : https://lounge.onstove.com/
📌 기능 요구사항
Q. 번역은 어디에 적용되나요?
- 게시글과 댓글에 모두 적용된다.
- 게시글은 조회했을 때 요청 언어에 해당하는 번역이 자동으로 노출되어야 하고, 댓글은 사용자가 '번역 보기'를 클릭했을 때 번역이 노출되어야 한다.
- 게시글, 댓글이 수정된 경우 수정된 내용에 대한 번역이 노출되어야 한다.
Q. 실시간 시스템이어야 하나요?
- 게시글 번역은 준 실시간 시스템을 허용한다. 게시글 등록 및 수정 후 새로고침했을 때 번역이 자동으로 노출되면 된다.
- 댓글 번역은 사용자가 '번역 보기'를 클릭했을 때 번역이 바로 노출되어야 한다.
Q. 번역은 누가 만들 수 있나요?
- 게시글 번역은 게시글 등록 및 수정되었을 때 자동으로 생성되어야 한다. 따라서 서버측에서 생성한다.
- 댓글 번역은 사용자가 '번역 보기'를 클릭했을 때 번역이 생성된다. 따라서 서버측에서 생성한다.
📌 설계
번역 구현 방안
- 사내 번역 서비스를 사용한다. (해당 번역 서비스는 google 번역을 사용하고 있음)
- 사내 번역 서비스는 언어 감지 및 번역 생성 기능을 제공한다.
번역 생성 방안
1) 동기 방식
- 게시글 등록/수정 요청 시 등록/수정 처리와 함께 번역을 생성한다.
- 댓글 번역보기 요청 시 번역을 생성한다.
문제점
- 게시글 번역
- 라운지의 모든 요청을 처리하는 메인 서버에 게시글 번역 기능까지 추가하게 되면 역할이 너무 커진다.
- 게시글 등록/수정 처리 로직에서 번역 생성까지 동기적으로 처리하게 되면 로직이 커지게 된다.
- 번역은 외부 서비스 통신이 필요하기 때문에 성능 병목이 생길 수 있고, 외부 서비스의 장애로 인해 게시글 등록/수정이 영향을 받을 수 있다. (번역 생성은 실패하더라도 게시글 등록/수정에는 영향이 없어야 함)
2) 비동기 방식 --> 최종적으로 선택한 구조
- 게시글 번역은 준 실시간을 허용하므로 Kafka를 사용해 게시글 번역 생성을 비동기로 처리한다.
선택 이유
- Kafka를 사용해 게시글 등록/수정과 번역 생성 처리를 분리하여 기존 로직에 영향을 주지 않고 느슨한 결합을 만들 수 있다.
- 라운지 서비스와 번역 처리 서버가 독립적으로 확장 가능하다.
'Work' 카테고리의 다른 글
[번역 서비스] 로직 구현 시 고민한 부분 (0) 2025.01.30 [번역 서비스] 적용 - Delayed Retry Topic (0) 2025.01.28 [번역 서비스] 개선 - 번역 실패 모니터링 및 재처리 (0) 2025.01.09 [번역 서비스] 개선 - 번역 실패 모니터링 아키텍처 (0) 2025.01.08