Azure Real-World Cloud Apps の構築

作成者 : Rick AndersonTom Dykstra

Fix It プロジェクトのダウンロード または 電子書籍のダウンロード

この電子書籍では、実際のクラウド ソリューションを構築するためのパターンベースのアプローチについて説明します。 このパターンは、開発プロセスだけでなく、アーキテクチャとコーディングプラクティスにも適用されます。

このコンテンツは、Scott Guthrie が開発したプレゼンテーションに基づいており、2013 年 6 月のノルウェー開発者会議 (NDC) (パート 1パート 2)、および 2013 年 9 月の Microsoft Tech Ed Australia で彼によって配信されました。 他の多くのユーザー は、コンテンツをビデオから書き込みフォームに切り替えながら、コンテンツを更新して強化しました。

対象読者

クラウド向けの開発に関心がある開発者、クラウドへの移行を検討している開発者、またはクラウド開発を初めて使用する開発者は、ここで知る必要がある最も重要な概念とプラクティスの簡潔な概要を確認できます。 概念を具体的な例で示し、各章は他のリソースにリンクして詳細な情報を得ます。 例と追加のリソースへのリンクは、Microsoft のフレームワークとサービス向けですが、説明されている原則は他の Web 開発フレームワークやクラウド環境にも適用されます。

既にクラウド向けに開発している開発者は、ここでアイデアを見つけて、より成功に導くかもしれません。 シリーズの各章は個別に読むことができるため、関心のあるトピックを選択して選択できます。

Azure プレゼンテーションで Scott Guthrie の Building Real World Cloud Apps を 視聴し、詳細と更新された情報が必要な方は、こちらを参照してください。

クラウド開発パターン

この電子書籍では、クラウド開発に推奨される 13 のパターンについて説明します。 "Pattern" は、クラウド アプリの開発、設計、コーディングに最も適した方法を意味するために、広い意味でここで使用されます。 これらは、あなたがそれらに従うならば、あなたが「成功の穴に落ちる」のに役立つ重要なパターンです。

  • すべてを自動化します

    • スクリプトを使用して効率を最大化し、繰り返しのプロセスでエラーを最小限に抑えます。
    • デモ: Azure 管理スクリプト。
  • ソース管理

    • DevOps ワークフローを容易にするために、ソース管理で分岐構造を設定します。
    • デモ: ソース管理にスクリプトを追加します。
    • デモ: 機密データをソース管理から除外します。
    • デモ: Visual Studio で Git を使用します。
  • 継続的インテグレーションと継続的デリバリー

    • 各ソース管理チェックを使用してビルドとデプロイを自動化します。
  • Web 開発のベスト プラクティス

    • Web 層をステートレスに保ちます。
    • デモ: Azure App ServiceのWeb Appsでのスケーリングと自動スケーリング。
    • セッションの状態を避けます。
    • CDN が使用できない場合は、フォールバックで CDN を使用します。
    • 非同期プログラミング モデルを使用します。
    • デモ: ASP.NET MVC と Entity Framework での非同期。
  • シングル サインオン

    • Azure Active Directory の概要。
    • デモ: Azure Active Directory を使用する ASP.NET アプリを作成します。
  • データ ストレージ オプション

    • データ ストアの種類。
    • 適切なデータ ストアを選択する方法。
    • デモ: データベースAzure SQLします。
  • データパーティション分割戦略

    • リレーショナル データベースのスケーリングを容易にするために、データを垂直方向、水平方向、またはその両方にパーティション分割します。
  • 非構造化 BLOB ストレージ

    • BLOB サービスを使用してクラウドにファイルを格納します。
    • デモ: Fix It アプリで BLOB ストレージを使用する。
  • 障害を生き残るための設計

    • エラーの種類。
    • 失敗のスコープ。
    • SLA について。
  • 監視とテレメトリ

    • テレメトリ アプリを購入し、アプリをインストルメント化する独自のコードを記述する必要がある理由。
    • デモ: New Relic for Azure
    • デモ: Fix It アプリでコードをログに記録します。
    • デモ: Fix It アプリでの依存関係の挿入。
    • デモ: Azure での組み込みのログ記録のサポート。
  • 一時的な障害処理

    • スマート再試行/バックオフ ロジックを使用して、一時的な障害の影響を軽減します。
    • デモ: Entity Framework 6 での再試行/バックオフ。
  • 分散キャッシュ

    • 分散キャッシュを使用してスケーラビリティを向上させ、データベース トランザクション コストを削減します。
  • キュー中心の作業パターン

    • Web 層と worker 層を疎結合することで、高可用性を実現し、スケーラビリティを向上させます。
    • デモ: Fix It アプリの Azure ストレージ キュー。
  • その他のクラウド アプリのパターンとガイダンス

  • 付録:Fix It サンプル アプリケーション

    • 既知の問題
    • 推奨する運用方法
    • ダウンロード、ビルド、実行、デプロイを行う方法。

これらのパターンはすべてのクラウド環境に適用されますが、Visual Studio、Team Foundation Service、ASP.NET、Azure などの Microsoft のテクノロジとサービスに基づく例を使用して説明します。

この章の残りの部分では、Fix It サンプル アプリケーションと、Fix It アプリが実行されるクラウド環境Azure App Service Web Appsについて説明します。

