AWSとは?Amazon Web Servicesの概要を基礎からわかりやすく解説

image (3)
矢崎誠
書いた人 矢崎誠
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!テクニカルライターの矢崎です。

AWS(Amazon Web Services)について調べていると、「難しい言葉が並んでいてよくわからない…」「知りたいことが書いていなかった…」という経験はありませんか?

実は、AWSは100種類以上のサービスの総称なのですが、公式の説明をみても全体像がよくわからなくて挫折した人も多いと思います。

私は、AWSの各サービスの使用イメージをいくつか見ていたら、全体像が徐々に分かるようになりました。

公式の説明では、「コンピューティング」や「ストレージ」のように機能ごとにまとめて説明されているのですが、私は構成例から理解した方が分かりやすいと思いました。

そこで今回は、私が理解した順序に沿って、初心者の方にも分かりやすいように、AWSとは何かをざっくり解説していきたいと思います。

この記事では、

  • AWSとは?
  • AWSで「できること」は?
  • AWSを使う「メリット」とは?
  • AWSの導入事例

といった内容を、事例を紹介しながら短い言葉で解説していきます。

最後までお読みいただければ、AWSについて体系的に理解できますが、例えば「ウェブサイト」の部分だけとか、「ウェブ・モバイルアプリケーション」の部分だけといったように、部分的に読んでも理解が進むと思いますので、ぜひ読んでいただければと思います!

AWSとは?

AWS(Amazon Web Services)は、Amazonが提供する様々なWEBサービスの総称です。

まずは、AWSのいくつかのサービスを組み合わせることで、便利なサービスを作れると考えていただければ、間違いありません。

AWSは、クラウドサービスのシェア1位のサービスです。

AWSを利用しているのは、「インターネット上で、何かしらのサービスを提供したい!」とか、「インターネット上にデータを保存しておきたい!」と考える企業個人です。

これから代表的なサービスの利用例をいくつか紹介しますが、AWSは全部で100種類以上のサービスを提供していて、現在もさらに増え続けています。

AWSで「できること」は?

AWSの各サービスを組み合わせると何ができるのかを少し具体的にイメージするために、構成例や導入事例を見ていきましょう。

構成例や導入事例は、以下のページにまとまっていますので、ぜひご覧ください。

参考:https://aws.amazon.com/jp/cdp/
参考:https://aws.amazon.com/jp/solutions/case-studies-jp/

ウェブサイト

負荷状況に応じて、スペックが自動的に増減するウェブサイトを構築できます。

うまく設定すれば、負荷が高くなることによるサーバー停止を心配する必要がなくなります。

構成例は、以下のページをご覧ください。

参考:https://aws.amazon.com/jp/cdp/cdp-autoscaling/

この構成例で利用するサービスは以下のとおりです。

  • Amazon EC2(Amazon Elastic Compute Cloud):サーバー。Webサーバーを構築するために利用します。Amazon EC2で借りたサーバーのことを、Amazon EC2インスタンスと呼びます。
  • Elastic Load Balancing:ロードバランサ。トラフィックを分散するために利用します。
  • Auto Scaling:自動的にAmazon EC2インスタンスを起動または停止するサービス。Amazon CloudWatchが発生させたアラームを受けて、Amazon EC2インスタンスを起動したり停止したりできます。Amazon EC2インスタンスを起動する際は、Amazon EC2 AMIの情報を利用します。
  • Amazon CloudWatch:モニタリングサービス。Amazon EC2インスタンスのCPU使用率やネットワークI/Oなどを追跡し、アラームを発生させます。負荷が高くなったときと負荷が低くなったときに、アラームを発生させ、Auto Scalingに通知できます。

そして、正しく設定すると、以下のように動作します。

(1)Elastic Load Balancingが、複数のWebサーバー(Amazon EC2インスタンス)にトラフィックを振り分け、複数のWebサーバーでトラフィックを処理します。

(2)Amazon CloudWatchが、Amazon EC2インスタンスのCPU使用率などを監視します。

(3)一定以上のCPU使用率になったときなどに、アラームでAuto Scalingに通知します。

(4)(負荷が高くなりAmazon EC2インスタンスを追加する必要がある場合)Auto Scalingが、Amazon EC2 AMIの情報を利用してAmazon EC2インスタンスを起動します。

設定さえ済んでしまえば、このように人の手を介さずに、Webサーバー(Amazon EC2インスタンス)を増やせるシステムが構築できるのです!

上記のような高度なウェブサイトを構築するには、Amazon EC2をベースにいくつかのサービスを組み合わせる必要があります。

もっと手軽にウェブサイトを構築したい方には、WordPressやJoomla、GitLab、NginxなどをインストールしたVPS(Virtual Private Server)を利用できるAmazon Lightsailもオススメですよ!

