さくらのクラウドのAppRunを使ってみた

## はじめに
さくらインターネット株式会社の「[さくらのクラウド](https://cloud.sakura.ad.jp/)」では、
続々とマネージドサービスがリリースされています。

その中でもコンテナ実行サービスであるAppRunを試してみました。

**※本記事の文章には生成AIを一切使用しておらず、すべて自分の言葉で表現しています**

## 全体図
![sakura_apprun.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/25d4c509-76fc-4f40-8548-2a35d01c06af.png)

## 手順
### ソースチェックアウト
今回のソースはこちらにあります。事前にチェックアウトしておいて下さい。
https://github.com/HTDevelop/sakura_apprun

### Dockerイメージ作成
```bash
cd sakura_apprun/app

# ビルド
docker build . -t sakura_apprun:latest
# 動作確認
docker run -p 5000:5000 sakura_apprun:latest
# 別窓でlocalhost:5000にアクセスしてHello Worldが表示されればOK
```

### コンテナレジストリにイメージをPush
#### コンテナレジストリ作成
[コンテナレジストリ](https://secure.sakura.ad.jp/cloud/iaas/#!/appliance/containerregistry/)で追加を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/b7f520a5-8c3a-4a7d-a446-1dd512488bd5.png)

名前とコンテナレジストリ名を任意の文字列を入れて作成する。
公開設定は非公開でOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/ed618c47-5716-4a9f-a9e9-f266b63c2ff1.png)

#### ユーザ作成
「ユーザ」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/5475c180-fbcd-427f-afa3-ad3d4ed9307d.png)
任意のユーザ名、パスワードで作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/df08fd27-453c-463e-afc2-54a3dfef0800.png)

#### イメージPush
[マニュアルページ](https://manual.sakura.ad.jp/cloud/appliance/container-registry/index.html)がありますので、こちらを見ながら進めていきます。
```bash
docker tag sakura_apprun:latest <レジストリ名>.sakuracr.jp/sakura_apprun:latest
docker login <レジストリ名>.sakuracr.jp
# Username: [ユーザ名] ←　先ほど作成したユーザ名
# Password: [パスワード] ←　先ほど作成したユーザのパスワード
# Login Succeeded
docker push <レジストリ名>.sakuracr.jp/sakura_apprun:latest
```

### AppRunへデプロイ
#### プロジェクト作成
[AppRunコントロールパネル](https://secure.sakura.ad.jp/apprun/applications)でアプリケーション作成を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/36f94235-8879-4114-8652-aae786b113e7.png)

以下のように入力します。
ポート設定：5000（gunicornのため）
コンテナイメージ：<先ほど作成したコンテナ名>.sakuracr.jp/<コンテナイメージ名>:latest
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/9c7095a5-fe8b-4e24-ae21-13f985532b30.png)

ユーザ名とパスワードはコンテナレジストリのユーザ情報を使用してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/28d8ea23-fa51-4ca6-9de8-4c65643bd544.png)

最近、ログとメトリクスがサポートされましたので、せっかくなのでONにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/b862e129-b084-4888-b82d-860b9e047d23.png)

## 動作確認
しばらく待つと「正常」と表示されるので、発行されたURLにアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/8e685ede-3d2b-4154-bdbf-3980a981a24d.png)

Hello Worldが表示されればOKです！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/27da74ee-7398-4f9c-a1fb-7ead2aa47fc0.png)

メトリクスタブを見ると、CPU使用率はレイテンシーなどが見れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/2decde88-c3de-412d-984b-4873c83f552a.png)

ログタブを見ると、コンテナ内のログが記録されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/5d61695d-28ac-4e52-9ce7-3e87f82f6152.png)
もしもコンテナが起動しなかったり、ステータスが正常になっていなかったりしたらこのログを見ると原因特定が出来そうです。

## 感想
かなりお手軽に構築できました！

最小サービス数は今のところ0固定のようで、一定時間たつと内部のインスタンスが終了する挙動となっておりますので、アクセス数の低いサイトですと毎回起動レイテンシーが発生します。
1以上にできれば常時稼働が可能になりますので、Webサービスとしても十分商用利用可能ですね。

また、独自ドメインも非対応とのことで、
`https://app-XXXXXXXXXXXXXXXXXXXXXXX.ingress.apprun.sakura.ne.jp`でしかアクセスできませんが、こちらも今後に期待です！

とはいえβ版でここまでお手軽かつ安定しているのは非常に素晴らしいと思います。国産クラウドどんどん盛り上がってほしいですね。

（余談）
さくらのクラウド全般に言えることですが、AWSやGCPのように各サービスにアイコンがあると、
全体図書くときに便利なので是非欲しいです！
※AppRunには以下のようなアイコンがあるようです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112783/94974ddf-1bea-419e-9a0c-3676025e66cf.png)



以上