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

ログラスの継続的ライブラリアップデートのWhyとHow / Why and How to Update Libraries Continuously in Loglass

YuitoSato
August 16, 2023

ログラスの継続的ライブラリアップデートのWhyとHow / Why and How to Update Libraries Continuously in Loglass

YuitoSato

August 16, 2023
Tweet

More Decks by YuitoSato

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

  3. 3
    ©2023 Loglass Inc.
    ログラスについて
    企業価値を向上する

    経営管理クラウド


    View full-size slide

  4. 4
    ©2023 Loglass Inc.
    ログラスについて(5秒)
    企業価値を向上する

    経営管理クラウド


    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide