Business Trip で Quipper の Jakarta Office に行ってきた。
10月に @yuya-takeyama が Enginering Manager になって、僕と rbmrclo が @sre-global という担当になって、yuya が「行ってみるのもありなんでは?」と言ってくれたのち robbie がいい感じの proposal を書いてくれて実現した。僕1人じゃこの提案はできなかったと思うので本当に2人に感謝している。
旅の前半の Jakarta 編が終わったので、次の Manila へ向かう飛行機の中で書き留めておく。
この旅の目的は SRE と Developer の関係性の再構築・強化だ。これだとざっくりしているが、より詳しく言うと、SREs は全員 Tokyo にいて、現状 PH/ID/MX Branch には SRE が存在しない。Developer と SRE は密接に Communication が求められるのに関わらず、おもな Communication 手段は Slack / GitHub Issue のみであり、頻繁に Communication を取れてるとはいいづらい。(関係が悪いとも思っていないが)
実施した Program 的なものは以下
- Global SRE Missions for 2020
- SRE Concepts (from robbie)
- Emergency Response
- Capacity Planning
- Observability
- Future of Global SRE (from robbie)
- SLIs/SLOs (from me)
- Delegation Infrastructure Management(Terraform) to Devs (from me)
- SRE Concepts (from robbie)
最初に上記のようなトピックの Abstruct を説明するセッションを 1h とった。その後の Q/A をもとに、より詳細なセッションを別途持った。
- SLO/SLI Engineering OKR alignment
- How to handle too much request by online try-out
- 1 on 2 / sre-global vs Engineering Managers
- Explain Mission Control Program
- What is your expectation for sre-global?
- Sharing On-boarding processes
基本的な思想として、SREs は必要悪で、全員で Site Reliability Enginering ができるのが理想だと思っている。もちろん SREs の仕事は Platform 開発や OnCall(うちは OnCall Rotation を持っていないが)、Architect, Performance のような Production に関わることを含むので、すぐにはゼロにはできないが、SRE の思想や、やってる内容は少しずつ Product Team に委譲し、Product Team が Market に対して爆速で仮説検証をできるように(しかも信頼性も Keep しながら!Reliability is a feature である)していきたいと思っている。
そういった話をもとに、いままさに導入して試行錯誤の最中である SLI/SLO の導入説明や、robbie が提案する Mission Control Program - Google が提唱した、Developer が短期的に SRE Team に移動して知見を得て元の Team に戻っていく Program - の提案や実現性のヒアリングを行なった。また、 @suzuki-shunsuke が爆速で進めてきた Terrraform を state 分割して各チームにオーナーシップを持たせる話も説明した。
これらの説明を建設的に、前向きに彼らは受け取ってくれた。僕が1番驚いたのは Indonesia Team の Product Management だ。Product Manager の rofiqi が本当にしっかりしていて、Indonesia Branch の Product / Area ごとに、さらに細分化された Team ごとに 達成度合いを OKR を運用しており、その説明もとてもわかりやすかった。
SLI/SLO の導入の部分で、OKR にどう Align していけば良いか?という質問が行われたので、追加のセッションで Indonesia Team の OKR System をそもそもどのように運用しているのかを説明してもらったあと、基本的な SLI/SLO の話や原則、ポイントを簡単に説明したのち、最終的には「君らにまかせる」という回答をした。
彼らが OKR として採用している Key Result は Product Team であれば獲得した Paid User 数だったり、学習時間だったりするし、Enginering Team であれば 開発速度や、バグの数などがあった。Product によってはそこで SLI として採用している Availability(uptime) があったりした。
もちろん信頼性目標を組み込むのは悪くはないが、守れないと必ずしも"悪い"というものではないので、僕としては若干疑問は残るが、運用するのは彼らなので、彼らのやりやすい方法でやれるならそれが一番いい。
彼らが優秀であることと、これまでも試行錯誤を Indonesia の一部のチームではじめていたこともあり、わりと共通認識は取れていたと思う。SLI/SLO に関しての重要なポイントも説明し、理解してくれたようだったので、Indonesia に関してもまた SLI/SLO を「当たり前」のものとして運用できる未来は見えたのでよかった。
SLI/SLO に関しては僕が Lead しているのでそれもまた直接説明できてよかった。あと Coursera のコースとってるおかげがわりとぶつけで説明したけどうまく話せたのもよかった。
robbie が導入した Mission Control Program に関しても Enginering Manager のほぼ全員が(実際にそれをやれるかの How の部分には疑問が残るとはいえ、)方向性には同意してくれたようでよかった。
また、Enginering Manager との 1 on 2 をやる際に、せっかくのチャンスなので SRE(Global) に対する期待値を聞いてみた。
これは近々 Developer に向けて、SRE がやってきているいろいろの Feedback をもらうための Survey をやるつもりだが、その先駆けに Simple な質問を1つだけした。
目指す姿としては全 Product Team の全員が Site Reliability Enginering をできる、あるいは Team 内に mini-SRE がいてそれを Lead してくれるような形だが、少なくとも半年以上は先の話であり、現状は remote で Tokyo の SRE-global と各地の Developer で協力してやっていく必要がある。
それをもっとうまくやるためにも、期待値調整をしてみた。みんないろいろ思うところがあったみたいで、聞いてよかった。
例えば、あまり普段関わりのない Android Team の Enginering Manager と話したが、Staging 環境の安定性を1番にあげていた。あまり使ってない Endpoint があるからそれを調べられないか、みたいな話とか。話してみれば今すぐできることが出てくるので会話は大事だ。
またある Enginering Manager は Infrustructure / Platform の Interface をもっと多く開発してくれると嬉しいということだった。Learning Curve を下げつつ、かつ Secure にいろんなものを、SRE に頼まずに調達できる世界は目指している世界なので、そのあたりの認識が一致していることがわかってよかった。
これも思いつきだが、Global Team でも OnBoarding はちゃんと行われていて、日本での OnBoarding の状況を紹介できたのもよかった。たくさん質問がでてみんな興味を持ってくれたようだった。
半分冗談だが、初日の Dinner は「ここにいる全員 SRE だ!写真とるぞ!」って言って写真とったのすごいよかった。
たった3日間だったが、ふだんの仕事もしつつ(いろいろやむなしで Production の Operation もあった :sweat_smile: )多くの meeting を持ち(せっかくきてるからね!)非常に密度の濃い時間を過ごせたと思う。
こういう、「必要性を定量的に示すことは難しいが、やってみると確実に効果がある」類のことに、出張としていける組織でよかったと思う。
普段は Slack の向こう側で、slack id でしか認識していなかった彼らと直接話せて本当によかった。Lunch や Dinner にも連れ出してくれて本当にいいやつらだ。たくさん彼ら彼女らのことが好きになりました。
さてさて熱の冷めぬうちにやりたいなと思ったことを書いておく。
- robbie との 1on1 を weekly か byweekly でもつ。彼とは行きで同じ便だったこともあって、わりと長い時間2人で仕事のことに関わらずいろんなことを話して、普段から隣に座ってはいるものの、もっと多くのことを話したほうがいいと感じた。(彼が東京にきてもう半年以上経ってるのにこのザマである!:sweat_smile:)
- Devs との StudySession や Introduction の類を Global でも Zoom / Hangout を使ってやる。日本側ではカジュアルにやってるので同じことをできないわけがない。(いや、わけは英語力というものがあるんだけどね。まさに言い訳である。)
- 今後は(現在議論中に事情により)仕事で日本と Global の Devs が関わる機会は徐々に減ってくる。しかし技術的な Knowledge Share が重要なことは変わりがない(むしろ相対的に重要度は増す)以前やっていた Technical な Study Session をもう一度復活させるもありかもなぁ、みたいな話をした。でもそれを僕が Lead するにはあと少し勇気が足りない。機運待ち。
- Global の Blog ちゃんと書いていきたい。と3ヶ月前から言ってるんだができてない!
このへんのことは前期(2019/3Q)で立てた目標にも入っていたりするんだけど、その Motivation があらためて強化された機会だったということで、今Q も目標にしてやっていこうかな。
あとはこの旅で robbie が彼にしか出せない Value を出しまくってるわけで、自分はどうしていくかなぁと彼と最終日バーで飲みながら考えたりもした。もちろん今の SRE Team は全得意領域をそれぞれ持っていてそれぞれ Value を出している。「で、お前はどうなん?Value 出してるん?」ってもう1人の僕に聞かれている。
role 的な点で他のメンバーと比べて unique なのは global 担当でありながら日本人であるということで、その両者のシナジーを作るだとか、うまいこと応用を聞かせるとか、輸入したり輸出したりできるようにするとか、そういうところなのかなぁ、とぼんやり思ったりするところで終わっている。いや、Technical に突き抜けいよと言われる気もするが、いい意味でも悪い意味でも技術(の内容)にこだわりがないので半ば諦めている。Production Reliability に関する Culture Making の部分はこれからも引き続きやっていく。
やりたいことはたくさんあるので、いかにやらないことを決めるのが目下の課題かなぁなんてことも思ったりした。
とりとめない話でした。Manila もいい時間が過ごせるといいな。