AWSのWell-Architected Frameworkについて考える
目次
こんにちは。
AWSについて勉強しています。
今回はAWSを使う上で抑えておきたい、Well Architected Frameworkというポイントについて考えてみます。
そもそもAWSって何?という方はこちらの記事を御覧ください。
最後に公式の資料のリンクを貼って起きますので、より深く知りたい、調べ直したい、という場合はぜひ御覧ください。
ですが、公式資料はなんとなく概念的な言葉が並べられすぎて、「それってつまりどういうこと?」という印象です。
このブログではなるべくそういった言葉をなくして、わかりやすく伝えていこうと思います。
Well-Arhchitected Framework とは?
簡単に言うとベストプラクティス、つまり最善のシステム構築はこうすれば実現できます!という考え方を集めたものです。
5つの考え方があります。
運用上の優秀性、セキュリティ、信頼性、パフォーマンス効率、コスト最適化、です。
順番に見ていきましょう。
運用上の優秀性
手間がかからないようにする、ということです。
毎日手入れが必要で、入念な準備を経ていざGO!みたいなシステムは考えるだけで使うハードルが高そうですし、何か変更したいときに面倒くさくなりそうですよね。
それよりも、使いたいときにすぐ使える形でいこう!変更は小さくすぐに変えられるようにしよう!ということが推奨されています。
特に重要なポイントは、AWSのクラウド環境はプログラムのコードのような形(つまり定型の文字列)で作成・編集できるという特徴があります。
これはテンプレートが用意されているだけでなく、再現性がありコピーが簡単ということでもあります。
つまり、複雑なシステムを作るとしても、人のポカミスを軽減することができて、誰でも同じものがすぐ作れたり複製できたりする、というメリットがあります。
セキュリティ
最重要事項ですね。
暗号化という技術で、ネットワーク通信の間に重要な情報が盗聴されたりする心配が減ります。
また、不正アクセスを検知する仕組みによって、怪しい人が見ることを防いだりできます。
インターネットを安心して使うためには、欠かせませんね。
信頼性(=可用性)
サービスが中断せずに使い続けられることです。
また、障害からすぐに復旧できるように考えておくことです。
Design for Failureという言葉があります。これは、全てのものはいずれ壊れるので、その前提に基づいて設計しましょう。ということです。
たとえばあるゲームがネットワーク上の1台のコンピュータが動かしていたら、そのコンピュータが壊れた場合、ゲームで遊んでいた人が途中で遊べなくなったり、再開できなくなってしまいますよね。
それに備えて、2つ3つのコンピュータで動かせるようなシステムを組んでおくと、いざというときに代わりにゲームを動かしてくれて、中断せずに遊ぶことができるようにしてくれることも可能です。
1つのコンピュータでできることを、このように複数用意しておくことを冗長化といいます。
システムが冗長化されていて、問題が起きても使い続けることができるゲームは信頼性があって良いですね。
逆にすぐシステム障害で使えなくなるゲームは、叩かれてユーザが離れていってしまいそうです。
コスト最適化
便利なサービスは決まってお高いものですので、 セキュリティが心配!もっと高速に使えるようにしたい!と好きなサービスを使いまくっていると、いつのまにかコストは膨らみがちなものです。
主なサービスは従量課金で、必要なところに必要なコストをかけられる仕組みになっています。
ですが、過剰なセキュリティになっていないか、もう一つ低いレベルのサービスでもストレスなく使えるのに、過剰な性能のものを使っていないか?というのを正しく考えて使えることがお財布にも優しいですね。
パフォーマンス効率
インターネット上の通信量は時間によって常に一定とは限りません。
たとえば、クリスマスシーズンにケーキの需要が上がったりしますが、それ以外の時期はそんなにケーキを買わないな〜という方もいますよね。
このような需要の変化に応じて適切な効率を維持できるように設計しておかないと、いざというときにショッピングサイトの画面がなかなか切り替わらない、などイライラの原因になって嫌われてしまいます。
また、いつもはそれほど急いでいないけれど、この仕事だけはどうしてもすぐに終わらせないといけない!みたいなこともあったりします。
こういうケースに備えて、必要なときに処理を手伝ってくれるコンピュータの数を変えたり、性能を上げたり下げたりすることをスケーリングといいます。
自動や手動で需要に合わせてスケーリングするようなサービスや設定がありますので、目的に応じてこれをうまく使いこなせるようにすることが大切です。
まとめ
以上のような観点をもとに、ベストなシステムを構築する、というのがWell-Architected Frameworkです。
AWSのサービスはこのような思想に基づいて提供されていますので、理解して使いこなすことで、より真価を発揮できます。
これらを念頭に置いて、これから色々なサービスの理解を深めていき、安心で効率の良いシステム構築ができるようになりたいと思います。