NHN Business Platform DBMS개발랩 남창우

Percona Live MySQL Conference and Expo는 MySQL 커뮤니티와 생태계 구성원의 다양한 기술, 경험, 트렌드를 공유하는 행사로, 박람회 같은 요소가 가미되어 있습니다. Percona가 주최하며 올해로 5년째를 맞이했습니다(Percona가 행사를 인수하기 전까지 포함하면 더 오래되었습니다). 이번 행사에는 정확하지는 않지만 키노트 참석 인원을 기준으로 약 400 ~ 500명 정도가 참여했으며, 전체적으로 개발자보다는 사용자에 무게를 둔 행사라는 인상을 받았습니다.

303e0b742928577fc1000433ed3b3282.png

혹시나 했는데, 한국에서 오신 분들도 계셨습니다. 다음 사진은 콘퍼런스 참석자들의 국적을 표시한 지도입니다.

2823681498a8c7d331dfced2ad5173fb.png

사실 부끄럽게도, Percona가 어떤 것인지 행사 참가 전에는 잘 몰랐습니다. 혹시 나와 같은 분이 계실까 봐 Percona를 간단히 소개하면, Percona는 MySQL 소스를 기반으로 서버 및 도구 개발, 엔터프라이즈 급의 기술 지원 및 컨설팅을 하는 회사라고 합니다.

이 관람기에서는 필자가 주로 관심을 가졌던 복제, HA 관련 세션과 흥미롭게 들었던 키노트 위주로 간단하게 소개하려고 합니다. 부족한 영어 실력과 주관적인 해석으로 잘못된 내용을 전달하는 게 아닌지 조금 걱정되긴 하지만, 그런 부분은 너그럽게 이해해 주시기 바랍니다.

키노트, 세션 소개

Using Tungsten Replicator to solve replication problems

이번 행사의 메인 스폰서인 Continuent Inc.의 Tungsten Replicator는 여러 세션에 걸쳐서 소개되었다. 이 세션은 그 중 첫 번째로, 시연을 포함하여 전반적인 Tungsten Replicator의 특징과 기능을 소개했다.

Tungsten Replicator의 특정이라면(그 이름에서도 알 수 있고 발표자도 여러 번 강조했지만) 고가용성을 위한 자동화 등에는 그다지 관심이 없고 오직 복제만을 처리하기 위한 솔루션이라는 점이다. 기존 MySQL 복제에 비해서 우수한 성능과 안정성, 필요에 따라 다양하게 구성하기 쉽다는 점, MySQL 5.6보다 나은 글로벌 트랜잭션 ID, 필터를 포함한 파이프라인 처리 등 여러 장점이 있었지만 그 중 가장 관심이 갔던 부분은 온라인 백업과 복제를 통해서 명령 하나로 손쉽게 슬레이브를 추가하거나 문제가 있는 슬레이브를 복구하는 기능이었다.

하지만 한 가지 아쉬운 점은 멀티 마스터 구성에서 발생할 수 있는 충돌에 대한 전략이다. 향후 개선할 예정이라고는 하지만, 각 마스터 노드가 변경할 수 있는 데이터베이스를 제한하는 방식은 누구라도 쉽게 생각할 수 있는 정도 수준이고, 현실에서 요구하는 기능과는 동떨어진 것이 아닌가 하는 생각이 들었다.

3d60d49c7618ed4d8f0e056b8ad625d8.png

