ITblog

AWS(Amazon Web Service)について調べてみた

2015年06月21日

本日は、AWS(Amazon Web Service)について調べてみました。

IT業界で仕事をしている人で、AWS(Amazon Web Service)という名前を聞いたことがない人はあまりいないでしょう。

しかし、一体何ができるのか。
どういうメリット、デメリットがあるのかを正確に把握できている人、あるいは実際に使ったことがないという人も多いのではないかと思います。
そこで、調べてみました。

AWS(Amazon Web Service)とは?

Amazonが提供している、クラウドITインフラサービスです。

AWSの特徴

自分好みにカスタマイズできる

例えば従来のレンタルサーバを利用するシーンを想定してみます。
通常であれば、サーバには複数のプランがあり、その中で自分の用途に最も近いプランを決定します。

しかし、AWSであれば、この組み合わせは自由度がかなり高いです。
自分の好きな組み合わせでサーバを構築することが可能です。

食品のサービス例えば見れば、マクドナルドハンバーガーとサブウェイのハンバーガーの違いと近いかもしれません。

マクドナルド=ハンバーガーの種類によってパンの種類や具などが決まっている。
サブウェイ=パンの種類や具、野菜などを自分の好きに選ぶことができる。

前払い不要で従量課金制

使ったサービスの内容と使用時間に応じて金額が決定し、支払われます。
また、サービス内容をいつでも変更が可能です。
変更した内容に応じて金額が変更となります。

この部分がAWSの大きな特徴の1つとなっていて、スモールスタートして状況に応じて拡張することが可能です。

このため、ITインフラ構築の際に問題となる、「どのくらいスケールするか分からないサービスのインフラ部分に、事前に大きく投資する必要がない」ということがあげられます。

例えば、ウェブサービスをスタートする際に、どのようにサーバを構築するかということは大きな問題の1つです。
性能の高いサーバにすれば多くのトラフィックがあっても耐えられますが、逆にもしあまり利用されなかった場合に無駄な金額を投資してしまったということになる可能性もあります。

ここで、AWSのEC2を使用すれば、最初はサーバのメモリ500MBでスタートして、アクセスが増えると後で16GBに拡張するといったことが容易に可能となるわけです。
(従来の重量課金制のサーバの場合は、別サーバの契約をしなおして、サーバを移行する必要があります。この部分の作業が非常に手間がかかる場合があります。)

どのようなサービスがあるのか

AWSには、具体的にどのようなサービスがあるのか調べてみました。

Amazon EC2

AWSの中でおそらく最も有名なサービスです。
いわゆるクラウドサーバで、サーバ環境を自在に構築することができます。
一般的に「AWS」というと、Amazon EC2を指しているケースも多いでしょう。

Amazon EC2 Container Service

Amazon EC2 Container Service は、非常にスケーラブルかつ高性能なコンテナ管理サービスで、Docker コンテナをサポートし、Amazon EC2 インスタンスのマネージド型クラスターでの分散型アプリケーションの実行を容易にします。


公式サイトの説明文ですが、さっぱり意味がわかりませんでした。
調べてみたところでは、「コンテナ」と呼ばれる通常の仮想サーバの仕組みとは異なる仕組みでの新しい仮想化技術を使用しているそうです。
このために使われてい技術が「Docker」と呼ばれる、Docker社が開発しているコンテナ型仮想ソフトウェアなんだそうです。

もう全くついていけません…。
詳しく知りたい方は「Docker」「コンテナ」などのキーワードで検索してみてください。
私も調べてみましたが頭がくらくらしました…。

分かりやすくいうと、新しい仮想化技術を使った仮想サーバといったところでしょうか。
同じハードウェア上で複数のアプリケーションを効率的に複数実行するのに適しているんだそうです。

AWS Lambda

AWS Lambda は、イベント発生時にお客様のコードを実行し、コンピューティングリソースを自動的に管理するコンピューティングサービスで、新規情報に迅速に対応するアプリケーションの構築を容易に行うことができるようになります。


公式サイトの説明文です。これもさっぱり意味が分からず。。。

