電通総研 テックブログ

電通総研が運営する技術ブログ

さくらのクラウドでAppRunが正式にリリースされたので動かしてみた

はじめに

エンタープライズ第一本部の佐藤です。

本記事は電通総研 Advent Calendar 2025 13日目の記事です。

さくらのクラウドがアプリケーションの実行基盤となる「AppRun」等の正式なサービスを2025年12月9日から開始しています。

この記事は、AppRunの使用を通じて国産クラウドの現在地を把握してみるのが本旨となります。

AppRun

概要

「AppRun」は、コンテナイメージをもとにアプリケーションを自動デプロイし、スケーリングや運用管理をシームレスに実行できるマネージドサービスです。

引用元:https://www.sakura.ad.jp/corporate/information/newsreleases/2025/12/09/1968222395/

このAppRunのデモの前にさくらのクラウド上にイメージをpushしておく必要があるので、以下の手順を実施しています。

コンテナレジストリのデモ

概要

「コンテナレジストリ」はDockerなどのコンテナエンジンが扱うイメージファイルを保管するレジストリ機能をさくらのクラウド上で提供するサービスです。

引用元:https://manual.sakura.ad.jp/cloud/appliance/container-registry/index.html

イメージの作成

デモで使用するコンテナのイメージを作成します。

今回試すサーバーはgoで以下のように記述しました。

package main

import (
    "fmt"
    "net/http"
    "log"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
        log.Printf("%s %sのリクエストがありました", r.Method, r.URL.Path)
        fmt.Fprintf(w, "こんにちは!さくらのクラウド!")
    })
    http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request){
        log.Printf("%s からヘルスチェック", r.RemoteAddr)
        w.WriteHeader(http.StatusOK)
        fmt.Fprintf(w, "OK")
    })
    log.Println("Starting server on : 30080")
    err := http.ListenAndServe(":30080",nil)
    if err != nil {
        log.Fatal(err)
    }
}

イメージをビルドし、server-demoと名前を付けています。

レジストリの作成

次にこのイメージをpushするレジストリを作成します。

手順通りに作成します。

以下のような画面で作成しました。

📝(余談)アイコンは自分で作成できるのでマニュアルを参考に手書きの実家の犬アイコンを自作しました。

ユーザーの作成

以下の画像のユーザーのタブで新規に作成しました。

ユーザー作成時に指定したユーザー名とパスワードでDockerのログインを実施します。

イメ―ジのpush

次にdockerコマンドでserver-demoイメージにタグを付与します。

docker tag server-demo:latest <レジストリ名>/server-demo:latest

レジストリへのログインを実施します。

コマンドは以下を実施します。

docker login [コンテナレジストリ名]
Username: [ユーザ名]
Password: [パスワード]

タグ付けしたserver-demoイメージをpushします。

docker push <レジストリ名>/server-demo:latest

このイメージがGUIのコンテナレジストリから確認できるのかなと思いましたが、私は見つけられませんでした。

AppRunのデモ

起動の設定

アプリケーションの作成画面で共有型を選択し、起動します。

以下のようにアプリケーションの設定をしました。

コンテナの設定は以下のとおりです。

IPアドレスの指定等も項目でありますが、家のネットワークはIPアドレスが固定できないのでスキップしました。

ログの送信はfluentbit, opentelemetry-collectorを使用するとありましたが、標準/エラー出力はそのままログに記録されるので今回はこれを有効にして確認することにしました。

メトリクスの送信はPrometheus, opentelemetry-collectorが使用できるのですが、検証のための実装が手間だったので省きました。

ログやメトリクスを収集するモニタリングスイートの詳細はhttps://manual.sakura.ad.jp/cloud/appliance/monitoring-suite/index.html を参照してください。

この設定でアプリケーションを作成し、起動を確認してみます。

起動確認

画像のように起動を確認することができました。

ブラウザで公開URLにアクセスしたところレスポンスも表示されました。


ちなみにログでは以下のようになっています。

10秒間隔でヘルスチェックをしていますが、2025-12-15 00:27:11を最後にこれが止まっており、トラフィックがないので最初に設定したゼロスケールが実行されていることが確認できます。

この状態で再度URLにアクセスするとレスポンスが返るまで体感で5~6秒かかりました。

デプロイ戦略

アプリケーションの構成を変更してデプロイから、新たなイメージをデプロイします。

新たなイメージは以下の記述を変えただけです。

fmt.Fprintf(w, "こんにちは!さくらのクラウド!v2")

バージョン情報を確認するとv2が増えました。

この時点ですでに変更済みですが、操作の項目からトラフィック管理を押下し、50%で分配するようにしました。

2回に1回は以下のようになりました。

今回作成したリソースの料金

サービス 料金 補足
コンテナレジストリ 月額220円 ストレージ5GiB/1レジストリ(超過分は1GiBごと22円)
AppRun(共有型/0.5vCPU × 1GiB メモリ) 約5円/1時間 -
モニタリングスイート(ログ) 月額110円 ユーザ領域 ストレージ1GiB/1件

参照:

感想

ベータ版の時から結構良く見られた感想ですが、設定項目が少なくて簡単でした。

ドキュメントが日本語話者が書いた日本語なのも理解しやすさに貢献していると思います。

設定項目が少ないメリットの一方で、それは柔軟性・拡張性とのトレードオフなのでここは手放しに素晴らしいとは言えないですね。

IaC化もTerraform for さくらのクラウド(v2)
で、できます。

個人的にはゼロスケールしてくれるのがいいなと感じており、個人レベルのサービス立ち上げ時にトラフィックがないのにランニングコストだけがかかる問題を解消できそうです。

今回の検証で興味が出てきたので、体系的にサービスの概要をつかめるようにさくらのクラウド検定を受けてみようかなと思います。

受験費用が一般 11,000円(税込)で「さくらのクラウド」クーポン 50,000円分(一般・学生共通)がもらえるのがいいですね。

私たちは一緒に働いてくれる仲間を募集しています!

電通総研 キャリア採用サイト 電通総研 新卒採用サイト

執筆:@sato.yu
レビュー:@miyazawa.hibiki
Shodoで執筆されました