Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Native On-boarding

Kohei Ota
September 08, 2020

Cloud Native On-boarding

Kohei Ota

September 08, 2020
Tweet

More Decks by Kohei Ota

Other Decks in Technology

Transcript

  1. 自己紹介(メンティー) 名前: 三神 拓哉 所属: ZOZOテクノロジーズ 役職: エンジニア カタギの人 普通の人

    オンプレミスを扱う部署から           クラウドを扱う部署へ異動
  2. 自己紹介(メンター) 名前: 太田 航平 (@inductor) 所属: HPE 役職: ソリューションアーキテクト Kubernetes

    SIG-Docs Japanese localization owner Cloud Native Ambassador Docker Meetup Tokyo、本カンファレンス運営
  3. 自己紹介(メンター) 名前: 太田 航平 (@inductor) 所属: HPE 本セッションはZOZO時代の話をします 役職: ソリューションアーキテクト

    エンジニア Kubernetes SIG-Docs Japanese localization owner Cloud Native Ambassador Docker Meetup Tokyo、本カンファレンス運営
  4. アジェンダ • 本セッションの動機 • 今日のゴール • メンティー視点 ◦ 基本的な業務の進め方 ◦

    Cloud Nativeな開発を始めて意識するようになったこと ◦ 振り返り • メンター視点 ◦ オンボーディングの基本 ◦ チーム結成後の動き方と実践に向けたアプローチ ◦ 実践でうまくいったこと、いかなかったこと
  5. 本セッションの動機 (メンティー視点) • オンプレだけでこのままやっていけるのかという漠然とした不安の解消 ◦ クラウド未経験からクラウドネイティブなエンジニアに転身 • 社外勉強会で他社エンジニアと交流したときに感じた外とのギャップ ◦ 自分は3ヶ月のオンボーディングと実務経験で様々なことを学ぶことができた

    ◦ 周りからは『どうやって勉強したのですか?』という声が多かった ◦ 多くの人がクラウドネイティブ関する興味を持っていることを感じた クラウドネイティブな技術に興味はあるが、はじめ方がわからない人が多い? 『仕事でクラウドを使う』ことに大きな壁を感じている人も多い! 自身を例としてクラウドネイティブなエンジニアになるまでの知見を共有したい
  6. 本セッションの動機 (メンター視点) • 前職のチームビルディングが自身のキャリアにとって1つの大きな資産 ◦ チームの仕事に再現性のある一定のクオリティを与えられた ◦ 技術力は当たり前として、チームとして何をどうすべきか考えながら動く文化 • 自分がメンターをやった成果

    ◦ 1クオータ(3ヶ月)で2人のクラウドネイティブなエンジニアを育成した ◦ 今回ZOZOテクノロジーズ関係で登壇している 4人はその時のチームメンバー全員(!) ▪ リーダーが@sonots、サブが私
  7. 本セッションの動機 (メンター視点) • 前職のチームビルディングが自身のキャリアにとって1つの大きな資産 ◦ チームの仕事に再現性のある一定のクオリティを与えられた ◦ 技術力は当たり前として、チームとして何をどうすべきか考えながら動く文化 • 自分がメンターをやった成果

    ◦ 1クオータ(3ヶ月)で2人のクラウドネイティブなエンジニアを育成した ◦ 今回ZOZOテクノロジーズ関係で登壇している 4人はその時のチームメンバー全員(!) ▪ リーダーが@sonots、サブが私 参加者の皆さんにも、仕組みとして導入できそうなノウハウをシェアしたい! きっとこういう内容で悩んでいる人はいるはず! という気持ちで申し込みました。
  8. アジェンダ • 本セッションの動機 • 今日のゴール ← • メンティー視点 ◦ 基本的な業務の進め方

    ◦ Cloud Nativeな開発を始めて意識するようになったこと ◦ 振り返り • メンター視点 ◦ オンボーディングの基本 ◦ チーム結成後の動き方と実践に向けたアプローチ ◦ 実践でうまくいったこと、いかなかったこと
  9. 当時の背景 • 時は2019年の終わり頃 ◦ なんか認証基盤をリプレイスするみたいな話が出た ◦ 深遠な理由で比較的ベンダーニュートラルな技術スタックで基盤を作りたいという要件 ◦ ML基盤チームでKubernetesの利用が進んでいたので白羽の矢が立った •

    ZOZOTOWNオンプレチームとの連携 ◦ リプレイス案件なので、既存のシステムに理解のあるメンバーも必要だった ◦ オンプレチームから 2人が名乗りを上げたため、合計 4人の新しいチームが結成された
  10. メンバー構成 • リーダー ◦ @sonots - 圧倒的リーダー • メンバー ◦

    @inductor - Kubernetes利用歴が一番長いので教える人になった ◦ @god(三神) - 神 ◦ @kame(亀井) - 亀 @sonots @kame の セッションも是非ご覧ください →
  11. メンバー構成 • リーダー ◦ @sonots - 圧倒的リーダー • メンバー ◦

    @inductor - Kubernetes利用歴が一番長いので教える人になった ◦ @god - 神 ◦ @kame - 亀 当時兼務で忙しかったリーダーを除き 1人のメンターと2人のメンティーで クラウド技術の第一歩を歩み始めた (オンボーディング開始)
  12. アジェンダ • 本セッションの動機 • 今日のゴール • メンティー視点 ← ◦ 基本的な業務の進め方

    ◦ Cloud Nativeな開発を始めて意識するようになったこと ◦ 振り返り • メンター視点 ◦ オンボーディングの基本 ◦ チーム結成後の動き方と実践に向けたアプローチ ◦ 実践でうまくいったこと、いかなかったこと
  13. メンターからの指摘点や改善点 • 思考のドキュメント化 ◦ 1年後の自分が見ても理解できるような文章を心がける ◦ 自分がいつ辞めてもいいように仕事をする • タスクをもらった時に最初に議論する ◦

    認識が合わないままタスクが進んでも誰も幸せにならない ◦ 不明点は明らかに • クロスレビューの徹底 ◦ 事前にメンバー同士でレビューを繰り返すことでリーダーの仕事を少しでも減らす ◦ 物事を多面的に見るためには他人の目が必要なことも多い
  14. (参考)いつかのKPT(抜粋) • KEEP ◦ Gitを使えるようになってきた ◦ 学習のINPUT/OUTPUTの時間を強制的に設定した • PROBLEM ◦

    単純な知識が足らないので指摘してもらった点を理解するのに時間がかかる • TRY ◦ 単純な知識が足らないので指摘してもらった点を理解するのに時間がかかる → ホワイトボードで話して写真とってドキュメントに貼っておいてもらえるとよさそう (そ のっつ)
  15. 中長期運用を意識した変化に強い構成管理 • 気軽に更新/改修ができる環境を用意する ◦ dev / stg / prd の3環境を用意し、インフラのコード化によって構成を統一

    • 更新/改修フローを自動化し構成管理に再現性をもたす ◦ インフラのCI/CDを作り込むことで環境に直接触れる必要がなくなった
  16. 中長期運用を意識した変化に強い構成管理 dev stg prd git push • dev / stg

    / prd の3環境を用意し、インフラのコード化によって構成を統一 加えて、インフラのCI/CDを作り込むことで環境 に直接触れる必要がなくなった
  17. 守備範囲や働き方の変化 • 複数人での開発をGitで進めるのが当たり前に ◦ ソフトウェア開発との境界線が曖昧になってきた ◦ 一人ひとりの守備範囲を広くとることで、誰かが欠けても回せるチーム作り • 他人のタスクをレビューするのが当たり前に ◦

    タスクを作るときにゴールを明確にするための議論ができているからこそできること ◦ 隔週の振り返りや、質問の文化が活かされる場面 • 実現(How)はコードに、思想はドキュメントに記載するのが当たり前に ◦ コードには何をしたか、どうしたかがある ◦ コメントには経緯などが書かれている ◦ ドキュメントには、なぜ他のアプローチを取らなかったかが書かれている
  18. 守備範囲や働き方の変化 • 複数人での開発をGitで進めるのが当たり前に ◦ ソフトウェア開発との境界線が曖昧になってきた ◦ 一人ひとりの守備範囲を広くとることで、誰かが欠けても回せるチーム作り • 他人のタスクをレビューするのが当たり前に ◦

    タスクを作るときにゴールを明確にするための議論ができているからこそできること ◦ 隔週の振り返りや、質問の文化が活かされる場面 • 実現(How)はコードに、思想はドキュメントに記載するのが当たり前に ◦ コードには何をしたか、どうしたかがある ◦ コメントには経緯などが書かれている ◦ ドキュメントには、なぜ他のアプローチを取らなかったかが書かれている 完全に同じではないが アプローチは似ている
  19. メンターとの接し方 • メンターがいる最大のメリットは議論ができること ◦ 悩んでいる時は積極的に悩みのポイントを伝える (タスクの頭出しフェーズなど ) ◦ 結論を出したい時は自分が考えうるベストを尽くして結論に関する 5W1Hを伝える

    ▪ ドキュメント整備の習慣がさらに活きてくる • 自身の考えを整理したうえで積極的に議論を重ねるべき ◦ 結果的に間違っていたとしてもきちんと振り返ることが大切
  20. 学ぶ仲間が一緒にいてよかった • 最も気軽に相談できるのは、同じレベルの仲間 ◦ 相談しながら一緒に思考を整理できる ことが強み ◦ 自分の至らなさに挫折しそうな時に 支えになってくれる •

    お互いに質問し合ったり、教え合ったりすることは理解への最短経路 ◦ 自身とは違う視点で疑問を持てる相手 がいると、学びが深くなる ◦ 「間違ったことを教えてはいけない」という意識が 物事を正しく理解する習慣 につながる
  21. アジェンダ • 本セッションの動機 • 今日のゴール • メンティー視点 ◦ 基本的な業務の進め方 ◦

    Cloud Nativeな開発を始めて意識するようになったこと ◦ 振り返り • メンター視点 ← ◦ オンボーディングの基本 ◦ チーム結成後の動き方と実践に向けたアプローチ ◦ 実践でうまくいったこと、いかなかったこと
  22. オンボーディングにおける原則 • レビューは最優先タスク • 不明点はすぐ質問 • 成果物ができたらすぐ共有 • ペアプロ推奨 •

    思考のドキュメント化 • タスクをもらった時に最初に議論する • クロスレビューの徹底 メンティー視点と 基本は同じ
  23. オンボーディングにおける原則 • レビューは最優先タスク • 不明点はすぐ質問 • 成果物ができたらすぐ共有 • ペアプロ推奨 •

    思考のドキュメント化 • タスクをもらった時に最初に議論する • クロスレビューの徹底 メンティー視点と 基本は同じ 最も重要なポイント: 1. メンター自身が実践できている こと 2. できたことを認識してもらうこと! 「やってみせ、言って聞かせて、させてみせ、ほめて やらねば、人は動かじ」 by 山本五十六 といいつつ、sonotsさんの受け売りです><
  24. メンター自身が実践できること • 基本的に自分ができないことは無理に教えようとしない ◦ 自分の間違った理解を相手に伝えることはチーム全体にマイナス ◦ リーダーに頼るべきところは頼る。その代わり 普段はできるだけ負担をかけず に動く •

    アウトプットは自分が一番積極的に ◦ 会社に紐付いたQiita(アドベントカレンダーとか )やテックブログへの貢献 ◦ チームで使っている OSSへの貢献 ◦ その他コミュニティでの会社としての登壇 • ちょっとしたペアプロやDiscordでの雑談の機会を逃さない ◦ 教わるメンティーにとって「こいつ常に暇なのでは?」と思わせるくらいの錯覚を与える ◦ 見えないところでがんばる 「お前が言うなよ」 と言わせない実行力
  25. できたことを認識してもらう • ゴールのすり合わせ ◦ 相手が見えない世界をいきなりは無理に見せない • KPTや朝会などを定期的に行うことで定期的にタスクを共有 ◦ メンターとか関係なく一人の人間として進捗にばらつきがあるのは当たり前 ◦

    みんながスーパーマンではない。相談しながら改善を続けるための仕組みを用意 ◦ タスクのKPTをシェアすることで達成感を持ちつつ、チーム自体の距離を縮める • 1on1の実施 ◦ 日々の業務とは別に、リーダーの sonotsさんに1on1をやってもらうように依頼 ◦ リーダーは話を誘導せず傾聴に徹し、メンバーが話したいことを話せる環境づくり
  26. できたことを認識してもらう • ゴールのすり合わせ ◦ 相手が見えない世界をいきなりは無理に見せない • KPTや朝会などを定期的に行うことで定期的にタスクを共有 ◦ メンターとか関係なく一人の人間として進捗にばらつきがあるのは当たり前 ◦

    みんながスーパーマンではない。相談しながら改善を続けるための仕組みを用意 ◦ タスクのKPTをシェアすることで達成感を持ちつつ、チーム自体の距離を縮める • 1on1の実施 ◦ 日々の業務とは別に、リーダーの sonotsさんに1on1をやってもらうように依頼 ◦ リーダーは話を誘導せず傾聴に徹し、メンバーが話したいことを話せる環境づくり メンターが特別ぶっ飛んだことを やってるわけじゃないと伝える SRE Nextのそのっつさんのスライドに詳し く書いてあります
  27. 文化の継承 • クラウドの考え方やSREという文化を伝えるために ◦ SREの考え方に則り、ソフトウェア開発の手法 を積極的に取り入れる ▪ CI/CDは触れて当たり前だし、無いと困るくらい体験の良いパイプラインを作る ▪ OSSにIssueを立てる、PRを投げるのは当たり前

    • git pushするだけでKubernetes YAML/ Terraform/CFnのCI/CDが反映されるパイプライン • アプリケーションのデリバリーも自分たちで作る • 「なぜ他の方法をとらなかったか」が ドキュメント化されている • 外部の人にも情報を一般化して伝えられる
  28. 文化の継承 • クラウドの考え方やSREという文化を伝えるために ◦ まだ実現できてないタスクも ある程度道筋を示した上で 渡す(相談できる安心感を与える ) ▪ 例1:

    AWSで機密情報どうやって管理しますか? ▪ 例2: SSHのポートを開けずにどうやってトラシューしますか?など ▪ 結果: オンプレとクラウドの違いを意識しつつ設計から考える機会ができた • 検証、設計などをドキュメント化し、 IaCで実装、構築、 運用までを体系的に行ってもらう • 答えが大体分かっているものをお願いする • よくわからんやつは(最初は)全部巻き取る
  29. 文化の継承による成果 • クラウドの考え方やSREという文化を伝えた成果 ◦ 既存のオンプレでは仕組みとして作れていなかった無停止 & 全自動のデプロイを 作り込むことによって、 SREとして担当できる範囲を増やせた ◦

    開発チームとの日常的なコミュニケーションは 当たり前にできるようになった • メンターのおかげではなく、ここまで自分たちがこなしたタスク や養った経験の成果であると認識してもらう ◦ ドキュメントやKPTとして全て成果が残っている ◦ 給料や職位も爆上がり!!!!
  30. 文化の継承による成果 • クラウドの考え方やSREという文化を伝えた成果 ◦ 既存のオンプレでは仕組みとして作れていなかった無停止 & 全自動のデプロイを 作り込むことによって、 SREとして担当できる範囲を増やせた ◦

    開発チームとの日常的なコミュニケーションは 当たり前にできるようになった • メンターのおかげではなく、ここまで自分たちがこなしたタスク や養った経験の成果であると認識してもらう ◦ ドキュメントやKPTとして全て成果が残っている ◦ 給料や職位も爆上がり!!!! 「やってみせ、言って聞かせて、させてみせ、ほめてやら ねば、人は動かじ」 by 山本五十六(&sonots)
  31. うまくいかなかったこと • (SREなのに)コードを書いてもらう時間が全然とれなかった ◦ 日々の業務をこなしながらの 3ヶ月ではA tour of Goをちょっとやってもらうのが精一杯 ◦

    そもそも自分もプログラミングはそこまで得意じゃない • リーダーのサポートが十分にできなかった ◦ (当時の自分もだったが、自分以上に )複数のポジションを兼務していて、できるだけ タスクを取りたかったが、思った以上の成果は出せなかった • プロダクション運用はやれなかった ◦ 設計構築までの段階で自分は離れてしまったので、運用までメンターはできなかった ◦ オンボーディングだけする引き継ぎのおじさんになってしまったことは否めない
  32. まとめ(Key takeaways) • 今日からあなたもクラウドネイティブ! ◦ 新しいことを学ぶためには 仕組みと取り組みが重要 • 自主学習とオンボーディングの活用で、短期間でも実践できる学習法 ◦

    日々の業務でも、リアクティブ、プロアクティブを意識して動く • メンターとメンティーの関わり方について考えるきっかけにしてほしい ◦ メンター、メンティー共に上下はなく ただの役割 ◦ 対等に議論できる仕組みと文化づくりが重要 • 仲間を増やすことの大切さについて知ってほしい ◦ 気軽に相談できる仕組みと文化づくりが重要