調べてみると、どうやらトリガーとなるイベントと、対応するコードを準備することで、特定の条件でのみ特定のコードを実行することができるというシステムだそうです。

料金も、リクエスト数と、リクエストのプログラム実行にかかった時間で計算されるため、費用対効果が効率的なんだとか。

用途として、IoT(Internet of Things)などが代表的だそうです。

Auto Scaling

Auto Scalingとは、条件を設定して、Amazon EC2のリソースを拡大/縮小する機能ということ。
これは分かりやすいです。

Amazon VPC

Amazon VPC(Virtual Private Cloud)では、AWS クラウドのプライベートで孤立したセクションをプロビジョニングすることができます。ここでは、お客様が定義する仮想ネットワークで AWS リソースを起動することができます。Amazon VPC では、お客様がデータセンターで運用しているような従来のネットワークに非常によく似た仮想ネットワークのトポロジーを定義することができます。

↑サイトの説明文引用。これもよく分かりません。。。

要するに、Anazon VPCを使うことで、他のネットワークから孤立してVPNでのみ接続可能なプライベートネットワーク上のシステムを構築可能ということみたいです。

Elastic Load Balancing

Elastic Load Balancing は、アプリケーションへのトラフィックを複数の Amazon EC2 インスタンスに自動的に分散します。

これはいわゆるロードバランサーですね。
サーバの複数台構成と負荷分散が可能ということです。

AWS Elastic Beanstalk

AWS Elastic Beanstalk は、Java、.NET、PHP、Node.js、Python、Ruby などの人気のあるプログラミング言語を使用して開発されたウェブアプリケーションと
サービスのデプロイとスケーリングを行うことができる、使いやすいサービスです。

これは、いわゆるAWSの管理ツールといったところでしょうか。AWSを使っていれば無料で使用できます。

AWS OpsWorks

AWS OpsWorks は、ロードバランサーからデータベースまでのアプリケーション全体を DevOps ユーザーが簡単にモデル化および管理できるようにするアプリケーション管理サービスです。

↑これも説明がわけが分かりません。
まあこれも、AWSの管理ツールといったところでしょうか。
AWSのサービスを使用している場合、無料です。

AWS CloudFormation

AWS CloudFormation は、開発や本運用に必要な、互いに関連する AWS リソースのコレクションを作成しておき、そのリソースを適切な順序でプロビジョニングするためのサービスです。

↑これもわけがわからなかったのですが、調べてみると、システムをテンプレートというレシピに沿って自動的に構築するための仕組みだそうです。
テンプレートはJavascriptで記述されています。
これも無料。(システム構築のためのリソースはもちろん有料)

AWS CodeDeploy

AWS CodeDeploy は、Amazon EC2 インスタンスへのコードのデプロイメントを自動化するサービスです。

これはわりとそのままで、Githubやローカル環境にあるコードをAmazon EC2へデプロイ(アップロード)するための管理画面ですね。

モバイルサービス

ここからはモバイルサービスです。

Amazon Cognito

複数のデバイスのアプリケーションデータを同期するためのサービスということです。

Amazon Mobile Analytics

AWSを使って構築しているアプリケーションの使用状況データを視覚化して把握できるサービスということです。
サーバのログ分析機能みたいなかんじですかね。

Amazon SNS

デバイスにプッシュ通知を行うためのサービスということです。
価格は100万リクエストごとに0.5$ということです。

エンタープライズ・アプリケーション

ここからはエンタープライズ・アプリケーションです。

Amazon WorkSpaces

クラウド型の共有PC?と言ったイメージのサービスです。
任意のデバイスからアクセス可能の共有サーバ(PC)。
35 USD/月から、

Amazon WorkDocs

Amazonが提供するクラウド型のドキュメント管理/共有サービスです。
マイクロソフトOfficeのドキュメントやpdf、画像、テキストなどあらゆる文書を保存したり、他人と共有をしたりすることができます。

ストレージとコンテンツ配信

Amazon S3

Amazon S3とは、Simple Strage Serviceの略です。

言ってみればDropboxのようなイメージでしょうか。
クラウド上のストレージに保存できます。

