フォーム読み込み中
前編の記事「Alibaba Cloudからコンテナ化したアプリケーションをデプロイするだけのフルマネージドコンピューティングSAEが登場したので紹介する」で、Alibaba Cloud SAE ( Serverless App Engine )プロダクトサービスを紹介しましたが、本記事では、SAEによる簡単なデプロイ手順を紹介します。
試しに超簡単なコンテナアプリケーションをデプロイしてみます。
SAEはどんなアプリケーション・サービスのコードでも対応しているため、Google CloudのCloud Runで実際に動けるサンプルコードを使って試します。もちろんAWS App RunnerやAzure Container Appsのコードでも良いですが、今回はクイックなDeploy用として、Google Cloudのドキュメントのコードを拝借しています。
<参考>
Cloud Run に Python サービスをデプロイする
Azure Container App Hello world sample
コードは次の通りです。内容としては、Flaskを使って、ブラウザにPublic IPアドレスを入力したら、「Hello World!」と返却される簡易プログラミングです。
全てローカルのpython_hello_worldフォルダにて格納しています。
python_hello_world/app.py
import os
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
name = os.environ.get("NAME", "World")
return "Hello {}!".format(name)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
python_hello_world/Dockerfile
FROM python:3.11-slim
ENV PYTHONUNBUFFERED True
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
RUN pip install Flask gunicorn
CMD exec gunicorn --bind 0.0.0.0:8080 --workers 1 --threads 8 --timeout 0 main:app
python_hello_world/.dockerignore
Dockerfile
README.md
*.pyc
*.pyo
*.pyd
__pycache__
.pytest_cache
SAEコンソール画面の「Create Application」ボタンから新たにアプリケーション・サービスを作ります。
アプリケーション・サービスの名前を入れます。
次はRepositoryを作成します。Repositoryはソースコードやディレクトリ構成を管理保持するためのシステムのことです。
コンテナレジストリの諸元ソースを選定します。今回はローカルにPythonコードを置いているため、Local Repositoryを選定します。
SAEコンソール画面にて、コマンド操作指示が表示されるので、この流れに沿って操作します。
内容としては、ローカルにあるソースコードをDockerコンテナイメージファイルとしてRegistoryへ上げ、それをSAEへ反映する流れです。
コマンド操作が完了し、何事も問題なければ、SAEコンソール画面にてImage Tagが追加登録されています。このImageはローカルのソースコードをDockerコンテナ化したものです。
このImageを使って、アプリケーションを作成します。まずはNamespaces画面から、Namespacesを新たに作成します。Namespacesはアプリケーション・サービスをテスト環境・ステージング環境・運用環境などの様々なRuntime環境を論理的に分離するために使用します。もし分離する必要が無い場合は、Default namespaceを選択します。今回はquickstartという名前にしています。
Namespacesができたら、Application画面へ遷移し、新規でApplicationを作成します。
アプリケーションをデプロイします。
デプロイ完了。
作業開始からデプロイ完了時間をみると、ここまでの作業で5分もかからないです。ソースコードを含めた、アプリケーションに必要なファイル作成 ⇒ コンテナイメージビルド ⇒ Namespaces作成 ⇒ デプロイと、超簡単に構築できるのはクラウドサービスとしての恩恵を感じます。
著者はAlibaba Cloud SAEをいじる前に、AWS App Runner、Google Cloud Runをそれぞれ試しています。それぞれの所感を述べると次の通りです。検証条件や環境など全てがApple-to-appleではないため、厳密に比較調査した結果ではありませんし、あくまでも個人的な操作による所感として参考に頂ければ幸いです。
なお、Azure Conainer Appsは業務上触れる機会がなかなかなかったため、いずれは試そうとは思います。
Alibaba Cloud SAE
AWS App Runner
Google Cloud Run
Alibaba Cloud SAEはインフラストラクチャの管理に時間を費やすことなく、純粋にアプリケーション・サービスの開発に集中できます。SAEのサービスコンセントである「アプリケーションのためのサービス」を実現しているサービスが国際サイトに登場したことにより、Alibaba Cloudを利活用する開発者にとっては、より簡単に、スケーラブルで信頼性の高いアプリケーション・サービスを迅速にデプロイ、運用することができます。これはクラウドサービスへの全体的なアプローチとして大きな進歩と機会を得ることができるのではないでしょうか。
一方で、SAEは上述通り幅広いシナリオやケイパビリティを持つ一方、複雑なDockerfile構成を簡潔化してくれるPaketo Buildpackには対応しておらず、加えてGoogle Cloud Runのみ対応できているマルチコンテナはまだ対応していないこともあり、著者としてはSAEとしてどこまで出来るか要検証したいところなので、後日SAEに関する記事を続投する予定です。
条件に該当するページがございません