애플리케이션 아키텍처#
Mattermost는 팀 커뮤니케이션을 위한 안전한 메시징, 파일 공유 및 통합을 제공하는 오픈소스 협업 플랫폼입니다. 자체 호스팅 방식으로 IT 관리자가 데이터, 보안, 통합 및 사용자 정의에 대한 완전한 제어권을 가집니다. 이 플랫폼은 확장성, 유연성 및 확장성을 보장하기 위해 모듈식 구성 요소로 구축되었습니다.
워크플로우 개요#
사용자는 다양한 액세스 포인트(웹, 모바일, 데스크톱, 이메일)를 통해 연결됩니다. 그들의 요청은 API 통신, 인증, 알림 및 데이터 워크플로우를 관리하는 애플리케이션 계층(Mattermost 서버)에서 처리됩니다.
백엔드 인프라는 모든 데이터와 파일을 잘 설계된 스토리지 시스템에 저장하여 이러한 작업을 지원합니다.
확장성과 보안 계층은 민감한 데이터를 보호하면서 플랫폼이 기업 시스템과 원활하게 통합되도록 보장합니다.
핵심 구성 요소#
기술 아키텍처는 3개의 주요 계층을 중심으로 구성됩니다: 액세스 계층, 애플리케이션 계층, 그리고 백엔드 인프라.
액세스 계층#
액세스 계층은 사용자가 Mattermost와 상호작용하는 모든 방식을 포함하며, 선호하는 플랫폼에서 안전하고 확장 가능하며 신뢰할 수 있는 통신을 보장합니다. 고가용성 조치는 서버나 네트워크 장애가 발생하더라도 사용자에게 중단 없는 기능을 제공합니다.
웹 인터페이스: 사용자는 웹 브라우저(Chrome, Firefox, Safari, Edge)를 통해 Mattermost에 액세스할 수 있습니다. 웹 클라이언트는 HTTPS 프로토콜을 통해 Mattermost 서버와 통신합니다. 웹 인터페이스의 고가용성은 여러 Mattermost 서버 인스턴스에 사용자 트래픽을 분산시키는 로드 밸런싱 리버스 프록시(예: NGINX 또는 HAProxy)를 통해 달성할 수 있습니다. 백업 프록시 서버는 중단 기간 동안 웹 인터페이스가 작동하도록 장애 조치 시나리오를 보장할 수 있습니다.
데스크톱 및 모바일 앱: iOS, Android, macOS, Windows, Linux용 네이티브 앱은 기기 간 원활한 기능을 제공합니다. 이러한 앱은 실시간 메시징과 업데이트를 위해 서버와 상호작용하는 안전한 API에 의존합니다. 고가용성은 API 요청을 처리하기 위한 중복 서버 클러스터 배포와 정상 서버로 트래픽을 자동으로 리디렉션하는 장애 조치 메커니즘을 통해 보장할 수 있습니다. 모바일 앱은 실시간 응답성을 유지하기 위한 푸시 알림을 위한 재시도 메커니즘과 대체 서비스의 이점을 얻습니다.
이메일 상호작용: Outlook, Gmail, Thunderbird와 같은 이메일 클라이언트 지원을 통해 이메일 알림(예: 새 메시지 알림, 초대)을 사용자의 일반적인 워크플로우에 통합할 수 있습니다. 액세스 계층은 안전하고 동기화된 통신 경로를 유지하면서 사용자가 선택한 플랫폼을 통해 항상 연결되도록 보장합니다. 이메일 서비스는 중복성을 위해 여러 SMTP 서버로 구성할 수 있어 기본 메일 서버를 사용할 수 없게 되더라도 알림이 지연 없이 전송되도록 보장합니다.
액세스 계층은 안전하고 동기화된 통신 경로를 유지하면서 사용자가 선택한 플랫폼을 통해 항상 연결되도록 보장하는 중요한 역할을 합니다. 고가용성 조치가 갖춰져 있으면 배포의 규모나 복잡성에 관계없이 조직은 원활한 사용자 경험을 보장할 수 있습니다.
애플리케이션 계층#
Mattermost 서버는 플랫폼의 핵심이며 모든 사용자 및 시스템 작업을 처리하는 역할을 담당합니다. 다음과 같은 여러 모듈식 요소로 구성됩니다:

