대규모 오픈소스 팀 메신저: Mattermost를 직접 운영하기

몇 년에 한 번씩 어떤 회사는 자사의 Slack 청구서를 들여다보고, 사용자당 비용을 더해 보고, 십 년 치 내부 대화가 다른 나라 관할권에 있는 남의 데이터베이스에 놓여 있다는 사실을 깨닫고, 다른 길은 없는지 묻습니다. 있습니다. Mattermost는 직접 호스팅하는 답 가운데 가장 믿을 만한 선택지이고, 이미 꽤 오래 그래 왔습니다.
동시에 도입 전에 가장 자주 오해받는 도구이기도 합니다. 받게 될 것이라 생각한 무료 에디션은 대개 결국 운영하게 되는 그 에디션이 아니기 때문입니다. 이 글은 Mattermost가 실제로 무엇인지, 무료 버전에 정말 무엇이 들어 있는지, 그리고 처음 자체 호스팅하는 사람 거의 모두를 붙잡는 세 가지 운영상의 문제를 다룹니다.
Mattermost란 무엇인가
Go로 작성된 서버, PostgreSQL 데이터베이스, React 웹 클라이언트, 그리고 네이티브 데스크톱 및 모바일 앱. 채널, 스레드, 파일 공유, 검색, 슬래시 명령, 수신 및 발신 웹훅, 봇, 그리고 플러그인 프레임워크. Slack을 써 본 사람이라면 하루 오후면 제 몫을 하고, 나머지 사람들도 마찬가지입니다. 회사 전체에 이사를 부탁할 때는 이 점이 어떤 기능 목록보다 중요합니다.
이 핵심 주위에는 체크리스트로 굴러가는 장애 대응과 프로세스 작업을 위한 Playbooks가 있고, 음성과 영상, 화면 공유를 위한 Calls가 있습니다. 연동 목록은 익숙한 이름들을 포함합니다. GitLab, GitHub, Jira, Jenkins, PagerDuty. 이 제품이 진짜로 강한 영역은 ChatOps이고, 엔지니어링과 운영 팀에서 지지자가 많은 이유도 거기에 있습니다. 애초에 트래픽을 상용 SaaS에 올릴 수 없는 국방과 공공 부문 조직에서도 마찬가지입니다.
아키텍처 측면에서 중요한 사실은 이 모든 것이 여러분이 고른 인프라 위에서 돌아간다는 점입니다. Matomo로 분석을 직접 운영하는 것이나 Mautic으로 마케팅 자동화를 직접 운영하는 것과 같은 원리입니다. 메시지는 여러분의 데이터베이스에, 파일은 여러분의 오브젝트 스토리지에 있고, 누구도 여러분에게 묻지 않고 보존 정책이나 가격을 바꿀 수 없습니다.
라이선스 상황, 있는 그대로
여기서 사람들이 헷갈리니 직설적으로 적겠습니다.
Team Edition이 오픈소스 판입니다. MIT 라이선스, 무료, 사용자 수 제한 없음. 자체 호스팅하는 사람 대부분이 실제로 돌리는 것도 이쪽입니다. 메시지, 채널, 스레드, 검색, 연동, 웹훅, 플러그인 프레임워크를 얻습니다. SAML이나 AD/LDAP 싱글 사인온, 컴플라이언스 내보내기, 엔터프라이즈 검색, 고가용성 클러스터, 게스트 계정은 얻지 못합니다.
Entry는 무료 상용 에디션입니다. 고급 기능 묶음을 열어 주지만 상한을 겁니다. 메시지 기록에 제한이 있고, 플레이북 실행 횟수에 제한이 있으며, 지원은 커뮤니티뿐이고, 대상은 대략 오십 명 미만의 팀입니다. 유료 제품을 평가하는 방법으로는 괜찮습니다. 회사의 대화 기록을 오래 둘 집으로는 나쁩니다. 기록 상한이 걸리는 지점이 정확히 언젠가 신경 쓰게 될 그 부분이기 때문입니다.
Professional, Enterprise, Enterprise Advanced가 유료 등급입니다. Professional은 SSO, MFA, 세분화된 권한을 더합니다. Enterprise는 AD/LDAP 동기화, 컴플라이언스 자동화, 엔터프라이즈 검색, 고가용성, 대규모 Playbooks를 더합니다. Enterprise Advanced는 기밀 정보 취급, 제로 트러스트 통제, 망 분리 환경 배포를 더하며, 국방과 행정 사용자가 있는 등급이 여기입니다. Mattermost는 더 이상 사용자당 가격을 공개하지 않으므로 영업과의 대화를 예산에 넣어 두십시오.
대부분의 팀이 마주하는 결정은 등급 목록이 시사하는 것보다 단순합니다. 사내 아이덴티티 공급자에 대한 SAML이 필요하다면 돈을 내게 됩니다. 로컬 계정이나 GitLab OAuth로 버틸 수 있다면 Team Edition은 놀랄 만큼 큰 조직을 감당합니다.
설치하기
소규모 구성
수십 명에서 수백 명 규모의 팀이라면 제대로 크기를 잡은 VPS 한 대로 정말 충분합니다. Mattermost 자체 지침은 1명에서 1,000명까지를 vCPU 하나와 메모리 2GB에 두는데, 이는 벤더의 최소 사양이 늘 그렇듯 낙관적입니다. 코어 넷과 8GB를 주면 다시는 그 서버를 떠올리지 않게 됩니다.
스택은 Mattermost, PostgreSQL, 그리고 TLS를 종료하는 리버스 프록시입니다. Traefik과 Let's Encrypt 조합이 손이 가장 적게 갑니다.
services:
mattermost:
image: mattermost/mattermost-team-edition:latest
restart: unless-stopped
environment:
- MM_SQLSETTINGS_DRIVERNAME=postgres
- MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:your_secure_password@db:5432/mattermost?sslmode=disable
- MM_SERVICESETTINGS_SITEURL=https://chat.example.com
volumes:
- mm_data:/mattermost/data
- mm_config:/mattermost/config
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=mmuser
- POSTGRES_PASSWORD=your_secure_password
- POSTGRES_DB=mattermost
volumes:
- db_data:/var/lib/postgresql/data
volumes:
mm_data:
mm_config:
db_data:
누구를 초대하기 전에 SiteURL부터 제대로 설정하십시오. 잘못되었거나 빠진 SiteURL은 푸시 알림, OAuth 콜백, 링크 미리보기를 망가뜨립니다. 나중에 원인을 찾기는 성가시고, 지금 피하기는 한 줄입니다.
벤더 자신도 하는 말이니 한 번 더 적자면, 컨테이너는 평가용과 소규모 운영 설치에는 괜찮지만 그 경로만으로는 클러스터링도 고가용성도 얻지 못합니다. 둘이 필요하다면 리눅스에 직접 설치하거나 Kubernetes 오퍼레이터를 쓰십시오.
운영 구성
PostgreSQL 14 이상. MySQL 지원은 v11부터 폐기 수순에 들어가므로, 지금 새로 세운다면 MySQL로 시작하지 마십시오. Amazon Aurora PostgreSQL은 지원되며 AWS에서는 합리적인 관리형 선택지입니다.
파일은 첫날부터 S3 호환 오브젝트 스토리지에 두십시오. 로컬 파일 시스템도 동작하고 기본값이기도 하지만, 바로 그것이 조용히 서버에 상태를 묶고, 백업을 거대하게 만들고, 이전을 고통스럽게 만듭니다. 나중에 바꾸는 일은 파일을 옮기고 경로를 다시 쓰는 일입니다. 설치 시점에 바꾸는 일은 설정값 몇 개를 넣는 일입니다.
고가용성에는 Enterprise 등급이 필요합니다. 로드 밸런서 뒤의 여러 애플리케이션 노드, 공유 오브젝트 스토어, 읽기 복제본을 둔 데이터베이스. 대규모 검색에는 Elasticsearch나 OpenSearch가 필요하고 이 역시 Enterprise입니다. PostgreSQL의 전문 검색은 수백 명과 수백만 건의 메시지에는 충분하고, CJK 검색은 이제 PostgreSQL에서 기본으로 동작합니다. 예전에는 이것이 검색 애드온을 사는 실질적인 이유였습니다.
어긋나는 세 가지
여기까지는 모두 문서에 있습니다. 아래는 사람들이 운영 환경에서 발견하는 부분입니다.
푸시 알림은 기대하는 방식으로 무료가 아니다
모바일 푸시는 애플과 구글의 네트워크를 거쳐야 하고, 이는 무언가가 서명 인증서를 보관해야 한다는 뜻입니다. Mattermost는 바로 동작하는 Test Push Notification Service를 운영하지만 운영 환경용이 아니라고 명시해 두었습니다. 운영용은 Hosted Push Notification Service이며 유료 라이선스와 함께 제공됩니다.
세 번째 선택지는 자체 푸시 프록시를 돌리는 것입니다. 문서가 잘 갖춰져 있고 충분히 할 만하지만, 자사 Firebase와 APNs 자격 증명으로 자사 모바일 앱을 빌드하고 배포한다는 뜻입니다. 그것은 앱 스토어와의 관계이자 릴리스 프로세스이지, 한나절 작업이 아닙니다.
셋 중 무엇으로 갈지는 휴대폰에 배포하기 전에 정하십시오. 첫 번째 사람이 왜 앱을 열어 둘 때만 메시지가 오냐고 묻고 난 뒤가 아니라. 이 한 가지 항목이 다른 어떤 이유보다 많은 Mattermost 이전을 무너뜨립니다.
Calls에는 포트 하나 이상이 필요하다
Calls에는 두 가지 모드가 있습니다. 통합 모드는 미디어 서비스를 Mattermost 서버 안에서 돌리며 활성 사용자 오십 명 미만에 권장됩니다. 그 이상이면 rtcd가 필요합니다. 통화 미디어를 본 서버에서 떼어 내고 수평으로 확장하는 별도 서비스입니다. rtcd는 Enterprise를 요구합니다.
어느 쪽이든 클라이언트는 UDP 8443 포트로 미디어 서비스에 도달해야 하고, 그 포트는 미디어 서비스가 돌아가는 호스트에서 열려 있어야 합니다. nginx 리버스 프록시는 이를 전달하지 않습니다. nginx는 애초에 UDP 경로에 있지 않기 때문입니다. "통화가 연결되지 않는다"는 글의 절반은 결국 한 번도 추가되지 않은 방화벽 규칙으로 귀결됩니다.
무료 등급에서는 무제한 그룹 통화가 아니라 시간 제한이 있는 일대일 통화를 예상하십시오. 전사 화상 통화가 요건이라면 비용에 반영하십시오.
누군가는 운영해야 한다
정직한 비용 비교는 라이선스 대 0이 아닙니다. 라이선스 대 인프라 더하기 패치를 적용하는 사람입니다. Mattermost는 릴리스가 잦고, 보안상의 이유로 최신을 따라가고 싶어질 것이며, 업그레이드에는 운영 환경이 아닌 어딘가에서 먼저 시험해야 할 데이터베이스 마이그레이션이 따라옵니다.
이미 자체 인프라를 굴리는 팀에게 이는 한계 작업이고 계산은 압도적으로 유리합니다. 운영 여력이 없는 열 명짜리 회사에는 SaaS 청구서가 잃어버린 화요일 오후들보다 실제로 저렴할 수 있습니다. 자신이 어느 쪽인지에 대해서는 솔직하십시오.
Slack에서 옮겨 가기
Mattermost에는 Slack 내보내기 파일에서 가져오는 경로가 있고 실제로 동작합니다. 다만 미리 알아 두면 좋은 단서가 붙습니다. 공개 채널 메시지와 사용자는 잘 넘어옵니다. 비공개 채널과 다이렉트 메시지는 애초에 사용 중인 Slack 요금제가 무엇을 내보내게 해 주는지에 달려 있습니다. 스레드, 첨부 파일, 커스텀 이모지, 연동은 손이 가고, 일부는 다시 만들어야 합니다.
먹히는 접근법은 이렇습니다. 기록은 검색 가능한 아카이브로 가져오고, 전환일을 깨끗한 출발점으로 취급하십시오. Slack의 모든 동작을 그대로 재현하려는 시도야말로 2주짜리 이전을 두 분기짜리로 만드는 길입니다.
2주쯤 둘을 나란히 돌리고, 한 팀을 먼저 옮기고, 종료 날짜는 시작할 때 공개적으로 못 박으십시오. 메신저 이전은 기술이 아니라 사람 쪽에서 실패합니다.
유럽 관점
EU 기업에게 이것은 비용만의 문제가 아닙니다. 자체 호스팅은 내부 커뮤니케이션을 여러분이 통제하는 경계 안에 둡니다. 그러면 여러 대화가 한꺼번에 달라집니다. GDPR의 이전 분석, NIS2의 공급망 점검, 그리고 공공 조달에서 점점 자주 등장하며 클라우드 및 AI 개발법의 주제 전부를 이루는 주권 문제입니다.
내부 채팅은 회사가 가진 기밀 자료 가운데 밀도가 가장 높은 집합체 중 하나입니다. 거기에는 장애의 세부 사항, 고객 이름, 아무도 붙여 넣지 말았어야 했지만 누군가 붙여 넣은 자격 증명, 진행 중인 모든 상업적 협상이 있습니다. 그 데이터가 어디에 사는지 누가 물었을 때, 수탁 처리자 목록이 아니라 리전과 랙으로 답할 수 있다는 것은 그 자체로 값어치가 있습니다.
굳이 하지 않아도 될 때
인원이 열다섯이고 컴플라이언스 요구가 가볍고 아무도 서버를 떠맡고 싶어 하지 않는다면 SaaS를 쓰십시오. 절감액이 들어가는 주의력을 메워 주지 못합니다.
이미 살고 있는 생태계와의 깊은 연동이 필요하다면 무엇을 잃게 될지 꼼꼼히 보십시오. Microsoft 365 환경 안의 팀은 여러분이 다시 만들어야 할 것들을 공짜로 받고 있습니다.
그리고 추진력이 비용이나 통제권, 관할권에 관한 실제 요건이 아니라 목소리 큰 한 사람의 특정 벤더에 대한 반감이라면, 이전은 채택률 육십 퍼센트쯤에서 멈춥니다. 커뮤니케이션 도구에는 이것이 최악의 결말입니다.
도움이 필요하시면
우리는 유럽에서 사업하는 기업을 위해 자체 호스팅 오픈소스 인프라를 구축하고 운영합니다. 푸시 프록시, 오브젝트 스토리지 이전, 업그레이드 경로, 그리고 채팅 도입이 실제로 정착하게 만드는 아이덴티티 연동처럼 화려하지 않은 부분까지 포함해서입니다.
크기를 제대로 잡은 Mattermost 구축, 해 본 사람이 계획한 Slack 이전, 혹은 자체 호스팅이 여러분 팀에 값어치가 있는지에 대한 솔직한 답이 필요하시면 office@c9group.dev로 연락 주십시오. 인프라 작업에 관해서는 AWS 비용 최적화 페이지를 참고하십시오.
자체 호스팅 스택을 통째로 꾸리신다면 같은 논리가 분석과 마케팅 자동화에도 적용됩니다.
게시일: 2026년 8월 8일 카테고리: 협업, 오픈소스, 개인정보 보호