대규모 환경에서의 릴리스 성능 보장#

Mattermost의 각 릴리스가 대규모 환경에서의 성능에 대한 높은 기준을 유지하도록 하기 위해, Mattermost 엔지니어링 팀은 철저한 부하 테스트를 수행하고, 확장성을 고려한 기능을 개발하며, 데이터베이스 스키마 마이그레이션에 대한 엄격한 가이드라인을 준수합니다.

월간 릴리스 부하 테스트#

매월 배포 승인 전에 Mattermost의 릴리스 후보는 부하 테스트 도구 를 사용하여 실제 대규모 사용 패턴과 일치하는 시뮬레이션 데이터로 테스트됩니다.

수천 명의 사용자와 수백만 개의 게시물이 있는 고가용성 Mattermost 배포에 대해 다양한 구성의 여러 테스트가 실행됩니다. PostgreSQL과 MySQL 모두 테스트되지만, Mattermost v11에서 MySQL 지원이 중단 되면 MySQL 테스트는 중단됩니다.

부하 테스트는 평균 API 요청 시간, 데이터베이스 I/O, 메모리 사용량, 동시성, 초당 요청 수 등을 상세히 기록한 보고서를 생성합니다. 이 릴리스 후보에 대한 성능 보고서는 최신 이전 안정 버전의 보고서와 비교됩니다. 릴리스 후보가 최종 릴리스로 승격되기 전에 모든 편차를 조사하고 수정합니다.

각 보고서와 분석은 공개 개발자: 성능 채널에 게시됩니다.

확장 가능한 기능 및 시스템 개발#

확장성은 새로운 기능과 시스템 개발 과정에서 주요 고려사항이며, 소프트웨어 설계 프로세스의 시작부터 기술 사양에 포함됩니다.

구현의 일환으로 부하 테스트 에이전트가 기능 또는 시스템에 대한 커버리지를 포함하도록 업데이트됩니다. 그런 다음 부하 테스트를 실행하여 결과를 기준값과 비교합니다.

코드 변경사항은 병합되기 전에 최소 2명의 개발자와 SDET/QA 분석가의 검토를 거칩니다.

병합되면 다음 날 새로운 빌드가 생성되어 Mattermost Community Server 에 배포되며, 변경사항이 릴리스 후보에 포함되기 전까지 3-4주 동안 성능에 미치는 영향을 모니터링합니다.

데이터베이스 스키마 변경#

데이터베이스 스키마 변경은 업그레이드 위험과 성능 영향을 최소화하기 위해 최소한으로 유지됩니다. 스키마 변경이 필요한 경우, Mattermost는 마이그레이션 중 및 이후에 위험을 최소화하고 성능 영향을 방지하는 엄격한 마이그레이션 가이드라인 을 따릅니다.

더 복잡한 마이그레이션이 필요한 경우, 상세 분석을 수행하고 가이드와 함께 게시합니다. 분석 예시로는 Mattermost v6.0 스키마 마이그레이션 이 있습니다.

또한 모든 데이터베이스 스키마 변경은 월간 릴리스 프로세스의 일환으로 부하 테스트를 거칩니다.

릴리스 후 모니터링#

Mattermost의 새 버전이 릴리스된 후, 여러 주에 걸쳐 Mattermost Cloud 고객에게 점진적으로 배포됩니다. 배포 중에는 예상치 못한 변경사항에 대해 성능 및 오류율 메트릭을 모니터링합니다. 사용자에게 영향을 미치는 변경사항이 발견되면 릴리스를 되돌리고 편차를 조사하며 수정사항은 패치 릴리스의 일부로 제공됩니다.

또한 Mattermost 채널, 사용자 포럼, 지원 티켓을 통해 문제 보고를 면밀히 모니터링합니다. 모든 보고사항은 적절히 조사되고 해결됩니다.