SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事(AD)

LINEのMySQL運用事例から、ベンダーを超えて語るクラウド開発導入のポイントまで「Oracle Developer Days」基調講演

  • このエントリーをはてなブックマークに追加

 2020年12月17日から2日間、日本オラクルはデータベースをはじめ最新テクノロジーを紹介する「Oracle Developer Days」をオンラインで開催した。初日の基調講演はLINEの大塚知亮氏がMySQL運用の現状を紹介し、2日目は日本オラクル 野中恭大郎氏と大橋雅人氏、さらに日本IBM 萩野たいじ氏に日本マイクロソフト 廣瀬一海氏を招き、クラウド開発をテーマにパネルディスカッションを開催した。

  • このエントリーをはてなブックマークに追加

4000ものインスタンスを処理するLINEのMySQL運用の裏側

 Oracle Developer Days初日の基調講演ではLINE 大塚知亮氏が同社におけるMySQLの運用について解説した。なお大塚氏は2016年にLINEの夏季インターンシップに参加し、アルバイトを経て2018年にLINEに入社した。好きなMySQLの機能は準同期レプリケーションで「binlogを眺めるのが好き」と言うほどのMySQL好き。

LINE IT Service Center Database dept, DB1 team 大塚知亮氏

LINE IT Service Center Database dept, DB1 team 大塚知亮氏

 大塚氏が所属するのはLINEのサービス開発に必要なデータベースの運用業務全般を担うデータベース室(Database dept)。スキーマやACLなどの管理から、大きなサービスになるとレプリケーショントポロジを考案し、遅いクエリが出たらチューニング、新機能やバグの調査、そして後述する運用システムの開発も行う。

 LINEのデータベース室では主に、Webアプリケーション系であればMySQLやRedis、MongoDB、FinTech系ならOracle DatabaseやMicrosoft SQLServer、分析系ならHBaseやCUBRIDをサポートしている。2011年に部署がスタートした当初、データベースはMySQLも含め4種類だったが、社内の要望に応じて種類を増やしていき、2017年からプライベートクラウドに乗せるように運用を開始。さらに2020年にはプラットフォームを刷新した。

 データベースのインスタンスを作るなど、LINE社内の開発者がデータベースを使いたい時は、プライベートクラウド「Verda」のWeb UIから操作する。また変更により可用性に影響が生じ得る操作(スキーマ変更やトポロジ変更など)はデータベース室に依頼する。

 現在、LINEではMySQLのインスタンスは約4000ある。内訳は、最新バージョンとなる8.0が16%、5.7が57%、EOLが迫っている5.6が21%。絶賛アップグレード中だ。2017年からはインスタンスタイプの標準化や統一を行い、構築作業の自動化も進んできたものの、インスタンス数の急増もあり、マイグレーション作業やアラート対応に追われていた。

 そこで2020年からはMySQL運用システムを刷新し、開発者がセルフマネジメントできるようにした。MySQL運用の柱となるのが「GlenDB」、Verdaの新しいコンポーネントとしてHA構成システムも独自にスクラッチから開発した。APIを通じてMySQLのインスタンス作成などを自動化する。

 GlenDBの構成と流れを追ってみよう。開発者がVerdaのUIからMySQLサービスをリクエストすると、内部のAPIを通じ、VMの構築やMySQLのインストール、さらにレプリケーション構成まで構築する。これをHAマネージャーとなるGlenHAに登録し、DNSやロードバランサーを設定する。ログファイルはElasticsearchとKibanaで確認し、PrometheusによるDBONEモニタリングシステムからメトリクスを管理する。

 オペレーションコストの削減のためにGlenDBで実装された機能の一つがオートヒーリング機能。GlenHAが5秒おきに死活監視して、3回連続で失敗すると「故障」と判断し、必要に応じてフェイルオーバー処理を進める。具体的にはレプリケーショントポロジ変更、プライマリ昇格、DNSやロードバランサー設定変更など。「故障」したサーバが短時間で復旧した場合は復旧後の状況を確認し、レプリケーショントポロジに再度追加する。一定時間を過ぎても復旧しない場合は、新しいインスタンスにバックアップからリストアすることでトポロジを復旧する。

 下記はLINE社内の開発者が目にするVerdaのUIサンプル画面だ。画面右の「Action」からフェイルオーバーやインスタンスのリスタートなど、セルフマネジメントできる。

