フォーム読み込み中
2023年8月4日掲載
クラウドサービスの登場により、ユーザはWebブラウザにあるコンソールをポチポチ操作するだけで、IaaSなどの仮想コンピューティング環境を立ち上げ、サービスを構築することができます。
一方、ECS(Elastic Compute Service)のような仮想コンピューティングの場合、OSアップデートや必要なミドルウェア導入、セキュリティ対策等サーバを都度管理や、営業時間帯はStop操作をしないと課金が発生してしまう、急激なトラフィック増減に応じてSLBやAutoScaleの調整、アプリケーション・サービスのアップデートのためのサービス断、デプロイ作業のために複雑な設定など、様々な対応が必要ということもあり、運用が時々ツラいと感じることもあります。ただ単純に、アプリケーション開発に集中したいので、サーバを管理したくないことはありませんか?著者もかつてはそうでした。
Alibaba Cloudから、こういった問題を解消してくれる新サービス「Serverless App Engine(SAE)」が登場したので、今回はSAEを紹介します。
Alibaba Cloud Serverless App Engine(SAE)はコンテナイメージをビルド、実行するだけで、後はリソースレイヤー(サーバ、ネットワーク)、コンテナレイヤー(k8sなど)を意識せずに管理・運用できるフルマネージド型サーバレスプラットフォームです。開発者はコンテナ化したアプリケーションを準備するだけで、SAEが自動ビルドおよびスケーリング、リクエストに応じて実行できるため、開発者はアプリケーション開発のみに集中することができます。
・フルマネージド型環境
SAEはサーバのプロビジョニング、スケーリング、バッチ適用などの往来のインフラストラクチャ管理を自動化してくれるため、開発者はIaaSら仮想コンピューティングの運用を行う必要はなくなります。
例えば、開発者はアプリケーションとして開発したコードをZIPパッケージ、JARファイル、WARファイルもしくはイメージファイル(パッケージ化したコンテナ)としてSAEにデプロイするだけで、あとはHTTPリクエスト経由でアプリケーションを呼び出すことが出来ます。詳細は後述しますが、Alibaba Cloud SAEはGoogle CloudのCloud RunやAmazon Web ServiceのAWS App Runner、Microsoft AzureのContainer Appsと同じサーバレス型PaaS製品ですので、Cloud RunやApp Runnerで開発し運用したコードをそのままSAEでデプロイすることができます。
・自動スケーリング
SAEはユーザのワークロード(トラフィック増減)やCPU/メモリ使用率などに応じて、自動的にスケーリングすることができます。手動スケーリングや、カスタマイズしたスケーリングもできます。例えば営業時間外など、ユーザのワークロードが無いときはアプリケーションをスケールダウンしコストを抑制することができます。
・各種プログラミング言語対応
SAEはFunctionComputeのようなサーバレスとしての一般的なメリット(インフラストラクチャの管理が不要、従量課金、容易に自動拡張できる)を得られるだけでなく、さまざまなプログラミング言語、ライブラリ、システムバイナリをサポートしています。JAVA、PHP、Python、Nodejsなどのプログラミング言語や、プログラミングをパッケージ化したJAR、WAR、ZIP、イメージからSAEへ直接かつシームレスにデプロイすることができます。FaaSのFunctionComputeの場合は関数トリガーベースなので、例えばECSコンピューティングで作ったアプリケーションを移植する際はコード改修が必要ですが、SAEは改修が不要というのは大きいです。
・各アプリケーション開発プラットフォーム対応
SAEはサービスやアプリケーション基盤となる各種フレームワーク、マイクロサービス、Spring Cloud、Dubbo、HSFアプリケーション、DevOps製品を統合しているため、現在お持ちのアプリケーション・サービスのコードを変更することなくそのままSAEへ移植、デプロイすることが出来ます。逆に新規サービス開発でマイクロサービスとして自動デプロイすることもできます。
マイクロサービスだと運用や負荷監視が非常に大変であることや、Google Cloud Cloud Runなど類似サービスでも移植に伴うコード改修が必要なこと、機能ごとの責任範囲の整理やネットワーク分離管理は大変なのに、SAEに全て委ねられるのは普通に便利と思います。
・ダウンタイムなしのアプリケーションライフサイクル管理
SAEはマイクロサービスアーキテクチャとサーバレスアーキテクチャを組み合わせたKubernetesに基づいて開発されており、段階的リリースやカナリアリリースなど様々なリリースポリシーを提供しています。そのため、ダウンタイムを起こすことなく、サービスのアップデートが行えます。
リリースしたそれぞれのバージョンは全て管理されているため、過去バージョンへロールバックすることもできます。
・学習コストゼロを支える統合UI
SAEはコンソール画面にて簡単なUIインターフェースを備えており、サービス運用に必要なインフラサービスとして、ロードバランサのSLB、LogService、オブジェクトストレージ、NAS、ARMSなどを統合しています。例えばKubernetesやマイクロサービス、上述通りのAlibaba Cloud製品やDevOps製品に対する知識がなくても、SAEコンソール画面のUIインターフェース操作だけで、専門用語知らずでも気軽に利用することができます。
・Observabilityによる監視・モニタリング
SAEはCloudMonitorやApplication Real-Time Monitoring Service (ARMS) によるアプリケーション監視をサポートしています。CPUやメモリ使用率、ネットワークトラフィックなどIaaSとしての基本的な負荷監視から、アプリケーション・サービスの応答率・ガページコレクション(GC)のイベント数、SlowQuery、HTTPステータスコード、アプリケーションサービスエラー数など高度な負荷監視をすることができます。
・マイクロサービス・アーキテクチャのサポート
マイクロサービスは基本的に分散システムであり、複数のサービスがネットワーク越しに連携して動作するため、分散システム特有のさまざまな問題を扱うことから、マイクロサービス構築・運用は色々チャレンジングな領域です。しかしSAEはSpring Cloud/Dubboなどのマイクロサービス・アーキテクチャを完全にサポートしているため、既存のマイクロサービスからの移植、もしくは新規でマイクロサービスを素早くデプロイし、運用することができます。
・Terraform
Terraformは ITインフラストラクチャをコードベースで管理・運用することができるオーケストレーションツールです。SAEはTerraformを使用してサービスの構成リソースを管理および保守することができます。例えば一度作ったサービス・リソースをTerraformへExportし、他のアカウント、もしくは他のリージョンにてTerraform経由でデプロイすることもできます。
・まとめ
SAEを使用することで、複雑で対応に時間がかかる開発作業とは対照的に、慣れた言語によるコードやDevOpsツールによるサービス、Spring Cloud/Dubboなどのマイクロサービス、コンテナやパッケージ化したファイルを素早くデプロイし、ユーザのワークロードに応じて自動スケーリングするWebサービスとして提供することができます。
以下、SAEによるイメージが少しでも伝わりやすいように、As-Is、To-Beをいらすとやで書いてみましたので、参考に頂ければ幸いです。
SAE事例:マイクロサービス
サーバレスの概念は2012年に初めて登場し、かれこれ10年以上時間とともに進化を続けています。その結果、様々なベンダがFaaS、PaaSという形でサービスを提供しています。
| FaaS | PaaS | |
|---|---|---|
Alibaba Cloud | Function Compute | SAE |
Amazon Web Service | Lambda | App Runner |
Microsoft Azure | Functions | Container Apps |
Google Cloud | Cloud Funtion | Cloud Run |
実は、パブリッククラウドのサーバレス製品としてPaaSが一番先に登場したのはAlibaba CloudのSAEです。2018年にSAE バージョン1.0を中国サイトのみ展開していました。そこから顧客フィードバックを含め様々な改修や改良を積み重ね、2023年今年国際サイトにて、SAE バージョン2.0として日本リージョンにもリリースしています。著者は2019年に登場したGoogle Cloud の Cloud Run が PaaS型サーバレス製品としてどのクラウドサービスより一番先に登場していたと思っていたので、この経緯を知ったときはとても意外で驚きました。Alibabaはそれだけサーバレスに力入れており、サーバレスの領域でもトップレベルなのが窺えます。
このSAEがFaaSのFunction Computeとは別に誕生した経緯としては、お客さまの声を含め以下のモチベーションがあります。
既存のアプリケーション(特にLong Runタイプのアプリケーション)を変換してServerlessの配当を享受したいが、過大な変換コストを発生させたくはない。
コンテナによる変換を行い、コンテナによる配当を享受したいが、学習や試行錯誤のコストが高いため、踏み切れない。
SAEは、Javaマイクロサービスアーキテクチャに関連する多くのコンポーネントと機能を統合し、研究開発および運用保守の効率をさらに向上させたい。
こういった背景から、Serverless App Engine(SAE)が登場しました。
SAEはアプリケーションやサービスの基礎となるIaaS、ECS仮想コンピューティングとしての運用を全てカバーしてくれるため、様々なシナリオ展開ができます。
<参考>
SAEはアプリケーション・サービスとして幅広いシナリオをカバーできるため、SAEによる様々な事例が多く出回っています。ここで幾つか事例を紹介します。
Timing アプリ(オンライン教育機関)
Timing アプリはオンライン教育アプリで、ユーザのワークロード増加に伴うインスタンスのサイジング変更やコスト削減の課題から、ECS仮想コンピューティングを全てSAEへスライドすることで、コスト削減やO&M運用管理の排除、ワークロードに応じた秒間レベルのスケーリング処理を実現しています。
<参考>
The Timing App and the Practice of Online Education in the Serverless Field
上記以外にも、マイクロサービス化した事例も沢山あります。
Baifu Travel(オンライン旅行取引プラットフォーム)
サービスの規模が肥大化するにつれて、マイクロサービスとしてのO&Mら運用が難しい課題に対し、SAEはマイクロサービスをそのまま管理運用しながら、リソースを効率よく処理してくれるため、総じて運用コストやランニングコストを大幅に削減できています。
2023年5月現在、Alibaba Cloud国際サイトのSAEは日本リージョンおよびシンガポールリージョンをサポートしています。
SAEの料金は分単位で集計され、CPUとメモリを使った分だけ請求されます。日本リージョンだと、1CPU 1分ごとにUSD 0.0007055 per core-minute、1メモリ 1分ごとにUSD 0.0001764 per GiB-minuteの課金が発生します。
例えば、2023/5/1-2023/5/30までの間で、毎日営業時間帯の9:00-17:45は 2-core CPU, 4-GiB memory、営業時間外の17:46-翌日の8:59は 1-core CPU, 1-GiB memoryの使用だった場合、
これが30日間分なので、
それぞれの時間帯でのCPUとMemoryのリソース使用量を計算します。
<営業時間帯>
CPUリソース使用量: 2-core * 17,550分 = 35,100 core-minute
Memoryリソース使用量: 4 GiB * 17,550分 = 70,200 GiB-minute
<営業時間外>
CPUリソース使用量: 1-core * 27,420分 = 27,420 core-minute
Memoryリソース使用量: 1 GiB * 27420分 = 27,420 GiB-minute
これを課金に換算すると、
<営業時間帯>
CPU使用料金: 35,100 core-minute * $0.0007055/core-minute = $24.763 USD/Month
Memory使用料金: 70,200 GiB-minute * $0.0001764/GiB-minute = $12.38 USD/Month
<営業時間外>
CPU使用料金: 27420 core-minute * $0.0007055/core-minute = $19.34 USD/Month
Memory使用料金: 27420 GiB-minute * $0.0001764/GiB-minute = $4.83 USD/Month
これらを全て合計すると、2023/5/1-2023/5/30までの料金は$ 61.31 USD/Monthになります。
もちろん、営業時間外にサービスを停止することもできます。その場合、SLBなどのリソースを全削除になるため(アプリケーション・サービスのソースコードらリソースはSAE上のリポジトリに残ってる状態)、営業時間帯のみの料金で $ 37.14 USD/Monthになります。通常のECSインスタンスだと、2core 8GiB 1ヵ月分Subscriptionによる割引購入しても最安で月73.730USDなので、ECSインスタンスを購入するよりずっと安いですね。
※サービスを停止した場合、SLBなどのNWリソースが削除されるため、PublicIPアドレスを維持したい場合は、EIPアタッチもしくはNAT Gatewayと組み合わせるとよいです。
<参考>
SAEによる具体的な実際の構築、検証については、後編記事「Alibaba Cloud SAEでコンテナ化したアプリケーションをさくっとデプロイする」にてまとめていますので、ぜひご覧ください。
条件に該当するページがございません