들어가며
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 Community Server 10.7 주요 변경사항
CS 10.7은 특이하게 Short-term, Long-term 두 릴리즈 모델에 속하지 않는 과도기적인 릴리즈라고 알려져 있다. 이러한 이유로 MariaDB 홈페이지의 릴리즈 노트를 확인하면 10.8 버전과 10.6 버전 사이에 10.7 버전의 링크가 보이지 않는다.
MariaDB CS 10.7 버전은 2021년 9월 17일 Alpha 버전 릴리즈 후 RC 버전을 거쳐 2022년 2월 9일 GA 버전이 릴리즈 되었고, Short-term 모델과 동일하게 1년 후인 2023년 2월 8일 지원이 종료될 예정이다.
CS 10.7 버전은 128 bits의 UUID(Universally Unique Identifier) 데이터 타입이 추가되었고 아래의 새로운 함수들도 추가 되었다.
추가된 구문은 손쉽게 파티션에서 테이블, 테이블에서 파티션 이동을 지원하기 위한 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 함수 등에 선택 인수가 추가되었다.
이어서 추가/변경된 구문으로 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문 수행 시 발생하던 복제 지연을 피하는 것이 가능해졌고 Decending Indexes 기능을 통해 인덱스의 개별 칼럼들을 오름차순/내림차순으로 명시적 정렬이 가능해져 ORDER BY 성능을 좀 더 최적화 할 수 있게 되었다. 또한 InnoDB redo log 성능을 개선하여 동시성이 향상되었고 이후 버전부터 innodb_buffer_pool_chunk_size가 자동으로 조절된다. 통계 테이블은 Binary로 저장되던 히스토그램이 JSON으로 저장되며 더욱 정밀해졌다. 마지막으로 UCA(Unicode Collation Algorithm) 데이터 정렬 성능을 개선하여 벤치마크 결과 대략 2배정도 성능이 향상되었다.
마치며
이번에 발표한 릴리즈 모델 변경의 목적은 살펴보면 빠르게 변화하는 시장과 환경에 대응하기 위해 더 빠르게 기능을 추가하고 동시에 개발자들에게 걸리는 부하 또는 스트레스를 줄이는 것이다. 물론 빠른 대응과 개발자의 스트레스 감소는 MariaDB 사용자와 개발자들 모두에게 희소식이라고 할 수 있겠다.
MariaDB Subscription을 가지고 있는 고객들은 기존과 같은 수준의 제품과 서비스 기간을 보장 받을 수 있기에 이번 릴리즈 모델 변경의 영향에서 자유로울 수 있다. 하지만 MariaDB 커뮤니티 버전을 운영 환경에 사용하는 사용자들은 MariaDB의 안정성이 우려될 것이다.
그 이유로 long-term 릴리즈 모델에서는 MariaDB CS GA버전이 릴리즈되고 한달 전후로 ES 버전이 릴리즈 되었다. 운영자들은 ES 버전의 릴리즈를 기준으로 어느 정도 신규 버전의 MariaDB의 안정성을 판단할 수 있었다. Short-term 릴리즈 모델에서는 MariaDB CS의 GA버전 릴리즈 이후 약 6개월 정도 후에 ES버전이 릴리즈 되고 ES버전 릴리즈 6개월 후 CS버전의 공식 서비스 지원이 종료된다.
두 번째는 신규 기능 추가에 대한 부분이다. 기존 모델은 1년에 한번 새로운 Major 버전을 릴리즈했고 이때 새로운 기능이 추가 되었다. Short-term 릴리즈 모델은 빠른 기능 추가를 위해 분기별 한번 새로운 버전을 릴리즈 한다. 안타까운 점은 새롭게 추가된 기능에 문제가 생겼을 때이다. ES 버전은 예전으로 코드를 백포트 하지만 CS버전은 문제가 있는 기능이 그대로 유지되어 시스템 안정성에 좋지 않은 영향을 미칠 수 있다. 이러한 이유들 때문에 향후 운영자들은 MariaDB CS를 운영환경에 적용하는 데는 많은 고민이 필요해질 것으로 예상된다.
MariaDB는 많은 성장과 변화가 있었지만 최근 몇 년간 다소 주춤한 모습을 보이고 있다. 그 동안 MariaDB는 커뮤니티 버전을 통해 많은 성장을 해왔다. 개인적으로는 앞으로도 커뮤니티 버전을 통해 더 많은 사용자를 MySQL로부터 흡수하여 더 성장하기를 바랬다. MariaDB 측이 커뮤니티 버전보다 엔터프라이즈 버전에 집중하는 선택을 한 것은 다소 아쉽지만 MariaDB 사용자로써 ES버전에 더 집중하여 기업용 RDBMS로 더 향상된 성능과 안정된 품질을 기대해 보겠다.
# References
Figure1. https://mariadb.com/kb/en/release-notes
Table 2. https://mariadb.org/about/#maintenance-policy
https://mariadb.com/kb/en/release-criteria/
https://db-engines.com
https://mariadb.com/newsroom/press-releases/mariadb-announces-new-innovation-release-model/
https://mariadb.com/resources/blog/delivering-faster-innovation-to-mariadbs-community/
https://mariadb.com/kb/en/changes-improvements-in-mariadb-107/
https://mariadb.com/kb/en/changes-improvements-in-mariadb-108/
김상우 프로
에스코어㈜ 소프트웨어사업부 OSS기술그룹
에스코어 OSS기술 그룹에서 오픈소스DB와 관련된 전문가로 기술지원 업무를 하고 있습니다.
Register for Download Contents
- 이메일 주소를 제출해 주시면 콘텐츠를 다운로드 받을 수 있으며, 자동으로 뉴스레터 신청 서비스에 가입됩니다.
- 뉴스레터 서비스 가입 거부 시 콘텐츠 다운로드 서비스가 제한될 수 있습니다.
- 파일 다운로드가 되지 않을 경우 s-core_mktg@samsung.com으로 문의해주십시오.