데이터 보존 정책
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
Mattermost는 모든 메시지 기록을 저장하여 시스템 관리자와 최종 사용자에게 무제한 검색 기록을 제공합니다.
Mattermost Enterprise 고객은 데이터 보존 컴플라이언스 요건을 충족하기 위해 전역 보존 정책과 맞춤 보존 정책을 설정하여, Mattermost 채널과 다이렉트 메시지에서 메시지와 업로드된 파일을 얼마나 오래 보관할지 관리할 수 있습니다.
- 기본적으로 Mattermost는 "소프트 삭제" 방식을 사용합니다. 사용자 동작으로 삭제된 메시지와 파일은 사용자 인터페이스에서 제거되지만 Mattermost 데이터베이스에는 남아 있습니다.
- 메시지나 파일이 영구 삭제되면 그 동작은 되돌릴 수 없습니다. 데이터 손실을 방지하기 위해 전역 또는 맞춤 데이터 보존 정책을 설정할 때 주의할 것을 권장합니다.
전역 데이터 보존 정책 구성
전역 데이터 보존 정책을 설정하려면 다음과 같이 하세요.
- System Console > Compliance > Data Retention Policies로 이동합니다.
- Global retention policy 표 오른쪽 메뉴에서 Edit를 선택합니다.
- 드롭다운에서 Channel & direct message retention 옵션을 선택해 채널 메시지와 다이렉트 메시지에 대한 전역 보존 정책을 지정한 다음, 해당 메시지를 시간·일·연 단위로 얼마나 보관할지 설정합니다. 시간을 설정하면 지정한 기간보다 오래된 메시지와 첨부 파일이 삭제됩니다. 최소 보존 기간은 1시간입니다.
- 드롭다운에서 File retention 옵션을 선택합니다. 파일을 보관할 시간·일·연 수를 설정합니다. 시간을 설정하면 지정한 기간보다 오래된 업로드 파일이 파일 저장 시스템(System Console > Environment > File Storage에 지정한 로컬 디스크 또는 Amazon S3 서비스)에서 삭제됩니다. 최소 보존 기간은 1시간입니다. 전역 파일 정책은 다이렉트 메시지, 비공개 채널, 공개 채널 어디에 있든 관계없이 모든 파일을 삭제합니다.
- Mattermost v10.10부터는 Preserve pinned posts를 활성화해, 데이터 보존 정책이 메시지를 삭제할 때 고정된 게시물을 선택적으로 보존할 수 있습니다. 활성화하면 고정된 게시물은 구성된 보존 기간을 초과하더라도 삭제되지 않습니다.
- Policy log 섹션에서 Edit를 선택해 매일 예약된 데이터 보존 작업의 시작 시각을 지정합니다. 시스템 사용자가 적은 시간대를 선택하세요.
Save를 선택합니다. 지정한 기간보다 오래된 메시지와 파일은 해당하는 경우 지정한 서버 시각에 삭제됩니다.
맞춤 데이터 보존 정책 구성
맞춤 데이터 보존 정책을 설정하려면 다음과 같이 하세요.
- System Console > Compliance > Data Retention Policies로 이동합니다.
- Custom retention policies 표 오른쪽의 Add policy를 선택합니다.
- 정책 이름을 지정합니다.
- 드롭다운에서 Channel & direct message retention 옵션을 선택해 채널 메시지와 다이렉트 메시지에 대한 맞춤 보존 정책을 지정한 다음, 업로드된 파일을 일 또는 연 단위로 얼마나 보관할지 설정합니다. 시간을 설정하면 지정한 기간보다 오래된 메시지와 첨부 파일이 삭제됩니다. 최소 보존 기간은 1일입니다.
- Add teams를 선택해 특정 팀을 검색하거나 Add channels를 선택해 특정 채널을 검색하여 이 정책에 팀과 채널을 할당합니다. 팀만 지정하면 선택한 팀의 모든 채널이 정책에 포함됩니다.
- Policy log 섹션에서 Edit를 선택해 매일 예약된 데이터 보존 작업의 시작 시각을 지정합니다. 시스템 사용자가 적은 시간대를 선택하세요. 전역 보존 정책에 이미 시각이 설정되어 있다면 맞춤 데이터 보존 정책에도 동일한 시각이 적용됩니다.
설정을 저장합니다. 지정한 기간보다 오래된 메시지와 파일은 해당하는 경우 지정한 서버 시각에 삭제됩니다.
삭제 작업 수동 실행
System Console > Compliance > Data Retention Policy에서 Run Deletion Job Now를 선택하면 언제든지 삭제 작업을 수동으로 실행할 수도 있습니다.
데이터 보존을 ElasticSearch와 함께 사용하는 경우, ElasticSearch 집계 검색 인덱스 설정을 데이터 보존 정책의 일수보다 큰 값으로 지정해야 합니다.
자주 묻는 질문(FAQ)
메시지가 삭제되면 어떻게 되나요?
메시지는 Mattermost 사용자 인터페이스에서 제거되고 Posts 테이블에서 삭제됩니다. 해당 메시지는 더 이상 검색되지 않으며 저장된 게시물 목록에서도 조회할 수 없습니다.
메시지 보존 기간을 초과하지 않은 답글은 사용자 인터페이스에 계속 표시됩니다. 다만 추가 답글은 더 이상 작성할 수 없습니다.
메시지에 파일이 첨부되어 있었다면 사용자 인터페이스에서만 제거됩니다.
삭제되었을 메시지가 왜 아직 보이나요?
웹 앱과 데스크톱 앱은 게시물을 캐시합니다. 데이터 보존 작업으로 삭제된 게시물은 최종 사용자가 캐시를 지우고 새로 고칠 때까지 계속 보입니다.
파일 보존 정책으로 파일이 삭제되면 어떻게 되나요?
첨부 파일은 Mattermost 사용자 인터페이스에서 제거되고, FileInfo 테이블에서 삭제되며, System Console > Environment > File Storage에 지정한 로컬 디스크나 Amazon S3 서비스에서도 삭제됩니다.
삭제 작업 표에 상세 내용 없이 Pending만 표시되는 이유는 무엇인가요?
대개 다른 데이터 보존 작업이 진행 중이라는 뜻입니다. System Console > Compliance > Data Retention Policy의 삭제 작업 표에서 이를 확인할 수 있습니다.
모바일 앱에서는 데이터 보존이 어떻게 처리되나요?
메시지나 파일이 삭제되면 Mattermost 모바일 앱에서 더 이상 검색되지 않습니다.
iOS 및 Android 앱 v1.5 이상에서는 메시지와 파일이 보존 정책 기간을 초과한 경우 다음 상황에서 로컬 저장소에서 삭제됩니다.
- 사용자가 앱을 열 때.
- 사용자가 앱을 백그라운드로 전환할 때.
모바일 앱 v1.4 이하에서는 데이터 보존 정책이 활성화되어 있어도 메시지와 파일이 로컬 저장소에서 지워지지 않습니다.
데이터 보존 작업이 실패했는지 어떻게 알 수 있나요?
Mattermost는 System Console > Compliance > Data Retention Policy에서 각 데이터 보존 작업의 상태를 제공합니다. 여기에서 작업의 성공·실패 여부와 오류 상세 내용을 확인할 수 있습니다.
또한 모든 실패는 서버 로그에 기록됩니다. 오류 로그는 Failed job 문자열로 시작하며 job_id 키/값 쌍을 포함합니다. 데이터 보존 작업 실패는 워커 이름 EnterpriseDataRetention으로 식별됩니다. 필요하다면 이러한 실패를 프로그래밍 방식으로 조회해 적절한 시스템에 알리는 스크립트를 작성할 수 있습니다.
데이터 보존 기간을 변경하면 어떻게 되나요?
데이터 보존은 config.json 파일에 지정된 시각에 하루에 한 번 실행됩니다. 보존 기간을 변경해도 데이터 보존 작업이 추가로 예약되지는 않으며, Mattermost에서 데이터를 얼마나 오래 보관할지만 갱신됩니다.
데이터 보존 기간이 변경되면 시스템 관리자에게 알림이 오나요?
아닙니다. 새 설정이 갱신되기는 하지만, 시스템 관리자는 그 변경이 어떤 영향을 미치는지에 대한 피드백(예: 삭제될 메시지 수 보고)을 받지 않습니다.
데이터 보존 작업이 audits 테이블에도 영향을 주나요?
v5.20 이전에는 데이터 보존이 데이터 보존 기간 설정에 해당하는 모든 사용자 활동을 삭제했습니다. v5.20부터는 audit 테이블이 데이터 보존 기간 설정에 해당하는 사용자 활동을 유지합니다.
데이터 보존 작업에 보관된 채널도 포함되나요?
보관된 채널의 게시물과 첨부 파일도 데이터 보존 작업의 영향을 받습니다. 게시물이 데이터 보존 작업에 설정된 기간을 초과하면 데이터베이스에서 삭제됩니다.
삭제 쿼리를 실행하는 데 얼마나 걸리며 서버 성능에 영향을 주나요?
데이터 보존은 실제 삭제 쿼리를 배치 단위로 실행하며, 쿼리당 1,000건씩 데이터를 삭제합니다. 이는 오래 실행되는 쿼리로 데이터베이스가 장시간 잠기지 않도록 하기 위한 것입니다. 이 한도를 지키면 데이터베이스에서의 쿼리 실행 시간이 수 밀리초 수준으로 유지됩니다.
각 데이터 배치는 인덱스를 기반으로 삭제되므로 작은 배치에 대한 쿼리가 빠르게 실행됩니다. 덕분에 프로세스가 실행되는 동안에도 서버가 완전히 응답 가능한 상태를 유지할 수 있습니다.
데이터 보존 작업이 실행 중인지 또는 예약되어 있는지 어떻게 알 수 있나요?
작업 스케줄러는 구성 설정에 지정된 시각을 기준으로 데이터 보존 작업을 실행합니다. 이때 DEBUG 수준의 로그 한 줄이 출력됩니다: Scheduling data retention job.
작업 서버가 예약된 작업을 실행하기 위해 가져오면 DEBUG 수준의 로그 한 줄이 생성됩니다: Worker EnterpriseDataRetention: Received a new candidate job.
작업이 완료되면 INFO 수준의 로그 한 줄이 생성됩니다: Worker EnterpriseDataRetention: Job is complete.