LINE社内の開発者が使うVerdaのUIサンプル画面

LINE社内の開発者が使うVerdaのUIサンプル画面

 稼働させているMySQLを最新版にするメジャーバージョンアップも重要な課題だ。LINEではメジャーバージョンをまたぐアップグレードを、新しいバージョンでの新規作成、データとACLのリストア、クエリのデグレード確認、新旧環境をまたぐレプリケーションの設定、フェイルオーバーによる切り替えという手順で行っている。

 この作業を大量のインスタンスに対して行うため、同室ではマイグレーション作業を自動化するためのツール「MUH(MySQL Upgrade Helper)」を開発した。これはOSSや内製ツールを組み合わせたもので、移行先MySQL作成はVerdaのUIから行えば、データ移行やACL移行からレプリケーション設定までをWeb画面から完了できる。

 なお上記の方法で8.0へのアップグレードした際、ちょっとした問題に直面した。現象としては文字列の比較やソート順に関する照合順序(COLLATION)の設定が変わってしまったのだ。これは5.7と8.0でデフォルト値が変わったため、テーブルを新規作成してデータを移行するとこの値が変わってしまったのだ。8.0への移行時には、新規作成時に設定するか移行後に値を変更するなど、適切な設定になるように注意が必要だ。

 ほかにもデータベース室ではオペレーションを支えるツールとしてMQR(MySQL Query Replayer)やmyStatusgoなどを開発してGitHubで公開している。前者はネットワークパケットからクエリを抽出し、別のMySQLにクエリを再現することでデグレードを確認するもので、後者はインスタンス情報を1秒間隔で表示するMySQL版topコマンドとなる。

 こうしてLINEのデータベース室では運用管理を効率化するためのツールを開発しながら、少人数で膨大なデータベースを運用している。今後もさらに低コストで運用するためのシステムや自律的なシステムの開発を続けていくそうだ。

ベンダーを超えて本音で語る、クラウド開発導入成功のポイント

 2日目の基調講演は「日本IBM、日本マイクロソフト、日本オラクルが本音で語る、”クラウド開発 コトはじめ”」と題したパネルディスカッション。マイクロソフトとIBMからゲストを招き、クラウドネイティブの開発について本音で語り合った。モデレーターは日本オラクル 大橋雅人氏、パネリストは「デプロイ王子」こと日本マイクロソフト 廣瀬一海氏、日本IBM 萩野たいじ氏、日本オラクル 野中恭大郎氏。

 発端は日本オラクルが主宰するエンジニア向け勉強会「Blockchain GIG」。企業システムにブロックチェーン技術を導入することを目指す勉強会であるものの、登壇者の間で「裾野を広げる必要性がある」との認識が広まっており、今回のパネルディスカッションにつながった。

 今はDXの追い風もあり、企業におけるクラウド活用は加速している。とはいえ、クラウドベースの開発に着手しはじめたばかりのエンジニアにとっては、何かと不安や戸惑いもあるだろう。ここでは開発の有識者が集い、クラウド開発を本格的に進める時のポイントについて探った。なお今回のメンバーは所属企業を代表する立場ではなく、エンジニアとしての個人的な経験や見解を語るために登壇している。

パネルディスカッション参加者

