クラウドデザインパターンとは? Azureでは?
クラウドデザインパターンとは?
デザインパターンとは先人たちのノウハウが形式化された設計パターンのことです。このパターンに則って設計すれば課題の解決、あるいは問題が起きにくい設計ができるというものです。クラウドでのサービス提供にはオンプレミス時には発生しなかったクラウド特有の課題が発生します。そういった課題をクラウドデザインパターンで克服することができるのです。ではそのクラウドデザインパターンとはどのようなものがあるのか?Azureの公式サイトを元に紹介します。
Azureに用意されているデザインパターンの8大分野
Azureには下記のデザインパターンの分野があります。
- 可用性
- データ管理
- 設計と実装
- メッセージング
- 管理と監視
- パフォーマンスとスケーラビリティ
- 回復性
- セキュリティー
可用性
可用性(Availability)とはシステムが利用できる能力、すなわち稼働し続けること、稼働率と言えます。稼働率が低ければ利用者はそもそもシステムが利用できないのですから大問題です。設計者は可用性を最大限になるようにしなければいけません。
データ管理
膨大なデータを保存できるのがクラウドの長所の一つといえます。ですが、膨大なデータを快適に利用するには、パフォーマンス、スケーラビリティ、可用性への対策が必要です。これにより様々な場所にデータがまたがって保存されることがあります。このようなデータへの整合性の維持、同期といったことも設計では大変重要です。
設計と実装
設計と実装では一貫性や統一性、保守容易性、再利用性を考慮し、いかにメンテナンスをしやすく設計するかが重要です。
メッセージング
ソフトウェアやノード間のやりとりはパフォーマンスを最大限に発揮できるよう状況に合わせた設計をする必要があります。
管理と監視
クラウドではオンプレミスと違いインフラやオペレーティングシステムを借用します。よって完全に制御することができないため管理と監視の難易度は上がります。そのため管理と監視に使用するための情報のアウトプットや要件をサポートする設計が必要です。
パフォーマンスとスケーラビリティ
パフォーマンスの発揮にはスケーラビリティが重要です。負荷が上がった際にスケーラビリティがないとパフォーマンスが発揮できません。負荷に応じてスケールアウト、インできるような設計が必要です。データ管理やメッセージング等の他の性能にも影響を及ぼします。
回復性
クラウドは共有資源で運用したり様々な機能連携を行う状況が多いでしょう。そのような状況では障害は避けては通れません。その障害から迅速かつ効率的に回復する設計が重要となります。
セキュリティ
クラウドはオンプレミスの外側に存在します。そのため、悪意のある攻撃への対策、アクセス制限による機密データの保護は必須です。
8大分野の詳細の一部紹介
可用性
デプロイ スタンプ
アプリケーションコンポーネントをコピーしてデプロイすることで可用性を高める設計です。
正常性エンドポイント監視
可用性を維持できるようにサービスを監視できる機能をアプリケーションに実装します。
キューベースの負荷標準化
様々なタイミングで送られてくるタスクをキューに格納してそのキューを順次処理していくことで負荷を標準化します。キューがバッファーの役割を果たします。これにより処理が極端に遅くなるということが防げるため可用性を高めることができます。
調整
アプリケーションへのリソースが上限に達した際に、個々のユーザーの要求を制限したり、重要度の低いサービス機能の品質を下げたりすることでサービスの可用性を維持する設計です。
データ管理
コマンドクエリ責務分離パターン
データ管理の読み取り操作と更新操作を別々のモデルにして分離することでパフォーマンスやセキュリティを向上させる設計です。
具体化されたビュー
クエリ対象のデータ形式に余計な情報が入っており、非効率なクエリとなってしまう場合に、一時的な効率的なビューを作成することで効率化を計ります。これは通常のデータベースでも有効ですが、リソースを共有しているクラウドでは効率的なクエリの価値はより高まるでしょう。
メッセージング
優先順位キュー
送信されてきたメッセージングに優先順位を付与しその順番に処理するような設計です。これは個々のクライアントに異なるサービスレベルを保証している場合などに有効です。
まとめ
Azureのクラウドデザインパターンの一例を紹介しました。8大分野へ分類されていますが、キューベースの負荷標準化などは複数分野にまたがっているので一つのクラウドデザインパターンが多くの恩恵をもたらすこともあります。このような先人たちの叡智がクラウドデザインパターンとして公式サイトに載っています。かなりボリュームがあり一つのクラウドデザインパターンで一記事が作成できるレベルですがクラウドだけでなく普段の設計にも活かせる内容が多々あります。これらをマスターすれば皆さまのキャリアのお役に立つでしょう。