Slide 1

Slide 1 text

バックエンドエンジニアが考える プロダクトへの向き合い⽅ SaaS企業の成⻑を⽀えるバックエンドの裏側 株式会社IVRy Odashi 1

Slide 2

Slide 2 text

⾃⼰紹介 ● 名前:Odashi ● 領域:バックエンド ● 考え⽅:楽しい⽅の⾒⽅ ● 趣味:クラヴマガ‧ジム 2

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

今⽇話すこと 1. IVRyのシステム概要 2. マインド 3. テック 4

Slide 5

Slide 5 text

今⽇話すこと 1. IVRyのシステム概要 2. マインド 3. テック 5

Slide 6

Slide 6 text

IVRyのシステム概要 6

Slide 7

Slide 7 text

IVRyのシステム概要 7 - ECS - APIとバッチ処理 - 通話データの同期 - Aurora PostgreSQL - Redis - ⼀部LLMの利⽤も

Slide 8

Slide 8 text

今⽇話すこと 1. IVRyのシステム概要 2. マインド 3. テック 8

Slide 9

Slide 9 text

マインド - 1⼈1⼈がプロダクト志向のエンジニアが多い - ⾃分たちもいちクライアントとして実際に使ってみる - As Is, To Beをしっかり考えられる - Design Docの活⽤ 9

Slide 10

Slide 10 text

プロダクト志向 プロダクト志向とは チームメンバー全員がプロダクトをまるで⾃分の⼦どものよう に愛し、⾃分の担当領域だけではなく、プロダクト全体のこと を考えることを「プロダクト志向」とよぶ。 引⽤ 及川 卓也; ⼩城 久美⼦; 曽根原 春樹. プロダクトマネジメントのすべて 事業戦略‧IT開発‧UXデザイン‧ マーケティングからチーム‧組織運営まで . 株式会社 翔泳社. Kindle 版. 10

Slide 11

Slide 11 text

プロダクト志向 - ⼊社後のオンボーディングで全オプションを含めた⾃由に 使えるアカウントを発⾏する - エンジニアもCLインタビューや展⽰会に参加する - 触ってみて実感することが⼤事 - プロダクトをどう成⻑させていくかを⾃分の中に持つこと ができる 11

Slide 12

Slide 12 text

プロダクト志向 12

Slide 13

Slide 13 text

As Is, To Be As Is, To Beとは As Is:現在の状態 To Be:理想の状態 現在と理想のギャップ(課題)を明確にし、解決のためのアク ションを導き出すための分析フレームワーク 13

Slide 14

Slide 14 text

As Is, To Be - スタートアップ=⼈⼿不⾜ - 「今まではこうだった」「今はこうなっているから」と省 エネ志向に⾛りがち - 今ある知識だと本当はどうなるのが理想かを常に追求する カルチャーがある 14

Slide 15

Slide 15 text

Design Doc Design Docとは これから新しく開発しようとするソフトウェアの全体の設計 や、既存のコードのpatchやプルリクエスト(PR)のコード変更 の基本的な要点をまとめる⽂書 引⽤ https://myenigma.hatenablog.com/entry/2021/07/25/140308 15

Slide 16

Slide 16 text

Design Doc 16 - ⼤きな案件は必ず書く - 規模が⼩さくても⽅向性の 擦り合わせなどにも有⽤

Slide 17

Slide 17 text

Design Doc 17 - 重要なのはスコープと設計 - スコープはシステム影響範 囲 - スコープアウトも書いた - 設計は実装の⽅針

Slide 18

Slide 18 text

Design Doc - 正確さが重要なので 基本は⽂字で残す - 図などは補助する位 置付け(システム全 体像、ER図やシーケ ンス図など) 18

Slide 19

Slide 19 text

Design Doc - 人は必ず忘れる生き物 - 1人が考えるTo Beにも限界がある - あの時どう考えていたかを振り返る方法になる - 今ならあの時のTo Beを実現できそう? - もっと良さそうなTo Beを思いついた - 方向性の擦り合わせにもなる 19

Slide 20

