Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ログラスの継続的ライブラリアップデートのWhyとHow / Why and How to Up...
Search
YuitoSato
August 16, 2023
Technology
0
330
ログラスの継続的ライブラリアップデートのWhyとHow / Why and How to Update Libraries Continuously in Loglass
YuitoSato
August 16, 2023
Tweet
Share
More Decks by YuitoSato
See All by YuitoSato
Railway Oriented Programming を オニオンアーキテクチャに適用する by kotlin-result / Railway Oriented Programming in Onion Architecture by kotlin-result
yuitosato
2
390
リファクタリングへの耐性が高いモデルベースの統合テストの紹介 / Model-Base Integration Test for Refactoring
yuitosato
5
1.9k
Expressing Business Logic with Types: Functional DDD for OOP
yuitosato
1
68
ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
yuitosato
40
24k
Java21とKotlinの代数的データ型 & パターンマッチの紹介と本当に嬉しい使い方 / Algebraic Data Type in Java and Kotlin: Happy Use of Pattern Match
yuitosato
14
4.1k
リプレイス「後」が大事!Reactフルリプレイスから2年で良かったこと・その後大事なこと / The Important Point After The Framework Replacement
yuitosato
3
950
B2B SaaSあるある! 一括処理のエラーハンドリングをKotlinで関数型的に処理する / Kotlin Functional Multi Error Handling
yuitosato
2
430
Kotlinサーバサイドで頑張る「単体テストの考え方_使い方」 / "Unit Testing Principles, Practices, and Patterns" by Kotlin
yuitosato
3
860
型だけでバグを減らそう! Kotlinの型パワーを使った実践タイプセーフエンジニアリング
yuitosato
2
1.4k
Other Decks in Technology
See All in Technology
フルカイテン株式会社 採用資料
fullkaiten
0
40k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
190
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.3k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
170
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
330
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Teambox: Starting and Learning
jrom
133
8.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Testing 201, or: Great Expectations
jmmastey
38
7.1k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Scaling GitHub
holman
458
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
Making Projects Easy
brettharned
115
5.9k
A designer walks into a library…
pauljervisheath
203
24k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Transcript
1 ©2023 Loglass Inc. ログラスの継続的ライブラリアップデートの WhyとHow 2023.08.15 佐藤有斗(@Yuiiitoto) 株式会社ログラス
2 ©2023 Loglass Inc. 自己紹介 株式会社ログラス 開発部 エンジニア 佐藤有斗(@Yuiiitoto) 2020年12月にソフトウェアエンジニアとしてログラスに入社。
React、Kotlinが得意で、ログラスのフロントエンド全般の設計・開 発と経営データの集計・分析エンジンのバックエンドを開発してい る。 KotlinのOSSをちょこちょこ開発・保守しています。
3 ©2023 Loglass Inc. ログラスについて 企業価値を向上する 経営管理クラウド
4 ©2023 Loglass Inc. ログラスについて(5秒) 企業価値を向上する 経営管理クラウド
5 ©2023 Loglass Inc. “魅⼒的な発信を⾏っている「開発者体験ブランド⼒」評価の⾼い企業” 25位にランクイン
6 ©2023 Loglass Inc. こちらの記事経由で登壇のお誘いを受けました https://zenn.dev/yuitosato/articles/cad5ab93e852ab
7 ©2023 Loglass Inc. ログラスでは隔週30分でライブラリをアップデートする会を設けています
8 ©2023 Loglass Inc. アジェンダ 1. なぜライブラリを継続的にアップデートし続けるのか? 2. どうライブラリを継続的にアップデートし続けるのか?
9 ©2023 Loglass Inc. 1. なぜライブラリを継続的にアップデートし続けるのか?
10 ©2023 Loglass Inc. 最近話題になった記事 https://qiita.com/autotaker1984/items/a3091772dbb0fb91473d
11 ©2023 Loglass Inc. なぜライブラリをアップデートし続けるのか? • 脆弱性対応 • 新機能にアクセスするため
12 ©2023 Loglass Inc. なぜライブラリをアップデートし続けるのか? • 脆弱性対応 • 新機能にアクセスするため https://www.cyberkendra.com/2021/12/worst-log4j-r
ce-zeroday-dropped-on.html https://nextjs.org/blog/next-13
13 ©2023 Loglass Inc. なぜライブラリを「継続的に」アップデートし続けるのか? • 脆弱性対応 • 新機能にアクセスするため •
アップデートの複雑性を減らすため
14 ©2023 Loglass Inc. ビッグバンバージョンアップデート( ≠継続的)は失敗しやすい • 説明コストが高すぎて着手できない • 説明できても人が足らなくて着手できない
• 着手できても難しすぎて失敗する • あとなんか腰が重い
15 ©2023 Loglass Inc. ライブラリアップデートのレベルイメージ。もちろんライブラリによる。 Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが
1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 複雑性 Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。
16 ©2023 Loglass Inc. 複雑性が増えれば、必要工数が増える Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが
1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 複雑性 工数 Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。
17 ©2023 Loglass Inc. 必要工数が増えれば、ステークホルダーと説明コストが増える Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが
1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。 複雑性 工数 説明コスト 経営陣 エンジニアリング マネージャー
18 ©2023 Loglass Inc. 更新をサボればサボるほど、 失敗しやすくなる
19 ©2023 Loglass Inc. Level2までで対応したい。末期がんになる前に治療する。 Level3: LTSが切れている。破壊的な変更があり、メジャー バージョンがNつずれている。 Level2: メジャーバージョンが
1つずれている。破壊的な変更が あるが、マイグレーションガイド通りに行えば影響は限定でき る。 複雑性 工数 説明コスト 経営陣 エンジニアリング マネージャー Level1: 破壊的な変更がない or 少ないパッチ、マイナーバー ジョンアップデート。多くは CIが通ればマージできる。
20 ©2023 Loglass Inc. 2. どうライブラリを継続的にアップデートし続けるのか?
21 ©2023 Loglass Inc. どうライブラリをアップデートし続けるのか? 1. 監視する 2. 固定で時間を取る(Level1の解消) 3.
自動化する(Level1の解消) 4. 特殊部隊を作る(Level2~の解消)
22 ©2023 Loglass Inc. 1. 監視する GitHub Dependabotをオンにしよう (それだけ)
23 ©2023 Loglass Inc. 2. 固定で時間を取る(Level1の解消) • 1ヶ月に1時間とか時間取る(ログラスは隔週 30分) •
DependabotのPRを確認してマージしていく • みんなでやると楽しい • ナレッジを貯めよう
24 ©2023 Loglass Inc. 2. 固定で時間を取る(Level1の解消) • 1ヶ月に1時間とか時間取る(ログラスは隔週 30分) •
DependabotのPRを確認してマージしていく • みんなでやると楽しい • ナレッジを貯めよう • 善意に頼らずみんなで仕組みの中でやろう
25 ©2023 Loglass Inc. 善意に頼らずみんなで仕組みの中でやろう 2. 固定で時間を取る(Level1の解消)
26 ©2023 Loglass Inc. 3. 自動化する(Level1の解消) • ライブラリアップデートを自動化する • パッチとプロダクションコードに関わらないマイナーバージョンアップデートを自動化
27 ©2023 Loglass Inc. 4. 特殊部隊を作る(Level2~の解消) • 機能開発 vs メジャーバージョンアップデートの優先順位を測るのは難しい
• 最初から横断で技術的な投資をするチームを設けておけば優先順位判断をスキップできる
28 ©2023 Loglass Inc. Dependabotのマージ数が1686に
29 ©2023 Loglass Inc. Amazon Aurora Postgresqlがv11系→v15系に v11.x => v15.x
30 ©2023 Loglass Inc. Next.jsがv10系→v13系に v10.x => v13.x
31 ©2023 Loglass Inc. ライブラリを最新に保って 良い環境で開発しよう! 採用強化中です!!!
32