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
AWS CodeBuildを高速化したい
Search
ryome
January 11, 2024
Technology
0
530
AWS CodeBuildを高速化したい
AWS CodeBuildのビルド時間を高速化する検証。
ryome
January 11, 2024
Tweet
Share
More Decks by ryome
See All by ryome
AWSデスノート〜AWSの嫌いなところまとめ〜
ryome
0
19
AWS MCPを使ってみた
ryome
0
330
ClineでAWS CDKやインフラ構成図作ってみた
ryome
1
510
PlaywrightというE2Eテストツールを布教したい
ryome
0
58
Cursorという最強エディタを使いこなしたい
ryome
0
290
E2Eテストを自動化したい
ryome
0
74
CDKでAppSyncのJavaScriptリゾルバを開発したい
ryome
0
280
Cognitoの複数IDP認証でユーザを統合したい
ryome
1
1.2k
OAuth2.0完全に理解した
ryome
0
200
Other Decks in Technology
See All in Technology
#普通の文系サラリーマンチャレンジ 自分でアプリ開発と電子工作を続けたら人生が変わった
tatsuya1970
0
910
about #74462 go/token#FileSet
tomtwinkle
1
270
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
250
リーダーになったら未来を語れるようになろう/Speak the Future
sanogemaru
0
230
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
260
Azure Well-Architected Framework入門
tomokusaba
0
200
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
820
AI Agentと MCP Serverで実現する iOSアプリの 自動テスト作成の効率化
spiderplus_cb
0
400
Geospatialの世界最前線を探る [2025年版]
dayjournal
3
470
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
120
o11yで育てる、強い内製開発組織
_awache
3
100
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
110
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
570
A designer walks into a library…
pauljervisheath
208
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
A better future with KSS
kneath
239
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
840
Music & Morning Musume
bryan
46
6.8k
Scaling GitHub
holman
463
140k
Statistics for Hackers
jakevdp
799
220k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Unsuck your backbone
ammeep
671
58k
Transcript
AWS CodeBuildを 高速化したい
AWS CodeBuildのおさらい • AWS CodeBuildは、コードのビルド、テスト、パッケージ化など、ソフト ウェア開発のパイプライン内で様々なタスクを自動化するために使用され るフルマネージド型のサービスです。 • ビルドの指示はbuildspec.ymlファイルによって定義されます。 CodeCommitやCodeDeployと
一緒に使用されることが多い
どうやって速くするの? • 依存関係をS3に保管しておく • Bunを使用して依存関係のインストールを高速化する • コンピューティングにLambdaを選択する
なぜ、速くするの? EC2 料金 ビルド時間で課金される
なぜ、速くするの? Lambda 料金 ビルド時間で課金される
前提 React初期プロジェクトのビルド時間短縮を目指す。 環境 ・Nodeバージョン:18 ・Reactバージョン:18.2.0 インストールパッケージ名 @emotion/react @emotion/styled @mui/material axios
react react-dom react-router-dom react-scripts web-vitals @testing-library/jest- dom @testing-library/react @testing-library/user- event jest-junit jsdom
テスト時の依存関係をS3に保管しておく • CodeBuildのS3キャッシュ設定
テスト時の依存関係をS3に保管しておく buildspec.ymlにcacheを追加する キャッシュに残すパス
テスト時の依存関係をS3に保管しておく ビルド時間比較 • S3キャッシュを使用した場合: o インストール:11秒 • S3キャッシュを使用しない場合: o インストール:31秒
Bunを使用して依存関係のインストールを 高速化する • Bunの紹介 o Node.jsやDenoと同様のJavaScriptランタイム o JavaScriptCoreエンジンを採用して高速 o Bun自体がパッケージマネージャー
o タスクランナーとして動かすことも可能(bun run 〜とか使える) o ファイルの書き込み、SQLite3データベースのサポート、環境変数の自 動読み込み(.envファイル対応)などをデフォルトでサポート
Bunを使用して依存関係のインストールを 高速化する • 「npm install –g bun」でBunをインストール
Bunを使用して依存関係のインストールを 高速化する • Bunコマンドでインストール、ビルドを行う
Bunを使用して依存関係のインストールを 高速化する ビルド時間比較 • Bunを使用した場合: o インストール:10秒 • Npmを使用した場合: o
インストール:31秒
コンピューティングにLambdaを選択する • AWS CodeBuild で AWS Lambda によるコンピューティングのサポートを開始
コンピューティングにLambdaを選択する • CodeBuild作成時にコンピューティングでLambdaを選択する
コンピューティングにLambdaを選択する ビルド時間比較(S3キャッシュ、Bun込み) • EC2の場合:1分15秒 • Lambdaの場合:30秒
まとめ • 結果 改善前のビルド 時間 改善後のビルド 時間 短縮時間 テスト時の依存関係をS3に保管しておく 31秒
11秒 20秒 Bunを使用して依存関係のインストールを高 速化する 31秒 10秒 21秒 コンピューティングにLambdaを選択する 1分15秒 30秒 45秒
GitHub • 今回検証で使用したコードは以下です。 o https://github.com/ryomeblog/codebuild-speedup
余談 • CodeBuildのテスト時にレポート作成 o buildspec.ymlにreportsを追加 レポートファイル名 レポートファイルがある ディレクトリ名
余談 • CodeBuildのテスト時にレポート作成
余談 • dependenciesとdevDependenciesを使い分ける o npm install 【パッケージ名】→ dependencies o npm
install --save-dev 【パッケージ名】→ devDependencies • 依存関係のインストールをデプロイ先によって分ける!! o 開発環境:npm install → dependenciesとdevDependencies o 本番環境:npm install --production → dependenciesのみ!! 本番環境に不要な パッケージが入らなくなる!! 本番環境で使うパッケージ 開発時に使うパッケージ
参考文献 • https://aws.amazon.com/jp/about-aws/whats- new/2023/11/aws-codebuild-lambda-compute/ • https://aws.amazon.com/jp/codebuild/pricing/ • https://aws.amazon.com/jp/codebuild/features/ • https://dev.classmethod.jp/articles/codebuild-
lambda-compute/ • https://docs.aws.amazon.com/ja_jp/codebuild/latest /userguide/test-report-jest.html