아키텍처 개요

plans-img 모든 플랜 에서 사용 가능

deployment-img self-hosted 배포판

이 페이지는 참조 아키텍처를 사용하여 Mattermost 아키텍처의 개요를 제공합니다. 더 자세한 배포 개요는 배포 위키를 확인하세요 .

기본 사항

핵심적으로, Mattermost는 싱글-컴파일된 Go 이진 파일로, Restful JSON 웹 서버로 노출되며 JavaScript 및 Go 클라이언트로 제공됩니다. Restful API 문서는 여기에서 확인할 수 있습니다.

config/config.json 을 사용하여 구성되며 다음을 제공합니다.

  • 인증 클라이언트: Team Edition에서 이메일 주소와 비밀번호를 사용하여 Mattermost에 로그인하는 기능을 제공합니다. Mattermost Professional은 사용자가 Active Directory 또는 LDAP를 사용하여 인증하는 기능을 추가하며, Mattermost Enterprise는 ADFS, OneLogin 및 Okta와 같은 SAML SSO 제공 업체를 사용하여 인증하는 기능을 추가합니다.

  • 인증 제공자: OAuth 2.0을 사용하여 GitLab 및 Zapier와 같은 다른 서비스에 대한 Mattermost 서버의 인증을 활성화합니다.

  • 알림 서비스: 모바일 애플리케이션을 위해 SMTP 또는 푸시 알림 서비스를 통해 알림을 보냅니다.

  • 데이터 관리 서비스: 지원되는 데이터베이스 및 파일 저장소 솔루션(로컬, 네트워크 연결 저장소, Amazon S3 등)에 연결되어 그들 간의 데이터 읽기 및 쓰기를 관리합니다.

이진 파일은 일반적으로 PostgreSQL과 파일 저장소에 연결됩니다.

../_images/architecture_basics.png

푸시 알림 서비스

Mattermost 호스팅된 푸시 알림 서비스 는 모바일 클라이언트에 푸시 알림을 보내는 데 사용할 수 있습니다. Team Edition 사용자는 Mattermost 테스트 푸시 알림 서비스 를 사용하거나 자체 푸시 알림 서비스를 호스트 하고 자체 모바일 애플리케이션을 컴파일 하여 해당 서비스를 사용할 수 있습니다.

프록시

프록시 서버는 다른 서버에서 리소스를 요청하는 클라이언트의 중개자 역할을 하는 서버(컴퓨터 시스템 또는 응용 프로그램)입니다. Mattermost는 보안, 성능 및 Mattermost에 연결하는 트래픽을 모니터링하고 모양을 지정하기 위해 Mattermost 앞에 프록시를 사용하는 것을 권장합니다.

  • 보안: 프록시 서버는 안전한 소켓 레이어(TLS/SSL) 암호화를 관리하고 네트워크 트래픽이 Mattermost 서버로 어떻게 경로 지정될 지에 대한 정책을 설정할 수 있습니다.

  • 성능: 고가용성 구성에서 프록시 서버는 최적의 성능을 위해 여러 Mattermost 서버에 걸친 네트워크 부하를 균형잡아 줍니다. SSL 암호화 및 복호화를 처리하기 위해 전용 장치가 있는 하드웨어 프록시도 성능을 높일 수 있습니다.

  • 모니터링 : 프록시 서버는 연결 트래픽을 모니터링하고 일반적인 모니터링 도구인 Kibana 및 Splunk가 소비하고 보고할 수 있는 표준 감사 로그에 대한 트래픽을 기록할 수 있습니다. 캡처할 수 있는 일부 이벤트에는 Mattermost 서버 로깅 프로세스가 추적하지 않는 파일 업로드 및 다운로드가 포함됩니다.

Mattermost는 NGINX 프록시 를 위한 문서와 지원을 제공합니다. 환경에 따라 NGINX를 설치하고 구성하는 방법에 대한 정보는 가이드를 참조하세요 . Mattermost는 Apache 2 를 비공식으로 지원합니다.

../_images/architecture_with_proxy.png

통신 프로토콜

또한 사용자가 Mattermost 서버와 만드는 연결 유형을 정의하는 통신 프로토콜(HTTPS 및 WS)이 있습니다.

HTTPS 연결 (보안 HTTP 전송 프로토콜)

  • HTTPS 연결을 통해 Mattermost 서버로 페이지를 렌더링하고 핵심 플랫폼 기능에 액세스할 수 있지만 실시간 상호 작용(이는 WSS 연결에 의해 가능)은 포함되지 않습니다.

  • HTTPS는 안전하고 암호화된 프로토콜이며 프로덕션에서 매우 권장됩니다. 암호화되지 않은 HTTP 연결은 초기 테스트 및 구성에 사용될 수 있지만 프로덕션 환경에서는 사용해서는 안 됩니다.

WSS 연결 (보안 WebSocket 프로토콜)

Mattermost 서버에 대한 안전한 WebSocket(WSS) 연결을 통해 실시간 업데이트와 클라이언트 간 알림 기능이 활성화됩니다.

만약 WSS 연결을 사용할 수 없고 HTTPS가 대체될 경우, 시스템은 동작하는 것처럼 보일 것이지만 실시간 업데이트와 알림이 전달되지 않을 것입니다. 이 모드에서는 업데이트가 페이지 새로 고침시에만 표시됩니다. WSS는 클라이언트가 연결된 경우 Mattermost 서버와의 지속적인 연결을 가지고 있으며, HTTPS는 간헐적인 연결을 유지하며 페이지 또는 파일을 요청할 때에만 서버에 연결합니다.

../_images/architecture_with_protocol.png