ぜひ調べてみてくださいね。

Amazon EC2インスタンスのCPU性能について

Amazon EC2を利用する場合は、CPU性能を表すECUvCPUを理解しておきましょう。

Amazon EC2インスタンスのCPU性能は、ECU(Amazon EC2コンピュートユニット)という単位で表します。

あるCPUの処理能力を1ECUとして、同等のCPUが2つあれば2ECUになるという考え方です。

また、vCPUはOSが認識するコア数を表します。

バックアップ、災害対策

万が一の地震や停電、ネットワーク障害へ備えたウェブサイトを構築できます。

構成例は、以下のページをご覧ください。

参考:https://aws.amazon.com/jp/cdp/cdp-dr/

この構成例で利用するサービスは以下のとおりです。

  • Amazon EC2:サーバー。Webサーバーを構築するために利用します。
  • Elastic Load Balancing:ロードバランサ。トラフィックを分散するために利用します。
  • Amazon RDS:データベース。Webサーバーが参照するデータベースとして利用します。

そして、正しく設定すると、以下のように動作します。

(1)Amazon EC2インスタンスが、Webサーバーとしてトラフィックを処理します。

(2)問題が発生するまでは、WebサーバーはAmazon RDS(Master)を参照して動作します。

(3)Amazon RDS(Master)Amazon RDS(Slave)は、同期しています。

(4)問題が発生し、メインのWebサーバー(Amazon EC2インスタンス)とAmazon RDS(Master)が動作しなくなったときは、サブのWebサーバーがAmazon RDS(Slave)を参照するように設定を変更すれば、ウェブサイト全体としては停止時間を短くできます。

備えがないと、Webサーバーが停止するだけでなく、データベースに蓄積されたデータがすべて使えなくなる事態に陥ってしまうでしょう。

また、社内データをバックアップするためのストレージとして利用できるサービスもあります。

興味がある方は、Amazon S3(Amazon Simple Storage Service)や、AWS Storage GatewayAmazon Glacierを調べてみてください。

ビッグデータ

ビッグデータを分析するためのシステムを構築できます。

構成例は、以下のページをご覧ください。

参考:https://aws.amazon.com/jp/cdp/dwh-migration/

この構成例で利用するサービスは以下のとおりです。

  • Amazon EC2:Windowsが動作するサーバー。Windowsで動作するBIツールを実行するために利用します。
  • Amazon EBS(Amazon Elastic Block Store):Amazon EC2インスタンスにマウントするストレージ。Windowsが動作するサーバーにストレージを追加します。
  • Amazon Redshift:データウェアハウス。ビッグデータを分析するために利用します。
  • Amazon S3:ストレージ。Amazon EC2 AMIやビッグデータをバックアップするために利用します。
  • Amazon VPC(Amazon Virtual Private Cloud):仮想ネットワーク。AWSリソースを接続するネットワークとして利用します。Amazon VPCを使うときは、Amazon EC2のNICに相当するElastic Network Interface(ENI)も利用することになります。
    このネットワークには、社内ネットワークからVPN接続を利用してアクセスします。

ビッグデータを分析する際は、Hadoopフレームワークを提供するAmazon EMRや、全文検索エンジンElasticsearchを利用するAmazon Elasticsearch Serviceも利用できます。

また、Amazon S3に配置されたビッグデータを検索するAmazon Athenaも検討に値します。

ストリーミングデータのリアルタイム分析システムを構築する場合は、Amazon Kinesis FirehoseAmazon Kinesis StreamsAmazon Kinesis Analyticsについて調べてみてください。

さらに、ビッグデータを保存するためのストレージも用意されています。

開発するアプリケーションによって、使用するデータベースエンジンは異なるため、以下のサービスの比較検討が必要です。

これらのストレージは、いずれも必要に応じて容量を変更できますので、Amazon EC2を利用してデータベースを構築するよりも、ずっと便利に使えます。

  • Amazon S3:クラウドストレージ
  • Amazon DynamoDB:NoSQLデータベース
  • Amazon EMR(Amazon Elastic MapReduce):Apache HBase
  • Amazon Aurora:MySQL互換、PostgreSQL互換
  • Amazon RDS:Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle、Microsoft SQL Server

IoT

IoTデバイスからデータを収集して、クラウドに送信するIoTプラットフォームを構築できます。

IoTに利用できるサービスは以下のとおりです。

  • AWS IoT:IoTデバイスとAWSサービスとの双方向通信を実現します。
  • AWS Greengrass:IoTデバイスにAWS Lambda関数をデプロイ(配置)および実行できます。
  • AWS Lambda:サーバーの管理なしで、Node.jsやPython、Javaなどのコードを実行できる環境を利用できます。

