GCPを採用するにあたっての一番のハードルはDatastoreだった
吉羽 一方で、GCPはDatastoreが特殊ですよね。
鶴岡 一番決断が難しかったのはまさにそこです。メルカリのアーキテクチャとの一番大きな違いです。メルカリはRDBなので、社内には多くの知見がある。
でもDatastoreはそもそもがGoogleの技術で、RDBとは異なる理論で成り立っている。DatastoreはBigtableの上に乗っていますが、BigtableはすごくシンプルなKVS(Key-Value Store)で、DatastoreもBigtableよりは高機能ですが、やっぱりKVSなんです。
RDBはすごく堅牢で、こうすれば安全にデータの処理ができるというのが明確にわかるのですが、KVSに関しては、すごくフワッとしてるんですよね。理論というよりはベストプラクティスで、「こうやっておけば最終的にはデータは正しく保存される」という感じです。
吉羽 結果整合性的なところですよね。
鶴岡 まさに。なので、RDBには安心感がある。例えばポイントの処理をする場合、ある人がポイントを消費して何かを買い、相手の人にポイントが移動するという処理を考えた時に、RDBでやれば簡単な話なんですけど、KVSでそれをやるのは簡単ではない。でも、SnapchatやGoogleでもやっているんだから、思い切ってやってみよう、と考えました(笑)。
吉羽 なるほど。今までRDBを使っていた人がKVSベースで書こうとすると、今までと同じ作り方をした場合とんでもないことになったり、フレームワークをどうするのかといった話が出たりするかと思いますが、その辺りはどのようにクリアしていきましたか?
鶴岡 今もまだクリアできている実感は正直無くて、ノウハウを貯めていく必要があります。ただGoogleのドキュメントも良くできていますし、覚えること自体もRDBに比べたら少ないので、何らかのデータベースの経験がある人ならすぐに扱えると思います。
吉羽 新規技術を一つキャッチアップするのと同じような感覚でしょうか。
鶴岡 そうなんです。そこに抵抗がなければ全く問題はないと思います。
吉羽 逆に言うと、キャッチアップできるマインドセットの人を採用する感じですね。
鶴岡 そうですね。Goの未経験者はGoも覚えることになります。ソウゾウに入社すると、覚えることがすごくたくさんある状態なんですね。AWSは知っているけどGCPは触ったことがないという人も多いですが、1か月も触ればだいたい分かってくれることが見えてきました。で、触ると、GCPやGAEの良さをみんな実感していきますね。
「メルカリはGCPも使います」GCPを採用のキャッチにしている理由とは?
編集部 メルカリの採用のキャッチコピーで「メルカリはGCPも使います」と書かれていたのを見たことがあります。採用や、新しく入ってきた方への教育面で、気をつけていることは何かあるのでしょうか?
鶴岡 もともとメルカリは専用サーバからサービスが始まっており、AWSも併用していました。そうすると専用サーバとAWSの技術しか扱わないと考えがちですが、実際はそうではありません。どんなタイミングでもどういった技術が最適なのかを考え続けています。例えばメルカリのアメリカでは専用サーバではなくAWSを主に利用しており、今年立ち上げたイギリスではGCPを利用しています。メルカリグループ全体として見たときに、主要なクラウドとオンプレミスの技術的ポートフォリオを持っていることは、組織の強みに直結します。
あとは新しく入られた方への教育面ですが、今は学習しやすい環境が整っていると思います。どのクラウドを選んでも、触りたい人は自分で学んでいけて、そんなにハードルは高くないと思います。サンプルもいっぱいありますし。
GCPは"究極のPaaS"
吉羽 PaaSの中でも、Herokuはアーキテクチャが透けて見えて、Redisやデータベースなど色んな部品を足していけば全部使えてしまうような感じがありますが、GCPは完全に隠蔽された世界のように思います。究極のPaaSと言えるでしょうか。
鶴岡 そうなんですよ。GCPの公式ページには「(プログラマが)自分の本来の仕事に集中できる」と書いてありますが、本当にその通りだと思います。僕らのチームは全員が機能開発をしていて、インフラ専任の人がいないんですよ。でも、どんなにユーザーが増えても対応できています。
吉羽 例えば、GCPに障害が起こった際には、ただサービス止まっているだけで、何が起こっているのかは全く分からない状態だと思いますが、その辺りは割り切りでしょうか?
鶴岡 そこは割り切るしかないと思っています。というのは、結局自前で用意したインフラは、「自分たちで見ている」という安心感は得られますが、だからといって100%の稼働を保証することはできない。100%に近づけるならば、例えばGCPとAWSで二重化するアプローチがありますが、よほどクリティカルな状況じゃない限りはそこまではしないと思うんです。
ソウゾウは、ひたすらGoogleに寄せて、Googleレベルとまではいかないまでも信頼性を高めていくという戦略です。過去1年の稼働率は100%に近いので、良い成果が出ています。
