$30 off During Our Annual Pro Sale. View Details »

素早く賢く失敗するDeveloper Productivityの実現を目指して

素早く賢く失敗するDeveloper Productivityの実現を目指して

Developers Summit 2021 Summer #devsumi #devsumiC
https://event.shoeisha.jp/devsumi/20210730/session/3241/

stormcat24

July 30, 2021
Tweet

More Decks by stormcat24

Other Decks in Programming

Transcript

  1. Whois ‣ Akinori Yamada ‣ CyberAgent (2012.10〜) ‣ Developer Productivity室

    室長 ‣ 日本コンテナビルド組合(日コン組)組合員 stormcat24
  2. Agenda ‣ CyberAgentについて ‣ CyberAgentのエンジニア文化 ‣ MEDIA TECH VISION 2020-2023

    ‣ Developer Productivityの注力と取り組み ‣ Developer Productivityに取り組むエンジニアのこれから
  3. Media Internet AD Game Startup AI DX CyberAgent Group 多様な

    事業ドメイン 多くの グループ会社 や事業部 たくさんの プロダクト インターネットに連動する領域にはすぐ参入していくスタイル。 技術的意思決定は各管轄や事業部、グループ会社、プロダクトに任せられている。
  4. 自由と裁量が組織にもたらすもの ‣ 事業の高速な立ち上げ ‣ 迅速な意思決定 ‣ 個人の能力の最大化 ‣ 技術者としてのチャレンジのしやすさ Pros

    Cons ‣ 複数組織での車輪の再発明 ‣ スキルやノウハウの分散 ‣ 開発力がチーム戦力に依存 ‣ 中長期で育てきれない技術資産 組織的な開発手法のアップデートの遅れ 品質の高いプロダクトの創出
  5. プロダクト開発とどう向き合うか ‣ 一見して良いものを作れるだけで終わってしまっていないか ‣ その先の価値提供や自身のキャリアと向き合えているのか ‣ 価値の定義が変化する中で、事業としても個人としても求められるのは何か ‣ 我々は「つくる」ことを通してどのようなインパクトを生み出すのか ‣

    技術、品質、数字、ユーザー、組織... 自身は何と向き合って価値を創るのか ‣ ひとりひとりが自らの事業貢献を自認できるようにするには? 「つくる」だけの閉塞感からの脱却、「つくった先」の新たな価値の創出
  6. 広義で生産性に寄与すると思われるもの ‣ サクサク動くPCや高機能なサーバ ‣ 言語、フレームワーク ‣ 高速でスケールするCI、CD環境 ‣ 市場に存在するSaaSや社内基盤 ‣

    優れたオンボーディング ‣ 情報やノウハウの流動性 技術・組織・人・モノ・金といった 様々な観点で、腐るほど存在する😇
  7. 何に注力すべきか? 自動化が未成熟 If CI/CD環境の整備 リリース後の事故が多い If フィーチャーフラグの定着 エラーレートでの自動ロールバック スケールする組織 If

    レガシーシステムの断捨離 マイクロサービス QAリソースが多い If 自動テストツールの導入と定着 改善活動の理解が 得られてない If 生産性改善のROIの提示 継続的な改善の指標づくり 組織によって、何を選択すべきかは当然異なる。 事業やプロダクトの競争力強化に繋がる本質的なものを選択すべき。 Then Then Then Then Then
  8. 改善のワナ 技術者視点でDP改善と向き合うと、無限にネタが出てくるワナ 共通化・抽象化! 負債解消! E2Eテスト! UI自動テスト! テストケース自動生成! CI高速化! フィーチャーフラグ! トランクベース開発!

    GitOps! SSOT! マイクロサービス! 型だ!型をくれ! Visual Regression Testing! クロスプラットフォーム! コンテナイメージダイエット! 全てやった方が良さそうに見えてしまう
  9. 仮説検証する仕組み 賢く失敗するために越えるべき課題 ビッグバン リリースの不安 テストやQAに 要する時間 もっと安全に 素早くリリース したい 障害時の

    リリース切り戻し ‣ 賢く失敗するには設計・実装フェーズ よりも、ソフトウェアのリリースサイ クルを組織として強化すべきと判断 ‣ アーキテクチャ、言語、インフラスト ラクチャ等は引き続き自由と裁量で
  10. 3つのsigを編成 sig-experimentation sig-build sig = Special Interest Group sig-client Feature

    Flag Management Trunk Based Development A/B Testing Continuous Integration Continuous Delivery GitOps Progressive Delivery Component Testing UI Component Catalog Visual Regression Testing Multi Device Testing Accessibility Testing ‣ それぞれの専門家別にsigを編成 ‣ サードパーティー活用、独自ツール開発等手段に拘らずに、組織にフィッ トするベストプラクティスを考案し、定着させていく
  11. sig-experimentation提供のプラクティス ‣ Trunk Based Development ‣ 本番環境でのQA作業 (Dark Launch) ‣

    実験のメトリクス収集、評価 ‣ ガードレール指標の定義 ‣ 閾値設定、自動ロールバック フィーチャーフラグ・ABテストプラットフォーム 元々はABEMA基盤チームが開発し、 DP室が引き続き社内への開発・展開を行っている Optimizely, LaunchDarklyといった競合比で かなり安価で提供できることもあり、 自社開発している
  12. sig-build提供のプラクティス ‣ GitOps, Single Source of Truth ‣ Canary Release,

    Blue Green Deployment ‣ Progressive Delivery ‣ 分析 ‣ 自動ロールバック ‣ シークレット管理 GitOpsベースの継続的デリバリーツール Kubernetes、ECS、サーバレス、インフラを宣言 的に定義しデリバリーする。 Spinnaker, FluxCD, ArgoCD等を検討した結果、大 規模組織でSaaSとして運用でき、かつセキュアな 仕組みが必要と判断したため独自で開発。 既にOSSとしても公開されている。 https://github.com/pipe-cd/pipe
  13. DORA ‣ DevOps Research and Assessment ‣ デプロイ頻度やリードタイム、MTTR 等で組織のパフォーマンスを測り、上 を目指していく

    ‣ 段階的に各事業への導入を準備中 ‣ 技術者が常にわかりやすい指標を持っ て改善を続けていくことが重要
  14. 技術者本位の改善に留まらないようにするには DP習熟度チェック (定性的) DORA (定量的) どちらかというと 技術者寄りの指標 技術者以外の観点で、開発がどう良くなるのか? 自分たちのビジネスにポジティブに影響することは何か?について 技術者=事業間でDPについて共通の課題・目標認識、合意形成をできるようにする。

    事業やプロダクトに大きくヒットし、非技術者が大きく期待してくれる内容を意識する。 定性的 開発プロセス 定量的 人員 施策リリース回数 改善前 改善後 リリースした機能の 効果検証が不十分 10名 2回/月 5名 10回/月 効果検証が用意に行える 柔軟にON/OFFが可能になる
  15. DP改善マンと事業との微妙な距離感 エンドユーザー ユーザー企業 プロダクト 経営層 ビジネス職 クリエイター プロダクト開発 付加価値 DP改善

    サポート 事業やプロダクトは、よくわからない 技術力でプロダクト開発を サポートして貢献するぞ プロダクト開発マンは色々機能を作ってくれてる。 DP改善マンは貢献してくれてるようだけど どのように評価すれば良いのだろう? プロダクトや事業に対して、DP改善の貢献度合いが見えにくい もしくは伝えきれていないケースがよくある DP改善マンは よくやってくれてるよ