これに加えて、Amazon EC2を利用したり、ビッグデータ分析のためのシステムを構築したりすると、さらに強力なIoTプラットフォームになるでしょう。

IoTを活用するには、IoTデバイスや、データを収集するためのサーバーを用意するだけでなく、サーバーでどのようにデータを集積するのか、集積したビッグデータをいかに分析するのか、など検討することがたくさんあります。

そのような、たくさんのことを考える必要があるシステムでも、AWSを利用することで簡単に構築できるようになっているというワケですね。

ビジネスアプリケーション

インターネットのサーバーと言うと、Linuxで動作するWEBサーバーが思い浮かぶと思いますが、Windowsベースの社内業務アプリケーション環境もAWSで実現できます。

構成例は、以下のページをご覧ください。

参考:https://aws.amazon.com/jp/cdp/windows-bizapp-migration/

この構成例で利用するサービスは以下のとおりです。

  • Amazon EC2:Windowsが動作するサーバー。Windowsベースの社内業務アプリケーションを動作させるために利用します。
  • Amazon EBS:Amazon EC2インスタンスにマウントするストレージ。Windowsが動作するサーバーにストレージを追加します。
  • Amazon RDS:Microsoft SQL互換データベース。社内業務アプリケーションが利用するデータベースです。
  • Amazon S3:ストレージ。Amazon EC2 AMIやデータベースのデータをバックアップするために利用します。
  • Amazon VPC:仮想ネットワーク。AWSリソースを接続するネットワークとして利用します。
    このネットワークには、社内ネットワークからVPN接続を利用してアクセスします。

この構成例では、Windowsベースの社内業務アプリケーション環境を実現していますが、同様に、SAPアプリケーションの実行環境を作成できますし、Oracleにも対応しています。

ウェブ・モバイルアプリケーション

より具体的に、日本最大級の実名型グルメサービス「Retty」の構築例を見ておきましょう。

参考:https://aws.amazon.com/jp/solutions/case-studies/retty/

この構成例で利用するサービスは以下のとおりです。

  • Amazon Route 53:DNSサーバーサービス。
  • Amazon CloudFront:コンテンツを配信するCDN(Content Delivery Network)サービス。
  • Amazon EC2:サーバー。
  • AWS Elastic Beanstalk:アプリケーションサーバー。PHPなどを使用して開発したアプリケーションを、Webサーバーにデプロイ(配置)するために利用します。
  • Elastic Load Balancing:ロードバランサ。トラフィックを分散するために利用します。
  • Amazon RDS:データベース。Webサーバーが参照するデータベースとして利用します。
  • Amazon ElasticCache:メモリ内データストア。Webサーバーが参照する高速なデータベースとして利用します。
  • Amazon EMR:データ分析用フレームワーク。ビッグデータを処理、分析するために利用します。
  • Amazon CloudSearch:AWSクラウド内の検索サービス。Rettyに検索機能を付加するために利用します。
  • Amazon SQS:メッセージサービス:非同期処理とサービス間のメッセージングを行うために利用します。
  • Amazon S3:ストレージ。静的コンテンツを保存するために利用します。

以上のように、Rettyは、AWSの様々なサービスを組み合わせて、構築されていることがわかりますね。

Rettyからは離れますが、ウェブ・モバイルアプリケーションの開発では、以下のようなサービスも利用できます。

  • Amazon Simple Notification Service(Amazon SNS):EmailやSMSなどを利用したメッセージサービス。
  • Amazon Cognito:ユーザーのサインアップ/サインインサービス。
  • Amazon API Gateway:ウェブ・モバイルアプリケーションのAPIを提供するサービス。
  • AWS WAF:ウェブ・モバイルアプリケーションのファイアウォールサービス。

ウェブ・アプリケーションは、手軽に開発ができる反面、どのくらい利用されるのかが読めないサービスですよね。

AWSを活用して小さくスタートしておけば、ユーザーが思いのほか少なかったときも費用は抑えられますし、ユーザーが爆発的に増えたときもスムーズに対応できますので、どちらに転んでも安心ですね!

企業内ネットワーク

企業内ネットワークから利用できるファイルサーバーでさえ、AWSで構築できます。

参考:https://aws.amazon.com/jp/cdp/fileserver/

この構成例で利用するサービスは以下のとおりです。

  • Amazon EC2:サーバー。ファイルサーバーとして利用します。
  • Amazon EBS:Amazon EC2インスタンスにマウントするストレージ。ファイルサーバーのストレージとして利用します。
  • Amazon S3:ストレージ。バックアップ用ストレージとして利用します。
  • Amazon VPC:仮想ネットワーク。このネットワークには、社内ネットワークからVPN接続を利用してアクセスします。