左上から時計回りに、日本マイクロソフト 廣瀬一海氏、日本IBM 萩野たいじ氏、日本オラクル 大橋雅人氏、日本オラクル 野中恭大郎氏

 まずはモデレーターの大橋氏が「クラウドで開発するとしても、今までと同じではないか。何が違うのか」と問いかけた。廣瀬氏は「これまでを踏襲することも可能だが、それではクラウドのうまみが活かせない」と指摘。最初の一歩として、単にオンプレからクラウドにリフトするだけでもいいが、クラウドには各種マネージドサービスがあり、複数のクラウドベンダーにわたりサービスを取捨選択することもできる。

 野中氏は「クラウドだと全てAPIベース。開発者がインフラにも関わり、スモールスタートから拡張して大きなサービスに発展することもできる。何よりも違うのはスピード」と挙げ、オンプレとの違いを多数指摘した。続いて萩野氏は「IaaSなら開発スタイルはあまり変わらないかもしれないが、PaaSならカフェテリア方式でサービスを組み合わせることもできる。コンテナなどテクノロジーは日々進化しているので、今はクラウド開発のベストプラクティスを模索している段階かもしれない」と話した。

 現実的には既存システムとの兼ね合いもある。スタートアップがスクラッチから開発するならともかく、多くの現場には古くから稼働しているオンプレの既存システムがある。「絶妙なバランスで進めていく必要がある」と大橋氏は言う。

 うまくいっている企業はどうしているか。廣瀬氏は「CCoE(クラウド活用推進の専門組織)を構成し、戦略的に進めている」と挙げる。DXは組織横断的に進めていく必要があるためだ。また廣瀬氏はクラウドサービスの「メニューだけで判断するのはリスク。味見すべし」と、まずは小さく始めてみるようアドバイスする。

 いろいろと気軽に試せることはメリットではあるものの、逆にやることが増えて負担に感じる人もいる。野中氏は「興味あるものをとっかかりにドリルダウンするといい」とアドバイスする。好きなものからアプリを考え、そこからNoSQLやサーバーレスなど要素技術に踏み込むという考えだ。

 廣瀬氏も「好きなことは大きな動機になる。それでもどこから始めたらいいか分からないという人には『自分が楽になるものから着手して』とアドバイスしている」と言う。野中氏はかつての現場で、ソースコード管理をSVNからGitに移行するためにトップと交渉したエンジニアを目撃した経験から「楽になるものから着手すること、偉い人を巻き込むことは大事」と同意した。組織の関わりで言えば、萩野氏はDXの取り組みで組織の課題を洗い出す時、立場が異なると利害関係が異なるので着地点を探す苦労を目にしていると話した。

 大橋氏は「エンジニアとしてやれることは何か」と問いかけた。廣瀬氏は「便利になったことがあれば社内で共有して」と提案した。「自分はエンジニアだから」と考えると黙々と開発するだけになるかもしれないが、生産性を高める取り組みでも事業の貢献につながっている。

 最後に一言ずつ、パネリストたちからメッセージを述べた。廣瀬氏は「クラウドサービスベンダーは複数あるが、それぞれ良さがあり、比較するものではない。いろいろ試して勘どころをつかみ、武器にしてほしい」、萩野氏は「どのサービスも直感的に使えるので、興味を持ったものを触ってみてほしい。おもちゃ感覚で楽しんで」、野中氏は「今オンプレしかできなくても現状から学べることもある。オンプレとクラウドの両方のスキルがあれば希少な存在になれる。将来も大事だが、現状の業務も大事にしてほしい」と話した。

 大橋氏は「今回は『コトはじめ』をテーマにしたが、今後は実際に着手した後の課題解決についても語り合いたい。ITや日本全体を盛り上げるために企業の垣根を越えて貢献できたら」とまとめた。

 あまりにあっという間で語り尽くせなかったのか、参加者は「またやりましょう!」と言い合いセッションが終わった。そして数日後には続編となる勉強会が告知された。まだまだ、このメンバーの語り合いは続きそうだ。

関連情報

本イベントの動画や資料のダウンロードはこちらから。

ほぼ毎週オンラインで開催されるOracle Code Nightの開催情報はこちら。

Oracle Code Nightの過去開催(オンライン開催)分の動画はこちらから。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13446 2021/01/22 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング