기술

대규모 커넥터를 위한 최상의 방법

우리는 대규모 커넥터 전략을 BWX의 동기화 요청 당 5000개 이상의 작업 단위를 생성하는 전략으로 정의합니다. BWX에서 작업 단위는 파일 + 워크플로 단계 + 언어 쌍의 조합입니다. 따라서 5개의 파일, 2개의 워크플로 단계(번역 + 검토) 및 5개의 언어로 구성된 프로젝트는 50개의 작업 단위를 생성합니다.
Gabriel Fairman
2 min
목차

우리는 BWX 당 동기화 요청마다 5000개 이상의 작업 단위를 생성하는 대규모 커넥터 전략을 정의합니다.BWX에서 작업 단위는 파일 + 워크플로 단계 + 언어 쌍의 조합입니다. 따라서 5개의 파일, 2개의 워크플로 단계(번역 + 검토) 및 5개의 언어로 구성된 프로젝트는 50개의 작업 단위를 생성합니다. 이러한 변수들을 곱하면 5000개의 작업 단위를 초과하는 것이 얼마나 어렵지 않은지 알 수 있습니다. 모든 것을 단일 프로젝트에 집중하고 싶은 유혹이 있을 수 있지만, 대규모 커넥터의 경우 언어 쌍별로 프로젝트를 그룹화하는 것이 가장 좋은 방법임을 우리의 경험은 보여줍니다. 이는 단순히 프로젝트를 정의하는 방식의 문제가 아니라 더 깊게 연관되어 있습니다. 이 기사에서는 이 결정의 영향을 다음과 같은 측면에서 분석해 보겠습니다:

  1. 메시지 브로커링
  2. 문제 해결
  3. 위험 완화
  4. 대기/성능
  5. 자동화 가능성
  6. 관리 용이성
  7. 확장성

