メルペイ VPoE による2020年の振り返り

こんにちはこんにちは。 Merpay Advent Calendar の1日目を、メルペイ VPoE の hidek がお届けします。

はじめに

2020年は世界的に激動の年ですが、早いもので12月を迎えてそろそろ終わろうとしています。ということで、Advent Calendar 1日目として、メルペイの2020年を振り返ろうと思います。

実は去年も同じお題で書いたのですが、毎年使い回せるネタをチョイスした去年の自分を抱きしめてあげたいと思います。では去年と同じく、なるべく赤裸々に淡々と書いていきたいと思います。

プロダクトのチャレンジ

2020年のメルペイのプロダクトにおけるチャレンジを振り返ってみます。

前年である2019年は、2月にメルペイの最初のローンチを迎えてからiD 決済、QR・バーコード決済、「メルペイスマート払い」による後払い機能、ネット決済機能、と決済プロダクトしての基本的な機能を提供してきました。

次いで、今年2020年は次の機能をリリースしました。

去年が決済アプリとしての基本機能提供とキャンペーンに注力した一方で、今年はメルカリとの連携強化基本機能のエンハンス外部アライアンスとの強化を軸にお客さまに使っていただける機能を提供してきました。

プロジェクトとしての反省

去年も散々反省をしましたが、今年も赤裸々に反省をしたいと思います。

今年のメルペイの開発における反省で避けて通れないのが、7月のメルペイスマート払いの定額払い機能の開発でした。実はこの開発自体は去年の4月にメルペイスマート払いをリリースした直後の7月から開始したのですが、リリースまで丸1年を要したプロジェクトでした。

これだけかかってしまったのは、いくつか要因がありました…が、全部挙げているとキリががないので、大きく2つ。

プロジェクトにおける不確実性のマネージメント

そもそも金融事業特有のビジネス要件の複雑さ開発影響範囲の大きさにより「進めてみないとわからない」という不確実性が大きなプロジェクトでした。

加えて、もともと MVP(Minimum Viable Product) で出す予定だったものが、途中から機能を盛り込んで出すという方針転換、その後リリースの遅延を解消するために MVP に戻すというプロジェクト進行における方針転換が、さらに混乱を招く結果となってしまいました。不確実性自体は発生するものとして受け止めた上で、都度しっかりと経営〜PM〜エンジニアでコミュニケーションを取って、その可視化と対応を進めればよかったのですが、それを怠ってしまったのは私にも大きな責任があったと思います。

これを踏まえて、開発プロセス自体を見直すVPoE の管掌範囲を分割して現場と経営の間でコミュニケーションを密にするそもそもの不確実性を抑え込むように改めて MVP へこだわって進めるなど、などの工夫を進めています。

技術的負債の返済と追加開発、障害対応のコンフリクト

去年の Advent Calendar でも触れているのですが、去年4月リリースのメルペイスマート払いの実装に大きな技術的負債を背負っていました。

リリース後は技術的負債の返済を最優先で実施する計画でした。しかし、リリース後の障害対応や同時期にグロース施策による機能追加開発が重なってしまいました。

その結果、一つのマイクロサービスに多くの開発者が同時期にさまざまな変更を行い、結果として同一ソースコード編集によるコンフリクトが多発し、開発の遅延を招いてしまいました

今年7月の定額払い機能のリリース後の振り返りで、この課題を全社で認識して改善していくことになりました。以降は、マイクロサービスに関わる開発者が増えたら、プロジェクトの進め方を見直したり、生産性への投資を先に行ったり、などの改善を行っています。

今回、自発的に久々の反省文を書いて社内で公開するくらい、個人的にも多くの振り返りが必要だったプロジェクトではあったのですが、幸いなことにその後の継続開発では改善されているように見えます。これはエンジニアだけではなく PM も含めて多くのインプットをくれた結果だと思っているので感謝をしています。

技術的なチャレンジ

そんな中、今年も様々な技術チャレンジを行いました。去年の Advent Calendarでも語っていた通りに Productivity への投資が進んだ年でした。

障害の改善

前半は障害による対応コストが洒落にならなくなってきたため、インシデントを管理して再発防止に努めることを OKR に掲げました。ここで KPI として単純に障害数を追ってしまうと障害報告に躊躇してしまったり、新たなリリースをすると障害につながる可能性があるので躊躇してしまったりという、弊害がでるので、I-R Ratio (インシデント数 / リリース数)というものを設けました。更に、インシデントの重大性はもちろんのこと、オペレーション要因、ソフトウェア要因、といった発生要因や、外部影響によるものなのか、さまざまな切り口で可視化しました。

