Slide 1

Slide 1 text

技術の洪水に立ち向かう: 開発者の心を軽くするプラット フォームエンジニアリングの話

Slide 2

Slide 2 text

Kazuto Kusama @jacopen Senior Solutions Engineer @HashiCorp Japan Organizer @Platform Engineering Meetup Founder @Cloud Native Innovators Association Tech Strategy Advisor @PITTAN

Slide 3

Slide 3 text

今日のセッションについて ● どちらかといえば、フロントエンドやバックエンドなどの 開発者に向けた発表です ● あとでQ&Aの時間もあります。 率直な感想や普段の仕事の悩みなど聞かせてください!

Slide 4

Slide 4 text

About me ● HashiCorpという会社で、TerraformやVaultと いったクラウドの自動化やセキュリティに関わる プロダクトのソリューションエンジニア ● 通信事業者でPaaSの開発⇒ Pivotal / VMwareでPaaSプロダクトのプロフェッ ショナルサービス⇒ 現職 ● CloudNative Daysをはじめとした、クラウドネイ ティブ技術に関するコミュニティ運営や情報発信 なので、基本的にはプラットフォーム側の人間です

Slide 5

Slide 5 text

でもたまにアプリを書くことも CloudNative Days 独自イベントプラットフォーム Dreamkast 汗中成分分析サービスによる インナーケアアシスト PITTAN

Slide 6

Slide 6 text

アプリを作っていて思うこと この開発したアプリをAWSに デプロイしないといけないけど・・・ クラウドくっそめんどくさい! こんな作業やりたくない! ▲ 一応クラウド系のエンジニア

Slide 7

Slide 7 text

● クラウドやコンテナの知識は持ち合わせている ● でも、アプリを書いているときは、頭の中は開発モード ● 開発モードからクラウドエンジニアモードに頭を切り替えるのは くっそめんどくさい ● クラウドエンジニアモードから開発モードに戻すのも くっそめんどくさい ● めんどくさすぎて嫌になって現実逃避で1時間くらい スイカゲームやっちゃう アプリを作っているときは

Slide 8

Slide 8 text

くっそめんどくさい!

Slide 9

Slide 9 text

くっそめんどくさい!

Slide 10

Slide 10 text

● デプロイするためのDockerfile書き、imageづくり ● Manifest書き ● CI/CDパイプライン作成 ● 認証基盤との連携 ○ OIDCのフローとか何回勉強しても忘れちゃうんだけど・・・ ● ロギング、モニタリングの設定 ● セキュリティスキャン ● etc… アプリをデプロイしたいだけなのにやるべきことが多い! みなさんも、くっそめんどくさい 経験ありませんか?

Slide 11

Slide 11 text

くっそめんどくさい! の表現を専門用語にすると 認知負荷

Slide 12

Slide 12 text

https://www.infoq.com/articles/platform-engineering-primer/ より引用 認知負荷の増大が問題に クラウドの浸透、クラウドネイティブ技術の登場、マイクロサービス化の流れ、 エンジニアの責任範囲の拡大により認知負荷が大変なことに

Slide 13

Slide 13 text

くっそめんどくさい!は 気のせいではなく あちこちで発生している差し迫った課題

Slide 14

Slide 14 text

ちなみに認知負荷をもうすこし細かく言うと 教育心理学の方面で生まれた概念 ● 課題内在性負荷 ○ 情報自体の難度の高さが与える負荷 ● 課題外在性負荷 ○ 外的要因によって引き起こされる負荷 ● 学習関連負荷 ○ 学習に役立つ方法で人が情報を処理するときに生じる負荷

Slide 15

Slide 15 text

おすすめ記事 最近書かれたこちらの記事が最高に 分かりやすかったです 認知負荷および認知負荷理論 (Cognitive Load Theory) をもう少し正確に理解する ための心理学研究・知見の紹介 https://zenn.dev/kangetsu_121/articl es/6b31565dda6053

Slide 16

Slide 16 text

認知負荷の増大による生産性の低下が 無視出来なくなりつつある

