Contents
概要
ECSでコンテナを起動するときのポイントの1つが、コンテナ起動時間です。
SpringBootをどのように配置するのが、SpringBoot-ECSにおけるベストプラクティスになるのでしょうか?
その答えは、Spring Boot アプリケーションを AWS Fargate に最適化するで考察されています。
結論は、Spring Native (GraalVM AoT コンパイル) 、Distroless ベースイメージ、X86_64 で動作させることです。
Spring Native (GraalVM AoT コンパイル)とは?
Spring Nativeとは、コンテナ起動に適した実行可能jarを作成するSpring内のプロジェクトのことです。
ここでは、Spring Nativeを使用して、コンテナを高速に起動できる軽量な実行可能jarを作成することを指しています。
Spring Nativeの「Native」は「ネイティブイメージ」を指しており、「ネイティブイメージ」とは、SpringBootプロジェクトの実行可能jarのことです。
Distroless ベースイメージとは?
Distroless ベースイメージとは、Google社が提供するDebianベースのLinux OSのイメージです。
パッケージマネージャーやshellすら含まれていないので、軽量であり、
コンテナ起動時間を最小化することができます。
また、cdすら含まれておらず、セキュアなイメージとされています。
具体的には、次の形式で使用します。
FROM gcr.io/distroless/static-debian11
ここまでの結論として、
・Spring Native (GraalVM AoT コンパイル)によって作成されたSpringBootアプリケーションの実行可能jarを使用してコンテナイメージを作成する。
・そのコンテナイメージをDistroless ベースイメージを使用したLinux OSで起動する。
ということです。
ただし、それほど起動時間や処理数にシビアでないアプリケーションにとっては、この内容は過剰かもしれません。
ハンズオン
ゴール
このハンズオンでは次のインフラを構築します。
その上でブラウザからアクセスして、次の画面が出ればゴールです。