Slide 20 text

マインド プロダクト志向 As Is, To Be Design Doc 20

Slide 21

Slide 21 text

今⽇話すこと 1. IVRyのシステム概要 2. マインド 3. テック 21

Slide 22

Slide 22 text

テック - Rubyバージョンと向き合う - デプロイ頻度の改善 22

Slide 23

Slide 23 text

バージョンと向き合う - Ruby = 3.3.2(最新は3.3.3) - 3.3.1の時にYJITを有効化した ※2024/6/25現在 23

Slide 24

Slide 24 text

Rubyバージョンアップ 24

Slide 25

Slide 25 text

Rubyバージョンアップ 25

Slide 26

Slide 26 text

Rubyバージョンアップ 26 最初は3.1.2だった

Slide 27

Slide 27 text

Rubyバージョンアップ 27 バージョンと向き合い始めた頃 3.2.2のリリースは2023-3-30なので約1年遅 れ

Slide 28

Slide 28 text

Rubyバージョンアップ 28 3.2.3のリリースは2024-1-18なので約3ヶ⽉遅れ

Slide 29

Slide 29 text

Rubyバージョンアップ 29 3.2.4のリリースは2024-4-23(脆弱性対策 のパッチで2⽇遅れ)

Slide 30

Slide 30 text

Rubyバージョンアップ 30 3.3.1のリリースは2024-4-23なので約1週間遅れ ここでYJIT有効化

Slide 31

Slide 31 text

Rubyバージョンアップ 31 3.3.2のリリースは2024-5-30なので約1週間遅れ

Slide 32

Slide 32 text

YJITとは - Ruby3.1に導⼊されたJIT(Just In Time)コンパイラ - 実⾏時に機械語を⽣成することで最適化が⾏われる - 3.1導⼊、3.2正式サポート、3.3安定化と進化している 32

Slide 33

Slide 33 text

Rubyバージョンアップ 33 - YJITは3.2.0から有効化できたがあえてしなかった - YJITが⽣成する機械語やその管理のために確保するメモリ が際限なく増える可能性があった - ⼀応対策はあったが3.3で改善されたこともわかった - 状況を適切に理解し、しないという判断も⼤事

Slide 34

Slide 34 text

Rubyバージョンアップ 34 Matz(Rubyのパパ)からの クリスマスプレゼントと⾔ われたり⾔われなかったり

Slide 35

Slide 35 text

Rubyバージョンアップ - 基本的に後回しにされがち - 直接的なアウトカムが⾒えないから - とは⾔え間接的に貢献する - プロダクトの本質に向き合える時間を増やす 35

Slide 36

Slide 36 text

デプロイ頻度の改善 ⽬標:毎⽇デプロイ 36

Slide 37

Slide 37 text

デプロイ頻度の改善 - mainブランチにマージされたら⾃動デプ ロイとslack通知 - Staging環境で動確が終わればemojiを つける=いつデプロイしてもOKという ⽰し - Productionへのデプロイはワークフロー で⾏う - BEにはメンションして共有 - だいたいemojiがついているのでその ままデプロイを進められることが多い いつでもデプロイ可能にするための仕組み を作り、可能な限り⾃動化させる 37

Slide 38

Slide 38 text

デプロイ頻度の改善 38

Slide 39

Slide 39 text

デプロイ頻度の改善 - デプロイの頻度が多いことはプロダクトの変更を容易にす る - 差分が少ない→レビューに時間がかからない→すぐ価 値を届けられる→次の作業にすぐ取り掛かれる - ライブラリのバージョンアップも容易になるので新しい バージョンを利⽤しやすくなる - エンジニアにとって⼀種の福利厚⽣だと思う 39

Slide 40

Slide 40 text

伝えたいこと エンジニアがその本分である技術的な領域に注 ⼒するのも⼤事だけど、SaaS企業の成⻑を⽀え るにはプロダクトを知るということもまた⼤事 ⾃分が関わっているプロダクトのこと、どのく らい知ってますか? 40

Slide 41

Slide 41 text

We are Hiring !!! 41