loading...

지속 가능한 성장을 향한 MariaDB의 릴리즈 전략

지속 가능한 성장을 향한 MariaDB의 릴리즈 전략

들어가며

2021년 12월 9일 MariaDB Corporation Ab와 MariaDB Foundation은 MariaDB Community Server의 새로운 릴리즈 모델을 발표했습니다. 발표된 릴리즈 모델은 MariaDB Community Server 10.8 버전부터 적용되며 변경된 정책의 가장 중요한 내용은 앞으로 분기별로 새로운 버전의 MariaDB Community Server가 릴리즈된다는 것입니다. 이 정책에 따라 올해 상반기에 CS(Community Server) 10.7/10.8 GA 버전이 릴리즈되었고, 하반기인 8월 22일에 10.9 GA 버전이 릴리즈되었습니다. 이러한 정책변화를 맞이하여 MariaDB측에서 이야기한 릴리즈 모델 변경 이유와 상반기에 릴리즈된 MariaDB Community Server들의 변경사항에 대해 이번 리포트에서 보다 상세히 살펴보고자 합니다.

새로운 릴리즈 모델

이전 모델(long-term release model)에서는 1년에 한번씩 새로운 버전의 MariaDB Community Server를 릴리즈하는 정책이었습니다. 이번에 발표한 새로운 모델(Short-term release model)은 3개월에 한번씩 새로운 버전을 릴리즈하고 이 모델에 따라 릴리즈된 Community Server는 GA버전(안정된 버전)부터 1년간의 지원(Bug Fix, 보안 업데이트)을 받을 수 있게 되었습니다.

MariaDB Corporation의 공동 설립자이자 서버 제품 관리 담당 부사장인 Max Mether는 3개월마다 제품을 릴리즈하는 것은 빠르게 변화하는 환경과 최신 트렌드에서 요구되는 기능을 더욱 신속하게 대응하기 위함이며 정책 변경의 배경에 대해 다음과 같이 설명하였습니다.

MariaDB의 초기에는 다소 애매한 릴리즈 모델로 품질에 대한 엄격한 요구사항과 거대한 추가 기능 세트에 의해 신규 버전 릴리즈에 너무 긴 시간이 소요되었고 심지어 몇 년이 걸리는 상황이 발생하기도 했습니다. 이 당시 모델은 클라우드 환경같이 품질을 유지하면서 새로운 기능을 빠르게 추가하기에는 부적합한 모델이었죠.

2017년 MariaDB측은 신규 버전에 너무 오랜 시간이 걸리는 것을 피하기 위해 MariaDB CS 10.3 버전 릴리즈와 함께 매년 같은 시점에 새로운 릴리즈를 제공하는 time-based 릴리즈 모델로 전환하였습니다.

이 모델을 통해 MariaDB는 신규 버전의 더 빠른 릴리즈에는 성공하였지만 여전히 문제가 남아 있었습니다. 새로운 릴리즈 마감일까지 새로운 기능 구현 및 적용을 완료하지 못하는 경우가 많이 발생하였고 이러한 문제가 발생하는 경우 그들이 선택할 수 있는 3가지 타협안이 있었습니다.

◎  1년 뒤 새로운 버전 릴리즈 시 기능 추가
◎  새로운 버전 릴리즈 날짜를 연기
◎  아직 만족할 만한 품질은 아니지만 해당 기능을 추가

3가지 타협안이 있었지만 어느 것도 그들이 원하던 선택지는 아니었고, 이러한 배경으로 MariaDB측은 새로운 모델을 발표하게 되었습니다. 새로운 모델을 사용하면 마감시간을 놓치더라도 1년이 아닌 3개월 뒤 기능 추가가 가능해지고 이를 통해 릴리즈 날짜 및 품질에 대해 타협할 필요가 없어지게 됩니다. 또한 릴리즈 인터벌이 짧아지는 만큼 추가되는 기능의 양이 적어지므로 더 철저한 QA가 가능해지고 QA를 통과하지 못하더라도 보완을 통해 3개월 후 릴리즈에 추가할 수 있어 안정성이 크게 증가할 것으로 MariaDB측은 기대하고 있습니다.

결국 Short-term 릴리즈 모델 변경의 목적은 새로운 기능 추가를 더 자주하고 이를 통해 더 많은 혁신을 이루면서 품질을 향상 시키고 동시에 고정된 마감일에 의해 개발자가 받는 스트레스를 감소하게 되는 것입니다.

