엔터프라이즈 확장#

Mattermost는 단일 서버에서 호스팅되는 소규모 팀부터 클러스터 기반의 고가용성 배포 구성을 실행하는 대규모 엔터프라이즈까지 확장할 수 있도록 설계되었습니다.

  • Mattermost는 모든 64비트 x86 프로세서 아키텍처를 지원합니다

  • 지원되는 데이터베이스: PostgreSQL, Amazon RDS for PostgreSQL

  • 지원되는 스토리지: Amazon S3 또는 로컬 파일스토어

서버 요구사항은 사용량에 따라 달라지며, 특정 조직의 요구사항에 기반한 전체 규모 사용량을 추정하기 위해 엔터프라이즈 전체 배포 전에 파일럿을 실행하는 것을 강력히 권장합니다.

백업 스토리지#

로컬 파일 시스템(EBS, gp3), 네트워크 파일 시스템(EFS), 객체 스토리지(S3)를 포함한 지원되는 스토리지 옵션에 대한 상세한 쓰기 및 읽기 스토리지 벤치마크 결과 를 검토하여 사용 사례와 인프라 요구사항에 기반한 정보에 입각한 결정을 내리세요.

Elasticsearch#

Elasticsearch 는 클러스터 지원을 통해 성능 저하와 타임아웃 없이 최적화된 검색 성능, 전용 인덱싱 및 사용 리소싱을 제공하여 더 빠르고 예측 가능한 검색 결과를 제공합니다.

고가용성#

고가용성 클러스터 기반 배포 는 중복 인프라를 사용하여 중단 및 하드웨어 장애 중에도 Mattermost 시스템이 서비스를 유지할 수 있도록 합니다.

Redis#

Redis 는 데이터베이스, 캐시, 메시지 브로커로 사용할 수 있는 인메모리 데이터 구조 저장소입니다. Mattermost는 대규모에서 성능을 향상시키기 위해 Redis를 외부 캐시로 사용합니다. 적절히 구성된 경우, Redis는 효율적인 캐싱을 통해 향상된 성능을 제공하여 100,000명 이상의 사용자를 지원하는 Mattermost 설치를 도울 수 있습니다.

사용 가능한 참조 아키텍처#

다음 참조 아키텍처는 자체 호스팅 Mattermost 배포를 위한 권장 시작점으로 사용할 수 있으며, 여기서 사용자 수는 특정 배포의 동시 사용자 수를 나타냅니다. 동시 사용자 수는 일반적으로 총 사용자 계정 수보다 낮습니다.

중요

테스트 제약으로 인해 이러한 참조 아키텍처를 도출한 모든 확장 테스트에서 프록시 인스턴스 사양이 고정되었습니다. 이는 테스트에서 변수의 조합 폭발을 피하기 위해 수행되었지만, 결과적으로 참조 아키텍처의 특정 측면에 대한 이해에 약간의 차이가 발생했습니다. 특히 프록시 인스턴스는 더 적은 사용자 수에 대해 과도하게 지정되어 있습니다.

테스트 방법론 및 업데이트#

모든 테스트는 Mattermost 개발팀이 구축한 맞춤형 부하 테스트 도구를 사용하여 각 배포 크기별로 지원되는 사용자를 결정했습니다. 시간이 지남에 따라 이 가이드는 새로운 배포 크기, 배포 아키텍처로 업데이트되며, Mattermost 서버의 최신 버전은 ESR을 사용하여 테스트될 것입니다.

높은 수준에서 각 배포 크기는 고정되었으며(Mattermost 서버 노드 수/크기, 데이터베이스 리더/라이터 수/크기), 무제한 테스트를 통해 배포가 지원할 수 있는 최대 동시 사용자 수를 보고했습니다. 각 테스트에는 PostgreSQL v14 데이터베이스와 1억 개의 게시물, ~200,000명의 사용자, 20개 팀, ~720,000개 채널의 게시물 테이블 기록이 포함되어 프로덕션 Mattermost 배포의 테스트 시뮬레이션을 제공했습니다.

테스트는 각 시뮬레이션된 사용자가 실행하는 작업의 구성(및 이러한 작업의 빈도)에 의해 정의되었으며, 여기서 코디네이터 메트릭은 부하 하에서의 건강한 시스템을 정의합니다. 테스트는 Mattermost v9.5 Extended Support Release (ESR)를 사용하여 수행되었습니다. 작업 서버는 사용되지 않았습니다. 단일 앱 노드보다 많은 모든 테스트에는 앞에 NGINX 프록시가 실행되었습니다.

200K 사용자의 마지막 테스트를 위해 추가 인프라 변경이 이루어졌습니다. Elasticsearch 노드가 추가되었습니다. Redis 인스턴스가 추가되었으며, 여러 NGINX 프록시를 사용하여 클러스터의 모든 노드에 트래픽을 균등하게 분배했습니다. 자세한 내용은 200,000명의 사용자까지 확장 문서 페이지에서 확인할 수 있습니다.

전체 테스트 방법론, 구성 및 설정이 제공되며, 여기에는 1억 개의 게시물이 있는 고정 데이터베이스 덤프 가 포함됩니다. 자세한 내용은 Mattermost 커뮤니티 를 방문하고 개발자: 성능 채널 에 참여하세요.

이러한 참조 아키텍처에서 제공하는 성능 사양 및 사용자 용량은 AWS 환경에서 수행된 광범위한 테스트를 기반으로 합니다.

Azure 배포의 경우, 인스턴스 사양은 AWS 성능 데이터와 업계 전문 지식을 활용하여 동등한 구성을 사용하여 추정되었습니다. 이러한 구성은 명시된 요구사항을 충족하도록 설계되었지만, 부하 하에서의 성능을 검증하기 위해 Azure 환경에서 아직 공식 테스트를 수행하지 않았습니다. Azure Blob Storage 지원은 활발히 개발 중이며, 아직 Mattermost에서 기본적으로 지원하지 않습니다.

Mattermost 부하 테스트 도구#

Mattermost는 Go로 작성된 도구 세트를 제공하여 대규모 서버 설치의 실제 사용을 시뮬레이션하면서 높은 부하 하에서 Mattermost의 프로파일링을 돕습니다. Mattermost 부하 테스트 도구 는 대상 시스템이 지원하는 최대 동시 활성 사용자 수를 추정하고 생성할 부하를 제어할 수 있게 합니다.

도구 시작에 대한 자세한 내용은 GitHub의 Mattermost 부하 테스트 도구 문서를 방문하고, 코드별 문서 세부 정보는 Go 문서 를 방문하세요.

중요

  • Mattermost 부하 테스트 도구는 성능 엔지니어들이 설계하고 사용하여 새로운 릴리스를 준비하기 위해 매월 서비스의 성능을 비교하고 벤치마킹합니다. 또한 권장 하드웨어 크기 조정을 개발하는 데 광범위하게 사용됩니다.

  • 지속적인 모니터링 및 확장 가이드를 위해 Prometheus와 Grafana대시보드 와 함께 배포하는 것을 권장합니다.

  • 성능 문제가 발생하면 첫 번째 문제 해결 단계로 성능 메트릭 수집 을 수행하고 이를 저희와 공유하는 것을 권장합니다.