Mattermost 서비스 포트

다음 표는 Mattermost 서버, 푸시 프록시 및 모바일 앱 클라이언트의 Mattermost 서비스 포트를 나열합니다. 프록시 없이 Mattermost 서버와 통신해야 하는 클라이언트를 갖고 있는 시스템 관리자는 필요에 따라 특정 방화벽 포트를 열 수 있습니다.

Mattermost 서버

Service Name

Config Setting

Port (default)

Protocol

Direction

Info

HTTP/Websocket

ServiceSettings.ListenAddress

8065/80/443 (TLS)

TCP

Inbound

External (no proxy) / Internal (with proxy) Usually this requires port 80 and 443 when running HTTPS.

Cluster (Gossip)

ClusterSettings.GossipPort

8074

TCP/UDP

Inbound

Internal

Cluster (Streaming)

ClusterSettings.StreamingPort

8075

TCP/UDP

Inbound

Internal

Metrics

MetricsSettings.ListenAddress

8067

TCP

Inbound

External (no proxy) / Internal (with proxy)

Database

SqlSettings.DataSource

5432 (PostgreSQL) / 3306 (MySQL)

TCP

Outbound

Usually internal (recommended)

LDAP

LdapSettings.LdapPort

389

TCP/UDP

Outbound

S3 Storage

FileSettings.AmazonS3Endpoint

443 (TLS)

TCP

Outbound

SMTP

EmailSettings.SMTPPort

10025

TCP/UDP

Outbound

Push Notifications

EmailSettings.PushNotificationServer

443 (TLS)

TCP

Outbound

푸시 프록시

서 비스 이름

구성 설정

포트 ( 기본값)

프 로 토 콜

방향

정보

푸시 프 록시

Listen Address

8066

TCP

들어 오는

외부 (프록시 없음) / 내부 (프록시 사용)

모바일 클라이언트

푸시 알림을 받으려면 네트워크에서 iOS 장치용 포트 5223Android용 포트 5228-5230 로의 트래픽을 허용해야 합니다.

고가용성 및 확장성

Mattermost Enterprise는 다음을 지원합니다:

  1. 레이턴시를 최소화하는 클러스터화된 Mattermost 서버:

  • 전역 CDN을 통해 정적 자산 저장.

  • 최종 사용자 위치에 API 통신을 더 가깝게 호스팅하기 위해 여러 Mattermost 서버 배포.

또한 재해 복구 시 규모 및 장애 전달을 처리하는 데 사용될 수 있습니다.

  1. 데이터베이스 읽기 레플리카:

  • 활성 데이터베이스 서버에 대비한 중복 백업으로 구성될 수 있습니다.

  • 동시 사용자 수를 확장하기 위해 사용될 수 있습니다.

  • 최종 사용자 위치에 가깝게 배포되어 레이턴시를 감소시킵니다.

또한 검색 레플리카도 지원되어 검색 쿼리를 처리할 수 있습니다.

../_images/architecture_high_availability.png

참조 아키텍처

다음 다이어그램은 다양한 규모의 Mattermost 엔터프라이즈 배포를 위한 권장 아키텍처 구성을 보여줍니다. 이러한 다이어그램은 일반적인 Mattermost 배포를 위한 지침으로, 사용 및 정책에 따라 하드웨어 및 인프라 요구 사항이 상당히 다를 수 있습니다.

각 다이어그램에는 두 가지 버전이 있습니다. 하나는 일반적인 버전이며 다른 하나는 AWS에 초점을 맞춥니다.

일반적인 다이어그램은 프록시, 데이터베이스, 파일 저장소 및 Elasticsearch 레이어 모두에 걸쳐 전체 고가용성 배포를 나타냅니다. 푸시 프록시는 Mattermost의 HPNS 를 대체할 수 있습니다.

각 AWS 다이어그램은 Amazon Web Services에서 완전한 고가용성 배포를 나타내며 사용 가능한 서비스를 최대한 활용합니다. 선택적으로 푸시 프록시는 HPNS를 대신하여 수동으로 배포될 수 있습니다.

엔터프라이즈 - 일반용 5,000 사용자

../_images/MattermostDeployment5kUsers.png

엔터프라이즈 - AWS용 5,000 사용자

../_images/MattermostDeployment5kaws.png

엔터프라이즈 - 일반용 10,000 사용자

../_images/MattermostDeployment10kUsers.png

엔터프라이즈 - AWS용 10,000 사용자

../_images/MattermostDeployment10kaws.png

엔터프라이즈 - 일반용 25,000 사용자

../_images/MattermostDeployment25kUsers.png

엔터프라이즈 - AWS용 25,000 사용자

../_images/MattermostDeployment25kaws.png

엔터프라이즈 - AWS용 50,000 사용자

../_images/MattermostDeployment50kaws.png

VIP를 사용하는 데이터베이스

다음 다이어그램은 가상 IP를 통해 고가용성 데이터베이스를 위한 권장 구성을 보여줍니다.

../_images/DatabasewithVIPs.png

부하 테스트

Mattermost Enterprise Edition은 활용량과 정책에 따라 하드웨어 및 인프라 요구 사항이 상당히 다를 수 있으므로 60,000명 동시 활성 사용자로 부하 테스트를 진행했습니다 :

  • 여섯 개의 Mattermost 서버: m4.2xlarge (8 vCPU, 32 GB RAM)

  • 다섯 개의 읽기 레플리카를 갖춘 MySQL 데이터베이스 서버: db.r4.2xlarge (8 vCPU, 61 GB RAM)

  • 부하 테스트 실행을 위한 세 개의 부하 테스트 러너

  • 세 개의 NGINX 프록시