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

Zucksにおけるフルサイクル開発者の文化 / Developers Summit 2021 Summer

Zucksにおけるフルサイクル開発者の文化 / Developers Summit 2021 Summer

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

「Zucksにおけるフルサイクル開発者の文化」
アドプラットフォームを運営しているZucksでは、エンジニアリングで圧倒的スピードで価値を提供することを重視してきました。

そんな中たどり着いた「フルサイクル開発者」というモデル。
一口にフルサイクル開発者といっても、その細かいやり方や考え方は、現場に応じて変わってくると思います。
弊社で実践しているプラクティスをご紹介することで、Zucksにおけるフルサイクル開発者の文化を感じ取っていただければと考えています。

2aea20b60d544d0dcccb70a4bb6af648?s=128

Hiroshi Minamiohtsu

July 30, 2021
Tweet

Transcript

  1. Zucksにおける フルサイクル開発者の文化 Developers Summit 2021 Summer 2021/07/30 VOYAGE GROUP(CARTA HOLDINGS)

    / Zucks 南大津 寛
  2. 自己紹介 2 南大津 寛 Hiroshi Minamiohtsu • 株式会社Zucks アドプロダクト事業本部 エンジニア

    • Zucks Ad Networkの開発、運用 • VOYAGE GROUP (CARTA HOLDINGS)
  3. 会社紹介 | VOYAGE GROUP 3 VOYAGE GROUPは1999年に創業し、様々な事業に 挑戦し続けることで成長してきました。 Engineers in

    VOYAGE 事業成長の中で培ってきた、エンジニアリングの話を 凝縮した本。「フルサイクル開発者の文化」の話も 掲載されています。 『Engineers in VOYAGEー事業を エンジニアリングする技術者たち』
  4. 事業紹介 | Zucks • 提供サービス ◦ Zucks Ad Network ◦

    Zucks Affiliate • 高トラフィック ◦ 3,000億req / 月 ◦ ピーク時 20万req / 秒 • 広告配信サービスなので 止めることはできない 4
  5. こんな経験ありませんか?

  6. こんな経験ありませんか? アプリケーション開発とインフラ運用をそれぞれ専門の 別チームが行っている • 開発を進めるのに運用チームの対応を待つ必要性が発生 • アプリケーションの特性や変更点まで把握しないと、 運用チーム側で適切な監視が難しい • 運用目線で優先度が高いアプリ改修の優先度があがり辛い

    6
  7. こんな経験ありませんか? 専門化された役割を持っていることにより 効率的なソフトウェア開発ができていない 7

  8. こんな経験ありませんか? 専門化された役割を持っていることにより 効率的なソフトウェア開発ができていない フルサイクル開発者が1つの解決策 8

  9. 01 フルサイクル開発者とは 02 Zucksにおけるエンジニアリング 03 フルサイクル開発者のためのプラクティス 04 まとめ Agenda

  10. 01 フルサイクル開発者とは 02 Zucksにおけるエンジニアリング 03 フルサイクル開発者のためのプラクティス 04 まとめ Agenda

  11. フルサイクル開発者とは • ソフトウェアライフサイクルの 全てを1人の開発者が担う ◦ 専門化された役割を持たない • コミュニケーションコストや ボトルネックを削減 •

    アイデアを効率的にプロダクトに反 映させ、顧客に迅速に価値を届ける Full Cycle Developers at Netflix — Operate What You Build | by Netflix Technology Blog https://netflixtechblog.com/full-cycle-developers-at-netfl ix-a08c31f83249 (2021/07/21) 11
  12. フルサイクル開発者とは フルスタックエンジニアとの違い • フルスタックエンジニア ◦ エンジニア個人の技術領域にフォーカスしている ◦ 幅広い技術領域をカバーできていること • フルサイクル開発者

    ◦ 価値を迅速に提供することにフォーカスしている ◦ そのためにソフトウェアライフサイクルの全てを担当する フルサイクル開発者を実践していくと、自然とフルスタックエンジニア にも近付いていく 12
  13. 01 フルサイクル開発者とは 02 Zucksにおけるエンジニアリング 03 フルサイクル開発者のためのプラクティス 04 まとめ Agenda

  14. Zucksにおけるエンジニアリング 大事にしていること • 圧倒的スピードで価値を届ける • 本当に必要なものを見極める • 最強の裁量を与える • 失敗から学ぶ

    14
  15. Zucksにおけるエンジニアリング 大事にしていること • 圧倒的スピードで価値を届ける ◦ 変化の激しい業界に身を置いている ◦ 価値の提供に時間がかかると、必要なものの形も 変わってしまう ◦

    フルサイクル開発者の考えのベースにも通じる 15
  16. Zucksにおけるエンジニアリング 大事にしていること • 本当に必要なものを見極める ◦ 指示されたものを作る、というスタイルではない ◦ エンジニアが事業背景や課題を理解した上で、 どういう解決策が最良なのかを見極める ◦

    本質を追い求めていく姿勢 16
  17. Zucksにおけるエンジニアリング 大事にしていること • 最強の裁量を与える ◦ 技術選定や付与する権限 ◦ 全てを自分自身で進めていけるように 17

  18. Zucksにおけるエンジニアリング 大事にしていること • 失敗から学ぶ ◦ 失敗することを恐れて、挑戦しなくなるのはリスク ◦ 失敗から得た学びを次に活かす ◦ 致命的な失敗は避ける

    18
  19. Zucksにおけるエンジニアリング Zucksとフルサイクル開発者 • 大事にしていることをより良い形で満たそうとし てきた結果、フルサイクル開発者と同様の形に なっていた • フルサイクル開発者という単語が出てきてから、 取り入れていった訳ではない 19

  20. 01 フルサイクル開発者とは 02 Zucksにおけるエンジニアリング 03 フルサイクル開発者のためのプラクティス 04 まとめ Agenda

  21. 当事者と直接対話する

  22. 当事者と直接対話する 22 • まず課題を感じている当事者 に直接話を聞き、背景や課題 感を理解する ◦ お互いに不明点や疑問点を解消 ◦ 管理画面など対象物がある場合

    は、実際に様子を見せてもらう
  23. 当事者と直接対話する 23 • 当事者も本当に欲しい物が 分かっていないことがある ◦ 「なぜそれが必要なのか?」 • 一緒に本質を捉えた解決策を 考える

    ◦ 本質的な課題が解決できるな ら、開発をしなくてもいい
  24. 小さく試して 小さく失敗する

  25. 小さく試して、小さく失敗する • 顧客に価値を届けるスピード感 ◦ 失敗しても手戻りを小さくする • 早くフィードバックを得ること でサイクルも早くなる ◦ 失敗があればそこから学ぶ

    ◦ 進捗も実感しやすい! 25
  26. 小さく試して、小さく失敗する • 失敗しないことより元に戻せ ることを重視する ◦ レビュアーに負担をかけない • 失敗には気付けるように ◦ 必要ならモニタリングの仕組み

    も合わせて整備する 26 Zucksの直近3ヶ月のマージ数 : 25回 / 日 (@約30人)
  27. 適度な自動化

  28. 適度な自動化 28 • 繰り返しやることは必要に応じて 自動化 ◦ テストやデプロイ準備はCIサービスで ◦ ローカル環境構築はDocker化 ◦

    タスクランナーとしてのMakefile ◦ ソフトウェアライフサイクルを早く 回せるようになる
  29. 適度な自動化 29 • 自動化=コード化されている ◦ ドキュメント代わりに • 完璧な自動化を目的にはしない ◦ ソフトウェアライフサイクル全体

    で見て効果を考える
  30. 全員admin

  31. 全員admin • 開発者全員がAWSの 管理者権限を持っている ◦ 他の外部サービスも基本同様 • 依頼が不要となり、オーナー シップを持ちやすくなる •

    権限のせいで 視野を狭めさせない 31
  32. 全員admin • 復旧しやすい環境 ◦ インフラのコード化 ◦ サーバレスの活用 32 事故防止の工夫 •

    最低限の制限をかける ◦ 削除保護の有効化 ◦ MFA必須化(CLI含む) • モニタリングする ◦ サービスメトリクス ◦ コスト ◦ 不審なAPIコール
  33. 初日リリース

  34. 初日リリース • 配属初日にリリースをする ◦ 新卒入社も中途入社も • 顧客に価値を届ける体験 • 環境が整備されている状態を保つ ◦

    誰でも1日以内に価値が届けられる 環境 34
  35. 01 フルサイクル開発者とは 02 Zucksにおけるエンジニアリング 03 フルサイクル開発者のためのプラクティス 04 まとめ Agenda

  36. まとめ 36 圧倒的スピードで価値を届ける 本当に必要なものを見極める 最強の裁量を与える 失敗から学ぶ 適度な自動化 当事者と直接対話する 全員admin 小さく試して、小さく失敗する

    初日リリース 大事にしていること 実践しているプラクティス 今後も事業やチームの状況に応じて柔軟に改善していく
  37. まとめ 37 • フルサイクル開発者として、 圧倒的スピードで価値を提供 • 新しいメンバーでも配属初日から プラクティスを実践してもらう文化 • 本質を追い求めていくことが大事

  38. スゴイ挑戦、 やってます。