ファイルサーバーを構築する以外にも、企業内ネットワークで利用できるサービスがあります。

たとえば、開発にDevOpsを採用している場合は、AWS OpsWorksを利用できるでしょう。

また、仮想デスクトップの採用を検討しているならAmazon WorkSpacesや、AWS Direct Connectは知っておく必要があります。

AWSサービスの管理

ここまで、たくさんのAWSのサービスを紹介しましが、これらのサービスを管理するためのサービスもまた提供されています。

ここからは少し駆け足で進みましょう。

  • AWS Config:AWSリソースの設定を記録します。
  • Amazon CloudWatch:Amazon EC2やAmazon DynamoDBなどをモニタリングします。
  • AWS Command Line Interface(AWS CLI):コマンドラインから複数の AWS サービスを制御します。
  • AWS SDK:AWSサービスを管理するためのAPIを提供します。
  • AWS CloudFromation:AWSサービスのプロビジョニングと管理を単純化します。

セキュリティ、アイデンティティ、コンプライアンス

セキュリティ関連のサービスも紹介しましょう。

  • AWS CloudTrail:AWSアカウントのアクティビティをログに記録します。
  • AWS Identity and Access Management(IAM):AWSのサービスへのユーザーアクセスを管理します。
  • AWS Key Management Service:暗号化キーを管理します。

その他

ここまでで紹介できなかったものの、有名なサービスも紹介しますね。

  • AWS Marketplace:アプリケーションを購入できます。
  • Amazon Simple Email Service(Amazon SES):Eメールを送受信できます。
  • Amazon EC2 Container Service(Amazon ECS):Dockerコンテナを利用できます。

これで全サービスと言えないところもAWSのすごいところですね!

AWSを使う「メリット」とは?

従量課金制によるコストの最適化

一般的なレンタルサーバーの場合は、通信量にかかわらず毎月一定の料金がかかる仕組みになっています。

今回紹介しているAWSは、初期費用も不要で、利用した分だけの料金が発生するだけのサービスです。

たとえば、サーバーの利用では、使用した時間や通信量によって料金が計算されます。

また、ストレージの場合は、利用した容量や通信量で料金が計算されるのです。

したがって、サービスに必要なサーバーの容量や通信量が予測しにくく、柔軟な対応が必要な場合には、AWSを利用することで、使った分のみ支払えば良い料金体系によってコスト削減が期待できます。

サービスを始める場合に、「必要以上に高性能なサービスを契約してしまって、無駄な支出が発生してしまった!」となることは防げるでしょう。

信頼性・セキュリティの高さ

Amazonが提供しているということでセキリュティの高さも人気の理由です。

16年以上Amazonを運営してきて大きなトラブルがないという実績がありますので、安心して利用できますね。

柔軟性・拡張性の高さ

AWSでは様々なサービスを提供していますので、あらゆる場面で利用できる柔軟性があります。

また、サービスによっては、簡単に規模を大きくしたり小さくしたりできる拡張性の高さもあります。

使用するデータの容量が大きくなったり、サービスの規模が大きくなったりして、サーバーの規模を倍増させたい!と思ったとき、一般的には規模を大きくするために時間や経費などのコストがかかりますが、AWSを利用していれば素早く簡単に対応できるのです。

これは大きなメリットですよね。

AWSの導入事例

これまで説明したように、様々なメリットがあるAWSは誰でも知っているような大企業も利用しています。

参考:https://aws.amazon.com/jp/solutions/case-studies-jp/

【実際に利用している企業の例】

AWSに大きなメリットを感じているからこそ、大企業でも利用しているのでしょう!

AWSを使ってみよう!

企業の例ばかり紹介しましたが、AWSは、個人でも利用できます。

アカウントを作成してログインするだけで使えるので、興味のある人はぜひ一度AWSをのぞいてみてください。

サインアップから12か月間無料で利用できるサービスもあります。

使い方がわからない!という人は、入門サイトや書籍で学んでみましょう。

次の記事では、おすすめの入門書を紹介しているのでぜひ参考にしてください。

まとめ

この記事では、具体的な構築例を紹介しながら、AWSのサービスを紹介しました。

100種類以上のサービスから、自分に必要なサービスを探すのは大変ですが、この記事で紹介した内容を参考にすれば、うまく見つけられるはずです!

もし、AWSについて忘れてしまったらこの記事を思い出してくださいね!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

学習者インタビュー

人気講師インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

矢崎誠

矢崎誠

有限会社ビートラスト(http://www.b-trust.jp/)で取扱説明書の原稿を書くテクニカルライター。原稿を書く傍ら、作業効率を上げるためのプログラムを開発している。Python、Javaを中心にプログラミング言語に触れるのが好き。