RESTful JSON 웹 서비스: 모든 수신 API 요청(웹 클라이언트, 앱, 통합)을 처리하고 응답이 JSON 형식으로 포맷되도록 보장합니다. 클라이언트(액세스 계층)와 백엔드 시스템 간의 통신 다리 역할을 합니다. 고가용성을 보장하기 위해 이 계층은 여러 서버에 분산되고 로드 밸런싱되어 높은 트래픽이나 서버 장애로 인한 서비스 중단을 방지합니다.
인증 클라이언트: 사용자 인증을 관리하여 안전한 로그인 세션을 보장합니다. 기존의 사용자 이름/비밀번호 기반 인증이나 Active Directory/LDAP를 통한 SSO(단일 로그인)와 같은 엔터프라이즈급 솔루션과 통합됩니다. 고가용성은 중복 인증 노드와 장애 조치 메커니즘을 통해 유지되어 기본 인증 서비스가 실패하더라도 중단 없는 액세스를 보장합니다.
인증 제공자: OAuth, SSO, 타사 ID 서비스를 지원하기 위한 플러그형 인증 프레임워크를 제공합니다. 중앙 집중식 ID 관리가 있는 엔터프라이즈 환경에서 특히 중요합니다. 여러 서버에 인증 프레임워크를 분산하고 원활한 ID 관리를 위한 대체 옵션을 제공함으로써 중복성과 장애 조치 전략이 신뢰성을 보장합니다.
알림 서비스: 지원되는 매체를 통해 알림을 전송합니다:
푸시 알림: iOS 및 Android 기기로 실시간 알림을 전송합니다(Push Notification Service를 통해). 여러 알림 서버와 재시도 메커니즘을 통해 고가용성이 보장되어 서비스 중단이 발생하더라도 알림이 전달됩니다.
이메일 알림: 사용자가 오프라인이거나 이벤트 알림이 필요할 때 전달됩니다. 로드 밸런싱과 백업 메일 서버 구성으로 이메일 전달이 일관되고 신뢰할 수 있게 유지됩니다.
데이터 관리 서비스: 메시지 데이터, 메타데이터, 사용자 프로필, 로그를 관리하는 역할을 담당합니다. 데이터베이스와 서버 간에 전달되는 데이터의 무결성을 보장합니다. 이 계층은 데이터 처리 및 통합 기능으로 사용자 활동을 조정하는 플랫폼의 운영 핵심 역할을 합니다.
데이터베이스 복제, 장애 조치 전략, 분산 데이터 처리 메커니즘을 통해 고가용성이 달성됩니다. 이러한 조치는 데이터에 대한 중단 없는 액세스를 보장하고 구성 요소 장애나 다운타임으로부터 보호합니다. 데이터 관리 서비스는 확장 가능하고 내결함성이 있는 데이터 처리 기능으로 사용자 활동을 조정하는 플랫폼의 운영 핵심 역할을 합니다.
백엔드 인프라#
백엔드 인프라는 Mattermost 운영에 필요한 스토리지 및 데이터 처리 기능을 제공합니다. 다음과 같은 구성 요소로 구성됩니다:
데이터베이스 시스템: Mattermost는 모든 영구 데이터를 저장하기 위해 PostgreSQL을 주 데이터베이스로 사용합니다(클라우드 호스팅 PostgreSQL을 위한 Amazon RDS 지원). 저장되는 데이터는 다음과 같습니다:
메시지
사용자 계정 및 자격 증명
구성 설정
팀/채널 메타데이터
고가용성을 보장하기 위해 데이터베이스 시스템은 클러스터링, 복제, 장애 조치 메커니즘을 활용할 수 있습니다. PostgreSQL은 중복성을 위한 복제본을 생성하기 위해 동기 및 비동기 복제와 같은 기능을 지원합니다. Amazon RDS와 같은 클라우드 호스팅 솔루션은 자동 장애 조치 및 백업 기능을 제공하여 시스템 장애 중에도 지속적인 운영을 보장합니다.
파일 스토리지: 채널 간에 공유되는 모든 멀티미디어 자산(예: 파일 업로드, 이미지, 비디오)을 관리합니다. 스토리지 솔루션에는 다음과 같은 옵션이 포함됩니다:
로컬 스토리지: 서버의 파일 시스템에 직접 저장된 파일입니다. 고가용성을 위해 RAID 구성이나 백업을 사용하여 디스크 장애로부터 복구할 수 있습니다.
네트워크 연결 스토리지(NAS): 네트워크 내에서 파일 스토리지를 중앙화하는 기업에 일반적입니다. NAS 설정에는 분산 시스템이나 중단 없는 액세스를 위한 복제와 같은 내결함성 구성이 포함될 수 있습니다.
S3: 분산 배포가 있는 대규모 환경이나 조직을 위한 클라우드 기반 확장 가능한 스토리지를 제공합니다. 데이터베이스와 파일 스토리지는 확장성을 처리하여 데이터 일관성을 보장하면서 수백만 개의 메시지와 파일에 대한 효율적인 지원을 보장합니다. S3는 여러 가용성 영역에 데이터를 분산시켜 단일 장애 지점이 없도록 하여 고가용성을 기본적으로 지원합니다.
고가용성 조치는 데이터 일관성을 보장하면서 수백만 개의 메시지와 파일에 대한 확장 가능하고 안전한 지원을 보장합니다.
시스템 확장: Mattermost는 협업 도구일 뿐만 아니라 확장성을 위해 설계된 플랫폼이기도 합니다. 주요 확장성 기능에는 다음이 포함됩니다:
자체 호스팅 통합: Mattermost를 Jira, GitLab 또는 팀이 필요로 하는 모든 사용자 정의 통합과 같은 다른 로컬 또는 클라우드 기반 시스템에 연결합니다. 내장된 API와 웹훅을 활용하여 워크플로우를 자동화하고 시스템 간 통신을 트리거합니다. 고가용성을 위해 통합은 일시적인 장애를 우아하게 처리하기 위해 중복 통신 채널과 재시도 메커니즘을 사용할 수 있습니다.
타사 인증: 타사 플랫폼(Slack 가져오기 API, OAuth 서비스 등)에 통합을 바인딩합니다. 타사 ID 서비스는 일관되고 안전한 사용자 액세스 흐름을 보장합니다. 타사 ID 서비스는 로드 밸런싱과 장애 조치 전략을 활용하여 높은 트래픽이나 중단 상황에서도 일관되고 안전한 사용자 액세스 흐름을 보장할 수 있습니다.
보안 및 확장성 기능: 보안과 확장성이 아키텍처에 내장되어 있어 Mattermost는 기업용 사용 사례에 이상적입니다:
보안
NGINX나 하드웨어 프록시와 같은 리버스 프록시가 외부 트래픽을 관리하도록 배포됩니다. 서버를 보호하고 HTTPS를 적용하며 로드 밸런싱을 처리합니다.
구성 가능한 SSL/TLS 암호화는 전송 중 데이터 보안을 보장합니다.
세분화된 사용자 권한과 역할은 팀 내의 민감한 정보를 보호합니다.
확장성 및 고가용성: Enterprise Edition은 대규모 조직에서 신뢰성과 성능을 위해 여러 서버에 걸쳐 사용자 요청을 분산시키기 위해 클러스터 환경에서 여러 Mattermost 서버를 배포하는 것을 지원합니다. 클러스터링은 장애 발생 시 사용자 트래픽이 작동 중인 서버로 전환되도록 자동 장애 조치를 보장합니다.
알림 및 통신 서비스: Mattermost는 다양한 워크플로우에 맞게 조정된 알림 시스템으로 향상된 비동기 및 실시간 통신을 지원합니다:
푸시 알림: 메시지 알림이나 멘션을 위해 모바일 기기로 전달됩니다. 백업 알림 서비스와 재시도 메커니즘을 통해 안정적인 전달을 위한 고가용성을 달성합니다.
이메일 통합: 사용자가 오프라인이거나 비활성 상태일 때 정기적인 알림을 제공합니다. 장애 조치 메일 서버와 분산 구성으로 이메일 알림이 중단 없이 전송되도록 보장합니다.
이러한 서비스는 지속적인 참여와 통신을 보장합니다.
통신 프로토콜#
사용자가 Mattermost 서버와의 연결 유형을 정의하는 통신 프로토콜(HTTPS 및 WS)도 있습니다. 고가용성 조치는 특히 프로덕션 환경에서 클라이언트와 Mattermost 서버 간의 안정적이고 탄력적인 연결을 보장합니다.
HTTPS 연결 (보안 하이퍼텍스트 전송 프로토콜)
Mattermost 서버에 대한 HTTPS 연결은 페이지를 렌더링하고 핵심 플랫폼 기능에 대한 액세스를 제공하지만, 실시간 상호작용은 포함하지 않습니다(WSS 연결에서 활성화됨).
HTTPS는 안전하고 암호화된 프로토콜이며 프로덕션 환경에서 매우 권장됩니다. 암호화되지 않은 HTTP 연결은 초기 테스트 및 구성에 사용될 수 있지만, 프로덕션 환경에서는 절대 사용해서는 안 됩니다. 고가용성을 위해 HTTPS 트래픽은 로드 밸런서 구성을 통해 여러 Mattermost 서버 인스턴스에 연결을 분산시키는 리버스 프록시(예: NGINX 또는 HAProxy)로 처리되어야 합니다. 중복 프록시 서버는 장애 조치 기능을 보장하여 중단 없는 서비스를 제공합니다.
WSS 연결 (보안 WebSocket 프로토콜)
Mattermost 서버에 대한 보안 WebSocket(WSS) 연결은 클라이언트와 서버 간의 실시간 업데이트 및 알림을 가능하게 합니다.
WSS 연결을 사용할 수 없고 HTTPS로 대체된 경우, 시스템은 작동하는 것처럼 보이지만 실시간 업데이트와 알림은 작동하지 않습니다. 이 작동 모드에서는 페이지 새로고침 시에만 업데이트가 표시됩니다. WSS는 클라이언트가 연결되어 있을 때 Mattermost 서버와 지속적인 연결을 유지하는 반면, HTTPS는 간헐적인 연결을 가지며 페이지나 파일이 요청될 때만 서버에 연결됩니다.
WSS 연결의 고가용성은 Mattermost 서버를 클러스터링하고 해당 클러스터 노드 간에 WebSocket 연결을 로드 밸런싱하여 달성할 수 있습니다. 프록시 서버와 WebSocket 특정 구성(스티키 세션이나 연결 지속성 등)은 서버 또는 네트워크 장애 중에 실시간 상호작용을 유지하는 데 필수적입니다.

