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
720
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS CodeBuildを高速化したい
AWS CodeBuildのビルド時間を高速化する検証。
ryome
January 11, 2024
More Decks by ryome
See All by ryome
AWSデスノート〜AWSの嫌いなところまとめ〜
ryome
0
48
AWS MCPを使ってみた
ryome
0
630
ClineでAWS CDKやインフラ構成図作ってみた
ryome
1
640
PlaywrightというE2Eテストツールを布教したい
ryome
0
93
Cursorという最強エディタを使いこなしたい
ryome
0
350
E2Eテストを自動化したい
ryome
0
94
CDKでAppSyncのJavaScriptリゾルバを開発したい
ryome
0
320
Cognitoの複数IDP認証でユーザを統合したい
ryome
1
1.5k
OAuth2.0完全に理解した
ryome
0
290
Other Decks in Technology
See All in Technology
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
280
8bit CPU 2026
koba789
7
2.9k
電話に出る Python のログの話
shinnosuke_kishida
0
270
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
2
370
あなたの知らないバージョン命名規則
sat
PRO
2
780
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
330
AIエージェントのためのデータ設計
daiz21
0
270
GopherCon @シアトル に行ってきました
logica0419
0
290
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
280
Digitization部 紹介資料
sansan33
PRO
2
7.7k
1000⼈規模のClaude Enterprise運⽤を「Oktaのグループ」と「Slack」に集約する
sansantech
PRO
0
400
Featured
See All Featured
Scaling GitHub
holman
464
140k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
310
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
410
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
260
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
480
Site-Speed That Sticks
csswizardry
13
1.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
500
GraphQLとの向き合い方2022年版
quramy
50
15k
Utilizing Notion as your number one productivity tool
mfonobong
4
550
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