Slide 17

Slide 17 text

じゃあ、どうすればいいのか

Slide 18

Slide 18 text

くっそめんどくさい対策 ● 自分で無理に頑張るより、その道のプロにお願いしたい ● 全部任せたいけど、難しい場合はせめて相談に乗って欲しい。 適切な情報提供をお願いしたい

Slide 19

Slide 19 text

くっそめんどくさい対策 ● 自分で無理に頑張るより、その道のプロにお願いしたい ● 全部任せたいけど、難しい場合はせめて相談に乗って欲しい。 適切な情報提供をお願いしたい その道のプロ = Platform Team その道のプロを体系だって作っていく取り組み = Platform Engineering 開発者側からみたPlatform Engineeringの理解は、この程度でいいと思います

Slide 20

Slide 20 text

くっそめんどくさい対策 ● 自分で無理に頑張るより、その道のプロにお願いしたい ● 全部任せたいけど、難しい場合はせめて相談に乗って欲しい。 適切な情報提供をお願いしたい どうお願いするのか。その任せ方、関わり方 教えを請う? 手伝って貰う? それとも・・・

Slide 21

Slide 21 text

Team Topologies 価値のあるソフトウェアを素早く届けられるよ うにするための組織設計。 4タイプのチーム定義と、3つのインタラクショ ンモードが定義されている。

Slide 22

Slide 22 text

4つのチームタイプ Stream-aligned team ビジネスのストリームに沿って配置するチー ム。ビジネスの中心 Complicated Subsystem team 複雑なサブシステムやコンポーネントを扱う チーム。その分野のスペシャリストが集まる Enabling team 他のチームが新しい技術やスキルを身につける 支援をするチーム ★Platform team インフラやツール、共通サービスなどのプラッ トフォームを提供するチーム

Slide 23

Slide 23 text

3つのインタラクションモード ファシリテーション 一方のチームが他のチームの障害を取り除くた めに支援をしたり、支援されたりする。同時に 複数のチームと連携することもある コラボレーション 2つのチームが密接に協力して作業する。同時に コラボレーションできるのは1チームまで ★X-as-a-Service 他のチームが提供するものをサービスとして利 用する関係性。責任分界点が明確。疎結合。

Slide 24

Slide 24 text

その道のプロ(= Platform Team)との関わり方 開発チーム その道のプロ 開発チーム その道のプロ Collaboration Facilitating その道のプロが開発チームに勉強会を 開いたり、Slackで情報提供 その道のプロが開発チームにジョインし Manifest書くのを担う 開発チーム その道のプロ XaaS その道のプロが用意したプラットフォームの レールの上で開発

Slide 25

Slide 25 text

その道のプロとの関わり方 開発チーム その道のプロ 開発チーム その道のプロ Collaboration Facilitating その道のプロが開発チームに勉強会を 開いたり、Slackで情報提供 その道のプロが開発チームにジョインし Manifest書くのを担う 開発チーム その道のプロ XaaS その道のプロが用意したプラットフォームの レールの上で開発 最終的にはここを目指す この過程も大事

Slide 26

Slide 26 text

Platform EngineeringとTeam Topologies ● 価値のあるソフトウェアを素早く届けられるチームの在り方について 視点を提供してくれるのがTeam Topologies ● Team Topologiesに沿って、開発者のくっそめんどくさいポイントを良くし てくれるのがPlatform Team ● あらゆる技術に精通することは難しい&ガバナンスを効かせていく必要もあ るので、Platform Teamは技術の『標準』を定めていく。 ● 最終的にはスケールするX-as-a-Serviceのインタラクションを目指すが、そ の過程でファシリテーションやコラボレーションを行うこともある

Slide 27

Slide 27 text

