Slide 1

Slide 1 text

ある日突然、 Amplifyのデプロイが 失敗するようになった話

Slide 2

Slide 2 text

自己紹介 上原由宇駆 X Mile株式会社 フルサイクルエンジニア 2023年4月 X Mile 入社 最近はTypescript が多く、たまにPython

Slide 3

Slide 3 text

ある日デプロイが通らなくなった Amplifyでホスティングを行っているプロダクトがある 普段通り開発を進めていると、ある日デプロイが通らなくなった どうやらビルドの生成物がAmplifyの許容サイズを超えているらしい Uncompressed code size exceeded (Max size: 220MB). Please reduce the artifact size. For help see our docs: https://docs.aws.amazon.com/amplify/latest/userguide/troubleshooting-ssr-deplo yment.html

Slide 4

Slide 4 text

ビルドアウトプットを確認してみる ● aws cli もしくは aws console からデプロイが失敗したビルドのビルドアウ トプットをダウンロード ● 中身のディレクトリのファイルサイズを確認 ● 296MBもある!? ❯ cd artifacts ❯ du -csh compute static 250M compute ← コード類 46M static ← 画像ファイル系 296M total

Slide 5

Slide 5 text

ビルドアウトプットを確認してみる ● 一番大きいのは node_modules、次が .next ● node_modulesをすぐにどうにかするのは難しそう ● .next 内でサイズが大きいものがないか確認してみる ❯ cd compute/default ❯ du -csh (.|)* 4.0K .env.production 78M .next ← 2番 147M node_modules ← 1番大きい 4.0K package.json 8.0K public 4.0K run.sh 40K server.js 25M src ← 3番 250M total

Slide 6

Slide 6 text

サイズのデカいファイルがないか探す ● 計 約18MBのJSONファイル群があった ● データの内容は統計情報など。 ● 過去に実装速度・リリース速度優先のために、DBではなくひとまずJSONを読 み込む形で進めてしまったもの。 → このJSONファイル群を消してみる。データはDBに移動させる。

Slide 7

Slide 7 text

削除結果 ● .next が 約17MB、 src が約22MB減った ● src をビルドして .next が生成されているので、どちらも減ったもよう # After ❯ cd compute/default/ ❯ du -csh (.|)* 4.0K .env.production 61M .next 147M node_modules 4.0K package.json 0B public 4.0K run.sh 40K server.js 2.7M src 210M total # Before ❯ cd compute/defaul ❯ du -csh (.|)* 4.0K .env.production 78M .next 147M node_modules 4.0K package.json 8.0K public 4.0K run.sh 40K server.js 25M src 250M total

Slide 8

Slide 8 text

削除結果 ● 計約40MBを削減することができた ● この変更以降デプロイが失敗することは無くなった ● しかし、トータル 220MB 超えているのにデプロイ通っているのは疑問が残る ○ どこのサイズが判断基準になっているのかは未調査のため、今後調査していきたい。 # Before ❯ du -csh compute static 250M compute 46M static 296M total # After ❯ du -csh compute static 210M compute 46M static 256M total

Slide 9

Slide 9 text

まとめ 残った課題 ● まだまだサイズギリギリなので、小さくしていきたい ○ ビルドの時間やgit pullの時間にも関わってくるため、開発者体験的にも改善したい ● package.jsonの整理を行いつつ、node_modules内でも削除出来そうな ファイルの調査と削除を進めたい ● Amplifyの仕様で不明なところがあるので追加で調査していく ● そもそも、Amplifyを使い続けるのかも議論が必要かも ビルドやデプロイ関連の知識が足りていないので、勉強していきたい!!!