Slide 1

Slide 1 text

1 ©2023 Loglass Inc. ログラスの継続的ライブラリアップデートの WhyとHow 2023.08.15 佐藤有斗(@Yuiiitoto) 株式会社ログラス

Slide 2

Slide 2 text

2 ©2023 Loglass Inc. 自己紹介 株式会社ログラス 開発部 エンジニア 佐藤有斗(@Yuiiitoto) 2020年12月にソフトウェアエンジニアとしてログラスに入社。 React、Kotlinが得意で、ログラスのフロントエンド全般の設計・開 発と経営データの集計・分析エンジンのバックエンドを開発してい る。 KotlinのOSSをちょこちょこ開発・保守しています。

Slide 3

Slide 3 text

3 ©2023 Loglass Inc. ログラスについて 企業価値を向上する
 経営管理クラウド


Slide 4

Slide 4 text

4 ©2023 Loglass Inc. ログラスについて(5秒) 企業価値を向上する
 経営管理クラウド


Slide 5

Slide 5 text

5 ©2023 Loglass Inc. “魅⼒的な発信を⾏っている「開発者体験ブランド⼒」評価の⾼い企業” 25位にランクイン

Slide 6

Slide 6 text

6 ©2023 Loglass Inc. こちらの記事経由で登壇のお誘いを受けました https://zenn.dev/yuitosato/articles/cad5ab93e852ab

Slide 7

Slide 7 text

7 ©2023 Loglass Inc. ログラスでは隔週30分でライブラリをアップデートする会を設けています

Slide 8

Slide 8 text

8 ©2023 Loglass Inc. アジェンダ 1. なぜライブラリを継続的にアップデートし続けるのか? 2. どうライブラリを継続的にアップデートし続けるのか?

Slide 9

Slide 9 text

9 ©2023 Loglass Inc. 1. なぜライブラリを継続的にアップデートし続けるのか?

Slide 10

Slide 10 text

10 ©2023 Loglass Inc. 最近話題になった記事 https://qiita.com/autotaker1984/items/a3091772dbb0fb91473d

Slide 11

Slide 11 text

11 ©2023 Loglass Inc. なぜライブラリをアップデートし続けるのか? ● 脆弱性対応 ● 新機能にアクセスするため

Slide 12

Slide 12 text

12 ©2023 Loglass Inc. なぜライブラリをアップデートし続けるのか? ● 脆弱性対応 ● 新機能にアクセスするため https://www.cyberkendra.com/2021/12/worst-log4j-r ce-zeroday-dropped-on.html https://nextjs.org/blog/next-13

Slide 13

Slide 13 text

13 ©2023 Loglass Inc. なぜライブラリを「継続的に」アップデートし続けるのか? ● 脆弱性対応 ● 新機能にアクセスするため ● アップデートの複雑性を減らすため

Slide 14

Slide 14 text

14 ©2023 Loglass Inc. ビッグバンバージョンアップデート( ≠継続的)は失敗しやすい ● 説明コストが高すぎて着手できない ● 説明できても人が足らなくて着手できない ● 着手できても難しすぎて失敗する ● あとなんか腰が重い

Slide 15

Slide 15 text

15 ©2023 Loglass Inc. ライブラリアップデートのレベルイメージ。もちろんライブラリによる。 Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが 1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 複雑性 Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。

Slide 16

Slide 16 text

16 ©2023 Loglass Inc. 複雑性が増えれば、必要工数が増える Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが 1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 複雑性 工数 Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。

Slide 17

Slide 17 text

17 ©2023 Loglass Inc. 必要工数が増えれば、ステークホルダーと説明コストが増える Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが 1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。 複雑性 工数 説明コスト 経営陣 エンジニアリング マネージャー

Slide 18

Slide 18 text

18 ©2023 Loglass Inc. 更新をサボればサボるほど、 失敗しやすくなる

Slide 19

Slide 19 text

19 ©2023 Loglass Inc. Level2までで対応したい。末期がんになる前に治療する。 Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが 1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 複雑性 工数 説明コスト 経営陣 エンジニアリング マネージャー Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。

Slide 20

Slide 20 text

20 ©2023 Loglass Inc. 2. どうライブラリを継続的にアップデートし続けるのか?

Slide 21

Slide 21 text

21 ©2023 Loglass Inc. どうライブラリをアップデートし続けるのか? 1. 監視する 2. 固定で時間を取る(Level1の解消) 3. 自動化する(Level1の解消) 4. 特殊部隊を作る(Level2~の解消)

Slide 22

Slide 22 text

22 ©2023 Loglass Inc. 1. 監視する GitHub Dependabotをオンにしよう (それだけ)

Slide 23

Slide 23 text

23 ©2023 Loglass Inc. 2. 固定で時間を取る(Level1の解消) ● 1ヶ月に1時間とか時間取る(ログラスは隔週 30分) ● DependabotのPRを確認してマージしていく ● みんなでやると楽しい ● ナレッジを貯めよう

Slide 24

Slide 24 text

24 ©2023 Loglass Inc. 2. 固定で時間を取る(Level1の解消) ● 1ヶ月に1時間とか時間取る(ログラスは隔週 30分) ● DependabotのPRを確認してマージしていく ● みんなでやると楽しい ● ナレッジを貯めよう ● 善意に頼らずみんなで仕組みの中でやろう

Slide 25

Slide 25 text

25 ©2023 Loglass Inc. 善意に頼らずみんなで仕組みの中でやろう 2. 固定で時間を取る(Level1の解消)

Slide 26

Slide 26 text

26 ©2023 Loglass Inc. 3. 自動化する(Level1の解消) ● ライブラリアップデートを自動化する ● パッチとプロダクションコードに関わらないマイナーバージョンアップデートを自動化

Slide 27

Slide 27 text

27 ©2023 Loglass Inc. 4. 特殊部隊を作る(Level2~の解消) ● 機能開発 vs メジャーバージョンアップデートの優先順位を測るのは難しい ● 最初から横断で技術的な投資をするチームを設けておけば優先順位判断をスキップできる

Slide 28

Slide 28 text

28 ©2023 Loglass Inc. Dependabotのマージ数が1686に

Slide 29

Slide 29 text

29 ©2023 Loglass Inc. Amazon Aurora Postgresqlがv11系→v15系に v11.x => v15.x

Slide 30

Slide 30 text

30 ©2023 Loglass Inc. Next.jsがv10系→v13系に v10.x => v13.x

Slide 31

Slide 31 text

31 ©2023 Loglass Inc. ライブラリを最新に保って 良い環境で開発しよう! 採用強化中です!!!

Slide 32

Slide 32 text

32