マイクロサービス化に適したTiDB(タイデービー)
アプリ開発担当者が語る『menu』の選択
"スマホひとつでテイクアウトとデリバリーが注文できるフードサービス″として利用者に人気が高いmenu。開発部門では、よりスムーズな運用をめざしてデータベースの移行などの作業に取り組んでいます。 2023年12月6~8日に開催された『DB TECH SHOWCASE』では、"アーキテクチャ多様化時代にデータベースをTiDBにまとめるという選択″と題したセッションにmenu株式会社の窪田浩之さんが登壇。menuがなぜNew SQLと呼ばれるTiDBを導入したのか、その理由について語りました。
窪田 浩之 くぼた ひろし menu株式会社/開発本部/基盤開発チーム
東京大学工学部物理工学科卒業。大学時代にエンジニア養成団体に所属し、プログラミング技術を磨く。スピード感を持ってやりたいことにチャレンジ出来る環境に惹かれて、2022年にレアゾンへ新卒入社。フードデリバリーサービス『menu』の開発環境を整備し、ユーザー体験を向上させるためのマイクロサービス化に取り組む。また、2023年より新入社員向けのエンジニア研修を企画運営し、後輩育成に貢献する。
スリーマッチングモデルとなっているmenuのアプリケーション
ユーザー、店舗、配達員の三者をマッチングさせることで充実したフードデリバリーサービスを提供しているmenu。基盤チームに所属する窪田さんは、このmenuアプリのインフラ構築から運用、バックエンド及びAPI開発を担当しているエンジニアです。
「menuにはユーザー様、店舗様、配達員様の三者を対象としたアプリがあります。この三者を結びつけるアプリケーションのバックエンドのドメインというのはかなり複雑になっていまして、私の所属する基盤チームでは、現在、ユーザー体験を向上させるためのマイクロサービス化などシステムの改良や課題解決に取り組んでいるところです」(窪田さん)
従来のmenuのシステム構成は、バックエンドにモノリスのAPIサーバを配置し、その後ろにあるクラウドSQLにほとんどすべてのデータを一括して入れる、といった比較的シンプルなものでした。しかし、このシステムではレプリケーション遅延やメンテナンス時におけるダウンタイムの発生など、いくつかの問題が起きていたといいます。
そこでmenuでは、これらの問題をたんに解決するだけでなく、モノリスなサービスをマイクロサービス化していくという目的から、マイクロサービス化に適したデータベースへの見直しをはかりました。
「そのなかで選択肢に上がったのがTiDBでした。TiDBの良いところはMySQLとの互換性があるところです。また付随しているリソースコントロール機能も魅力的でした。TiDBにはこうした優れた機能に加えて高性能なスケーラビリティがあり、私たちが抱える問題を一定解決してくれるのではないかという期待がありました」
現在はクラウドSQLからデータベースを少しずつTiDBに移行している段階。これによってモノリスだったアーキテクチャのマイクロサービス化が進んでいます。
NewSQLを代表するデータベースであるTiDB
セッションでモデレーターを務めたのはTiDBを開発しているPingCAP株式会社の日下太智さん。そもそもTiDBとはどんなデータベースなのか、セッションではTiDBについての説明もありました。
TiDBは「MySQL互換の分散型SQLデータベース」で、いわゆるNewSQLを代表するデータベースです。
主な特徴として、
①大量のトランザクションアクセスに耐えるスケーラビリティ
②OSS
③フルマネージドのサービス
④コンバージドデータベース指向
⑤MySQL互換
⑥HTAP
などがあります。
現在、グローバルで約3,000社が利用。日本国内でもmenuの他、本セッションに参加したDMM.com、Micoworksをはじめ、多くの企業が導入しています。
「OSSであるTiDBは無償でお使いいただくことができます。いっぽうで弊社ではTiDBクラウドというフルマネージドのサービスがあり、日本のお客様においてはこちらを利用していただくケースが増えています」(日下さん)
フルマネージドのTiDBクラウドには、クラウド型マルチテナントマネージドTiDBサービスの「Serverless」と、顧客の専用VPC内に構築するクラウド型マネージドTiDBサービスの「Dedicated」の2つがあり、menuではTiDBの全機能を制限なく使用できる他、データ移行やCDCなどの周辺機能も利用可能な「Dedicated」を導入しています。
エンジニアにフレンドリーなMySQLとの互換性
大量のアクセスをものともしないスケーラビリティなど、多彩な機能やメリットを持つTiDBのなかで、窪田さんが最大のメリットとして挙げたのは「MySQLとの互換性」でした。
MySQLは世界でもっとも使用されているデータベース管理システムであり、データベースに携わるエンジニアであれば触れたことがない人はひとりもいないといってもいいソフトウェアです。ただし、基本的な設計はシングルノードであり、時代に応じてバージョンアップはされているものの最初から分散環境で使うことを想定して開発されてはいないため、menuのように大量のデータを扱うシステムではボトルネックが発生してしまうなどの問題が起きることがあります。そこがTiDBであれば、例えば大量のアクセスに対して、シャーディングによる運用不可もなく処理が可能となります。しかも両者には窪田さんが強調するように互換性があるのでデータベースの移行がストレスなく行うことが可能です。
「アプリケーション開発者として、MySQLとの互換性は非常に助かっています。それと必要に応じて自動的にスケールアウトしてくれるところや、オブザーバビリティの面でもクラウドの管理画面がはじめから用意してあるところなどもたいへん使い勝手がいい。ローカルでの環境において、コマンドひとつでぽんとデータベースの起動ができるところなどはチームのメンバーにとても喜ばれています」(窪田さん)
まとめ
menuのようなフードデリバリーサービスだけでなくゲーム業界などでも評価の高いTiDB。窪田さんは「TiDBはマイクロサービスの複数のデータベースをひとつのクラスタにまとめても十分使える機能がたくさんある点も評価の対象です」と語ります。menuのサービスを充実させていくうえで、TiDBはすでに欠かせないシステムとなっています。
「オブザーバビリティ周りの機能が他のサービスとより連携しやすくなるようなバージョンアップに期待しています」(窪田さん)
menuのサービスをより充実させるバックエンドの開発。いかにいいツールを選ぶか。その目を養うこともエンジニアの大切な仕事のひとつだと教えてくれる窪田さんのお話でした。