こんにちは、こちょすです。
前回作成した「tweetbot」ですが、これを自動で毎日動かしたいと考えていて
その際は、AWSのサービスを使って実装する予定です。
まだtweetbotの作成の記事を見ていない!という方はそちらもご覧ください!
-
-
たったの3ステップ!pythonで作るtwitterbotの作り方を紹介します!
続きを見る
今回はその前段として、AWSってなに?というお話を書いて行きたいと思います。

・気になっていたけど、正直クラウドサービスってよくわからない
・自分でサーバーを持たずにシステムを開発したい!
こんな風に思っている方の疑問を解決できる記事になっています!
目次
AWSとは?
AWSは「Amazon Web Service」の略称です。
Amazonが提供する、ウェブのサービスですね。とても曖昧ですが、、、笑
AWSは簡単に言うとクラウドコンピューティングの一種です。
AWS以外にも、有名どころでいうと、
マイクロソフトが提供しているAzure(あじゅーる)とかも同じようにクラウドコンピューティングの一種です!💪
じゃあクラウドコンピューティングって?
クラウドコンピューティングは、一言で言うと、
「インターネットを通じて利用できるリソースやアプリケーションのこと」です。
リソースというのは、日本語だと資源と言う意味ですが、ここでいうリソースとはCPUとか、メモリとかストレージとかと呼ばれるような、パソコンのスペック的なものだと思っておきましょう。
これをインターネット経由で利用できるわけです。
これまでは自前のサーバを持つ必要があったわけですが、それが不要になります。
そのメリットって、、、?
例えば自前サーバやデータベースを持とうとすると、最大ピークのアクセス数を考えてどれくらいのスペック(リソース)が必要なのかを考える必要がありました。しかし、最大ピークに合わせていると、そうじゃない時がコストがかかり過ぎちゃったりします。その辺をこのクラウドコンピューティングだと、柔軟にリソースを調整できるので、コスパよく、良い感じに運用できるというわけです🔥
つまり1枚紙にまとめるとこんな感じ!
ではAWSクラウドの特徴はどんなものがあるのでしょうか?
ざっとあげると4点ほど!
1 リスク軽減
2 スケーラビリティ+俊敏性+伸縮性
3 信頼性
4 セキュリティ
1つずつ順番に見ていきましょう!
AWSクラウドの特徴 〜1.リスク軽減〜
AWSクラウドでは、俊敏性によってリスク(とコスト)を軽減します。
例えば大規模なIT投資をするぞーとなったとき、計画通りに進まない場合もありえます。そういうときにオンプレミスだと一度抱えてしまうと失敗したとしても抱え続けてしまうサーバも、AWSクラウドなら、結果が芳しくなければすぐに方向転換が可能です。
また、このAWSの柔軟性によって、スケーラビリティや俊敏性、イノベーション創出などが生まれます。
イメージだとこんな感じかな??
AWSクラウドの特徴 〜2.スケーラビリティ+俊敏性+伸縮性〜
まずはスケーラビリティから!スケーラビリティとは、一言で言えば
「サービスを自分のペースで利用できる」
です🔥
例えば花屋さんの場合、バレンタインデーやホワイトデー、母の日やクリスマスなど、特定のイベントの前に需要が一気に高まります。一方そのイベントがすぎると、需要がガクッとさがったりします。
他にも、夏場のビールなどなど、季節や時期に応じて需要の変動が激しいサービスは色々ありますよね。そういう時に、オンプレ(自前)でサーバを持っていると、ハイピークに合わせた性能を常に持つ必要がありますが、それだとコストが無駄にかかってしまいます。。。
一方で、AWSの場合、需要に合わせて好きにスケールを変えられる、つまりスケーラビリティがあります。
イメージにするとこんな感じかなあ?
ちなみにPayPayのサービスもAWS上に乗っていて、このスケーラビリティのおかげでPayPayの還元キャンペーンを乗り切れているという話もありますね💪
次は俊敏性+伸縮性+イノベーションについてです。
AWSでは
「俊敏性とは速度の向上とテストのしやすさとイノベーションの文化の開拓からなる」とされています。
まず速度の向上ってなに??って話ですが、これは数分のうちでサーバの起動ができたり、不要になったサーバをシャットダウンしたり、不要サーバを別の用途に転用できたりすることを指すみたいです✍️
確かにオンプレだとそういったことは難しいか、時間がかかる作業ですが、付加価値を生み出す作業ではないので、あまり労力をかけずにできるのは嬉しいポイントですよね!💪🔥
次にテストのしやすさですが、これは「仮想的で自動化できるリソースで異なるインスタンス・ストレージ・設定での比較テストが可能」ということをを指すようです。
AWS Cloud Formationの場合、クラウド上の仮想環境ゆえに開発・テスト・本番で一貫性のある環境構築が可能ということですね!✍️
そしてこのテストのしやすさによって、テストが簡単に行える、または自動化できるようになるため、イノベーションや新しい構成の発見が可能になる(=イノベーションの文化の開拓)に繋がるんですね👏
イメージにするとこんな感じかなー?
また、この俊敏性をスピード感とするなら、自由自在にできる感を表す「伸縮性」という言葉も使われているようなので要チェックですね✍️本質的には上で書いた俊敏性と通ずるものがあると思っています!🔥
AWSクラウドの特徴 〜3.信頼性〜
信頼性とは、一言でいえば
「インフラやサービスの障害から回復するシステムの能力」
のことです。障害が起きてから、どれくらいでまた使えるようになるのか、あるいは障害がどれだけ起こさず安定稼働できるかを表します。💪
24時間稼働し続けるサービスだったり、サービスが止まると困るシステムなどはこの信頼性がとても重要な要素となります。
AWSではこれを前回紹介した伸縮性を使って実現しています。具体的には自動的に規模の拡張・縮小を行ってくれるAuto Scalingや負荷分散を行ってくれるElastic Load Balancingなどですね。
また、アクセス集中などが原因だとすると、この伸縮性で対応できるかもしれませんが、そうではない場合、例えば地震や洪水などでデータセンターが被災した場合などはどうでしょうか?
この場合に備えて、AWSでは世界各地にリージョンを分散配置しており、このリージョンの中には複数のアベイラビリティゾーン(AZ)が存在しています。このAZの中には複数のデータセンターが存在しており、1箇所や2箇所のデータセンターの被災をした場合にも稼働し続けられるような仕組みになっています。🔥
イメージで表すとこんな感じかな??
AWSクラウドの特徴 〜4.セキュリティ〜
AWSにおいて、「セキュリティは最重要事項である」とされています。そのための仕組みが多く存在しています。
確かに、オンプレのサーバーと比べて、インターネット経由でアクセスを行うクラウドコンピューティングは、サイバーリスクが高い感じがしますし、対策をしなければ実際にそうだと思います。(これが理由でAWSを採用しない企業も多くあると思っています)
セキュリティに対する責任分担は、「クラウドに対するセキュリティはAWSの責任、クラウド内のセキュリティはユーザの責任」とされています。
つまり、クラウド自体に脆弱性があって何かインシデントが発生すればAWSに責任がある一方で、クラウドの設定のために、クラウド内にアクセスができてしまい、インシデントが起きるような場合にはユーザ責任となります。
そのため、AWSを正しく、安全に使いこなすためには、セキュリティのためのサービスを学ぶ必要がありますね。✍️
逆にいうと、AWSユーザにはこのセキュリティを決める権利があることになります。例えば「データを保存するリージョンをどこにするか」や、「暗号化の処理方法」を決めることができます。
これにより、サービスを提供している地域のコンプライアンスやデータのレジデンシーを守ることが容易になります。💪
まとめるとこんな感じ!
以上でAWS全体としての特徴です!
こちらの記事を読んでみて、なんとなく分かったけどもう少し詳しく知りたい!と思った方には、以下の本がお勧めです!初学者向けに簡単な言葉で図解を交えながら書かれているのでサクサク読めますよー!(注:私が書いているわけではありません!笑)
次回以降、AWSの個別のサービスについてまとめていきます!ぜひみてくださいねー!