통신 프로토콜에 고가용성 전략을 통합함으로써, 플랫폼은 일반적인 사용자 상호작용(HTTPS를 통해)과 실시간 업데이트(WSS를 통해) 모두에 대해 안전하고 확장 가능하며 신뢰할 수 있는 연결을 보장합니다. 이러한 조치는 지속적인 통신이 필요한 중요 업무 환경과 분산 배포에 중요합니다.
VPN 뒤에서
Mattermost는 컴퓨팅 장치와 물리적 위치에 대한 안전한 액세스를 포함한 다중 인증 요소를 제공할 수 있는 개인 네트워크 내에 설치되도록 의도되었습니다. 외부 액세스가 필요한 경우, 웹, 데스크톱, 모바일 경험을 위해 Mattermost에 연결하는 데 추가 인증을 사용하는 OpenVPN 와 같은 가상 사설망 클라이언트(VPN)를 사용하는 것이 권장됩니다.
비 VPN 설정
Mattermost가 공개 인터넷에서 접근 가능한 경우, 다음을 권장합니다:
IT 관리자는 적절한 네트워크 보안을 설정하고, Mattermost 보안 게시판 에 가입하며, 새로운 보안 업데이트 적용 을 담당해야 합니다.
조직은 SAML Single Sign-on 또는 MFA 을 활성화합니다.
VPN이나 MFA가 설정되지 않은 상태에서 Mattermost가 공개 인터넷에서 접근 가능한 경우, 시스템 침해의 영향이 중요하지 않은 비밀스럽지 않은 일반적인 대화에만 사용하는 것을 권장합니다.
Mattermost 서비스 포트#
다음 표는 Mattermost 서버, 푸시 프록시, 모바일 앱 클라이언트를 위한 Mattermost 서비스 포트를 나열합니다. 프록시 없이 Mattermost 서버와 통신해야 하는 클라이언트가 있는 시스템 관리자는 필요에 따라 특정 방화벽 포트를 열 수 있습니다.
Mattermost 서버
서비스 이름 |
설정 구성 |
포트 (기본값) |
프로토콜 |
방향 |
정보 |
---|---|---|---|---|---|
HTTP/웹소켓 |
ServiceSettings.ListenAddress |
8065/80/443 (TLS) |
TCP |
인바운드 |
외부 (프록시 없음) / 내부 (프록시 있음) HTTPS를 실행할 때는 일반적으로 포트 80과 443이 필요합니다. |
클러스터 |
ClusterSettings.GossipPort |
8074 |
TCP/UDP |
인바운드 |
내부 |
메트릭스 |
MetricsSettings.ListenAddress |
8067 |
TCP |
인바운드 |
외부 (프록시 없음) / 내부 (프록시 있음) |
데이터베이스 |
SqlSettings.DataSource |
5432 (PostgreSQL) / 3306 (MySQL) |
TCP |
아웃바운드 |
일반적으로 내부 (권장) |
LDAP |
LdapSettings.LdapPort |
389 |
TCP/UDP |
아웃바운드 |
|
S3 스토리지 |
FileSettings.AmazonS3Endpoint |
443 (TLS) |
TCP |
아웃바운드 |
|
SMTP |
EmailSettings.SMTPPort |
10025 |
TCP/UDP |
아웃바운드 |
|
푸시 알림 |
EmailSettings.PushNotificationServer |
443 (TLS) |
TCP |
아웃바운드 |
푸시 프록시
서비스 이름 |
설정 구성 |
포트 (기본값) |
프로토콜 |
방향 |
정보 |
---|---|---|---|---|---|
푸시 프록시 |
ListenAddress |
8066 |
TCP |
인바운드 |
외부 (프록시 없음) / 내부 (프록시 있음) |
모바일 클라이언트
푸시 알림을 수신하려면 네트워크에서 iOS 기기를 위한 포트 5223 과 Android를 위한 포트 5228-5230 에 대한 트래픽을 허용해야 합니다.