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
440
ログラスの継続的ライブラリアップデートの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
大AI時代で輝くために今こそドメインにディープダイブしよう / Deep Dive into Domain in AI-Agent-Era
yuitosato
1
810
50人の組織でAIエージェントを使う文化を作るためには / How to Create a Culture of Using AI Agents in a 50-Person Organization
yuitosato
6
4.5k
Railway Oriented Programming を オニオンアーキテクチャに適用する by kotlin-result / Railway Oriented Programming in Onion Architecture by kotlin-result
yuitosato
4
930
リファクタリングへの耐性が高いモデルベースの統合テストの紹介 / Model-Base Integration Test for Refactoring
yuitosato
7
2.9k
Expressing Business Logic with Types: Functional DDD for OOP
yuitosato
1
120
ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
yuitosato
42
28k
Java21とKotlinの代数的データ型 & パターンマッチの紹介と本当に嬉しい使い方 / Algebraic Data Type in Java and Kotlin: Happy Use of Pattern Match
yuitosato
14
4.9k
リプレイス「後」が大事!Reactフルリプレイスから2年で良かったこと・その後大事なこと / The Important Point After The Framework Replacement
yuitosato
3
1k
B2B SaaSあるある! 一括処理のエラーハンドリングをKotlinで関数型的に処理する / Kotlin Functional Multi Error Handling
yuitosato
2
650
Other Decks in Technology
See All in Technology
VueUseから学ぶ実践TypeScript #TSKaigi #TSKaigi2025
bengo4com
3
5.3k
Houtou.pm #1
papix
0
550
CSS polyfill とその未来
ken7253
0
130
令和トラベルQAのAI活用
seigaitakahiro
0
470
継続戦闘能⼒
sansantech
PRO
0
200
iOS/Androidで無限循環Carousel表現を考えてみる
fumiyasac0921
0
120
超簡単!RAGアプリケーション構築術
oracle4engineer
PRO
0
110
型がない世界に生まれ落ちて 〜TypeScript運用進化の歴史〜
narihara
1
200
プラットフォームとしての Datadog / Datadog as Platforms
aoto
PRO
1
310
グループ ポリシー再確認 ③
murachiakira
0
150
AIの電力問題を概観する
rmaruy
1
200
Data Hubグループ 紹介資料
sansan33
PRO
0
1.7k
Featured
See All Featured
KATA
mclloyd
29
14k
GraphQLとの向き合い方2022年版
quramy
46
14k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Designing for humans not robots
tammielis
253
25k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
460
Done Done
chrislema
184
16k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
What's in a price? How to price your products and services
michaelherold
245
12k
Bash Introduction
62gerente
613
210k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
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