AWSの7つのベストプラクティス
AWS認定試験ソリューションアーキテクトアソシエイトの再認定のために、勉強を開始しました。
AWSの認定試験の勉強を始めると必ず出てくるものがあります。それが7つのベストプラクティスです。
オリジナルの記載(AWSの公式の記載)が見つからないのですが、某参考書にも記載があり、インターネットで調べても同じように出てくるものなので、このページでも転記させていただこうと思います。
7つのベストプラクティスとは
以下が7つのベストプラクティスです。
- 故障に備えた設計で障害を回避
- コンポーネント間を疎結合で柔軟に
- 伸縮自在性を実装
- すべての層でセキュリティを強化
- 制約を恐れない(ITリソース量の制限などオンプレミストとは考え方を変える)
- 処理の並列化を考慮
- さまざまなストレージの選択肢を活用
1つずつ読み解く(予想してみる)
1つずつ私の思いつきを書いてみます。
故障に備えた設計で障害を回避
これは冗長性の話のようですね。クラウドという利点を生かして、ケチらずに複数台構成にしたり、ロードバランサを導入しましょうということでしょうか。
コンポーネント間を疎結合で柔軟に
これはクラウドに限らずですが、システム間やアプリ間をあまりにも密結合、つまり依存し合うような構成にしてしまうと、一方が故障した際に他方に影響がでてしまったりします。そういったことを防いで、万一の故障の際には影響範囲を制限しましょう、ということでしょうか。
また、「柔軟に」というワードがあるので、前述のような依存し合う関係のシステムを作ってしまうと、後から機能などを足したり引いたりすることが大変になります。こういうのも避けましょう、ということでしょうか。
伸縮自在性を実装
これはスケールアウトやスケールアップのことでしょうか。以前AWSの勉強をした時に、EC2のスケールアウト(台数増やし)やスケールアップ(スペック強化)が自動でできると聞いたような、聞いていないようなです。
少なくともスケールアウトはできるのは覚えています。既存サーバのリソースが足りない時のスケールアップはもちろんですが、逆にリソースが足りている時のスケールダウンも自動で可能だったと思います。
すべての層でセキュリティを強化
「すべての層」というのはキーワードな気がしますね。AWSはクラウドサービスなので、特に下レイヤのセキュリティについて観点が抜けそうな気がします。
AWSではすべてインターネット経由で構築できますし、デプロイしたサーバは基本的にインターネット上に存在します。オンプレミスでは物理サーバを守るためにラックに鍵をかけたりとしますが、AWSにおいてもクラウドだからと油断せずに、サーバのアクセス制御レベルから検討しましょう、という風に私には聞こえました。
制約を恐れない(ITリソース量の制限などオンプレミスとは考え方を変える)
オンプレミスのデメリットのひとつは、性能強化をしようとすると、どうしてもサーバを購入する必要がでてきます。サーバは高価ですから、数年に渡る費用対効果を計算したり、搭載するラックを契約したり、色々と手間も暇も金もかかります。
一方でクラウドでは、そういった心配はいりません。好きな数だけ、好きなスペックで増やすことができます。しかも従量課金なので、予算を効率良く使えます。
処理の並列化を考慮
私のAWS知識では具体的なサービス名が出てきませんが、並列処理を基本としましょう、という風に聞こえます。
さまざまなストレージの選択肢を活用
クラウドに限らずストレージには色々な種類があります。HDDやSDD、揮発性か非揮発性か等選択肢がありますが、AWSにも色々な種類のストレージが存在します。読み書きが多い処理向け、大容量向け、長期間保存向け等あったと覚えています。