Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 2 南大津 寛 Hiroshi Minamiohtsu ● 株式会社Zucks アドプロダクト事業本部 エンジニア ● Zucks Ad Networkの開発、運用 ● VOYAGE GROUP (CARTA HOLDINGS)

Slide 3

Slide 3 text

会社紹介 | VOYAGE GROUP 3 VOYAGE GROUPは1999年に創業し、様々な事業に 挑戦し続けることで成長してきました。 Engineers in VOYAGE 事業成長の中で培ってきた、エンジニアリングの話を 凝縮した本。「フルサイクル開発者の文化」の話も 掲載されています。 『Engineers in VOYAGEー事業を エンジニアリングする技術者たち』

Slide 4

Slide 4 text

事業紹介 | Zucks ● 提供サービス ○ Zucks Ad Network ○ Zucks Affiliate ● 高トラフィック ○ 3,000億req / 月 ○ ピーク時 20万req / 秒 ● 広告配信サービスなので 止めることはできない 4

Slide 5

Slide 5 text

こんな経験ありませんか?

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

フルサイクル開発者とは ● ソフトウェアライフサイクルの 全てを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

Slide 12

Slide 12 text

フルサイクル開発者とは フルスタックエンジニアとの違い ● フルスタックエンジニア ○ エンジニア個人の技術領域にフォーカスしている ○ 幅広い技術領域をカバーできていること ● フルサイクル開発者 ○ 価値を迅速に提供することにフォーカスしている ○ そのためにソフトウェアライフサイクルの全てを担当する フルサイクル開発者を実践していくと、自然とフルスタックエンジニア にも近付いていく 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Zucksにおけるエンジニアリング 大事にしていること ● 圧倒的スピードで価値を届ける ○ 変化の激しい業界に身を置いている ○ 価値の提供に時間がかかると、必要なものの形も 変わってしまう ○ フルサイクル開発者の考えのベースにも通じる 15

Slide 16

Slide 16 text

Zucksにおけるエンジニアリング 大事にしていること ● 本当に必要なものを見極める ○ 指示されたものを作る、というスタイルではない ○ エンジニアが事業背景や課題を理解した上で、 どういう解決策が最良なのかを見極める ○ 本質を追い求めていく姿勢 16

Slide 17

Slide 17 text

Zucksにおけるエンジニアリング 大事にしていること ● 最強の裁量を与える ○ 技術選定や付与する権限 ○ 全てを自分自身で進めていけるように 17

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

当事者と直接対話する

Slide 22

Slide 22 text

当事者と直接対話する 22 ● まず課題を感じている当事者 に直接話を聞き、背景や課題 感を理解する ○ お互いに不明点や疑問点を解消 ○ 管理画面など対象物がある場合 は、実際に様子を見せてもらう

Slide 23

Slide 23 text

当事者と直接対話する 23 ● 当事者も本当に欲しい物が 分かっていないことがある ○ 「なぜそれが必要なのか?」 ● 一緒に本質を捉えた解決策を 考える ○ 本質的な課題が解決できるな ら、開発をしなくてもいい

Slide 24

Slide 24 text

小さく試して 小さく失敗する

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

小さく試して、小さく失敗する ● 失敗しないことより元に戻せ ることを重視する ○ レビュアーに負担をかけない ● 失敗には気付けるように ○ 必要ならモニタリングの仕組み も合わせて整備する 26 Zucksの直近3ヶ月のマージ数 : 25回 / 日 (@約30人)

Slide 27

Slide 27 text

適度な自動化

Slide 28

Slide 28 text

適度な自動化 28 ● 繰り返しやることは必要に応じて 自動化 ○ テストやデプロイ準備はCIサービスで ○ ローカル環境構築はDocker化 ○ タスクランナーとしてのMakefile ○ ソフトウェアライフサイクルを早く 回せるようになる

Slide 29

Slide 29 text

適度な自動化 29 ● 自動化=コード化されている ○ ドキュメント代わりに ● 完璧な自動化を目的にはしない ○ ソフトウェアライフサイクル全体 で見て効果を考える

Slide 30

Slide 30 text

全員admin

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

全員admin ● 復旧しやすい環境 ○ インフラのコード化 ○ サーバレスの活用 32 事故防止の工夫 ● 最低限の制限をかける ○ 削除保護の有効化 ○ MFA必須化(CLI含む) ● モニタリングする ○ サービスメトリクス ○ コスト ○ 不審なAPIコール

Slide 33

Slide 33 text

初日リリース

Slide 34

Slide 34 text

初日リリース ● 配属初日にリリースをする ○ 新卒入社も中途入社も ● 顧客に価値を届ける体験 ● 環境が整備されている状態を保つ ○ 誰でも1日以内に価値が届けられる 環境 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

まとめ 36 圧倒的スピードで価値を届ける 本当に必要なものを見極める 最強の裁量を与える 失敗から学ぶ 適度な自動化 当事者と直接対話する 全員admin 小さく試して、小さく失敗する 初日リリース 大事にしていること 実践しているプラクティス 今後も事業やチームの状況に応じて柔軟に改善していく

Slide 37

Slide 37 text

まとめ 37 ● フルサイクル開発者として、 圧倒的スピードで価値を提供 ● 新しいメンバーでも配属初日から プラクティスを実践してもらう文化 ● 本質を追い求めていくことが大事

Slide 38

Slide 38 text

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