The Microsoft Azure cloud provides many services for almost every scenario that may need you may need. これらのサービスを IaaS、PaaS、SaaS などのクラウド コンピューティング タイプに分類して、コントロールと責任の度合いと、重要なものの構築に費やせる時間を判断することができます。 これらは、実行方法について多くの制御を行うことができますが、OS、アンチウイルス、ロードバランシングなどの責任を負うことも必要です。
- PaaS (Platform-as-a-Service)
- SaaS (Software-as-a-Service)
- Top Azure PaaS Services
- Mobile Apps
- Logic Apps
- Azure Functions
- いつ何を使うか
- App Services shared features
- Deploying Services
- Azure Service Bus
- Azure Storage
- Blob Storage
- Table Storage
- Queue Storage
- File Storage
- Disk Storage
- Azure Cosmos DB
- Azure Cognitive Services
- Azure CDN
- Azure Redis Cache
- Azure API Management
- まとめ
PaaS (Platform-as-a-Service)
PaaSサービスの例としては、App Services、Azure Search、Azure CDNが挙げられます。 OSはもちろん、サーバーも気にすることなく、アプリケーションを動かすことができます。 Azure Functionsのような一部のサービスでは自動的に行われますが、スケーリングのような一部のサーバー構成には責任を持ちます。
SaaS (Software-as-a-Service)
SaaSサービスの例としては、Azure IoT SuiteやOffice 365などがあります。 SaaS は最も高い抽象化レベルであり、アプリケーションを使用するだけで、構築する必要さえありません。 構築する必要もなく、設定するだけです。 OSの心配も、アプリのスケーリングも不要です。 このため、ビジネス価値に取り組むことができますが、アプリケーションをほとんど制御できません。
ソフトウェア開発者にとって、PaaSは使用するのに最適なクラウドコンピューティングタイプです。 PaaS は、ソフトウェア開発者にとって、使用するのに最適なクラウドコンピューティングのタイプです。 OS のパッチやロード バランシングを気にすることなく、物事を実行できます。
Azureは非常に強力なPaaSを提供しており、これは開発者にとって非常に魅力的なものです。 この記事では、アプリケーションをより良くすることができる開発者向けのトップAzure PaaSサービスについて説明します。
Top Azure PaaS Services
コアAzure PaaSサービスの1つは、Azure App Servicesです。 Azure App Servicesは複数のサービスタイプを提供し、それぞれが特定のユースケースのためのアプリケーションやビジネスロジックをホスティングするように設計されています。 さらに、App Service のタイプは、自動スケーリング、認証と承認、およびカスタムドメインと SSL などの共通の機能を共有します。
App Service のタイプについて説明します。 Web Apps は IIS や Tomcat のような Web Server を抽象化したもので、.NET、PHP、Python、Node.js、Java などで書かれたアプリケーションを実行できます。 Webアプリケーションはセットアップが非常に簡単で、デフォルトで99.95%の時間帯で利用できるなど、すぐに多くのメリットを得ることができます。 ダウンタイムを心配する必要はありません。
Mobile Apps
Azureは、モバイルアプリケーションを作成するときにも役に立ちます。 Azure App Services Mobile Apps で、モバイル アプリケーションのバックエンドをホストできます。 IOS、Android、Windows、Xamarin.IOS、Xamarin.Android、および Xamarin.Forms で利用可能な Azure Mobile Apps 用 SDK を使用して、このバックエンドに簡単に接続できます。
モバイル バックエンドは、いくつかのユニークな利点を提供します。 その 1 つは、オフラインの同期を行う機能です。 これにより、ユーザーはオフラインの場合でもアプリでの作業を継続し、再びオンラインになったときにバックエンドにデータを同期することができます。 もう1つの機能は、プッシュ通知です。 これにより、ユーザーのデバイスにアプリに関する通知を送ることができます。 さらに、モバイルアプリには、自動スケーリングや高可用性など、Webアプリと同じ機能がすべてあります。
Logic Apps
Azure App Service Logic AppsはWebアプリやモバイルアプリと異なり、その中でアプリケーションをホストせず、その中でビジネスロジックをオーケストレーションするものです。 Logic Appは、設定するだけでビジネスプロセスを自動化する方法だと考えてください。
LogicAppはトリガーによって開始されます。 これは、時間(15分ごと)またはキュー上の新しいメッセージのような外部ソースにすることができます。 トリガーは、ワークフローに値(キューのメッセージの内容など)を渡し、Logic App 全体で使用することができます。 Logic App の残りのフローは、Office365 や Twitter、または独自の API などのサード パーティ サービスへの API であるコネクターの呼び出しから構成されます。 これは、基盤となるインフラストラクチャではなく、アプリケーションやロジックに完全に集中できることを意味するため、「サーバーレス」と呼ばれることもあります。
Azure Functions
Azure App Services Function Apps は、1つまたは複数の Azure Functions をホストすることが可能です。
Azure Functions は、スケジュール(15 分ごと)または新しい Blob が Azure Blob Storage に追加されたときのような外部サービスによって、構成可能なタイマーによってトリガーすることが可能です。 トリガーされると、Azure Function内のコードは、追加されたBlobのように、トリガーからの値を使用することができます。 また、Azure Functionに出力バインディングを追加して、配管を書かずに外部サービスに値を出力することができます。
Logic Apps と同様に、Azure Functions は「サーバーレス」です。なぜなら、自動的にスケールし、実行したときだけ料金を支払うからです。 WebJobs は App Services の一部であり、Web App や Mobile App のような App Service 内で実行されます。
WebJobsは、セットアップに配管コードを必要としない外部ソースによってトリガーされる小さなコード片を実行するという点で、Azure Functionsと同様に機能します。 WebJobをホストするApp Serviceの料金は、WebJobが実行されるかどうかに関係なく、月額で支払います。
続きを読む Azure FunctionsとAzure WebJobsの比較
いつ何を使うか
では、どのApp Serviceをいつ使うべきでしょうか。 この表が参考になるかもしれません。
Mobile Apps | Logic Apps | Functions | WebJobs | |
Host Web applications and APIs | X | |||
モバイルアプリのホストバックエンド | X | |||
ホストビジネスロジックワークフロー | X | |||
バックグラウンドタスクのホスト | X | |||
自動的にスケールして実行時のみ支払い | X | |||
スケーリングを制御して月額料金を支払う | X | X |
Azure App Services には素晴らしい機能がいくつかあります。 そのため、非常に魅力的な製品となっています。 そのいくつかを紹介します。
- 簡単な認証と承認
- 連続配信
- カスタムドメイン
- ハイブリッド接続
- オンプレミスのリソースに接続できるようになりました。 Web サービスやデータベースなど
(自動) スケーリングと負荷分散
- デプロイメント スロット
- これにより、アプリケーションの新しいバージョンをテストして、ダウンタイムなしに本番環境にデプロイすることが可能です。
- Deployment Slots の詳細はこちら
Deploying Services
新しい Web App または Logic App を作成するのは Azure ポータルから簡単にできますが、本当にデプロイを自動化して、異なる環境で繰り返し、まったく同じ設定を実行できるようにする必要があります。 これを行うには、Visual Studio から、または Visual Studio Team Services のようなサービスを使用して継続的デリバリー パイプラインで展開する Azure Resource Manager (ARM) テンプレートを作成します。
ARM テンプレートには、Web Apps、Azure SQL Database、リソース グループなどのリソースが JSON ドキュメントで記述されています。 Visual Studio で Azure Resource Group プロジェクト テンプレートを使用して作成し、Azure Portal で任意のリソースの [Automation Script] ボタンをクリックすると、インスピレーションを得ることができます。 Azure Event Grid は、任意のソースから任意の宛先にイベントをルーティングできます。
ほとんどすべての Azure サービスは、Azure Event Grid が受信してアプリケーションのトリガーに使用できるイベントを公開できます。 また、独自のアプリケーションやサービスが、Azure Event Gridが他のサービスにルーティングするために使用できるイベントを公開することができます。
Azure Event Gridは自動的にスケーリングし、使用した操作の数だけ支払います。
アプリケーションは、Azure Event Gridにイベントを発行したあらゆるサービスからのイベントをリッスンし、それに反応することができます。
Azure Service Bus
Azureで最も古く、最も使用されている信頼できるサービスの1つが、Azure Service Busです。 これは、複数のサービスから構成されており、特にAzure Service Bus QueueとAzure Service Bus Topicsが有名です。
アプリケーションは、Azure Service Bus Queueにメッセージを配置することができます。 各メッセージは、キューから読み込まれ、1つのアプリケーションによって処理されます。 Azure Service Bus Queue には、重複検出や、処理できないメッセージが移動されるデッドレターサブキューなど、すぐに利用できる高度な機能がいくつかあります。 アプリケーションは Azure Service Bus Topic にメッセージを置くことができ、複数のアプリケーションがメッセージを読み込んで処理できます。 彼らは、彼らが興味を持っている属性を持つメッセージを受け取ります。 彼らはキュー上の’トピック’をサブスクライブする。 Azure Service Bus Topics は、Queue と同じ高度な機能を持っています。
これらの両方のサービスにより、メッセージをキューに入れるアプリケーションと、メッセージを処理するアプリケーションを切り離すことができます。 このパターンにより、処理アプリケーションはユーザを待たせることなく、自身のペースでタスクを処理することができます。 これは、処理に時間がかかり、ユーザーを待たせたくない場合、たとえば、5 分かかる注文要求を処理する場合などに便利です。
Azure Storage
あらゆるアプリケーションにおける基本構成要素は、データ ストレージです。 Azure Storage は、ファイルまたはデータの行のようなデータを格納するための複数のオプションを提供します。 Azure Storage は、ファイルやデータ行のようなデータを保存するための複数のオプションを提供し、すべて比較的安価で、ほぼ無限に、地理的な地域を越えて拡張でき、暗号化や認証などの機能を備えた複数の異なるサービスを提供します。 Azure Storage Accountを立ち上げるだけで、これらすべてをすぐに利用することができます。 ここでは、Azure Storageのさまざまなタイプについて説明します。
Blob Storage
大きなファイル、または「ブロブ」をAzure Blob Storageに保存します。 これらは、VHDファイル、オーディオまたはビデオファイル、またはデータベースのバックアップのようなものになります。
パフォーマンスとコストを決定するBlobストレージの階層を選択できます。 頻繁にアクセスする Blob には、ホット層があります。 クール層は、それほど頻繁にアクセスしない Blob、つまり月に 1 回程度のアクセスに使用します。 そして、アーカイブ層は、ほとんど使わないBlob用です。 アーカイブ層から Blob をリクエストすると、アクセスできるようになるまでに数時間かかることがあります。
Table Storage
Azure Table Storage を使用すると、行と列に半リレーショナル データを保存できます。 これは、ロギングデータなどに最適です。 SQL Server と同様のテーブルにデータを格納しますが、テーブル間にリレーションシップがない分、厳密性は低くなります。 Azure Table Storageは、他のタイプのAzure Storageと同様に、高速で比較的安価です。
Queue Storage
Azure Service Bus Queueのように、後で拾って処理できる小さなメッセージをAzure Storage Queueに保存できます。 これは、Azure Service Bus Queuesと重なるので、ちょっと不思議な提供方法です。 Service Bus Queueには重複検知があり、Storage Queueにはない点が異なる。
File Storage
自分のコンピュータやVMにマウントする追加のハードディスクとして、Azure File Storageを使用できます。 ファイルを移行することで、クラウドを始めるには最適なサービスです。 アプリケーションを自分のハードディスクではなく、Azure File Storageに向けるだけで、アプリケーションに利用させることができます。
Disk Storage
Azure Disk Storageはプレミアム機能で、高いパフォーマンスを発揮し、VMのプライマリハードディスクのようにI/O集中型の作業を行う必要があるときに便利です。 これは、VMにマウントできるスケーラブルで高性能なディスクとして機能します。
Azure Cosmos DB
Azure DocumentDBの新しいバージョンおよび名前は、Azure Cosmos DBです。 Azure Cosmos DBは、クラウドにぴったりなデータベースを提供します。 PaaS サービスとして、Cosmos DB をスピンアップするだけで、すぐに利用することができます。 Azure DocumentDBを使っていた人は、自動的にAzure Cosmos DBを使うことになるのです。
Cosmos DBを特別なものにしている点がいくつかあります。
- SQL、JavaScript、MongoDB、Gremlin、Table Storageなどのさまざまな「API」を使用してプログラミングすることが可能です。 もうデータベースの種類を選ぶ必要はなく、対話の方法を選ぶだけで、あとはCosmos DBにお任せください。 SLAで低レイテンシーも保証しています。
- 地理的なスケーラビリティがすぐに得られます。 世界のどこにデータを置くかを指定するだけで、リアルタイムにレプリケートされます。
Cosmos DBは、非リレーショナルデータやセミリレーショナルデータに最適です。
Azure Cognitive Services
Azure Cognitive Servicesほど、アプリケーションにインテリジェンスを追加することが簡単だったことはありません。 これらは、AIと機械学習を搭載した、ほとんど魔法のような能力を提供するAPIのセットです。 約30のCognitive Servicesがあり、さらに多くのCognitive Servicesが登場する予定です。 例えば、
- Emotion APIは、写真やビデオの顔を分析し、幸せ、悲しみ、嫌悪などの感情を検出します
- Language Understanding Intelligent Service(またはLUIS)は、実際に12以上の言語の文脈を理解することが可能です。 これを使用して、あなたが何を言っているのかを実際に理解するスマートなボットを作成できます。
- Speaker Recognition API は、音声に基づいて話者を識別します。 背景が水と空であるとか、人が着ているジャケットが黒であるなど、画像にある視覚的なコンテンツに関する情報を検出できます。
Cognitive Services はクラウドから使用するだけなので非常に使いやすく、インフラや設定を管理する必要はありません。 これを行うことで、Face API は、たとえば、同僚の名前や年齢を返すことができます。 さらに、コグニティブ サービスは、ユーザーが提供するデータによって、その場で学習します。
認知サービスを使用するには、サインアップ時に取得するサブスクリプション キーで https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect などの API エンドポイントを呼び出し、必要なパラメータ (Face API の場合はイメージのバイト配列など) を入力するだけでよいのです。 これは次のような JSON 応答を返します (スペースを節約するため、いくつかの行は省略されています):
Face detection result:
}, "smile": 0.826, "headPose": { "pitch": 0.0, "roll": -16.9, "yaw": 21.3 }, "gender": "female", "age": 23.8, "facialHair": { "moustache": 0.0, "beard": 0.0, "sideburns": 0.0 }, "glasses": "ReadingGlasses", "makeup": { "eyeMakeup": true, "lipMakeup": true }, "emotion": { "anger": 0.103, "contempt": 0.003, "disgust": 0.038, "fear": 0.003, "happiness": 0.826, "neutral": 0.006, "sadness": 0.001, "surprise": 0.02 }, … }]
この特定のサービスが多くのデータを返していることが出力でわかります。 写真のどこに顔の特徴があるのか、化粧をしているのかどうかまで検知しています。
Azure CDN
Azure CDN にトラフィックをオフロードすることにより、アプリケーションを高速化することができます。 Azure CDN (Content Delivery Network) は、動画、画像、JavaScript、および CSS ファイルのような静的コンテンツのエンドポイントとして機能します。 Azure CDNがこれらのファイルを提供することで、アプリケーションは、より多くのリクエストを処理するためのより多くのリソースを持つ必要がありません。 さらに、Azure CDN は、世界中の Point-of-Presence (PoP) に静的コンテンツをレプリケートするので、ユーザーがいる場所の近くに静的コンテンツを配置し、レイテンシーを制限することができ、パフォーマンスに有利です。
Azure CDN Endpoint を作成して、Azure Storage などのソースにカップリングし、ファイルを Azure Storage にアップロードすると、Azure CDN を使用することができます。 Azure CDNは自動的に世界中のPoPにファイルをレプリケートし、https://custom.azureedge.net/cd/myimag.pngのようなURLでファイルにリンクすることができます。
Azure Redis Cache
アプリケーションを高速化するもう一つの方法は、Azure Redis Cacheを使用してデータをキャッシュすることです。 Azure Redis Cache のようなキャッシュは、データをメモリ内に保持し、データを単純なキー/値形式で格納するためです。 このため、データはディスクから取得する必要がなく、複雑なクエリを実行して取得する必要もないため、より迅速にサービスを提供できます。
Azure Redis Cache はキャッシュ・アズ・ア・サービスを提供し、クラスタリングやジオ・レプリケーションなどの高度な機能を提供します。 これは、人気のあるオープンソースの Redis Cache をベースにしており、現在では Microsoft SLA とエンタープライズ サポートによって支えられています。 Azure Redis Cacheは、Azureにおけるアプリケーションのキャッシュオプションです。
Azure API Management
自分のAPIや使用しているサードパーティのAPIを強化するために、Azure API Managementを使用することができます。 Azure API Managementは、APIと外部との間のゲートウェイとして機能します。 これにより、APIを強化することができます。
API Managementを使用すると、APIのユーザーがサブスクリプションを管理し、アプリケーションをテストするために行くことができるポータルを作成することができます。 このような開発者ポータルの例として、API Management を使用している Cognitive Services の Web サイトがあります:
ユーザーまたはサブスクリプション タイプごとに制限を設定して、API の使用量を制御することが可能です。 これは、たとえば、1 日あたり 10 リクエストまでの無料使用ティアを提供し、それ以上必要な場合は支払いを開始するなど、API を収益化する良い方法です。
さらに、API をより高性能にすることで、API を強化することができます。 API の応答をキャッシュして、データ ソースから計算やデータ合成を行って応答を取得する必要がなくなります。
また、キー、パスワード、証明書、および IP フィルタリングにより API を保護できます。 さらに、API への入力と出力を変換することができます。 たとえば、受信した XML を JSON に変換したり、応答で同じことを行うことができます。
Azure API Management は本当に強力で、自分の API (および API Management を通じて公開するサード パーティ API) に対する制御を強化できます。
まとめ
この記事のサービスは、すべてAzure PaaSサービスの例です。 どれもスピンアップが非常に簡単で、メンテナンスも最小限で済みます。 これらのサービスが提供できる価値は非常に大きく、アプリケーションに簡単に組み込むことができます。
Azure PaaSにより、私たちは重要なものの構築に集中することができます。 Stackify Retrace のようなフルライフサイクル APM ツールを使用して、常にアプリケーションの改善に集中することを忘れないでください。 詳細はこちら。