지금까지 설명한 Short-term 릴리즈 모델은 MariaDB CS 버전에만 적용되며 MariaDB ES(Enterprise Server) 버전은 MariaDB측으로부터 기존과 동일한 기간 동안(최소 5년) 서비스를 제공받을 수 있습니다.

MariaDB 릴리즈 모델 요약
MariaDB Community Server MariaDB Enterprise Server
기술지원 GA 버전 이후 1년간 기술지원 최소 5년간 기술지원
릴리즈 주기 분기별(3개월) 릴리즈 커뮤니티 서버보다 더 느린 릴리즈 속도
새로운 기능 추가 적극적으로 반영
(사용자 의견을 제품에 빨리 반영)
커뮤니티 버전에서 안정성이 확인되고
기술지원이 가능한 기능만 추가
운영 환경 적합도 운영용 환경에 부적합 운영용 환경에 적합
기능 백포팅 불가능 구 엔터프라이즈 버전에 백포팅 가능
SkySQL 지원하지 않음 사용 가능
[표 1] MariaDB 릴리즈 모델 요약

MariaDB Community Server 10.7 주요 변경사항

CS 10.7은 특이하게 Short-term, Long-term 두 릴리즈 모델에 속하지 않는 과도기적인 릴리즈라고 알려져 있습니다. 이러한 이유로 MariaDB 홈페이지의 릴리즈 노트를 확인하면 10.8 버전과 10.6 버전 사이에 10.7 버전의 링크가 보이지 않습니다.

Release Notes -mariaDB 10.8 Series
  • mariaDB 10.8.4 Release Notes - unreleased
  • mariaDB 10.8.3 Release Notes - status:stable(GA) |released date:20 May 2022
  • mariaDB 10.8.2 Release Notes - status:RC |released date:12 Feb 2022
  • mariaDB 10.8.1 Release Notes - status:RC |released date:9 Feb 2022
  • mariaDB 10.8.0 Release Notes - status:Alpha |released date:21 Dec 2021
Release Notes -mariaDB 10.6 Series
  • mariaDB 10.6.9 Release Notes - unreleased
  • mariaDB 10.6.8 Release Notes - status:stable(GA) |released date:20 May 2022
  • mariaDB 10.6.7 Release Notes - status:stable(GA) |released date:12 Feb 2022
  • mariaDB 10.6.6 Release Notes - status:stable(GA) |released date:9 Feb 2022
[그림 1] Release Note (MariaDB 홈페이지)

MariaDB CS 10.7 버전은 2021년 9월 17일 Alpha 버전 릴리즈 후 RC 버전을 거쳐 2022년 2월 9일 GA 버전이 릴리즈되었고, Short-term 모델과 동일하게 1년 후인 2023년 2월 8일 지원이 종료될 예정입니다.

mariaDB general release maintenance periods
  • major and minor version 5.1 / stable(GA) Date 1 Feb 2010 / End -of-life 1 Feb 2015
  • major and minor version 5.2 / stable(GA) Date 10 Nov 2010 / End -of-life 10 Nov 2015
  • major and minor version 5.3 / stable(GA) Date 29 Feb 2012 / End -of-life 1 Mar 2017
  • major and minor version 5.5 / stable(GA) Date 11 Apr 2012 / End -of-life 11 Apr 2020
  • major and minor version 10.0 / stable(GA) Date 31 Mar 2014 / End -of-life 31 Mar 2019
  • major and minor version 10.1 / stable(GA) Date 17 Oct 2015 / End -of-life 17 Oct 2020
  • major and minor version 10.2 / stable(GA) Date 23 May 2017 / End -of-life 23 May 2022
  • major and minor version 10.3 / stable(GA) Date 25 May 2018 / End -of-life 25 May 2023
  • major and minor version 10.4 / stable(GA) Date 18 Jun 2019 / End -of-life 18 Jun 2024
  • major and minor version 10.5 / stable(GA) Date 24 Jun 2020 / End -of-life 24 Jun 2025
  • major and minor version 10.6 / stable(GA) Date 6 Jul 2021 / End -of-life 6 Jul 2026
  • major and minor version 10.7 / stable(GA) Date 9 Feb 2022 / End -of-life 9 Feb 2023
  • major and minor version 10.8 / stable(GA) Date 20 May 2022 / End -of-life 20 May 2023
  • major and minor version 10.9 / stable(GA) Date TBC / End -of-life TBC
  • major and minor version 10.10 / stable(GA) Date TBC / End -of-life TBC
[표 2] MariaDB CS 유지보수 기간

CS 10.7 버전은 128 bits의 UUID(Universally Unique Identifier) 데이터 타입이 추가되었고 아래의 새로운 함수들도 추가되었습니다.