메시지 브로커링1) 대규모 커넥터와 함께 메시징이 기하급수적으로 증가합니다. 우리는 동기화 요청 당 100만 개 이상의 메시지를 생성하는 커넥터를 보았습니다. 이로 인해 서버 활동과 성능 문제가 발생하며, 이는 프로젝트를 로캘별로 분할하여 완화할 수 있습니다. 문제 해결2) 이는 직접적으로 위험 완화와 관련이 있습니다. 우리는 동기화 요청 당 1백만 개 이상의 메시지를 생성하는 커넥터를 본 적이 있습니다. 이로 인해 서버 활동과 성능 문제가 발생하며, 이는 프로젝트를 로케일별로 분할하여 완화할 수 있습니다. 문제 해결2) 이는 직접적으로 위험 완화와 관련이 있습니다. 그러나 로컬라이제이션에서는 종종 특정 로케일에 제한된 문제와 해당 파일 집합의 구문 분석, 분할 및 사전/사후 처리에 어떤 영향을 미치는지를 볼 수 있습니다. 로케일 간의 분리를 통해 로케일별로 특정한 정규식, 처리 규칙, 분할을 생성할 수 있으며, 전체 아키텍처에 대한 유연성을 제공합니다. 이로 인해 서버 활동과 성능 문제가 발생하여 프로젝트를 로케일별로 분할하여 문제를 완화할 수 있습니다. 문제 해결2) 이는 직접적으로 위험 완화와 관련이 있습니다. 그러나 로컬라이제이션에서는 종종 특정 로케일에 제한된 문제와 해당 파일 집합의 구문 분석, 분할 및 사전/사후 처리에 어떻게 영향을 미치는지를 볼 수 있습니다. 로케일 간의 분리로 인해 전체 아키텍처에 대한 유연성이 훨씬 더 제공되는 로케일별 정규식, 처리 규칙, 분할을 생성할 수 있습니다. 전체적으로 아키텍처에 대한 더 성숙하고 예측 가능한 동작 패턴에 도달하기 위해 로케일별로 작업할 수 있으므로 전체적으로 작동하는 수정 사항에 제한되지 않고 반복할 수 있습니다. 위험 완화3) 로케일별로 프로젝트를 분리함으로써 관리 위험을 완화할 수 있습니다. 특정 로케일에서 문제가 발생한다고 해도 전체 pull-request/배송 메커니즘이 손상되는 것은 아닙니다. 전체적으로 작동하는 수정 사항에 제한되어 작업하는 대신 로케일별로 반복하고 로케일에 기반하여 더 성숙하고 예측 가능한 동작 패턴에 도달할 수 있습니다. 리스크 완화3) 로케일별로 프로젝트를 분리함으로써 관리 리스크를 완화할 수 있습니다. 특정 로케일에서 문제가 발생한다고 해도 전체 pull-request/배송 메커니즘이 손상되는 것은 아닙니다. 로케일 간의 분리를 통해 로케일별로 특정한 정규식, 처리 규칙, 분할을 생성하여 전체 아키텍처에 대해 훨씬 더 유연성을 제공할 수 있습니다. 전체적으로 작동하는 고정된 수정사항으로 제한되지 않고 로케일에 따라 반복하고, 로케일을 기반으로 더 성숙하고 예측 가능한 동작 패턴에 도달할 수 있습니다. 리스크 완화3) 로케일 당 하나의 프로젝트로 프로젝트를 분리함으로써 관리 리스크를 완화할 수 있습니다. 특정 로케일에서 문제가 발생한다고 해도 전체 pull-request/배송 메커니즘이 손상되는 것은 아닙니다. 문제를 격리하고 자연스럽게 구획화할 수 있습니다. SOP 중에는 그렇게 보이지 않을 수 있지만 (그리고 항상 로컬라이제이션에서 예상치 못한 문제가 발생합니다), 짚집을 짓는 대신 벽돌집을 짓게 되어 감사할 것입니다. 대기열/성능4) 예를 들어 처리를 위해 150,000개의 요소를 줄세울 대신 15,000개의 요소를 10번 줄세울 수 있습니다. 이것은 SOP 중에는 중요하지 않아 보일 수 있지만 (그리고 항상 로컬라이제이션에서 예상치 못한 문제가 발생합니다), 짚집을 짓는 대신 벽돌집을 짓게 되어 감사할 것입니다. 대기열/성능4) 예를 들어 처리를 위해 15,000개의 요소를 10번 줄세울 수 있습니다. 다시 말하지만, 최종적으로는 동일한 150,000개의 요소를 처리해야 하기 때문에 큰 차이처럼 보이지 않을 수 있지만, 직렬로 처리하거나 병렬로 처리하거나 원하는 대로 기회적으로 처리할 수 있는 유연성을 가지는 것은 유연성과 성능 대역폭을 훨씬 더 제공합니다. 자동화 가능성5) 일반적으로 프로젝트 결정과 워크플로우는 로케일별로 비대칭적일 것입니다. SOP 중에는 그렇게 보이지 않을 수 있지만 예기치 않은 문제가 발생할 때 (그리고 항상 로컬라이제이션에서 발생합니다), 짚집 대신 벽돌집을 지은 것에 감사할 것입니다. 대기/성능4) 예를 들어 15만 개의 요소를 처리하기 위해 15,000개의 요소를 10번 줄세우는 대신, 15만 개의 요소를 한 번에 줄세울 수 있습니다. 다시 말하지만, 최종적으로 동일한 15만 개의 요소를 처리해야 하기 때문에 큰 차이처럼 보이지 않지만, 직렬로 처리하거나 병렬로 처리하거나 원하는 대로 기회적으로 처리할 수 있는 유연성을 가지는 것은 매우 유연성과 성능 대역폭을 제공합니다. 자동화 가능성5) 일반적으로 프로젝트 결정과 워크플로우는 로케일별로 비대칭적일 것입니다. 로케일별로 프로젝트를 분리하면 장기적으로 자동화 가능성에 대해 훨씬 더 큰 유연성을 가질 수 있습니다. 로케일별로 분리하면 매개변수와 데이터 세트가 완전히 다른 시나리오를 가질 수 있습니다. 모든 요소를 통합하는 것과는 달리. 관리6) 이것도 직관적이지 않습니다. 로케일별로 분리하면 매개변수와 데이터 세트가 완전히 다른 시나리오를 가질 수 있습니다. 관리6) 이것도 상반된 개념입니다. 로케일별로 프로젝트를 분리하면 자동화 잠재력에 대한 훨씬 큰 유연성을 얻을 수 있습니다. 로케일별로 분리하는 경우 모든 요소를 통합하는 것과는 달리 완전히 다른 매개변수 및 데이터 세트를 가질 수 있습니다. 관리6) 이것도 상반된 개념입니다. 일반적으로 통합은 더 나은 거버넌스를 위한 모범 사례입니다. 그러나 대규모 커넥터에서는 그 반대가 사실입니다. 하지만 대규모 커넥터에서는 그 반대가 사실입니다. 프로젝트는 일반적으로 로케일별로 필터링되어, 서로 다른 프로젝트 매니저가 프로젝트의 다른 부분을 더 쉽게 소유할 수 있으며, 보고서를 생성하기 위한 필터 사용을 줄이고 로케일별로 진행 상황을 추적하는 데 있어서 더 큰 단순성을 만들어줍니다. 확장성7) 대규모 커넥터에서는 모든 작업 단위를 하나의 프로젝트로 그룹화하여 확장하는 것이 간단히 관리할 수 없는 지점에 도달할 것입니다. 분리함으로써 장기적으로 확장하기 쉬운 프로그램의 기반을 마련하는 것을 기억하세요. 작업 단위와 메시지는 곱셈이 되는 것을 기억하세요. 로케일별로 분리함으로써 큰 곱셈 변수 중 하나를 제거하여 보다 쉽게 확장할 수 있게 됩니다.결론적으로, 통합이 더 좋다는 착각이 있습니다. 프로젝트 당 하나의 pull-request는 모두의 삶을 더 쉽게 만듭니다. 이는 작은 규모의 커넥터에는 유효하지만, 대규모 커넥터에서는 붕괴됩니다. 우리의 목표는 항상 우아하고 신뢰할 수 있는 솔루션을 클라이언트에게 제공하는 것이며, 대규모 상황에서는 분할 정복이 가장 좋은 방법임을 여러 차례 확인했습니다.

