애플리케이션 아키텍처
Mattermost는 팀 커뮤니케이션을 위한 안전한 메시징, 파일 공유, 연동 기능을 제공하는 오픈 소스 협업 플랫폼입니다. 자체 호스팅 방식이므로 IT 관리자가 데이터, 보안, 연동, 커스터마이징을 완전히 통제할 수 있습니다. 이 플랫폼은 확장성, 유연성, 확장 가능성을 보장하도록 모듈형 구성 요소로 설계되었습니다.
워크플로 개요
사용자는 다양한 접근 지점(웹, 모바일, 데스크톱, 이메일)을 통해 연결합니다. 사용자의 요청은 애플리케이션 계층(Mattermost 서버)에서 처리되며, 이 계층은 API 통신, 인증, 알림, 데이터 워크플로를 관리합니다.
백엔드 인프라는 모든 데이터와 파일을 잘 설계된 저장 시스템에 보관하여 이러한 작업을 뒷받침합니다.
확장성과 보안 계층은 플랫폼이 엔터프라이즈 시스템과 매끄럽게 연동되면서도 민감한 데이터를 보호하도록 보장합니다.
핵심 구성 요소
기술 아키텍처는 세 가지 주요 계층을 중심으로 구성됩니다. 접근 계층, 애플리케이션 계층, 백엔드 인프라입니다.
접근 계층
접근 계층(Access Layer)은 사용자가 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 기기로 실시간 알림을 전송합니다(푸시 알림 서비스를 통해). 여러 알림 서버와 재시도 메커니즘으로 고가용성을 확보하여, 서비스 중단 상황에서도 알림이 전달되도록 보장합니다.
- 이메일 알림: 사용자가 오프라인이거나 이벤트 알림이 필요할 때 전달됩니다. 로드 밸런싱과 백업 메일 서버 구성을 통해 이메일 전달의 일관성과 신뢰성을 유지합니다.
데이터 관리 서비스: 메시지 데이터, 메타데이터, 사용자 프로필, 로그를 관리합니다. 데이터베이스와 서버 사이에 오가는 데이터의 무결성을 보장합니다. 이 계층은 플랫폼의 운영 핵심으로서 사용자 활동을 데이터 처리 및 연동 기능과 조율합니다.
고가용성은 데이터베이스 복제, 페일오버 전략, 분산 데이터 처리 메커니즘을 통해 달성됩니다. 이러한 조치는 데이터 접근이 중단되지 않도록 하고 구성 요소 장애나 다운타임으로부터 보호합니다. 데이터 관리 서비스는 플랫폼의 운영 핵심으로서 사용자 활동을 확장 가능하고 장애 내성을 갖춘 데이터 처리 기능과 조율합니다.
백엔드 인프라
백엔드 인프라는 Mattermost 운영에 필요한 저장 및 데이터 처리 기능을 제공합니다. 다음 구성 요소로 이루어집니다.
데이터베이스 시스템: Mattermost는 PostgreSQL을 기본 데이터베이스로 사용하며(클라우드 호스팅 PostgreSQL의 경우 Amazon RDS 지원), 다음과 같은 모든 영속 데이터를 저장합니다.
- 메시지
- 사용자 계정 및 자격 증명
- 구성 설정
- 팀/채널 메타데이터
고가용성을 위해 데이터베이스 시스템은 클러스터링, 복제, 페일오버 메커니즘을 활용할 수 있습니다. PostgreSQL은 동기·비동기 복제 같은 기능을 지원하여 이중화를 위한 복제본을 만들 수 있습니다. Amazon RDS 같은 클라우드 호스팅 솔루션은 자동 페일오버와 백업 기능을 제공하여 시스템 장애 중에도 지속적인 운영을 보장합니다.
파일 저장소: 채널 전반에서 공유되는 모든 멀티미디어 자산(예: 파일 업로드, 이미지, 동영상)을 관리합니다. 저장 솔루션으로는 다음 옵션이 있습니다.
- 로컬 저장소: 파일을 서버 파일 시스템에 직접 저장합니다. 고가용성을 위해 RAID 구성이나 백업으로 이중화하여 디스크 장애로부터 복구할 수 있습니다.
- NAS(Network Attached Storage): 네트워크 내에서 파일 저장을 중앙화하는 엔터프라이즈에서 흔히 사용합니다. NAS 구성에는 분산 시스템이나 복제 같은 장애 내성 구성을 포함해 접근 중단을 방지할 수 있습니다.
- S3: 대규모 환경이나 분산 배포 조직을 위한 클라우드 기반 확장형 저장소를 제공합니다. 데이터베이스와 파일 저장소가 확장성을 담당하여 수백만 건의 메시지와 파일을 효율적으로 지원하면서 데이터 일관성을 보장합니다. S3는 여러 가용 영역에 데이터를 분산하여 단일 장애 지점이 없도록 하는 고가용성을 기본적으로 지원합니다.
고가용성 조치를 통해 수백만 건의 메시지와 파일을 확장 가능하고 안전하게 지원하면서 데이터 일관성을 보장합니다.
시스템 확장: Mattermost는 협업 도구일 뿐 아니라 확장성을 염두에 두고 설계된 플랫폼입니다. 주요 확장 기능은 다음과 같습니다.
자체 호스팅 연동: Jira, GitLab 같은 로컬 또는 클라우드 기반 시스템이나 팀에 필요한 커스텀 연동에 Mattermost를 연결합니다. 내장 API와 웹훅을 활용해 워크플로를 자동화하고 시스템 간 통신을 트리거할 수 있습니다. 고가용성을 위해 연동에 중복 통신 채널과 재시도 메커니즘을 적용하면 일시적 장애를 매끄럽게 처리할 수 있습니다.
서드파티 인증: 서드파티 플랫폼(예: Slack 가져오기 API, OAuth 서비스)에 연동을 연결합니다. 서드파티 ID 서비스는 일관되고 안전한 사용자 접근 흐름을 보장합니다. 서드파티 ID 서비스는 로드 밸런싱과 페일오버 전략을 활용하여 높은 트래픽이나 장애 상황에서도 일관되고 안전한 사용자 접근 흐름을 유지할 수 있습니다.
보안 및 확장성 기능: 보안과 확장성이 아키텍처에 내재되어 있어 Mattermost는 엔터프라이즈 활용 사례에 적합합니다.
보안
- NGINX 같은 리버스 프록시나 하드웨어 프록시를 배포해 외부 트래픽을 관리합니다. 서버를 보호하고 HTTPS를 강제하며 로드 밸런싱을 처리합니다.
- 구성 가능한 SSL/TLS 암호화로 전송 중 데이터 보안을 보장합니다.
- 세분화된 사용자 권한과 역할로 팀 내 민감 정보를 보호합니다.
확장성 및 고가용성: Enterprise Edition은 여러 Mattermost 서버를 클러스터 환경에 배포하여 대규모 조직에서 안정성과 성능을 확보하도록 사용자 요청을 여러 서버에 분산하는 것을 지원합니다. 클러스터링은 자동 페일오버를 보장하므로 장애 발생 시 사용자 트래픽이 정상 서버로 전환됩니다.
알림 및 통신 서비스: Mattermost는 비동기 및 실시간 통신을 지원하며, 다양한 워크플로에 맞춘 알림 시스템으로 이를 보완합니다.
- 푸시 알림: 메시지 알림이나 멘션을 모바일 기기로 전달합니다. 백업 알림 서비스와 재시도 메커니즘으로 안정적인 전달의 고가용성을 확보합니다.
- 이메일 연동: 사용자가 오프라인이거나 비활성 상태일 때 정기 알림을 제공합니다. 페일오버 메일 서버와 분산 구성으로 이메일 알림이 중단 없이 발송되도록 보장합니다.
이러한 서비스는 지속적인 참여와 소통을 보장합니다.
통신 프로토콜
사용자가 Mattermost 서버와 맺는 연결 유형을 정의하는 통신 프로토콜(HTTPS와 WS)도 있습니다. 고가용성 조치는 특히 프로덕션 환경에서 클라이언트와 Mattermost 서버 간의 안정적이고 복원력 있는 연결을 보장합니다.
HTTPS 연결(Secure Hypertext Transfer Protocol)
- Mattermost 서버로의 HTTPS 연결은 페이지를 렌더링하고 핵심 플랫폼 기능에 대한 접근을 제공하지만, 실시간 상호작용은 포함하지 않습니다(이는 WSS 연결이 담당합니다).
- HTTPS는 안전한 암호화 프로토콜이며 프로덕션 환경에 강력히 권장됩니다. 암호화되지 않은 HTTP 연결은 초기 테스트와 구성에는 사용할 수 있지만 프로덕션 환경에서는 절대 사용해서는 안 됩니다. 고가용성을 위해 HTTPS 트래픽은 로드 밸런서 구성을 갖춘 리버스 프록시(예: NGINX 또는 HAProxy)가 처리하여 여러 Mattermost 서버 인스턴스로 연결을 분산해야 합니다. 중복 프록시 서버를 두면 페일오버가 가능해 서비스가 중단되지 않습니다.
WSS 연결(Secure WebSocket Protocol)
Mattermost 서버로의 보안 WebSocket(WSS) 연결은 클라이언트와 서버 간 실시간 업데이트와 알림을 가능하게 합니다.
WSS 연결을 사용할 수 없어 HTTPS로 대체되면 시스템이 동작하는 것처럼 보이지만 실시간 업데이트와 알림은 동작하지 않습니다. 이 상태에서는 페이지를 새로 고쳐야만 업데이트가 표시됩니다. WSS는 클라이언트가 연결되어 있는 동안 Mattermost 서버와 지속적인 연결을 유지하는 반면, HTTPS는 간헐적으로 연결되며 페이지나 파일이 요청될 때만 서버에 접속합니다.
WSS 연결의 고가용성은 Mattermost 서버를 클러스터링하고 클러스터 노드 전반에 WebSocket 연결을 로드 밸런싱하여 확보할 수 있습니다. 서버나 네트워크 장애 중에도 실시간 상호작용을 유지하려면 프록시 서버와 WebSocket 전용 구성(스티키 세션이나 연결 유지 등)이 필수적입니다.
통신 프로토콜에 고가용성 전략을 반영함으로써 플랫폼은 일반적인 사용자 상호작용(HTTPS)과 실시간 업데이트(WSS) 모두에 대해 안전하고 확장 가능하며 안정적인 연결을 보장합니다. 이러한 조치는 지속적인 통신이 필요한 미션 크리티컬 환경과 분산 배포에서 매우 중요합니다.
VPN 뒤에서 운영
Mattermost는 컴퓨팅 기기와 물리적 위치에 대한 안전한 접근을 포함해 여러 인증 요소를 제공할 수 있는 사설 네트워크 내부에 설치하도록 설계되었습니다. 외부 접근이 필요한 경우, OpenVPN 같은 가상 사설망(VPN) 클라이언트와 추가 인증을 사용하여 웹, 데스크톱, 모바일에서 Mattermost에 연결하는 것을 권장합니다.
VPN 없는 구성
Mattermost를 공개 인터넷에서 접근할 수 있게 하려면 다음을 권장합니다.
- IT 관리자를 지정해 적절한 네트워크 보안을 설정하고, Mattermost 보안 공지를 구독하며, 새로운 보안 업데이트를 적용해야 합니다.
- 조직은 SAML 싱글 사인온 또는 MFA를 활성화해야 합니다.
VPN이나 MFA 없이 Mattermost를 공개 인터넷에서 접근할 수 있게 한 경우에는, 시스템이 침해되더라도 영향이 크지 않은 비기밀·비중요 대화에만 사용할 것을 권장합니다.
Mattermost 서비스 포트
다음 표는 Mattermost 서버, 푸시 프록시, 모바일 앱 클라이언트의 Mattermost 서비스 포트를 정리한 것입니다. 프록시 없이 Mattermost 서버와 통신해야 하는 클라이언트가 있는 시스템 관리자는 필요에 따라 특정 방화벽 포트를 열 수 있습니다.
Mattermost 서버
인바운드 포트
| 서비스 | 구성 설정 | 포트(기본값) | 프로토콜 | 비고 |
|---|---|---|---|---|
| HTTP/WebSocket | ServiceSettings.ListenAddress | 8065 / 80 / 443 (TLS) | TCP | 외부(프록시 없음) / 내부(프록시 사용). 포트 80과 443은 일반적으로 HTTPS를 사용할 때 쓰입니다. |
| 클러스터(HA) | ClusterSettings.GossipPort | 8074 | TCP/UDP | 내부 전용. 모든 Mattermost 서버 노드 간에 통신이 가능해야 합니다. TCP와 UDP를 모두 열어야 합니다. 고가용성 구성에서만 필요합니다. |
| 메트릭 | MetricsSettings.ListenAddress | 8067 | TCP | 내부 전용. 신뢰할 수 있는 모니터링 호스트(예: Prometheus)로 접근을 제한하세요. 공개 인터넷에 노출해서는 안 됩니다. 메트릭 수집을 활성화한 경우에만 필요합니다. |
아웃바운드 포트
| 서비스 | 구성 설정 | 포트(기본값) | 프로토콜 | 비고 |
|---|---|---|---|---|
| 데이터베이스 | SqlSettings.DataSource | 5432 (PostgreSQL) | 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 | 내부 전용. Mattermost 서버 노드에서만 접근할 수 있어야 합니다. 자체 호스팅 푸시 프록시를 운영할 때 필요합니다. |
모바일 클라이언트
푸시 알림을 수신하려면 네트워크에서 iOS 기기용 포트 5223과 Android용 포트 5228-5230의 트래픽을 허용해야 합니다.