データベース室の紹介

北川健太郎氏:私からはデータベース室の紹介と、その中のMySQL1 Teamで募集中のポジションと、MySQL1 Teamについて紹介したいと思います。よろしくお願いします。

簡単に自己紹介します。MySQL1 Teamマネージャーの北川と言います。好きなものは、つば九郎、サウナ、あと野球を見ることです。最近は、エンゼルスの大谷さんの活躍を見ることだけが、私の生きがいになってます。

まず、データベース室の紹介です。データベース室は、システム室やネットワーク室と同様に、ITサービスセンターの中の1つの部署です。

データベースの中にMongoDB、Redis、Oracleなど、プロダクトごとにチームが分かれています。MySQLにおいては、MySQL1 Teamと2 Teamに分かれています。私の所属するMySQL1 Teamは、主に日本のサービスで使用されているMySQLの管理を行っています。MySQL2 Teamは、主にグローバルのサービスで使用されているMySQLを管理しています。

1 Teamと2 Teamでそれぞれ運用方法は独立していますが、ベースとなるMySQLのプラットフォームやツールなどは共有しています。MySQLの設定などはともに議論して、チーム間で標準化を図っている感じです。

MySQL1 Teamについて

MySQL1 Teamについて紹介します。今、メンバーは4人です。LINE内のすべてのMySQLの運用と管理をしています。“日本で一番うまくMySQLを使い倒すチーム”を目指しています。どういうことかというと、LINEでは、ゲームサービスや、「LINEマンガ」「LINE LIVE」といったサービス、さらにFinTechサービスなど、さまざまなサービスでMySQLが使われており、それぞれ異なるワークロードを持っています。そうなると、チューニングのアプローチ方法はいろいろ変わってきます。

そこで、我々のチームとしては、どんなワークロードでも対応できるMySQLの技術力を培っていく意味を込めて、(スライドを指して)このような目標を掲げています。開発言語としては主にGo、あとPHPやPerlを使っています。

主な仕事としては、一般的なDBA(Database Administrator)業務です。スキーマの変更やバックアップの管理、トラブルシューティングなどを行っています。さらに、DevOps改善のための開発業務も重要視していて、こちらも進めています。

(スライドを指して)「こんな人と一緒に働きたい」ということで、このあと、1 Teamで行っているプロジェクトや課題を共有しますが、その前に、今回はこれらに当てはまる人に聞いてもらいたいと思っています。

大規模なMySQL環境を運用してみたい人。MySQLのインターナルに興味のある人。MySQLのバージョンアップが得意な人。あとアプリケーション開発がメインだったが、最近はデータベースに興味が出てきた人。また運用の自動化の開発に対して、すごくやりがいを感じる人。これらどれか1つでも当てはまる人に、今回は響いたらいいなと思っています。

LINEにおけるMySQL環境とMySQL1 Teamの目標

では、まずLINEにおけるMySQLの環境です。(スライドを指して)左側が、私のチームで管理しているMySQLのインスタンス数で、2021年で4500ぐらいのインスタンスがあります。ここ最近、年々で500ぐらい増えていっています。

右側が、MySQLのバージョンの割合です。今一番多いのはMySQL 5.7で、58パーセント。続いて、MySQL 8.0は25パーセント。MySQL 5.6が17パーセントとなっています。

MySQL1 Teamは3つの目標を持っていて、これについて紹介したいと思います。最初が運用の自動化。次にMySQLのUpgrade。3つ目にSelf-Management。この3つがこれからの目標になっています。それぞれ簡単に紹介していきたいと思います。

運用の自動化です。これは、「手動での作業をとことんなくしていこう」という試みです。今までのMySQLの知見を全部ツールに落として、運用を楽にしていこうと考えています。

いろいろなツールがもうすでにたくさんありますが、その中から紹介すると、「Iruka-san」というSlack botがあります。これは、MySQLのアラートの通知やアラートの原因、その時のMySQLの状態を全部取ってきて、表示してくれる。Slack上でさまざまな操作をしてくれます。

あとは「Iruka-show」です。MySQLのマスコットがイルカで、それを見るということで、Iruka-show。これは、MySQLのインスタンスを管理するダッシュボードです。

データベース室として、室としてのダッシュボードはすでに作られていますが、RedisやHBase(Apache HBase)など、いろいろなプロダクトが統合されているため、MySQL専用のダッシュボードを作ろうというプロジェクト化が進んでいます。

これは、「DBAの業務をWeb上ですべて完結させよう」という考えがあります。DDL(Data Definition Language)の作業やACL(Access Control List)の作業などを、1枚のWebでやりたいという話で進んでます。

続いて、MySQLのUpgradeです。運用の最適化のためにUpgradeは必須で、先ほど説明したとおり、MySQL 5.6が17パーセント残っています。MySQL 5.6は、もうEOL(End Of Life)でありサポートされないので、これを2021年度中に、0パーセントにする目標を掲げています。

MySQLのUpgradeはすごく手間のかかる作業なので、強い心を持って「やるんだ」という気持ちで取り組んでいるプロジェクトです。

