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
400
ログラスの継続的ライブラリアップデートの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
3
690
リファクタリングへの耐性が高いモデルベースの統合テストの紹介 / Model-Base Integration Test for Refactoring
yuitosato
7
2.4k
Expressing Business Logic with Types: Functional DDD for OOP
yuitosato
1
88
ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
yuitosato
42
27k
Java21とKotlinの代数的データ型 & パターンマッチの紹介と本当に嬉しい使い方 / Algebraic Data Type in Java and Kotlin: Happy Use of Pattern Match
yuitosato
14
4.5k
リプレイス「後」が大事!Reactフルリプレイスから2年で良かったこと・その後大事なこと / The Important Point After The Framework Replacement
yuitosato
3
990
B2B SaaSあるある! 一括処理のエラーハンドリングをKotlinで関数型的に処理する / Kotlin Functional Multi Error Handling
yuitosato
2
550
Kotlinサーバサイドで頑張る「単体テストの考え方_使い方」 / "Unit Testing Principles, Practices, and Patterns" by Kotlin
yuitosato
4
960
型だけでバグを減らそう! Kotlinの型パワーを使った実践タイプセーフエンジニアリング
yuitosato
2
1.5k
Other Decks in Technology
See All in Technology
速くて安いWebサイトを作る
nishiharatsubasa
15
15k
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
150
Visualize, Visualize, Visualize and rclone
tomoaki0705
9
77k
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
290
スキルだけでは満たせない、 “組織全体に”なじむオンボーディング/Onboarding that fits “throughout the organization” and cannot be satisfied by skills alone
bitkey
0
140
AIエージェント入門
minorun365
PRO
22
11k
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
1.8k
CDKのコードを書く環境を作りました with Amazon Q
nobuhitomorioka
1
150
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
530
IAMポリシーのAllow/Denyについて、改めて理解する
smt7174
2
180
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Unsuck your backbone
ammeep
669
57k
Adopting Sorbet at Scale
ufuk
74
9.2k
Scaling GitHub
holman
459
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
A designer walks into a library…
pauljervisheath
205
24k
Site-Speed That Sticks
csswizardry
4
400
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
250
The Cult of Friendly URLs
andyhume
78
6.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
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