ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [번역 서비스] 번역 시스템 설계
    Work 2024. 12. 29. 23:18

    라운지 커뮤니티 : https://lounge.onstove.com/

     

    📌 기능 요구사항

    Q. 번역은 어디에 적용되나요?

    • 게시글과 댓글에 모두 적용된다.
    • 게시글은 조회했을 때 요청 언어에 해당하는 번역이 자동으로 노출되어야 하고, 댓글은 사용자가 '번역 보기'를 클릭했을 때 번역이 노출되어야 한다.
    • 게시글, 댓글이 수정된 경우 수정된 내용에 대한 번역이 노출되어야 한다.

     

    Q. 실시간 시스템이어야 하나요?

    • 게시글 번역은 준 실시간 시스템을 허용한다. 게시글 등록 및 수정 후 새로고침했을 때 번역이 자동으로 노출되면 된다.
    • 댓글 번역은 사용자가 '번역 보기'를 클릭했을 때 번역이 바로 노출되어야 한다.

     

    Q. 번역은 누가 만들 수 있나요?

    • 게시글 번역은 게시글 등록 및 수정되었을 때 자동으로 생성되어야 한다. 따라서 서버측에서 생성한다.
    • 댓글 번역은 사용자가 '번역 보기'를 클릭했을 때 번역이 생성된다. 따라서 서버측에서 생성한다.

     

    📌 설계

    번역 구현 방안

    • 사내 번역 서비스를 사용한다. (해당 번역 서비스는 google 번역을 사용하고 있음)
    • 사내 번역 서비스는 언어 감지 및 번역 생성 기능을 제공한다.

     

    번역 생성 방안

    1) 동기 방식

    게시글 번역

    • 게시글 등록/수정 요청 시 등록/수정 처리와 함께 번역을 생성한다.

     

    댓글 번역

    • 댓글 번역보기 요청 시 번역을 생성한다.

     

    문제점

    • 게시글 번역
      • 라운지의 모든 요청을 처리하는 메인 서버에 게시글 번역 기능까지 추가하게 되면 역할이 너무 커진다.
      • 게시글 등록/수정 처리 로직에서 번역 생성까지 동기적으로 처리하게 되면 로직이 커지게 된다.
      • 번역은 외부 서비스 통신이 필요하기 때문에 성능 병목이 생길 수 있고, 외부 서비스의 장애로 인해 게시글 등록/수정이 영향을 받을 수 있다. (번역 생성은 실패하더라도 게시글 등록/수정에는 영향이 없어야 함)

     

    2) 비동기 방식 --> 최종적으로 선택한 구조

    게시글 번역

    • 게시글 번역은 준 실시간을 허용하므로 Kafka를 사용해 게시글 번역 생성을 비동기로 처리한다.

     

    선택 이유

    • Kafka를 사용해 게시글 등록/수정과 번역 생성 처리를 분리하여 기존 로직에 영향을 주지 않고 느슨한 결합을 만들 수 있다.
    • 라운지 서비스와 번역 처리 서버가 독립적으로 확장 가능하다.

    댓글

Designed by Tistory.