Amazon Glacier

Amazon S3と同様に、Amazon Glacierもデータをクラウドストレージに保管するサービスです。
しかし、Amazon Glacierは、よりめったに参照することのないデータ(取り出しに時間がかかっても問題ないデータ)の保存に適しているということです。

例えてみれば、Amazon S3は部屋の引き出しやタンスだとすれば、Amazon Glacierは倉庫の中といったイメージです。
その代わりコストがS3よりも安くなっています。

セキュリティやデータ紛失に対する堅牢性も高いということです。

AWS Storage Gateway

AWS Strage Gatewayとは、オンプレミスのシステム(自社製のシステム)とAWSのクラウドストレージを接続するためのシステムです。

Amazon EBS

Amazon EBSは、Amazon EC2で構築されたシステムで使用するためのブロックレベルのストレージです。

Amazon Elastic File System

これは、AWSで使用するクラウドストレージの管理画面のことですね。

AWS Import/Export

これは、AWSで使用するストレージへのInput/Outputを高速化するためのシステムということです。
はじめからAWSについています。

Amazon CloudFront

これは、Cloud Flareに代表されるようなAmazonが提供するCDN(Contents Delivery Network)です。
静的コンテンツのキャッシュをサーバが提供し、サービスの帯域を節約し、表示を高速化します。
使用は1GBの転送量あたりで、有料です。

データベース

ここからはデータベースです。

Amazon DynamoDB

Amazon DynamoDBは、Amazonが提供するNoSQLデータベースです。
予約した容量に基づき、書き込み容量ごとに費用が必要となります。

Amazon Redshift

データの集計や分析に特化したAmazon謹製のデータウェアハウスサービスです。
使用量と時間に基づいて費用が必要になります。

Amazon RDS

Amazonが提供するRDS(Relational Database System)です。
バックアップ機能など、管理のしやすさが特徴的です。
使用したリソース分に対して時間単位で料金を支払ます。

Amazon ElastiCache

Amazon ElastiCacheは、サーバのメモリキャッシュの管理をよりスムーズにできるサービスです。
メモリキャッシュの時間当りの料金が必要となります。

ネットワーキング

ここからはネットワーキングのサービスです。

Amazon VPC

Amazon VPCは、AWSのリソースを自在にカスタマイズして構築することができるネットワークサービスです。
料金は無料です。(AWSのリソースの料金がかかる)

AWS Direct Connect

AWS DIrect Connectは、AWS上に構築されたシステムと、別のデータセンターやオフィスなどとのプライベート接続を確立することができます。

Amazon Route53

Amazon ROute53は、Amazonが提供するDNS(ドメインネームシステム)ウェブサービスです。

アドミニストレーション & セキュリティ

AWS Directory Service

AWS Directory Serviceは、AWS上のリソースを、既存のオンプレミスのシステムと接続できます。

AWS Identity and Access Management(IAM)

AWS Identity and Access Management(IAM)を使うことで、ユーザごとのAWSについての機能を制限することができます。
本機能はAWSの標準の機能なので、他のサービスを利用していると使用できます。

AWS CloudTrail

AWS Cloud Trailは、アカウントのAWS API実行のログを記録するサービスです。

AWS Config

AWS Configは、AWSの利用開始から現在までの、構成の変更の記録を確認することができます。

AWS CloudHSM

AWS CloudHSMはデータの暗号化に使用される暗号化キーを安全に生成、保存、管理することが出来るサービスです。
アプリケーションのパフォーマンスを低下させることなく、厳密なキー管理を行うことができます。

AWS Key Management Service

AWS Key Management Service(KMS)は、データ暗号化に必要な暗号化キーの作成、制御を簡易化するサービスです。
サービスの利用料金は1USD/月となっています。

Amazon CloudWatch

AWSのリソースの使用状況をモニタリングすることが出来るサービスです。
他の有料のAWSリソースを契約すると、無料で使用することができます。

AWS Trusted Advisor

