しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

ASP.NET Core アプリケーションに最適なクラウドサービス

この間、お手伝いをしている一休さんでイベントが開催されたので、そこで ASP.NET Core に最適なクラウドサービスについて LT をしてきました。

ASP.NET Core は Linux というか Docker が使えるので、実行環境の選択肢は格段に広がりましたね。

LT の 5 分はやはり短いので、割と駆け足でサクサク紹介していきましたが、既にこのブログで ASP.NET Core アプリケーションをデプロイしたエントリをいくつか書いていたので、ついでにまとめます。

クラスターを必要とするコンテナ系は今回省いてあります。だって世の中はほぼ Kubernetes だもの。

App Service

Windows Server 2012 R2 と IIS で ASP.NET Core アプリケーションをホスティングできます。デプロイ方法は Visual Studio か GitHub などのソース管理から行うのが一般的です。

価格は無料から始めることが出来ますが、例によって CPU 時間とメモリで制約があるので注意。

App Service on Linux

Ubuntu ベースで作られた Docker 環境上に ASP.NET Core アプリケーションをホスティング出来ます。Windows の App Service と同じように Visual Studio と GitHub からデプロイが出来ます。

個人的には Docker Image をビルドしておいて、それを配布する形が良いかと思ってます。

サクッと使いたい時には Visual Studio や GitHub などのソース管理から、スケーリングや環境のカスタマイズが必要な場合には Docker Image を使うみたいな形が最適かもしれません。

Windows 版とは異なり無料プランはないので、最低でも B1 インスタンスの金額がかかります。*1

Elastic Beanstalk (Windows / Linux)

App Service と同じように Windows Server 2012 R2 と Amazon Linux 上の Docker 上で ASP.NET Core アプリケーションをホスティング出来ます。Windows 向けの場合、デプロイは Visual Studio から行えます。

実行環境を柔軟にカスタマイズ出来るのと、App Service とは異なり Server Core を選ぶことが出来るので、省リソースで動かすことが出来ます。

Docker を使う場合は Dockerfile を含めておくと、Beanstalk 上で Docker Image のビルドが行われるのが結構便利です。なので Docker Image をビルドするためのサーバーなどは不要です。

ちゃんと事前にビルドしておいた Docker Image の実行も出来たりと、非常に柔軟に扱えます。

App Engine Flexible Environment (Linux)

Docker を使って ASP.NET Core アプリケーションをホスティング出来ます。他のサービスと異なり Windows Server には対応していないですが、Docker で本番運用可能なので問題ないと考えています。

他のサービスとは異なり、最初からロギングなどが充実しているのが便利です。

同様に Visual Studio から簡単にデプロイすることが出来ます。裏側ではリモートで Docker Image のビルドが行われて、コンテナレジストリにプッシュされた後に実際にデプロイが行われます。

開発者が考えることがほぼないので、非常に簡単にアプリケーションをデプロイできます。

各社それぞれのサービスで思想が異なっていて面白いです。そして全てのサービスに共通して言えることが Visual Studio からデプロイが可能ということです。

*1:プレビュー中は Windows 版の 50% 引きの価格設定