このための準備をすごく進めています。(スライドを指して)MUHとありますが、これはマイグレーションのツールで、Web上を通してダンプインポートする仕組みや、variablesの設定など、マイグレーションするためのツールです。こちらはもう開発しています。

次に、「Simple-Switchover」という、UpgradeしたMySQLに対して、向き先を変更するツールも開発しています。サービスによっては、オンラインで切り替えなければいけないことがあります。メンテナンスが取れればUpgradeはすごく簡単ですが、サービス停止することなくオンラインで実施しないといけないこともあるので、そういったものに対して使えるように開発したツールです。

これのいいところは、マスターが5.6でUpgrade先のレプリカが5.7とします。そのときに切り替えてなにか問題があってもすぐにrollbackできることです。rollbackした時に、5.7での更新も、5.6にデータロストなしでrollbackできるような、安全にスイッチオーバーするツールを開発しています。このUpgradeは、これからどんどん進めていく予定です。

続いてSelf-Managementですが、これが今最優先の課題として取り組んでいます。先ほど説明したように、MySQLのインスタンスは年々増えていっています。それに対して、DBAの作業がすごく負担になってきている現実があります。そのため、これからDBAが行っていた業務を、開発者に移譲するプロジェクトになっています。

今までDDLやアラートを検知してトラブルシューティング、パラメータの変更など、すべてDBAが行っていましたが、そのような権限を開発者に移譲するということです。

LINEには、プライベートクラウドとして「Verda」があります。Verdaには、Verda DBSという、AWSのRDS(Relation Database Service)のようなサービスを提供していて、そこにSelf-Managementがすでに提供されています。

仕組みとしては、本当にAWSのRDSが提供している機能と同等です。HA(High Availability)、アラート通知、Prometheusのメトリクス。あとはバックアップなどがありますが、せっかく我々はDBAがいて知見もあるので、Self-Managementをもっと高機能にしていきたいと考え、このプロジェクトは動いています。

これから行うこととしては、今までの我々のDBAに関する知見をドキュメント化したり、既存のツールなど作っていたものを提供。、さらにDBAの知見を入れて新たにツールを開発して、開発者に提供することを考えています。

例えばどういうものを提供する予定かですが、安全にスキーマ変更するツールの提供。私たちはSafeddl Executerと呼んでいますが、pt-osc(pt-online-schema-change)やgh-ostなどをラップしたツールです。

知らない方もいるとは思いますが、pt-oscやgh-ostは、オンラインでレプリケーションの遅延、ロックしないでスキーマ変更を可能にするオープンソースです。使い方には少し癖があって、初めてやる人にとってはオプションがいっぱいあるし、内部のアーキテクチャを知らないと、UNIQUEキー追加をする時にデータロストする可能性があったり。

そういった、サクッと使うにはちょっと調査が必要なもの(に対して)は、DBAは知見があるので、それをラップして、安全に実行させる。開発者としては、ALTER TABLEをそのまま貼り付ければOKといったようなツールを提供していこうという考えもあります。

あとは、リアルタイムのモニタリングツールであったり、クエリリプレイ。マイグレーションする時に、現環境のトラフィックを取得して、新環境でリプレイさせたり。そういった機能も提供しようと考えています。

MySQL1 Team限定の福利厚生

ここからは、MySQL1 Team限定の福利厚生です。MySQL1 Teamにジョインすると、もれなく日本に2名しかいないMySQLのOracle ACEと一緒に働けます。yokuさんと呼ばれている方です。MySQLについてググったことある人がいるならば必ずたどり着くであろう、ピンクのおとうふのyokuさんです。

私のチームにジョインすると、深くMySQLを学べる環境があります。yokuさんだけではなく、チームメンバーもMySQLについては詳しいので、本当に深く学べる環境があると思います。

今日(登壇時点)公開されたEngineeringインタビュー記事が、yokuさんの記事です。MySQL1 Teamについてyokuさんが語っているので、ぜひみなさん見てください。

あと、LINEはヤフーと経営統合して、ヤフーのDBAとも月1回、意見交換会などをしています。ヤフーにはもう1人のOracle ACEがおり、日本に2名しかいないOracle ACEが集まる会議があるので、すごくMySQLの勉強になると思います。

「こんな人と一緒に働きたい(再掲)」ということで、先ほど説明したように、大規模な環境ですし、MySQLについてもインターナルも調べていくので、そういうことに興味ある方。バージョンアップは、先ほど説明したようにいっぱいやらなくてはいけないので、得意なかたはお願いします。

アプリケーション主体だったがデータベースに興味出てきた人や、運用自動化のための開発(をしたい方)。先ほど説明したように、開発することはいっぱいあるので、そういったことがやりたい方は、ぜひ応募していただきたいと思います。

MySQL1 Teamの募集ポジション

最後に募集中のポジションです。データベースエンジニア(の募集を)、私のチームではMySQLとDevOpsの2つを募集しています。MySQL、MySQL DBA、運用のメインになっています。DevOpsは、先ほど説明したようなツールメインの作成です。MySQLの運用も、もちろん興味あれば参加するも可能です。ぜひ興味がある人は、応募してもらえればと思います。ご清聴ありがとうございました。