AWS Trusted Advisorは、AWSを使用しているユーザのシステム環境を検査し、パフォーマンスや信頼性の向上、セキュリティの問題についてのアラートを提供します。
AWSのビジネスおよびエンタープライズレベルの契約であれば無料です。

分析

Amazon EMR

Amazon EMRは、様々なビッグデータの分析やデータ処理を効率的に処理することができるサービスです。
分析にはHadoopというオープンソースフレームワークが使用されますが、煩わしい設定手順などが簡略化されます。
料金は使用しているAmazonリソースによって異なります。

Amazon Kinesis

Anazib Kinesisは、様々なデータをリアルタイムに監視することができるサービスです。

Amazon Redshift

上記のデータベースの項目にも登場しました。
Amazon Redshiftは、分析に適したデータウェアハウスです。

AWS Data Pipeline

AWS Data Pipelineは、データ駆動型ワークフロー用の簡単な管理システムを提供するウェブサービスです。
管理ツールからデータごとのパイプラインを定義し、それらの実行スケジュールを設定することができます。

Amazon Machine Learning

Amazon Machine Learningは、機械学習に役立つAmazonのサービスです。
Amazon S3、Redshift、RDSなどとサービスを結合し、データを結合し、サービスを利用することができます。

アプリケーションサービス

ここからはアプリケーションサービスです。

Amazon SQS

Amazon SQS(Simple Queue Service)は、キューの管理ができるサービスです。
信頼性のあるキューを自前で作成するのは大変なので、役立つということです。

Amazon SWF

Amazon SWF(Simple Workflow Service)はクラウドアプリケーション用のタスク調整と状態管理のサービスです。
ワークフローとタスクを効率的に管理するシステムを簡易に構築することが可能です。

Amazon AppStream

Amazon AppStreamは、ゲームなどのアプリのストリーミングを可能にするサービスです。
ゲームの重い処理やデータをクラウド側で処理することで、ローエンドデバイスでもレベルの高い表現が可能になります。

Amazon Elastic Transcoder

Amazon Elastic Transcoderは低コストのメディア変換サービスです。

クラウド上でファイルのエンコーディング処理を行ってくれます。

Amazon SES

Amazon SESは大量のメールを配信可能なAWSのサービス。
管理画面上から送信することも、SMTPサーバを利用して外部のサーバやメールサービスから送信することも可能。
価格はメール1000通あたり0.1$。

Amazon CloudSearch

Amazon CloudSearchは、AWSのクラウド上での検索機能を提供し、ソフトウェアやアプリケーションに簡単に検索機能を追加することを可能にするサービスです。
利用状況に応じての従量課金制となります。

Amazon FPS(Flexible Payment Service)

Amazon FPSとは、Amazonが利用している決済サービスを別のシステムでも利用可能になる機能です。
特にAmazonアカウントを既に持っているユーザはログインするだけで簡単に利用できます。

AWS サポート

AWSのサポートは、契約したプランによって様々なサポートをうけることができます。
日本と海外ではサポート内容が異なっているので注意です。(やはりAmazonは海外が拠点なので、海外のほうが日本よりも対応時間など手厚い内容になっています。)

AWS Marketplace

AWS Marketplace は、AWSで利用できる様々なソフトウェアが購入可能になっています。
これらを1クリックで購入できます。

まとめ

以上で掲載されていたAWSのサービスは全てになります。
非常に多くの種類のサービスがあるため、個別のサービスについて全て使いこなせるようになることは難しいでしょう。
ただし、システム開発やソフトウェア、アプリ開発には非常に多くの開発時間と、ハードウェアなどの購入費用がかかります。

場合によっては、自前で全て準備したり開発するのではなく、これらのサービスの存在を知っていることや、使い方を適切に知っていることで、コスト削減や成果物の品質向上を達成することができるでしょう。

また、AWSのサービスについて勉強することで、世の中のITの先端技術がどのようになっているのかの一部を知ることもできます。

ただし、AWSのサービスはすべていいことばかりではなく、制約や問題も存在していると思います。
実際使ってみる場合は、その性能を過信せずにシミュレーションやテストをしてから使ってみることがよいでしょう。

コメントを残す

メールアドレスが公開されることはありません。