단일 프로젝트로 통합로케일별로 분리된 프로젝트전체 프로젝트는 0 또는 1의 상태를 가짐로케일별로 계층화된 상태로 구성됨단일 구문 분석, 필터링 및 정규식 프레임워크로 유연한 프레임워크로케일별로 단일 레인 큐잉 프로젝트당 유연한 큐잉 및 처리로 처리 분산로케일별로 프로젝트 내에서 필터링로케일별로 필터링 단계가 하나 줄어듦모든 영역에 걸친 자동화 규칙로케일별 자동화 매개변수 및 데이터위험 관점에서의 모든 에그를 하나의 바구니에 담음위험을 로케일별로 분산시킴분리 및 문제 해결이 복잡함문제 해결이 더 쉬워지도록 하나의 큰 변수가 줄어듦

우리의 번역 관리 시스템으로 Glocalization 의 힘을 활용하세요.

우리의 번역 관리 시스템으로

의 힘을 활용하세요.

시작하기
Gabriel Fairman
Founder and CEO of Bureau Works, Gabriel Fairman is the father of three and a technologist at heart. Raised in a family that spoke three languages and having picked up another three over the course of his life, he has always been fascinated with the role language plays in identity and the creation of meaning. Gabriel loves to cook, play the guitar, tennis, soccer, and ski. As far as work goes, he enjoys being at the forefront of innovation and mobilizing people and teams together toward a mission. In recognition of his outstanding contributions, Gabriel was honored with the 2023 Innovator of the Year Award at LocWorld Silicon Valley.
흠잡을 데 없이 두 배 빠른 번역
시작하기
온라인 이벤트!
웨비나

14일 간 무료로 Bureau Works 이용

ChatGPT 통합
지금 시작하기
첫 14일은 무료
기본 지원도 무료 제공