Platform Teamが担うこと ● 開発者の認知負荷軽減を一番の目的として取り組む ● 開発の助けになるような情報を整理する ● あらゆる技術に精通することは難しく、ガバナンスを効かせていく必要もあ るので、Platform Teamは技術の『標準』を定めていく ● スムーズに取り組めるようオンボーディングの仕組みをととのえる ● 必要に応じて勉強会やワークショップの開催を行う ● 開発者からの質問や問い合わせに対して対応する ● 開発者がセルフサービスで利用できる、自動化されたプラットフォーム を作っていく

Slide 28

Slide 28 text

Platform Teamが担うこと ● 開発者の認知負荷軽減を一番の目的として取り組む ● 開発の助けになるような情報を整理する ● あらゆる技術に精通することは難しく、ガバナンスを効かせていく必要もあ るので、Platform Teamは技術の『標準』を定めていく ● スムーズに取り組めるようオンボーディングの仕組みをととのえる ● 必要に応じて勉強会やワークショップの開催を行う ● 開発者からの質問や問い合わせに対して対応する ● 開発者がセルフサービスで利用できる、自動化されたプラットフォーム を作っていく 世間のPlatform Engineering評はこればっかり出てくる

Slide 29

Slide 29 text

Platform Teamが担うこと ● 開発者の認知負荷軽減を一番の目的として取り組む ● 開発の助けになるような情報を整理する ● あらゆる技術に精通することは難しく、ガバナンスを効かせていく必要もあ るので、Platform Teamは技術の『標準』を定めていく ● スムーズに取り組めるようオンボーディングの仕組みをととのえる ● 必要に応じて勉強会やワークショップの開催を行う ● 開発者からの質問や問い合わせに対して対応する ● 開発者がセルフサービスで利用できる、自動化されたプラットフォーム を作っていく 真に重要なのはこっち

Slide 30

Slide 30 text

想像してみてください

Slide 31

Slide 31 text

もしその道のプロがこんなんだったら・・・ 今のデプロイパイプラインどうなってます? え、CIツール でUnit Test回してるだけ? やだなー、今はDevOpsの時代ですよ。 常識的に考えてCDまでやるべきでしょ。手作業入るのマジ イケてないっす。仕方ないなぁ、教えてあげますよ

Slide 32

Slide 32 text

もしその道のプロがこんなんだったら・・・ 生産性が課題なんですか? じゃあコンテナですね。え、、 まだコンテナ使ってないんですか? そうかぁ、でも今時 Kubernetesでアプリ動かすのなんて常識ですよ。 ほら、ここにKubernetes環境ありますから。Buildkitでイ メージデプロイして社内のHarborにpushしといてください ねデプロイはArgoCD上がってますんでGitOpsしてくださ いDBはOperator入れてあるんでそれ使ってなんとかしてく ださいサービスメッシュとしてIstio使えるんで

Slide 33

Slide 33 text

うるせぇ

Slide 34

Slide 34 text

使われないプラットフォーム ● 極端な表現をしているけれど、これまでの (次世代|新)(共通|汎用|統合)(基盤|プラットフォーム) みたいなやつは、こういう思想な運用が多かった ○ これが元で、共通プラットフォーム的なものに嫌悪感を抱く人もいる ● でも、これじゃぁ使われない

Slide 35

Slide 35 text

役に立つプラットフォームを作ろう - プラットフォームエンジニアが知っておくべき『プロダクト』の考え方 https://speakerdeck.com/jacopen/yi-nili-tupuratutohuomuwozuo-rou-puratutohuomuenziniagazhi-tuteokubeki-purodakuto-falsekao-efang

Slide 36

Slide 36 text

役に立つプラットフォームを作ろう - プラットフォームエンジニアが知っておくべき『プロダクト』の考え方 https://speakerdeck.com/jacopen/yi-nili-tupuratutohuomuwozuo-rou-puratutohuomuenziniagazhi-tuteokubeki-purodakuto-falsekao-efang

Slide 37

Slide 37 text

役に立つプラットフォームを作ろう - プラットフォームエンジニアが知っておくべき『プロダクト』の考え方 https://speakerdeck.com/jacopen/yi-nili-tupuratutohuomuwozuo-rou-puratutohuomuenziniagazhi-tuteokubeki-purodakuto-falsekao-efang