Fix it サンプル アプリケーション

この電子書籍に示されているスクリーン ショットとコード例のほとんどは、 最初に Scott Guthrie によって開発された Fix It アプリに基づいて、推奨されるクラウド アプリの開発パターンとプラクティスを示しています。

It アプリのホーム ページを修正する

サンプル アプリは、単純な作業項目のチケット作成システムです。 修正が必要な場合は、チケットを作成して他のユーザーに割り当てます。他のユーザーはログインして、割り当てられたチケットを確認し、作業が完了したときにチケットを完了済みとしてマークすることができます。

これは、標準の Visual Studio Web プロジェクトです。 これは、ASP.NET MVC 上に構築され、SQL Server データベースを使用します。 IIS Expressでローカルに実行でき、クラウドで実行するために Azure Web サイトにデプロイできます。 ログインには、フォーム認証とローカル データベースを使用するか、Google などのソーシャル プロバイダーを使用します。 (後で、Active Directory 組織アカウントでログインする方法も示します)。

[ログイン] ページ

ログインしたら、チケットを作成し、他のユーザーに割り当てて、修正したい内容の画像をアップロードできます。

Fix It タスクを作成する

修正タスクが作成されました

作成した作業項目の進行状況を追跡したり、割り当てられたチケットを確認したり、チケットの詳細を表示したり、アイテムを完了としてマークしたりできます。

これは機能の観点から見ると非常に単純なアプリですが、何百万人ものユーザーにスケーリングし、データベースの障害や接続終了などに対する回復性を持たれるように構築する方法について説明します。 また、自動化されたアジャイル開発ワークフローを作成する方法についても説明します。これにより、開発サイクルを効率的かつ迅速に繰り返すことで、簡単に開始し、アプリの改善と改善を実現できます。

Azure App Service の Web アプリ

Fix It アプリケーションに使用されるクラウド環境は、Web サイトと呼ばれる Azure のサービスです。 このサービスは、VM を作成したり、更新したり、IIS をインストールして構成したりしなくても、Azure で独自の Web アプリをホストできる方法です。お客様のサイトを VM でホストし、バックアップと回復などのサービスを自動的に提供します。 Web サイト サービスは、ASP.NET、Node.js、PHP、Python で動作します。 Visual Studio、Web Deploy、FTP、Git、または TFS を使用して、非常に迅速にデプロイできます。 通常、デプロイを開始してからインターネット経由で更新プログラムを利用できるようになるまでの間は数秒です。 始めるのは自由です。トラフィックの増加に合わせてスケールアップできます。

バックグラウンドで、Azure App ServiceのWeb Appsには、独自の VM で IIS を使用して Web サイトをホストする場合に自分で構築する必要がある多くのアーキテクチャ コンポーネントと機能が用意されています。 1 つのコンポーネントは、IIS を自動的に構成し、サイトを実行する VM の数だけアプリケーションをインストールする展開エンドポイントです。

デプロイ サービス

ユーザーが Web サイトにアクセスしても、IIS VM に直接ヒットせず、 アプリケーション要求ルーティング (ARR) ロード バランサーを経由します。 これらは独自のサーバーで使用できますが、ここでの利点は、自動的に設定されていることです。 セッション アフィニティ、IIS のキューの深さ、各マシンの CPU 使用率などの要因を考慮したスマート ヒューリスティックを使用して、Web サイトをホストする VM にトラフィックを転送します。

ARR ロード バランサー

マシンがダウンした場合、Azure は自動的にローテーションからマシンをプルし、新しい VM インスタンスをスピンアップし、新しいインスタンスへのトラフィックの送信を開始します。すべて、アプリケーションのダウンタイムはありません。

マシン障害からの自動回復

これはすべて自動的に行われます。 必要なのは、web サイトを作成し、Windows PowerShell、Visual Studio、または Azure 管理ポータルを使用してアプリケーションをデプロイすることです。

Visual Studio で Web アプリケーションを作成して Azure Web サイトにデプロイする方法を示す簡単で簡単なステップ バイ ステップ チュートリアルについては、「 Azure と ASP.NET の概要」を参照してください。

まとめ

この概要では、本書で取り上げるトピックの一覧、サンプル アプリケーションのスクリーンショット、およびクラウド環境でのWeb Appsの概要Azure App Service説明しました。 および クラウドでアプリを開発する大きな利点の 1 つは、テスト環境の作成やコードのデプロイなど、反復的な開発タスクを簡単に自動化できる点です。 これを行う方法は、 次の章のテーマです。

リソース

この章で説明するトピックの詳細については、次のリソースを参照してください。

ドキュメント

  • Azure App ServiceでWeb Appsします。 Web Appsに関する Azure ドキュメントのポータル ページ。
  • Web Apps、Cloud Services、VM: どれを使用するか この章に示すように WAWS は、Azure で Web アプリを実行できる 3 つの方法のうちの 1 つに過ぎません。 この記事では、3 つの方法の違いについて説明し、シナリオに適した方法を選択する方法に関するガイダンスを提供します。 Web サイトと同様に、Cloud Servicesは Azure の PaaS 機能です。 VM は IaaS 機能です。 PaaS と IaaS の詳細については、「 データ オプション 」の章を参照してください。

ビデオ: