아키텍처 개요
모든 플랜 에서 사용 가능
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과 파일 저장소에 연결됩니다.
푸시 알림 서비스
Mattermost 호스팅된 푸시 알림 서비스 는 모바일 클라이언트에 푸시 알림을 보내는 데 사용할 수 있습니다. Team Edition 사용자는 Mattermost 테스트 푸시 알림 서비스 를 사용하거나 자체 푸시 알림 서비스를 호스트 하고 자체 모바일 애플리케이션을 컴파일 하여 해당 서비스를 사용할 수 있습니다.
프록시
프록시 서버는 다른 서버에서 리소스를 요청하는 클라이언트의 중개자 역할을 하는 서버(컴퓨터 시스템 또는 응용 프로그램)입니다. Mattermost는 보안, 성능 및 Mattermost에 연결하는 트래픽을 모니터링하고 모양을 지정하기 위해 Mattermost 앞에 프록시를 사용하는 것을 권장합니다.
보안: 프록시 서버는 안전한 소켓 레이어(TLS/SSL) 암호화를 관리하고 네트워크 트래픽이 Mattermost 서버로 어떻게 경로 지정될 지에 대한 정책을 설정할 수 있습니다.
성능: 고가용성 구성에서 프록시 서버는 최적의 성능을 위해 여러 Mattermost 서버에 걸친 네트워크 부하를 균형잡아 줍니다. SSL 암호화 및 복호화를 처리하기 위해 전용 장치가 있는 하드웨어 프록시도 성능을 높일 수 있습니다.
모니터링 : 프록시 서버는 연결 트래픽을 모니터링하고 일반적인 모니터링 도구인 Kibana 및 Splunk가 소비하고 보고할 수 있는 표준 감사 로그에 대한 트래픽을 기록할 수 있습니다. 캡처할 수 있는 일부 이벤트에는 Mattermost 서버 로깅 프로세스가 추적하지 않는 파일 업로드 및 다운로드가 포함됩니다.
Mattermost는 NGINX 프록시 를 위한 문서와 지원을 제공합니다. 환경에 따라 NGINX를 설치하고 구성하는 방법에 대한 정보는 가이드를 참조하세요 . Mattermost는 Apache 2 를 비공식으로 지원합니다.
통신 프로토콜
또한 사용자가 Mattermost 서버와 만드는 연결 유형을 정의하는 통신 프로토콜(HTTPS 및 WS)이 있습니다.
HTTPS 연결 (보안 HTTP 전송 프로토콜)
HTTPS 연결을 통해 Mattermost 서버로 페이지를 렌더링하고 핵심 플랫폼 기능에 액세스할 수 있지만 실시간 상호 작용(이는 WSS 연결에 의해 가능)은 포함되지 않습니다.
HTTPS는 안전하고 암호화된 프로토콜이며 프로덕션에서 매우 권장됩니다. 암호화되지 않은 HTTP 연결은 초기 테스트 및 구성에 사용될 수 있지만 프로덕션 환경에서는 사용해서는 안 됩니다.
WSS 연결 (보안 WebSocket 프로토콜)
Mattermost 서버에 대한 안전한 WebSocket(WSS) 연결을 통해 실시간 업데이트와 클라이언트 간 알림 기능이 활성화됩니다.
만약 WSS 연결을 사용할 수 없고 HTTPS가 대체될 경우, 시스템은 동작하는 것처럼 보일 것이지만 실시간 업데이트와 알림이 전달되지 않을 것입니다. 이 모드에서는 업데이트가 페이지 새로 고침시에만 표시됩니다. WSS는 클라이언트가 연결된 경우 Mattermost 서버와의 지속적인 연결을 가지고 있으며, HTTPS는 간헐적인 연결을 유지하며 페이지 또는 파일을 요청할 때에만 서버에 연결합니다.
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 장치용 포트 5223 및 Android용 포트 5228-5230 로의 트래픽을 허용해야 합니다.
고가용성 및 확장성
Mattermost Enterprise는 다음을 지원합니다:
레이턴시를 최소화하는 클러스터화된 Mattermost 서버:
전역 CDN을 통해 정적 자산 저장.
최종 사용자 위치에 API 통신을 더 가깝게 호스팅하기 위해 여러 Mattermost 서버 배포.
또한 재해 복구 시 규모 및 장애 전달을 처리하는 데 사용될 수 있습니다.
데이터베이스 읽기 레플리카:
활성 데이터베이스 서버에 대비한 중복 백업으로 구성될 수 있습니다.
동시 사용자 수를 확장하기 위해 사용될 수 있습니다.
최종 사용자 위치에 가깝게 배포되어 레이턴시를 감소시킵니다.
또한 검색 레플리카도 지원되어 검색 쿼리를 처리할 수 있습니다.
참조 아키텍처
다음 다이어그램은 다양한 규모의 Mattermost 엔터프라이즈 배포를 위한 권장 아키텍처 구성을 보여줍니다. 이러한 다이어그램은 일반적인 Mattermost 배포를 위한 지침으로, 사용 및 정책에 따라 하드웨어 및 인프라 요구 사항이 상당히 다를 수 있습니다.
각 다이어그램에는 두 가지 버전이 있습니다. 하나는 일반적인 버전이며 다른 하나는 AWS에 초점을 맞춥니다.
일반적인 다이어그램은 프록시, 데이터베이스, 파일 저장소 및 Elasticsearch 레이어 모두에 걸쳐 전체 고가용성 배포를 나타냅니다. 푸시 프록시는 Mattermost의 HPNS 를 대체할 수 있습니다.
각 AWS 다이어그램은 Amazon Web Services에서 완전한 고가용성 배포를 나타내며 사용 가능한 서비스를 최대한 활용합니다. 선택적으로 푸시 프록시는 HPNS를 대신하여 수동으로 배포될 수 있습니다.
엔터프라이즈 - 일반용 5,000 사용자
엔터프라이즈 - AWS용 5,000 사용자
엔터프라이즈 - 일반용 10,000 사용자
엔터프라이즈 - AWS용 10,000 사용자
엔터프라이즈 - 일반용 25,000 사용자
엔터프라이즈 - AWS용 25,000 사용자
엔터프라이즈 - AWS용 50,000 사용자
VIP를 사용하는 데이터베이스
다음 다이어그램은 가상 IP를 통해 고가용성 데이터베이스를 위한 권장 구성을 보여줍니다.
부하 테스트
Mattermost Enterprise Edition은 활용량과 정책에 따라 하드웨어 및 인프라 요구 사항이 상당히 다를 수 있으므로 60,000명 동시 활성 사용자로 부하 테스트를 진행했습니다 :
여섯 개의 Mattermost 서버: m4.2xlarge (8 vCPU, 32 GB RAM)
다섯 개의 읽기 레플리카를 갖춘 MySQL 데이터베이스 서버: db.r4.2xlarge (8 vCPU, 61 GB RAM)
부하 테스트 실행을 위한 세 개의 부하 테스트 러너
세 개의 NGINX 프록시