Slide 38

Slide 38 text

価値とは 『誰にとっての価値か』が大事 プラットフォームにとって、価値があるかないか判断をするのは 『プラットフォームの利用者』 つまり 『開発者』 開発者に価値を提供できなければ、そのプラットフォームは失敗している

Slide 39

Slide 39 text

上手くいくプラットフォーム作りは、本当に難しい ● 4割の共通プラットフォームは、生まれながらに死んでいる ● 4割の共通プラットフォームは、上手く運用出来ずに死んでいく ● 成功するのは2割か、それ以下 (注: jacopenの感覚値なので数字に根拠はありません!)

Slide 40

Slide 40 text

反省 自分もこういうプラットフォーム作りをしていた時期があった

Slide 41

Slide 41 text

誰に 何を どうやって

Slide 42

Slide 42 text

誰に 何を どうやって 失敗するプラットフォームは ここばかり気にする

Slide 43

Slide 43 text

どうやって 時代はマイクロサービスでしょ VMは古い。今はコンテナ 全社統一のセキュリティ コ ンプライアンス基準を リソースの利用率を向上さ せてコスト削減 コンテナ Kubernetes サービス メッシュ 分散トレー シング オブザーバ ビリティ

Slide 44

Slide 44 text

どうやって 時代はマイクロサービスでしょ VMは古い。今はコンテナ 全社統一のセキュリティ コ ンプライアンス基準を リソースの利用率を向上さ せてコスト削減 コンテナ Kubernetes サービス メッシュ 分散トレー シング オブザーバ ビリティ Developer 別にコンテナにしなくても困っ てないし、マイクロサービスに するフェーズじゃないし・・・ セキュリティも、どうせあとで チェックシート記入求められる んでしょ

Slide 45

Slide 45 text

誰に 何を どうやって プラットフォーム の利用者 ○○という価値を 技術 ツールチェーン ワークフロー ここにちゃんとフォーカスすること これを継続的に回せること

Slide 46

Slide 46 text

Platform as a Product ● 開発者を『顧客』として考え、顧客にプラット フォームという『プロダクト』を提供していく というアプローチ ● 世の中に提供されているさまざまなプロダクト と同じ管理手法を、プラットフォームにも取り 込んでいく 顧客 Platform Product プロダクトを提供 プロダクトを提供 プラットフォームチーム

Slide 47

Slide 47 text

Platform as a Product 顧客 Platform Product プロダクトを提供 プロダクトを提供 プラットフォームチーム どういう価値を提供できれば 使って貰えるか 顧客が何に困っているか どうやってサポートしていく か どうやって教育していくか どうやって安定したチームを 作るか プラットフォームによる効果 がどのくらい出ているか 何をいつまでに提供するか 世の中のトレンドはどうなっ ているか

Slide 48

Slide 48 text

Platform as a Product 顧客 Platform Product プロダクトを提供 プロダクトを提供 プロダクト マネージャー プロダクトマネジメントの 手法がそのまま使える。 チームに専任のプロダクトマ ネージャーを置き、プロダク トとしてのプラットフォーム の方向性を決めていく

Slide 49

Slide 49 text

Platform as a Product 顧客 Platform Product プロダクトを提供 プロダクトを提供 プロダクト マネージャー ● プラットフォームが最も達成したい指標は何か ○ North Star Metricsの策定 ● 顧客は何にペインを感じているのか ○ ユーザーヒアリング ● 最も重要なものから実現し、MVP(Minimum Viable Product)を作る ○ 実装する機能の優先順位付け ● 社内にその存在を知ってもらう ○ ブランディング、社内マーケティング

Slide 50

Slide 50 text

今までとこれから 開発者 プラットフォームチーム Platform 押しつけ 開発者 技術の洪水 Platform Portal Tools X-as-a-Service Collaboration Facilitation 立ち向かう 生産性を高める⤴

Slide 51

Slide 51 text

Platform Teamと一緒に 生産性を高めていきませんか?