「SRE(Site Reliability Engineering)」。耳慣れないこの言葉が、メルカリのITインフラを理解するキーワードだ。目標はいつでも快適かつ安全な、「信頼できる」サービスの実現。ハードウエアが司るITインフラの力を、コーディングやソフトウエア構成の最適化で引き出す。視線の先にあるのは、太平洋と大西洋をまたいだアーキテクチャーの実現だ。

「SREチーム」の設置を告げるメルカリのブログ記事
「SREチーム」の設置を告げるメルカリのブログ記事
(出所:メルカリ)
[画像のクリックで拡大表示]

 「ユーザー向けの新しいサービスや機能『以外』のシステム開発全般を担う」。メルカリの長野雅広プリンシパルエンジニアは、同社が2015年11月に設けた、「SRE」と呼ぶエンジニア組織の役割をこう説明する。

 SREとはコーディングやソフトウエアエンジニアリングによって、ハードウエアを含めたシステム全体の性能や可用性、セキュリティを高める方法論のこと。明確な定義はないが、「ハードウエア寄りの業務が多い印象のあるインフラエンジニアに比べて、ソフトウエアエンジニアとしての業務が多い」(長野氏)。

 SREの考え方を最初期に提唱、実践したとされるのは米グーグルだ。2012年に公開したブログで、SREに言及している。以来、米国の大手ネット企業を中心に広がり、メルカリのエンジニアチームの耳にも入るようになった。

 「インフラチーム改め Site Reliability Engineering(SRE)チームになりました」。こう題したブログ記事で明らかにしたSREチームのミッションは、「サービスをいつでも、快適に、安全に利用できるようにすることだ」(同)。

 プログラムの中身に手を入れてアプリそのものの可用性を高める、データベース構成やデータ取得方法を見直してトラフィックを抑える、デプロイ(コードの配置作業)やプロビジョニング(資源割り当て)の効率を高めてメンテナンスによるサービス停止を減らす――。求められるスキルや業務は、サーバーやストレージ、ネットワークといったハードウエアの安定運用や障害対応に関するものだけではない。

インフラの「山」を乗り越え

 現在、メルカリのSREチームは長野氏を含めて6人のエンジニアから成る。SREとして形を成したのは、メルカリが直面したインフラに関するいくつもの「山」を乗り越えた結果である。

 最初の山は2014年5月ごろ。同社が初めてテレビCMを放映し、利用者数が急増し始めたときのことだ。それまでアプリのダウンロード件数が100万件増えるのに半年かかっていたのが、わずか1カ月で100万ダウンロード増を記録するほど、増加速度が上がった。結果、システム全体のレスポンスが悪化した。

 同社は当時から現在まで、データベースにはオープンソースのリレーショナルデータベースである「MySQL」を活用。当時は全てのデータを一つのテーブルに格納していた。半導体メモリーによる高速ストレージも使っていたが、利用者数の増加ペースはハードウエアの力だけでは賄いきれなかった。

 エンジニアチームが打った手は、データベースのテーブル分割。当初は全てのデータを一つのテーブルに格納していた構造を見直し、利用者のコメントなどデータの性質に応じてテーブルを分けた。今後のテーブル設置のルールも明確にした。