退職と転職。人生の振り返り

February 28, 2022


お久しぶりです。

2021年12月末でメルカリを退職しました。在籍期間は5年8ヶ月でした。2022年1月からは 10X で SRE をやっています。メルカリはファーストキャリアで第1期新卒としての入社でした。メルカリで働いたことは自分の人生に大きな影響があったこと、退職したことは大きな決断だったので振り返りを残します。

2016年

2016年に新卒としてメルカリに入社しました。GitHub 採用というやつです。当時は相当前衛的でヤバイ組織だなという印象を持ちました。

配属先は「JP チーム」という名前のチームで、バックエンドエンジニアとしてでした。JP チームの API 開発エンジニアとしては3人目の入社で、当時の JP チームはデザインメンバーからプロデューサー (当時の呼称) までが10人前後集まった集団でした。プロダクトサイドのメンバーとしてはもっといたのですが、当時は「US ファースト」で開発リソースの9割近くが US 事業に割かれていました。入社前は外から CM などを通してみるメルカリは大きく伸び始めている企業で、優秀な人がたくさん働いているのだろうなとぼんやり思っていたのですが、入社して蓋を開けてみるとこれほどまでに少ない人員で運営していたのかと驚きました。 JP は多くの利益を生むメルカリグループ全体の収益基盤にもかかわらず、小さなチームで運営していたことに驚いたと同時に、足を引っ張らぬよう気を引き締めたことを覚えています。業務内容は主に「○月くじ」や CM 連動型のキャンペーンなどでした。

同年9月頃に新卒エンジニア3人が1ヶ月間代わる代わるメルカリの SRE 業務を体験するという SRE 研修が始まりました。当時の SRE チームと SRE メンバーの視点を養うということで始まった研修ですが、サブタスクとして好きな業務改善に取り組むことができました。自分は IP DB と呼ばれていた Go で書かれたサーバを net/http を使って書き直すことに取り組みました。

研修後は JP チームに戻り色々な業務を担当しました。1番覚えているのは CS ツールの電話対応でした。エスカレされてきたお客様同士の重大なトラブルなどについては CS が電話で応対できるようにするといったものです。はじめて一任されたデカメのタスクで、実装や QA などで大変だった一方で、福岡に電話対応チームが発足するということもあり楽しかった思い出があります。

その後は自分も US 配属となりました。より一層 US 事業に力を入れる必要がある必要が出てきたためです。当時は US アプリのリデザインとアーキテクチャの刷新が図られていました。API サイドでは PHP で書かれた API のコードベースに Go で書かれた API ラッパーを挟むという大工事が始まっていました。これは後に US が JP ベースの PHP コードからラッパーを介して Go で書き直された各種機能(マイクロサービス)にスイッチングすることを担っていました。

また、人事面では当時は tenntenn さんや deeeet さんといったメルカリに入社する前から知っていた人が続々と入社してきて驚きました。

2017年

2017年、夏ころに US の流れを受けて JP でもマイクロサービス化のムーブメントがありました。このころ SRE 研修を経てから、バックエンドエンジニアではなくインフラ面で仕事がしたいとの気持ちが芽生えてきて、各方面に打診をしてチーム異動を願っていました。そんな中、気持ちに応えて異動を手伝ってくれる人たちのおかげで SRE チームにジョインすることとなりました。

SRE に異動しての初仕事はメルカリ社内にあった Wiki システムを GKE に載せ替えるというタスクでした。

JP でもいよいよマイクロサービス化を推し進めようとの経営判断となり、担当する専用のチームを発足させることになります。白羽の矢が立ったのは US 出張で US マイクロサービス化の現場を見てきた deeeet さんでした。当時同じ SRE チーム所属であったことと、Wiki の GKE 移行でサポートしてもらって関わりがあった自分もこのチームにジョインすることになります (当時は SRE 傘下の Microservices チームという位置づけでした)。

2018年

マイクロサービス化の波も本格化し始め、Microservices チーム (当時) は次のリポジトリを作って Spinnaker を導入したあたりからチームの様相を呈してきました。人も集まりはじめて3~5人くらいになっていたと思います。

  • microservices: すべての issue トラッカーとドキュメント
  • microservices-terraform: すべてのインフラ基盤

この頃は、まずは1つのマイクロサービスの成功事例を作ることに躍起でした。多くの試行錯誤を繰り返してチームでマイクロサービスのデザインやマイクロサービスに必要なスケール戦略を考えていたと思います。実際にマイクロサービスの開発現場にジョインして、開発のサポートからマイクロサービスのプラットフォームを作るにあたって必要なことのキャッチアップも行っていました。今でいう Embedded SRE の走りみたいな状態だったと思います。なんとしてでも成功事例を作るんだと意気込んで取り組んでいました。