MariaDB 릴리즈 모델 요약
함수명 기능 설명
JSON_EQUALS JSON 객체가 동일한지 확인.
동일하면 1, 다르면 0, 둘중 하나라도 Null이면 Null 반환
JSON_NORMALIZE 재귀적으로 키를 정렬하고 공백을 제거
(json 문서의 동일성 비교에 유용함)
NATUAL_SORT_KEY 단순 정렬이 아닌 자연스러운 정렬을 위해 사용되는 함수
(예)IP, 버전,...
SFORMAT 시영자가 지정한 규칙을 사용하는 문자열로 반환
(임의의 텍스트 형식을 위해 문자 입력, 형식 받아서 처리)
[표 3] 10.7 버전 추가 함수

추가된 구문은 손쉽게 파티션에서 테이블, 테이블에서 파티션 이동을 지원하기 위한 CONVERT PARTITION /TABLE 구문과 MySQL 호환성을 위한 Replication 관련 FOR CHANNEL 구문 및 다중 행 입력에서 오류를 발생 시킨 행의 수를 검색할 수 있는 GET DIAGNOSTICS 구문의 ROW_NUMBER 조건 속성이 추가 되었습니다.

새롭게 추가된 기능으로 Provider 플러그인이 있으며 이 플러그인은 bzip2, lzma, lz4, lzo, snappy 등의 압축 방식을 스토리지 엔진에 제공합니다. 또한 Password_reuse_check 플러그인이 추가되어 설정된 기간 동안 기존 비밀번호와 새로운 비밀번호가 중복 여부 검사가 가능해졌고 mariadb-dump(mysqldump)에 지정된 Timestamp로 System versioned table을 덤프할 수 있는 옵션이 추가되었습니다.

이외에도 ASCII 범위에서 간단한 멀티바이트 데이터 정렬 성능 및 InnoDB Bulk Insert 성능이 개선 되었고 많은 보안 취약점이 수정 되었다.

MariaDB Community Server 10.8 주요 변경사항

CS 10.8은 2021년 12월 21일에 Alpha 버전이 릴리즈된 후 RC 버전을 거쳐 2022년 5월 20일 GA 버전이 릴리즈되었고 Short-term 릴리즈 정책에 따라 2023년 5월 19일에 지원이 종료된다.

CS 10.8 버전에서 함수와 관련된 추가 기능은 기존에 하나의 인수만 사용 가능했던 CRC32 함수, CRC32C 함수 등에 선택 인수가 추가되었다.

crc32(), crc32c() 함수의 예 [그림 2] crc32(), crc32c() 함수 샘플

이어서 추가/변경된 구문으로 Stored Procedure에 IN 전용 커서가 추가되었으며 Spider Storage Engine 연결 시 REMOTE_SERVER, REMOTE_DATABASE, REMOTE_TABLE 등 3가지 속성을 추가하여 선언 방법을 개선하였습니다. 또한 mariadb-binlog(mysqlbinlog) 툴 사용 시 –start-position과 --stop-position 옵션을 사용하여 GTID 범위 이벤트 필터링이 가능해졌고 --gtid-strict-mode를 사용하면 binary 로그의 GTID 순서 유효성 확인 또한 가능해졌습니다.

성능 개선 사항으로는 Replication에 Lag Free ALTER TABLE 적용되어 무거운 ALTER TABLE문 수행 시 발생하던 복제 지연을 피하는 것이 가능해졌고 Descending Indexes 기능을 통해 인덱스의 개별 칼럼들을 오름차순/내림차순으로 명시적 정렬이 가능해져 ORDER BY 성능을 좀 더 최적화 할 수 있게 되었습니다. 또한 InnoDB redo log 성능을 개선하여 동시성이 향상되었으며, 이후 버전부터 innodb_buffer_pool_chunk_size가 자동으로 조절됩니다. 통계 테이블은 Binary로 저장되던 히스토그램이 JSON으로 저장되며 더욱 정밀해졌습니다. 마지막으로 UCA(Unicode Collation Algorithm) 데이터 정렬 성능을 개선하여 벤치마크 결과 대략 2배 정도 성능이 향상되었습니다.

마치며

이번에 발표한 릴리즈 모델 변경의 목적은 살펴보면 빠르게 변화하는 시장과 환경에 대응하기 위해 더 빠르게 기능을 추가하고 동시에 개발자들에게 걸리는 부하 또는 스트레스를 줄이는 것입니다. 물론 빠른 대응과 개발자의 스트레스 감소는 MariaDB 사용자와 개발자들 모두에게 희소식이라고 할 수 있겠습니다.