그림 1 Multi-master 구성에서의 충돌 처리 전략(이미지 출처: http://www.percona.com/live/mysql-conference-2013/sites/default/files/slides/Tungsten_Replicator_Tutorial_uc_2013.pdf)

Keynote: Driving MySQL Innovation

MySQL 커뮤니티에 감사를 표한다는 말로 시작한 발표는 시종일관 최근 배포된 MySQL 5.6이 기존에 배포된 어떤 버전의 MySQL보다 좋다는 점을 설명했다. 발표 내용대로라면 일일이 열거하기 힘들 정도로 성능, 복제, 운영 등 다방면에서 큰 변화와 개선이 있었다. 발표를 듣고 있자니 발표자의 말대로 MySQL 5.6을 사용하지 않을 이유가 없어 보였다.

그리고, Oracle에서 MySQL 5.6을 배포하기 위해 역대 어느 버전보다 많은 개발자와 엔지니어를 투입했으며, QA에도 많은 공을 들인 점과 MySQL 커뮤니티를 위해서도 Oracle에서 많은 노력을 하고 있다는 점을 강조했는데, 이는 MySQL이 Oracle에 인수된 후 MySQL 생태계 내에서 MySQL을 보는 시선을 의식하여 Oracle에서 MySQL의 발전을 위해 많은 기여를 하고 있다는 메시지를 전달하고자 했던 게 아닌가 생각한다.

Keynote: The State of the MySQL Ecosystem

개인적으로 가장 인상 깊었던 발표로, Oracle의 MySQL 인수 후 3년이 지난 지금 MySQL 생태계의 현재와 미래에 대한 조망에 더해서 MySQL 생태계뿐만 아니라 경쟁 관계에 있는 다양한 RDBMS, NoSQL, NewSQL 등에 대한 설문 조사 결과와 분석을 다루었다. 발표 중 Oracle의 MySQL 인수와 관련하여 다음 그림을 보면서 그저 농담이라고 너스레를 떨었지만, 이어지는 설문 결과를 보면 그저 단순한 농담만은 아닌 듯하다.

2009년 12월 설문 결과에 따르면, MySQL 사용자들은 Oracle의 MySQL 인수에 대한 입장이 ‘변화 없음(No Change)’에 60% 이상이었으나, 2013년 초 설문 결과에 따르면 ‘변화 없음(No Change)’이 45%, ‘덜 쓰겠다(Less likely to use MySQL)’가 47% 수준으로 과거에 비해 MySQL 사용자들은 Oracle사의 인수에 대해 부정적 견해가 더 많아진 것을 알 수 있다.

390322ff83e900c17809607f9ff9dbe1.png

그림 2 2009년 설문 조사 결과(왼쪽)와 2013년 설문 조사 결과(오른쪽)(이미지 출처: http://www.percona.com/live/mysql-conference-2013/sites/default/files/slides/aslett%20percona%20keynote%20pdf.pdf)

이런 부분이 시장에 반영된 것인지, MySQL 생태계 내에서 Oracle MySQL의 비중이 점점 줄어들고 있다는 결과이다.

2012년 MySQL, MariaDB, Percona 3개 제품 중 압도적으로 높은 비율(91%)을 보인 MySQL은, MySQL로부터 분기(fork)된 다양한 Eco 제품군의 선전으로 인해 2013년 점유율이 62%로 감소되었고, 2018년에는 무려 50% 미만으로 예측하고 있다.

6364fac7bf46e413acd9d0a796282604.png

그림 3 MySQL의 점유율 변화. 왼쪽부터 2012년, 2013년, 2018년 예상(이미지 출처: http://www.percona.com/live/mysql-conference-2013/sites/default/files/slides/aslett%20percona%20keynote%20pdf.pdf)

MySQL 생태계의 현재(왼쪽 그림)와 미래(오른쪽 그림)를 행성과 위성으로 표현한 것 역시 재미있다. MySQL의 위성이었던 Percona와 SkySQL이 MariaDB에 점점 가까워지고 있고, SkySQL은 이제 MySQL의 위성으로 보기 어려울 것 같다.

7714bded8d834c80f503784bb0dac97c.png

그림 4 MySQL 생태계. 현재(왼쪽)와 미래(오른쪽)(이미지 출처: http://www.percona.com/live/mysql-conference-2013/sites/default/files/slides/aslett%20percona%20keynote%20pdf.pdf)

참고로 현재 Percona는 MySQL과 동일한 버전을 유지하고 있으며, MySQL에서 어떤 버전이 출시되면 그 코드에 자신들의 기능을 추가하여 6개월 이내에 Percona 서버를 출시할 수 있다고 한다.

이런 생태계 내부의 변화와는 무관하게 어찌 되었든 MySQL 생태계와 관련된 시장과 외연은 계속 커질 것이라는 전망도 있었다.

Load balancing MySQL with HaProxy

다양한 형태의 MySQL 구성에서 HAProxy로 가능한 여러 가지 방식의 로드 밸런싱 기법을 예제를 통해 소개하는 세션이었다. 특이한 점이라면, 아마도 발표자가 직접 적용하면서 겪었던 어려움 위주로 공유하려고 했던 것인지, 많은 시간을 HAProxy 적용 시 고려해야 할 TCP 프로토콜의 특성 및 관련한 리눅스 커널 설정에 대한 설명에 할애했다는 것이다.

Easy MySQL Database Sharding with CUBRID SHARD

NHN 동료인 글로벌플랫폼개발랩의 Esen 과장이 NHN 회사 소개, CUBRID SHARD for MySQL의 구조 및 적용 사례 등을 소개하는 세션이었다. 더해서 가상 머신을 이용해서 CUBRID SHARD for MySQL의 설치부터 설정 및 응용 구현까지의 전 과정을 시연하여 사용자가 이해하기 쉽게 설명하려 한 자리였다.

비록 같은 시간대에 있었던 쟁쟁한 다른 세션들 때문인지, 아주 많은 사람이 참여하지는 않았지만 나름 관심 있는 사람들이 있었고, MySQL 행사에서 CUBRID 미들웨어를 소개한다는 점과 Esen 과장의 차분하고 자신감 있는 발표가 인상적인 세션이었다.

MHA: Getting started and moving past the quirks

고가용성(HA)을 제공하기 위한 자동 페일오버(failover) 도구인 MHA for MySQL을 소개하는 세션이었다. VIP(virtual IP)를 포함한 자동 페일오버 및 운영 등에 필요한 실시간 마스터 변경 등을 비교적 간단한 설정과 Perl 스크립트로 쉽게 처리할 수 있는 도구로 보인다.

MySQL 5.6: redefining Replication

MySQL 5.6에서 개선된 복제 기능의 면면을 소개하는 세션이었는데, 소개된 내용을 일일이 전달하기는 어려울 것 같다. 오래 전부터 여러 가지 개선 사항이 제안되었는데, 생각보다 쉽지 않은 과정을 거쳐 개발했고 드디어 MySQL 5.6에 적용했다 정도로 요약할 수 있겠다.

개인적으로 궁금했던 부분은 multi-threaded slave로 성능이 어떻게 개선되었나 하는 것이었다. 동일 데이터베이스 또는 테이블에 대한 직렬화된 복제 로그를 어떻게 다수의 스레드에서 트랜잭션 순서를 보장하면서 동시에 복제에 반영할 수 있을까 하는 부분이었는데, 발표에 따르면 현재 버전까지는 스키마(데이터베이스 인스턴스) 단위로만 multi-thread에서 처리하고, 스키마 내의 multi-thread 복제 반영 기능은 다음 버전에 추가할 예정이라 조금 아쉬웠다.

Verifying MySQL Replication Integrity with pt-table-checksum

복제를 처리하다 보면 복제된 데이터가 정말 같은지, 데이터 정합성에 문제가 없는지를 검증하는 것이 가장 어려운 부분인데, 그런 문제에 대한 해결 방법이 있다고 해서 참여한 세션이다. MySQL 복제로 복제된 데이터의 정합성을 검증하는 pt-table-checksum이라는 도구를 설명했는데, 특이한 점이라면 복제 데이터 정합성 검사를 위해 다시 복제와 해시 함수를 사용한다는 점이었다. 발표에 따르면 마스터 노드에 쓰기가 없는 상태에서만 가능하다는 점이 아쉽다. 현실에서는 마스터 노드에 쓰기가 없는 시간이 거의 없거나, 그다지 길지 않기 때문이다.

Scaling MySQL for the Web

필자가 들은 십여 개의 세션 중 유일하게 발표자가 여성이었다는 점과 평범한 내용을 재미있게 발표했다는 점을 제외하면 특별한 내용이 있는 세션은 아니었다. 네이버의 N드라이브와 유사한 서비스를 제공하는 회사인데, 급격하게 증가하는 데이터를 처리하기 위해 NoSQL이 아닌 MySQL을 선택한 이유와 결국 어떤 식으로 대용량 데이터를 처리했는지를 설명했고, 마지막은 깨알 같은 구인 광고로 마무리했다.

결국 해결한 구조를 보면 우리의 그것과 별 차이가 없다는 생각이 들었다.

마치며

MySQL 생태계 내외에서 Oracle의 MySQL 인수를 곱지 않은 시선으로 보지만, 이와 무관하게 Oracle의 투자와 상세한 로드맵 속에서 MySQL은 계속 빠르게 발전하고 있고 생태계 내 수많은 구성원의 경쟁과 협력 속에서 MySQL 생태계의 외연이 확장되고 있다는 것을 체감할 수 있는 기회였다. DBMS 개발자로서, DBMS 엔진뿐 아니라 이루 열거할 수 없는 다양한 도구들이 MySQL 생태계에서 끊임없고 생산되고 개선되고 있다는 점이 부러웠다.

이 글에서는 다소 편향적으로 세션을 소개하여, 전체 분위기나 트렌드를 느끼기에는 크게 부족할 것이라고 생각한다. Percona Live MySQL Conference and Expo(http://www.percona.com/live/mysql-conference-2013/)의 프로그램 소개에 키노트 동영상과 발표 자료 슬라이드가 있으니 관심 있으신 분들은 참고하기 바란다.

7d3aad68ee1585ed170221b3ed0faee3.jpg
NBP DBMS개발랩 남창우
2009년부터 오픈소스 DBMS인 CUBRID 개발에 몸 담고 있으며, 주로 HA/복제/SHARDING/DBGW 등을 담당하고 있습니다.