加えて、マイクロサービス化が軌道に乗った先のことも考えて動いていました。チーム内ではスケールする Terraform リポジトリの設計や Terraform 導入の戦略、Kubernetes では Namespace の設計や権限周りのデザイン、Ingress のデザイン1つとってもたくさん議論しながら進めていたことを覚えています。また、メルカリのマイクロサービスがここまで発展することになったものに microservices-starter-kit という Terraform モジュールがあります。これは Terraform の template 機能を使ったもので、各 env ごとに必要な情報が記載されたモジュールファイルを吐き出してくれるようになっていて、これが Microservices Platform 側と開発者のインターフェイスになってくれるというものでした。

Mercari Meetup for Microservices Platform を開催しました | メルカリエンジニアリング

この仕組のおかげでそれから数年、ほぼすべてのマイクロサービスはここから生まれて数千もの Terraform states を生むまでに貢献します。

2019年〜

Microservices Platform チーム (のちに Platform チーム) として動きはじめてきて、みんなで1つのことをやるフェーズからそれぞれがそれぞれのタスクを、また OnSupport という開発者から上がってきた issue を解決するメンバーや、バディー制度 (2-3人で小チームを組んでレビューコストを下げる) などを導入してチームとしての動きが本格化してきました。

自分は、

  • tfnotify の開発
  • HashiCorp Vault の検証、導入
  • microservices-kubernetes の開発: すべての Kubernetes manifest モノリポ (Spinnaker と共存)
  • devstats (Microservices の効果測定、開発 Agility やボトルネックの可視化) の開発
  • OPA Gatekeepr や conftest のトライ

などをやっていました。思い出せない限りのイシュー、たくさんの挑戦ができました。

Mercari Microservices Platformの進捗(2019年) | メルカリエンジニアリング

その後は、クラスタ移行などの大規模イベントを経て、チーム再編も行われ、チームメンバーも20人超にまで成長していました。働き方では、Six week release cycle というワークスタイルを導入して軌道に乗ってきていました。

アウトプットは、Speakerdeck やこのブログ、メルカリのエンジニアブログに残してきました。

2021年

(Microservices) Platform チームが、

  • Platform DX
  • Platform Inra
  • CI/CD
  • Network

に分割されてそれぞれのエリアにフォーカスできるようになりました。やれることも増えて、やっていることも deep dive できるようになり確実にチームとして進化しているのを感じていましたが、一方であの頃の小さなチームでの楽しかった思い出や経験が反芻されるようにもなっていました。そのことで自身のパフォーマンスにも影響が出ていました。

チームの進化の方向性に正当性を感じる一方で自分の趣向性とは反してきていると感じていたのです。この頃からぼんやりと転職を考えるようになります。

2022年

株式会社 10X に転職しました。実は2020年はじめくらいから転職市場だとどういう評価をもらえるのだろうと気になり、いろいろな会社と話をさせていただきました。10X もそのうちの1つでそのときからコンタクトはもらっていたのですが入社まではだいぶ返事が遅くなりました。これは Platform チームを辞めることに躊躇していたからです。最高のチームに恵まれて、Microservices の最前線で課題解決に取り組んでいることから離れるのを惜しみました。

しかし時間をかけることで自分の中で落とし所を見つけたため転職を決意しました。最初に辞めることをよぎったときから最終の決断まで2年もの歳月があり、いちばん重要であろう意思決定までに至るプロセスは今回は載せません。しかし、チームやマネージャーと相談した上で自分の次の成長を求めて出ることに決意したのです。決断した際に快く後押ししてくれた方たちに感謝します。

退職する際に、Terraform を管理するリポジトリに定義された自分を削除するプルリクエスト (消すことですべての権限を失う) で同僚から Hotel California の歌詞になぞらえて、

You can checkout any time you like But you can never leave!

と言われました。これはまさしくメルカリの Platform チームです。改めて居心地のいい空間から出る勇気は相当な覚悟がいるなと感じます。

今後

10X では SRE エンジニアとしての入社です。SRE ロールを持つのは自分ひとりなので人手が足りません。10X のインフラ課題を一緒に解決してくれる人を探しています。10X に入社してやりたいこと、その他詳しいことは入社時に語った Podcast があるので気になる方は試聴してみてください。

Twitter @babarot

最後に

メルカリでの SWE として仕事ができたこと、自分と関わってくれたすべての人に感謝します。本当に最高のチーム、最高のチームメンバーに恵まれました。今でも Microservices Platform チームは素晴らしかったなと思います。そんなチームを作れたこと、EM、一緒に働いたチームのメンバー、かつてのメンバー (@spesnova) にも感謝します。spesnova さんには多くを学びました。

特に何度も何度も一緒に働かないかと声掛けをしてチームに引き入れてくれ、最後は自分の EM にもなった deeeet さんには感謝しきれません。あの頃誘ってくれていなければ、今の自分は成立していなかったはずです。転職の決断をする最後まで良きチームリード・上司であったこと、映画の雑談で盛り上がったことはいつまでも忘れないです。ありがとうざいました。またともに働ける日が来ることを願って、自分も成長していきたいと思います。