可視化された情報から、改善目標を立てて、トラッキングして改善に向き合うことができました。また、インシデントレポートの改修プロセスを強化して、再発防止を強めることも同時に行いました。この辺りは SRE や Risk Management チームがリードしてくれたのが助かりました。

その結果、最新のレポートでは、さすがに障害ゼロというのは難しかったのですが、機能が積み上がって、システムとしても日々増大化しているにも関わらず、障害件数を低いレベルで抑え込めています。今後も引き続き安定性に向けた努力は続けていきたいと思います。

テストの自動化による改善

後半は特にテストの自動化を進めて、リリースサイクルを短縮するというチャレンジに取り組んでいます。

特にリグレッションテストの自動化はメルカリでは進んでいたのですが、メルペイでは機能リリースを優先していたため、あまりコストをかけていませんでした。しかし、このままではボトルネックになって、テストのコストが大きくなり、リリースサイクルがどんどん長くなってしまうこともあり、今のうちに着手することにしました。

そのためにさまざまなテスト周りの改善が行われました。テスト環境をレプリケーションする仕組み(Service Router)、YAML で簡単にシナリオを書ける End-to-End テストフレームワーク(Scenarigo)、さまざまな属性を持つテスト用のユーザーアカウント作成ツール(user-tkool)、などなど他にも大小さまざまな取り組みが行われました。この辺の取り組みは明日からの Advent Calendar でも紹介されると思います。

これらの改善が新たな「ゆとり」を生み出し、その「ゆとり」から新たな「チャレンジ」が生まれると良いと思っています。Merpay Tech Openness Month 2020 でも少し触れましたが、新たな「チャレンジ」が個人の成長を促し、それが組織の成長にもつながると信じています。

他にも、よりリアルタイムなデータ処理を目指して Data Platform へ Stream Data Pipeline を普及させる試みや、Istio をベースとした Service Mesh の導入といった足回りの進化や、かなりの数になってきたマイクロサービスの各ステータスを可視化するためのダッシュボード(BigBrother)の運用の開始や、現在のメルカリの Web アプリケーションをスクラッチから書き直すという直接お客さまに関わる大きな改善といったプロジェクトも始まっています。

組織的なチャレンジ

Origami のジョインと VPoE 2人体制

メルペイは1月に株式会社 Origami を M&A し、多くの仲間を迎えることができました。最初は Origami サービスのクロージングチームとして組織を分けていたのですが、徐々にメルペイのタスクを担当してもらうようになり、この間をいかにスムーズに組織をマージしようか、という課題がありました。これに関しては、メルペイの既存のマネージャー、Origami からのマネージャー、HR などが協力してくれたおかげで、想定よりスムーズに合流できたと思います。

一方で、人が多くなってきたこともあり、私一人で全体を把握するのは難しくなってきました。

そこで、CTO の @sowawa 、Origami で CTO をしていた @nozaq と相談をして、7月にVPoE 2人体制に移行しました。この辺の話はこちらのメルカンでインタビューに答えていますが、ここで語られていないこととしては、奇しくもメルカリでも VP of Product Engineering に @kwakasa、 VP of Platform Engineering に @stanaka が就任したこともあり、組織的な対称性が産まれてコミュニケーションもスムーズになったと思っています。

働き方の多様化

これも今年を語る上で、避けられないのですが、新型コロナウィルスの影響で私達の働く環境が大きく変化した年でもありました。この辺りの話は色々な所で語られているので、ここでは多くは語りませんが、働き方の多様性とそれに伴うチームビルディングの変化を求められていて、目下その変化に適応中です。

今後

去年一年リリースから爆速でプロダクトリリースを進めてきましたが、今年も負けずとも劣らないくらいに色々な機能を世の中に提供してきました。その一方で、開発の継続性を意識して、しっかりと振り返りながら、生産性を上げるような施策にも投資できたと思います。

来年に向けてすでに新たなプロジェクトが始まっており、来年も色々忙しくなりそうですが、色々なチャレンジができたらいいなぁと思っています。

というわけで、Merpay Advent Calendar 2020 のはじまりはじまりー!

明日の執筆担当は、Solutions チームの @sinmetal さんです。引き続きお楽しみください!