※この記事は、"Blog Series of Introduction of Developer Productivity Engineering at Mercari" の一環で書かれています。
はじめに
こんにちは、メルカリのCoreSREチームでエンジニアリングマネージャーをしている鈴木秀典です。
CoreSREは、the Developer Productivity Engineering Camp を構成するチームの一つで、モノリシックなAPIから利用される大規模なMySQLデータベースや、サブシステムの問題点を解決することをミッションとしています。
この記事では、現在取り組んでいるプロジェクトの中でも特に大きな2つについて紹介します。
大規模なMySQLデータベースの刷新
メルカリのサービスはPHPで書かれたモノリシックなアプリケーションで構成されていましたが、その後、エンジニア組織の拡大、サービスの開発速度の向上を実現させるために、機能を段階的にマイクロサービス化していく決断をしました。
モノリシックなAPIが利用する大規模MySQLデータベースは、これに伴って分割されていく想定でしたが、サービスの成長速度が早く、データサイズは肥大化し続ける状況となりました。
そのためスケールする仕組みを持ったシステムへの移行を決めました。
このプロジェクトは始まったばかりで、今はいくつかの候補に対して我々の要求を満たすかを様々な側面から検証しているところです。
実際の取り組みについては、この連載企画で後日公開されるブログにてもう少し詳しく説明をする予定です。
システムの配置変更
過去のブログ記事でも触れた事がありますが、メルカリはサービス開始当初、北海道石狩のデータセンターに配置されていました。
その後、マイクロサービスはGCPの東京リージョンに、モノリシックなAPIとデータベースも同じく東京に配置するというシステム構成の変更を行ってきました。
モノリシックなAPIから利用されるサブシステムは、その機能をGCPが提供するマネージドサービスに置き換えることで不要となったものもありますが、多くのサブシステムは設計のモダン化により廃棄できることが想定された為、石狩のデータセンターに残しました。
しかし我々は、GCPにある社内システムとの連携による様々な恩恵を受けられるようにするため、また、管理/オペレーションコストを削減するために、サブシステムをGCPの東京リージョンに配置換えをする決断をし、現在移行に取り組んでいます。
石狩にあるサブシステムを、東京で再構築する事は簡単そうに思えますが、レガシーなシステムを相手にする場合は、十分に情報が共有されていなかった特殊な仕様が盛り込まれている可能性がある事に注意しなければなりません。
このプロジェクトで、我々はシステムを解析して必要な改善を施した上で、再構築する事でデグレを防ぎながら、サービスの品質改善と信頼性向上に取り組んでいます。
さいごに
この後、CoreSREチームの取り組みに関する記事を続けて公開していきますので、ぜひそちらもご覧下さい。
株式会社メルカリでは、我々と一緒にこの様な改善に取り組んで頂ける仲間を募集しています。
https://apply.workable.com/mercari/j/A192D73847/
まず軽くお話したいという場合は、カジュアル面談も大歓迎です。
ここでは書ききれないことをお話したり、いろいろな質問にお答えすることができます。
お気軽に私の Linkedin にカジュアル面談希望の旨をご連絡ください。