はじめに
AWS認定クラウドプラクティショナーの資格勉強を始めました。
毎日朝の1時間、夜の2時間を勉強時間に充てています。
確実に定着させるために、勉強したことをアウトプットしていきます。
項目
1.AWSの長所と利点
2.クラウドアーキテクチャの設計原理
※ 『AWS認定資格試験テキスト AWS認定クラウドプラクティショナー』 の第2章に相当
1.AWSの長所と利点
AWSクラウドコンピューティングの6つのメリット
(1)固定費(設備投資費)が変動費に変わる
従来のオンプレミスシステム(自社)では、事前にデータセンターやサーバーに多額の投資をする必要がありました。
それをクラウドに変更することで、 "利用した分だけ費用を支払う「従量課金制」"となります。
既存のシステムを移行する際、既存システムのトータルコストを削減しつつ、新規システムをクラウド上で利用するといったこともできます。
そうすれば、コストパフォーマンスを改善することにつながるのです。
(2)スケールによる大きなコストメリット
クラウドを利用することで、オンプレミスよりも低い変動コストを実現できます。
なぜなら、数十万単位のユーザーが利用することで、規模の経済を活かしつつ、従量課金制の料金を低く提供することができるからです。
AWSは、2018年まで数十回にもわたり値下げを行ってきました。
今後もこの流れが継続すれば、従来よりも利用料金が安くなっていくことも考えられます。
(3)キャパシティ予測が不要になる
AWSでは、必要に応じてリソースの増減を行うことができるので、インフラ容量を予測する必要がなくなります。
クラウドならば、必要に応じてアクセスするだけで、リソースの調整やスケールアップ・スケールダウンの実行を数分で行うことができます。
柔軟にスケーリングを行えるところも利点の一つです。
(4)速度と俊敏性
AWSでは、新しいITリソースを数分単位で簡単に利用することができます。
迅速にリソース調達が可能になり、システムの負荷やサービスの拡充に応じて柔軟な構成変更が可能となります。
結果として、開発現場におけるコストと時間が大幅に削減でき、組織内の俊敏性も向上します。
(5)データセンターの運用と保守への投資が不要に
従来のオンプレミスシステムの各種費用には、サーバー代、ライセンス費用、データセンター利用料、ラックの利用料、電気代、ネットワーク利用料などです。
それらは全てAWSの各種利用料として請求されます。
クラウドを利用すれば、サーバーの設置や各種連携などの作業を行う必要がなくなるといったメリットがあります。
(6)わずか数分で世界中にデプロイ
「数クリック・数分」でアプリケーションを展開できます。
2.クラウドアーキテクチャの設計原理
(1) コンポーネントの分離
クラウドは、サービス指向アーキテクチャの原理を利用しています。
「サービス指向アーキテクチャ」とは、複数のサービス・機能(コンポーネント)を集めて大きなまとまり(システム)として用いること。
システムのコンポーネント(部品・要素)をまとめて使っているというわけですね。
各コンポーネントは、他のコンポーネントと非同期に相互作用します。
例えば、WEBアプリケーションシステムでは、「アプリケーションサーバー」「WEBサーバー」「データベース」などに分類できます。
それぞれが相互に作用しあって、一つのWEBアプリケーションシステムを動作させています。
また、バッチ処理のアーキテクチャにおいては、互いに独立している非同期のコンポーネントを作成できます。
そのコンポーネントの分離を実現するためには、Amazon SQS(Simple Queue Service)を使ったキューイングチェーンを利用すれば可能です。
「Amazon SQS」は、サービス間をゆるやかに「つなぐ」ことで影響範囲を限定し、開発コストの大幅な削減が期待できるサービスです。 キューイングを利用することでシステム間を疎結合にでき、分散アプリケーションの拡張性、可用性を大幅に改善できます。 サーバーレスで分散アプリケーションをつなぐため、高い負荷がかかった場合でも柔軟なスケールができます。
「キューイング」とは、日本語にすると「待ち行列」という意味で、非同期に処理が進めることができるという意味です。"処理の順番待ち"といった認識ですね。
キューイング中に障害が起こっても、そのデータは残り続けるため、他のコンピューティングリソースによって処理を継続することができます。
また、マイクロサービスアーキテクチャを利用することで、システムを複数の小規模なサービスの集合体として構成し、コンポーネントの分離を図ることができます。
(2) 弾力性の実装
クラウドは、インフラに"弾力性"という新しい概念をもたらしました。
リソースの性能を柔軟にスケールアウトしたり、スケールインしたりすることができます。
次の3つの方法で実現できます。
①巡回スケーリング
一定間隔(毎日・週ごと・月ごと・四半期ごと)に発生するスケーリングです。
②イベントベーススケーリング
予定されているイベントのために、トラフィックリクエストが急増すると予想されるときに実施するスケーリングです。
期間限定商品のキャンペーンや、新製品のプロモーションといった特別なビジネスイベントで実施します。
イベントベーススケーリングは、「スケジュールドスケールアウトパターン」を利用することで弾力性を実現できます。
「スケジュールドスケールアウトパターン」は、オートスケーリング(AutoScaling)により、定時起動や定時停止を行います。
③オンデマンドの自動スケーリング
関しサービスを利用することにより、監視項目(CPUの平均利用率など)に基づいてトリガーを送信し、スケールアウト/スケールインすることです。
「〇〇を上限値とし、上限値を上回ったらスケールアウトする」などです。
オンデマンドの自動スケーリングでは、「スケールアウトパターン」を利用することで弾力性を実現できます。
「スケールアウトパターン」は、クラウドウォッチ(CloudWatch)をトリガーとして、オートスケーリング(AutoScaling)で起動します。停止は手動です。
(3)並列化
クラウドでアーキテクチャを設計する場合、並列化の概念を取り入れる必要があります。
繰り返し利用可能なプロセスを簡単に構築できるためです。
WEBアプリケーションを例にすると、ロードバランサーを使用して、複数の非同期のWEBサーバー全体で受信リクエストを分散させることができます。
(4)コンテンツデータの保管
従来のオンプレミスシステムでは、伝送遅延を回避するためにデータをコンピュータ、または、処理要素のできるだけ近くに保管することが良いと言われていました。
クラウドでは、データを"ネットワーク経由"で利用するため、クラウド外の大量のデータ処理する必要がある場合、データをクラウド上に移してから処理を実行します。
リレーショナルデータベースを用いてデータを保管、検索するWEBアプリケーションの場合、データベースとアプリケーションサーバーをクラウドにまとめて移行するのが良いでしょう。
静的コンテンツは、CDNなどのサービスを利用するといいかもしれません。
CDNとは、「Content Delivery Network(コンテンツデリバリーネットワーク)」の略で、ウェブコンテンツを効率的かつスピーディーに配信できるように工夫されたネットワークのことです。 アクセスが集中したりコンテンツが大容量化したりしても、ホームページの表示やコンテンツの配信に問題が起こらないようにすることが可能です。
参考書籍
※ 『AWS認定資格試験テキスト AWS認定クラウドプラクティショナー』
● 楽天はこちら