MariaDB ES 버전 EOL
Version Stable (GA) Date End of Standard Support End of Life Date
10.3 25 May 2018 25 May 2023 25 May 2023
10.4 02 July 2019 02 July 2022 1 02 July 2024
10.5 16July 2020 16July 2023 1 16July 2025
10.6 23 August 2021 23 August 2024 1 23 August 2026
[표 4] MariaDB ES 버전 EOL

MariaDB Subscription을 가지고 있는 고객들은 기존과 같은 수준의 제품과 서비스 기간을 보장받을 수 있기에 이번 릴리즈 모델 변경의 영향에서 자유로울 수 있습니다. 하지만 MariaDB 커뮤니티 버전을 운영 환경에 사용하는 사용자들은 MariaDB의 안정성이 우려될 것입니다.

그 이유로 Long-term 릴리즈 모델에서는 MariaDB CS GA 버전이 릴리즈되고 한 달 전후로 ES 버전이 릴리즈 되었습니다. 운영자들은 ES 버전의 릴리즈를 기준으로 어느 정도 신규 버전의 MariaDB의 안정성을 판단할 수 있었습니다. Short-term 릴리즈 모델에서는 MariaDB CS의 GA 버전 릴리즈 이후 약 6개월 정도 후에 ES 버전이 릴리즈되고 ES 버전 릴리즈 6개월 후 CS 버전의 공식 서비스 지원이 종료 될 예정입니다.

MariaDB CS/ES Release Criteria
10.3 10.4 10.5 10.6 10.7 10.8
CS Ahpha 2017-04-16 2018-11-09 2019-12-03 2021-04-26 2021-09-17 2021-12-21
CS Beta 2017-12-23 2018-12-20 2020-02-14 2021-05-21
CS RC 2018-02-26 2019-02-25 2020-05-12 2021-06-18 2021-11-08 2022-02-09
CS GA 2018-05-25 2019-06-18 2020-06-24 2021-07-06 2022-02-09 2022-05-20
ES Release 2019-07-08 2019-07-08 2020-07-16 2021-08-26 TBD TBD
[표 5] MariaDB CS/ES Release Criteria

두 번째는 신규 기능 추가에 대한 부분입니다. 기존 모델은 1년에 한 번 새로운 Major 버전을 릴리즈했고 이때 새로운 기능이 추가되었습니다. Short-term 릴리즈 모델은 빠른 기능 추가를 위해 분기별 한번 새로운 버전을 릴리즈하게 됩니다. 안타까운 점은 새롭게 추가된 기능에 문제가 생겼을 때입니다. ES 버전은 예전으로 코드를 백포트하지만 CS 버전은 문제가 있는 기능이 그대로 유지되어 시스템 안정성에 좋지 않은 영향을 미칠 수 있기 때문입니다. 이러한 이유들 때문에 향후 운영자들은 MariaDB CS를 운영 환경에 적용하는 데는 많은 고민이 필요해질 것으로 예상됩니다.

DB-Engines Ranking of Relational DBMS
  • July 2022 MySQL: 1 194.872 - 2013~2022 score 1k
  • July 2022 PostgreSQL: 615.871 - 2013~2022 score 200k~800kk
  • July 2022 MariaDB: 112.522 - 2013~2022 score 3k ~200k
[그림 3] 주요 오픈소스 RDB 랭킹

MariaDB는 많은 성장과 변화가 있었지만 최근 몇 년간 다소 주춤한 모습을 보이고 있습니다. 그 동안 MariaDB는 커뮤니티 버전을 통해 많은 성장을 해왔습니다.


삼성SDS DB Service - 웹 환경에서 데이터베이스를 간편하게 생성하고 관리하는 서비스

개인적으로는 앞으로도 커뮤니티 버전을 통해 더 많은 사용자를 MySQL로부터 흡수하여 더 성장하기를 바라고 있습니다. MariaDB측이 커뮤니티 버전보다 엔터프라이즈 버전에 집중하는 선택을 한 것은 다소 아쉽지만 MariaDB 사용자로서 ES 버전에 더 집중하여 기업용 RDBMS로 더 향상된 성능과 안정된 품질을 기대해 보고 싶습니다.



▶   해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶   해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.


이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe

구독하기

subscribe

김상우
김상우

에스코어㈜ 소프트웨어사업부 OSS기술그룹

에스코어 OSS기술 그룹에서 오픈소스DB와 관련된 전문가로 기술지원 업무를 하고 있습니다.

공유하기