If today were the last day of my life

駆け出しエンジニアの備忘録

Mercari Tech Conf 2018 に参加してきました。

f:id:suzusin:20181004191659j:plain

所感

  • 今年始めて参加しましたが、とても良かったです。
  • 自社サービスのマイクロサービス化を推進しているエンジニアとしては参加しないわけにはいかない!という気持ちで2,000円のチケットをポチッたわけですが、現在進行系でマイクロサービス化に取り組んでいる事例の詳細を知ることができて、安いくらいでした。
  • またメルカリさんほどの会社でもこういったところは難しいんだ、とか知れて勝手に励まされたり
  • これを活かせるように、もっと頑張ろうと思える1日でした!

その他

  • 機械学習とMicroservicesという2つの軸があるわけですが、部屋がたまに入れ替わるので満員御礼や空席が目立ったり
    • 立ち見はちょっとつらかった。事前にどのセッションに興味があるかを申請して不確実性を除去したい
  • ドリンク、軽食のコーナーは嬉しい!けどそのフロアで座る場所がないので、正直ちょっと疲れた
    • おそらくブースに立ち寄って欲しいということなのだろうけど、人が多くて近寄れなかったり、聞こえなかったり…
  • 昼休みなど、だいぶ待ち時間があったので、ディスカッションコーナーとか交流の場がもっとあると良かったかも!

スライドは後日公開されるとのことなので期待して待ちつつ、 ここには手元のメモを一部残しておきます(英語版は既に公開されています)。


Microservices Platform at Mercari

  • 現在300人のエンジニア→2020年までに1000人を目指している
  • 書籍からの引用によると、High performers の組織だけが人数に比例してデプロイ数を増やすことができる
    • 逆に、Low performers の組織は人が増えても減少する
  • Organization design が大事
    • システムをマイクロサービスにしても、Backend team がそのままだと、Ownerが不明瞭になる
    • QA teamがそのままだと、そこがボトルネックになり、リリースペースが落ちる
    • これまでの専門性によるチーム分割では、サイロ化が進む
    • 1人1人のエンジニアが多くの役割を担う必要があるが、これは期待しすぎだと感じている
  • メルカリでは、各チームのエンジニアを助けるためにMicroservices Platformチームができた
    • そのサポートもあって、1年前はマイクロサービスは1プロジェクトだったが、現在はプロダクションで19サービス、70サービス以上が開発中

API Gateway Architecture

  • api gateway on k8s
    • 新たな機能はapi gatewayを使って開発する
    • 次に既存のモノリスAPIapi gateway利用に置き換えていく
    • 新しいサービスはk8sにデプロイ、これによりインフラオペコストの削減ができた
  • Template projectを作成した
    • phpから、golangに移りつつある
    • template projectをコピーするだけで最低限のマイクロサービスプロジェクトをすぐに開始できる
  • インフラ
    • これまではSREしかインフラにアクセスできなかった
    • 各チームが自由にインフラに触れるようにする必要がある
    • 各チームのエンジニアは、cluster adminとして自分たちのサービスの安定運用の責任を持つ

Web application as a microservices

  • JP Web Re-architect team が発足

    Goal

  • 変更に強い柔軟なアーキテクチャ
    • TS, React, NEXT, GraphQLを一番最初に選択 する
  • 開発チームのスケーラビリティ向上
    • エンジニアの増加に耐えるアーキテクチャ
    • 各チームの技術選定を自由に
    • フロントエンドは、US+JP 4人 から 16人に増えた

現実はSingle PHP Server、理想はチームごとに自由な技術選定、意思決定を。

How to…

  • Renewalではなく、Re-architect
  • 小さいスコープで行う
  • 小さい成功か失敗を繰り返すことでノウハウを蓄積

移行順の決め方

  • 難易度が低いもの
  • 他改修とのバッティングがないもの
  • 充分なトラフィックがあるもの
    • これはマイナーページだと影響を図りづらいため

最高の開発に向けて

  • 技術スタック、新しい挑戦をしている、ドラスティックな変化がある
  • マイクロサービス化は最高の開発に向けた種まきに過ぎない