자동 번역 설정(베타)
Enterprise Advanced 플랜에서 사용할 수 있습니다.
Mattermost v11.5부터 자동 번역은 채널 메시지를 각 사용자가 선호하는 표시 언어로 자동 번역합니다. 덕분에 다국어 팀이 언어 장벽 없이 협업할 수 있습니다.
자동 번역은 비동기 큐 기반 아키텍처를 사용합니다. 자동 번역이 활성화된 채널에 메시지가 게시되면 구성된 모든 대상 언어로의 번역이 큐에 등록됩니다. 표시 언어가 대상 언어와 일치하는 사용자에게는 번역된 메시지가 원문 대신 표시되며, 사용자는 메시지의 번역 아이콘을 선택해 언제든 원문을 볼 수 있습니다. 사용자의 번역 대상 언어는 Mattermost 표시 언어(Settings > Display > Language(설정 > 표시 > 언어)에서 설정)로 결정되며, 번역 대상 언어를 표시 언어와 분리하는 것은 현재 지원되지 않습니다.
번역 공급자는 두 가지 중에서 선택할 수 있습니다.
- LibreTranslate: 자체 호스팅 오픈 소스 기계 번역 엔진입니다.
- Agents: LLM 백엔드가 구성된 Mattermost Agents 플러그인을 사용합니다.
시작하기 전에
- Mattermost Enterprise Advanced 라이선스가 필요합니다.
- 번역 공급자를 선택하고 해당 인프라를 사용할 수 있는지 확인하세요.
- LibreTranslate: Mattermost 서버에서 접근할 수 있는 LibreTranslate 서버가 실행 중이어야 합니다.
- Agents: Mattermost Agents 플러그인이 설치되어 있고 LLM 서비스가 하나 이상 구성되어 있어야 합니다.
자동 번역 설정
번역 공급자 구성
다음 번역 공급자 중 하나를 선택해 해당 설정 절차를 따르세요.
LibreTranslate 설정
LibreTranslate는 자체 호스팅 오픈 소스 기계 번역 엔진입니다. 배포 방법은 LibreTranslate 설치 가이드를 참고하세요.
LibreTranslate 서버가 실행되면 다음과 같이 하세요.
- System Console > Site Configuration > Localization(시스템 콘솔 > 사이트 구성 > 지역화)으로 이동합니다.
- Translation provider를
libretranslate로 설정합니다. - LibreTranslate URL을 입력합니다(예:
http://libretranslate.internal:5000). - LibreTranslate 인스턴스에 인증이 필요하다면 LibreTranslate API key를 입력합니다.
- Save를 선택합니다.
Mattermost 서버가 네트워크를 통해 LibreTranslate URL에 접근할 수 있어야 합니다. 방화벽 규칙과 DNS 해석이 Mattermost 서버와 LibreTranslate 인스턴스 간 연결을 허용하는지 확인하세요.
Agents 공급자 설정
Agents 공급자는 Mattermost Agents 플러그인을 사용해 구성된 LLM 서비스로 메시지를 번역합니다.
사전 요구 사항:
- Mattermost Agents 플러그인이 설치되어 활성화되어 있어야 합니다.
- Agents 플러그인에 LLM 서비스가 하나 이상 구성되어 있어야 합니다.
구성하려면 다음과 같이 하세요.
- System Console > Site Configuration > Localization으로 이동합니다.
- Translation provider를
agents로 설정합니다. - Agents 플러그인에 구성한 LLM 서비스와 일치하는 Agents LLM service ID를 입력합니다.
- Save를 선택합니다.
LibreTranslate와 Agents 중 선택하기: LibreTranslate는 가볍고 자체 호스팅이 가능한 번역 엔진입니다. Agents 공급자는 LLM 백엔드를 사용하며 일반적으로 더 정확한 번역을 제공하는데, 특히 맥락 이해가 품질을 좌우하는 일본어, 한국어, 중국어 같은 언어에서 그렇습니다. 번역 품질 요구 사항과 기존 인프라를 함께 고려해 선택하세요. LibreTranslate는 모든 언어 쌍에 대해 직접 번역을 지원하지는 않으며, 지원되지 않는 조합에서는 중간 언어(대개 영어)를 거치는 피벗 번역을 수행하므로 해당 언어 쌍의 정확도가 떨어질 수 있습니다.
Agents 공급자에 사용할 LLM 선택하기: 자동 번역에는 더 작고 빠른 모델을 권장합니다. 번역은 정의가 명확한 작업이라 큰 모델의 확장된 추론 능력에서 얻는 이점이 없습니다. 오히려 큰 모델은 작업을 과도하게 분석해 품질 향상 없이 불필요한 지연만 더할 수 있습니다. 구성한 LLM 공급자가 현재 지원하고 여러분의 환경에서 검증된, 작고 지연이 낮은 모델을 선택하세요.
자동 번역 활성화
- System Console > Site Configuration > Localization으로 이동합니다.
- Enable autotranslation을 True로 설정합니다.
- Translation provider(
libretranslate또는agents)를 선택합니다. - Languages allowed를 구성합니다. 자동 번역이 활성화된 채널의 모든 메시지가 이 목록의 각 언어로 번역됩니다.
- Save를 선택합니다.
Languages allowed 목록에 나타나는 언어는 Site Configuration > Localization 아래의 Available languages 설정(AvailableLocales)으로 제어됩니다. 이 필드가 비어 있으면 지원되는 모든 언어를 사용할 수 있고, 값이 있으면 나열된 언어만 자동 번역 대상으로 선택할 수 있습니다. EnableExperimentalLocales 설정을 사용하면 추가 로캘 코드를 사용할 수 있습니다. 일부 로캘(예: zh-Hans)은 베타 상태이며 Mattermost UI 일부가 여전히 영어로 표시될 수 있는데, 이는 UI 지역화의 제약일 뿐 메시지 번역에는 영향을 주지 않습니다.
다이렉트 메시지와 그룹 메시지에서 자동 번역을 활성화할 수 있는지를 제어하려면 Restrict autotranslation in direct and group messages 설정을 사용하세요.
사용할 수 있는 모든 설정은 자동 번역 구성 레퍼런스를 참고하세요.
채널에서 자동 번역 활성화
자동 번역은 채널 단위로 관리되며 모든 채널에서 기본적으로 비활성화되어 있습니다. 시스템 관리자와 채널 관리자는 개별 채널의 자동 번역을 활성화하거나 비활성화할 수 있습니다.
- 채널에서 자동 번역이 활성화되거나 비활성화되면 시스템 게시물이 채널 멤버에게 변경 사실을 알립니다.
채널에서 자동 번역을 활성화하면 이후 새로 올라오는 메시지만 번역됩니다. 기존 메시지 기록은 소급해 번역되지 않습니다.
워커 성능 조정
대부분의 배포에서는 기본 워커 설정으로 충분합니다. 메시지 양이 많거나, 구성한 대상 언어가 많거나, 번역 큐의 깊이가 계속 늘어나는 것이 관찰된다면 워커 수를 늘려야 할 수 있습니다. 이 섹션에서는 적절한 값을 계산하고 모니터링하는 방법을 설명합니다.
번역 큐의 동작 방식
자동 번역이 활성화된 채널에 메시지가 게시되면 노드별 번역 큐에 추가됩니다. 워커가 해당 게시물을 가져와 구성된 각 대상 언어로 순차적으로 번역합니다. 언어별 번역이 완료될 때마다 채널로 웹소켓 브로드캐스트가 전송되므로 사용자는 번역이 실시간으로 도착하는 것을 볼 수 있습니다.
고가용성 배포에서는 각 노드가 자체 워커 풀을 실행하며 자신의 큐를 독립적으로 처리합니다.
워커 수 계산
각 노드에 필요한 워커 수는 다음 수식으로 추정합니다.
required_workers = ceil(
(posts_per_sec × pct_autotranslated × num_languages × avg_provider_latency_ms / 1000)
/ num_app_nodes
× 1.2
)
각 항목의 의미는 다음과 같습니다.
- posts_per_sec — 서버 전체의 평균 메시지 발생률.
- pct_autotranslated — 자동 번역이 활성화된 채널의 게시물 비율(0.0~1.0).
- num_languages — 구성된 대상 언어 수.
- avg_provider_latency_ms — 번역 공급자의 평균 응답 시간(밀리초).
- num_app_nodes — Mattermost 애플리케이션 노드 수.
- 1.2 — 트래픽 급증을 흡수하기 위한 여유 계수(20%).
다음 표는 동시 사용자 6,500명, 앱 노드 2대, 초당 약 5건의 게시물, 평균 공급자 지연 약 2초 조건에서 수행한 부하 테스트 결과입니다. 테스트에 사용한 공급자 지연 분포는 500ms에서 10초 사이의 구간을 500ms~1.5초 범위에 가중해 구성한 현실적인 분포이며, 평균은 약 2초였습니다.
| 대상 언어 수 | 자동 번역 비율 | 노드당 워커 수 |
|---|---|---|
| 7 | 100% | 38 |
| 6 | 100% | 32 |
| 3 | 75% | 8 |
6개 언어 테스트에서는 수식상 33이 나오지만, 구성된 최댓값 때문에 워커가 32로 제한되었습니다. 계산한 값에 맞게 Translation workers 설정을 조정하세요.
확장 시 고려 사항
- 대상 언어 수가 가장 큰 배수 요인입니다. 언어를 하나 추가할 때마다 게시물당 워커 처리 시간과 웹소켓 브로드캐스트 횟수가 함께 늘어납니다. 대상 언어 수를 줄이는 것이 부하를 낮추는 가장 효과적인 방법입니다.
- 웹소켓 트래픽은 언어 수에 비례해 증가합니다. 대상 언어마다 번역된 게시물당 채널 전체 웹소켓 브로드캐스트가 한 번씩 발생합니다. 부하가 높을 때 포화의 주된 증상은 연결별 전송 큐가 가득 차면서 발생하는 웹소켓 연결 끊김입니다.
- 공급자 지연이 트래픽 패턴을 좌우합니다. 지연이 짧으면 번역이 짧은 시간에 몰려 완료되면서 웹소켓 트래픽이 집중됩니다. 지연이 길면 이벤트가 시간에 걸쳐 분산됩니다. 공급자 응답 시간을 모니터링하고 용량 계획에 반영하세요.
Prometheus로 모니터링
Mattermost는 자동 번역에 대해 다음 Prometheus 메트릭을 노출합니다.
mattermost_autotranslation_queue_depth_total(Gauge) — 현재 큐에서 대기 중인 작업 수. 값이 계속 증가한다면 워커가 유입되는 게시물을 따라잡지 못하고 있다는 뜻입니다.mattermost_autotranslation_provider_call_duration_seconds(Histogram, 레이블: provider, result) — 번역 공급자 지연. 위 수식의avg_provider_latency_ms값에 해당합니다. 다음 PromQL 질의로 평균을 계산합니다.rate(mattermost_autotranslation_provider_call_duration_seconds_sum{result="success"}[10m]) / rate(mattermost_autotranslation_provider_call_duration_seconds_count{result="success"}[10m])mattermost_autotranslation_worker_task_duration_seconds(Histogram) — 워커가 게시물 하나를 모든 대상 언어로 처리하는 데 걸린 총 시간.
구성 레퍼런스
- Translation workers: 노드당 동시 워커 수입니다. 기본값은 6입니다. 트래픽이 많은 배포에서는 이 값을 늘리고, 리소스 사용을 줄이려면 낮추세요.
- Translation timeout: 번역 요청 하나의 최대 처리 시간(밀리초)입니다. 기본값은 5000ms(5초)입니다. 네트워크 지연이나 높은 부하로 번역 공급자에서 타임아웃이 발생한다면 이 값을 늘리세요.
mmctl을 사용해 명령줄에서 워커 수를 변경할 수도 있습니다.
mmctl config set AutoTranslationSettings.Workers <number>
자주 묻는 질문
메시지가 번역되지 않는 이유는 무엇인가요?
- System Console > Site Configuration > Localization에서 자동 번역이 전역으로 활성화되어 있는지 확인하세요.
- 해당 채널에서 자동 번역이 활성화되어 있는지 확인하세요.
- 번역 공급자가 선택되어 있고 올바르게 구성되어 있는지 확인하세요.
- Mattermost 서버가 번역 공급자(LibreTranslate URL 또는 Agents 플러그인)에 접근할 수 있는지 확인하세요.
- Mattermost 서버 로그에서 번역 오류를 확인하세요.
번역 공급자를 사용할 수 없으면 어떻게 되나요?
메시지는 정상적으로 게시됩니다. 공급자 다운타임으로 실패한 번역은 건너뛰며 사용자에게는 번역되지 않은 원문이 표시됩니다. 공급자가 복구되면 새 메시지는 정상적으로 번역됩니다.
어떤 언어가 지원되나요?
지원 언어는 번역 공급자에 따라 다릅니다.
- LibreTranslate: 배포한 LibreTranslate에서 제공하는 언어를 지원합니다. 자세한 내용은 LibreTranslate 언어 목록을 참고하세요.
- Agents: 언어 지원 범위는 구성한 LLM의 성능에 따라 달라집니다. 최신 LLM 대부분은 폭넓은 언어를 지원합니다.
모든 메시지를 어떤 언어로 번역할지 지정하려면 Languages allowed 설정을 구성하세요.