アナリティクス
EMR
マネージド型の大規模データ分散処理基盤 Hadoop に代表される、Spark、HBase、Presto、Hive といった分散処理フレームワークを実行するためには、異なるノードへのデータの分散配置や、ノードに処理(タスク)を割り当てるマスターノードと、データをHDFS に保存するコアノード、実際に処理を行うタスクノードの管理が必要になります。このマスターノード、コアノード、タスクノードの構築や拡張は、EMR を利用することで容易に実現できるようになります。 EMR のノードには、EC2 インスタンスが利用されます。大規模データの分散処理には、多数のEC2 インスタンスが必要になるため、いかにコスト効率良くEC2 インスタンスを利用するかが重要になってきます。EMR の機能や、EMR をコスト効率良く利用するためのベストプラクティスの理解が必要
Athena
S3 に保存されたデータに対し、標準SQL を実行して分析処理を簡単に行えるサービスです。Redshift やEMR との大きな違いとして、Athena はクラスタノードやEC2 インスタンスを持たない、という点が挙げられます。Athena の料金は、S3 上のデータをスキャンした量に応じて課金されます。S3 上に保存されているデータ(例:アプリケーションのログデータ、監査ログデータ等)に対してクイックに分析を実行したい、というユースケースに向いている
CloudSearch
マネージド型の検索機能サービスです。CloudSearch を利用することで、どの検索キーワードが、どの文書に含まれるかを簡単に管理でき、検索機能の実装・運用工数を減らせます。 アプリケーションで検索機能を提供する場合、テキスト検索や自動入力支援等の機能を実装するだけでなく、検索インデックスのメンテナンスや、検索機能自体の高可用性・拡張性も考慮が必要ですが、マネージド型サービスなので自動でスケールする等の非機能面も考慮されたサービスになっている。
Elasticsearch Service
Elastic 社が中心となって開発を推進しているElasticsearch のマネージド型サービスです。従来、AWS は、検索機能サービスとして前述のCloudSearch を提供してきましたが、マーケットにおけるElasticsearch のシェアの高まりを受け、追加の検索機能サービス「Elasticsearch Service」をリリースしました。Elasticsearch には、Kibana というBI ツールがデフォルトで付属しており、Elasticsearch Service に保存されたデータを使用して、データの分析や可視化を容易に行うことができる
Kinesis
ストリーミングデータをリアルタイムで一時保存、配信、分析するためのマネージドサービスです。Kinesis は、ストリーミングデータの収集、処理、分析のための複数の機能を提供しており、サーバーやセンサーデバイス等から断続的に送られてくるデータやログ情報をリアルタイムで処理するユースケースに向いています。
- Kinesis Data Streams は、ストリーミングデータをデータ送信側からインプットとして受け取り、そのデータを、複数のシャードから構成される「ストリーム」内に一時保存する機能です。データ送信側(プロデューサー)は、OS にインストールするKinesis Agent や、Kinesis Producer Library(KPL)と呼ばれるライブラリを活用して独自開発したアプリケーションを経由し、ストリームに対してデータを送信することができます。また、データ処理側(コンシューマー)は、Kinesis Client Library(KCL)と呼ばれるライブラリを活用してアプリケーションを独自開発し、ストリームから取り出したデータに対して後続処理を行うことができます。
- Kinesis Data Firehose は、ストリーミングデータをデータ送信側からインプットとして受け取り、S3、Redshift、Elasticsearch Service といったストレージ、データベース、分析サービスに対して配信する機能です。データ送信元としては、前述のKinesis Data Streams を指定することも可能です。この場合、データを取り出すためのアプリケーションをKCL で開発する必要はなく、Kinesis Data Streams から直接Kinesis Data Firehose に対してデータを配信できます。
- Kinesis Data Analytics は、Kinesis で受信したストリーミングデータについて、標準的なSQL を利用してリアルタイムに分析を行うことを可能にする機能です。Kinesis Data Firehose を利用してS3、Redshift、Elasticsearch Service に配信されたデータを分析することも可能ですが、Kinesis Data Analytics を利用することで、Kinesis 内に保持されたストリーミングデータをSQL で直接扱うことができ、よりリアルタイム性の高い分析を行えるようになります。
QuickSight
マネージド型のBI サービスです。マネージド型であるため、QuickSight 自体のインフラの管理は不要であり、従業員へのダッシュボードの提供や、ブラウザを利用した分析やデータの可視化を可能にします。QuickSight の強みは、オンプレミス環境のデータベース、Excel やCSV といったファイル、Salesforceのような3rd Party のSaaS だけでなく、AWS が提供するさまざまなサービスをデータソースとして活用できる点にあります。対応している主なデータソースとして、S3、RDS、Redshift、Athena 等が挙げられる
Glue
ETL 処理をマネージド型で提供するサービス Glue を利用することで、ユーザーはPython やScala といったプログラミング言語を用いて実現したいETL 処理を記述し、データソースからのデータのクロール、データ変換、データ取り込みのジョブを登録することができます。 ETL 処理を実現する商用のパッケージ製品は、一般的にライセンス料金が高額であり、また、パッケージをインストールするためのサーバーも必要になります。これに対しGlue では、ETL 処理の料金は従量課金型で発生するためコスト効率が高く、また、サーバーレス型のサービスのためパッケージ製品のインストールやサーバーの管理といった作業も不要になる
アプリケーション統合
SNS
通知や、分散アプリケーション同士の連携に利用可能なサービスです。 通知の手段はさまざまです。Email での通知や、HTTP/HTTPS によるPOST、モバイル端末へのPush 通知に加え、後述するSQS へのメッセージの登録や、Lambda ファンクションの実行等、複数の通知手段が提供されています。
- 通知を送る側をPublisher(送信側)
- 通知を受信する側をSubscriber(受信側) と呼び、Topic という論理的な単位を通じて紐付けが行われます。 SNS は、単に通知を実現するだけでなく、アプリケーション連携にも活用できます。1 つのTopic には、複数のSubscriber を紐付けることができます。Publisher がTopic に対して通知を行うと、紐付けられているすべてのSubscriber に通知が行われます。 ここでは、例として、SNS とSQS を活用したFanout パターンを説明します。Publisher 側はSNS を通じてTopic にメッセージを送信します。次に、SNS はTopic と紐付くSQS キューすべてに対して、同じメッセージを通知します。複数存在するSQS キューには同じメッセージが保存されますが、後続のアプリケーションでは、メッセージを活用して異なる処理を実行することができます。
SQS
メッセージキューイングサービスです。メッセージキューイングは歴史の古い技術であり、AWS 上でアプリケーションやサービス間を疎結合に保つために、SQS を活用することができます。
- SQS にメッセージを送信する側をProducer
- SQS からメッセージを取り出す側をConsumer と呼びます。Producer とConsumer の間にSQS が存在することで、一時的にメッセージの送信が増加しても、キューにメッセージを保存しておくことが可能なため、Producer 側は後続の処理を継続して行えます。また、Consumer 側では、キューからメッセージを取り出し、逐次的に処理を行うことができます。さらに、SQS に保存されたキューの量(Queue Length)は監視が可能なので、キューの量に応じてAuto Scaling を発動させ、Consumer 側のEC2 インスタンスを増やすような対応もできます。
SES
マネージド型のSMTP サービスです。メッセージの送信だけでなく、受信も可能です。SMTP サーバーは、EC2 にPostfix 等のミドルウェアをインストールすることでも構築可能ですが、その場合は、SMTP サーバーやEC2 インスタンスの死活監視および冗長化、ミドルウェアやOS のパッチ適用等の運用が必要になります。マネージド型のSES を活用することで、それらの運用工数を削減できます。
SWF
マネージド型のワークフロー実行基盤サービスです。ユーザーは、AWS Flow Framework というSDK を活用してワークフローアプリケーションを開発し、SWF 上にデプロイし、業務処理を行うことができます。ワークフローアプリケーション内では、ワークフローのキック、ワークフローを構成するタスク、ワークフロー中で条件分岐判定を行うデサイダー等を実装し、業務処理を記述することができます。
Amazon API Gateway
API の作成、公開、保守、モニタリング、保護を行うためのマネージドサービスです。Amazon API Gateway は、REST API 、WebSocket API、およびHTTP API をサポートしており、AWS WAF やCognito(いずれも後述)といったセキュリティサービス、Lambda の呼び出し等、他のAWS サービスとの連携も容易です。マネージド型のAmazon API Gateway を利用することで、API Gateway 自体の運用負荷やスケーリング、可用性担保といった点をAWS 側にオフロードすることが可能になります。
Step Functions
アプリケーションは、複数の処理が連携して動作します。それぞれの処理を実行するためには、処理(State)間のデータの受け渡し、条件分岐、同期・並列実行、リトライや例外処理等のさまざまな考慮が必要になります。 Step Functions は、複数の処理をステートマシンとしてJSON 形式の定義ファイルにより定義し、実行する基盤を提供します。ステートマシンがStep Functions に登録されると、ユーザーは、定義されたワークフローをマネージメントコンソール上でビジュアライズされた形式で確認することができます。 Step Functions は、Lambda、AWS Batch、ECS、SNS、SQS といった多様なAWSサービスとネイティブに連携することができます。このため、AWS を活用したワークフロー処理の開発と運用を容易に行えます。
Elastic Transcoder
AWS が提供するマネージド型のメディアサービスの一種であり、動画のTranscode(動画の解像度やフォーマット等の変換処理)を実現します。Elastic Transcoder を利用すれば、S3 上に保存された動画ファイルを変換し、変換後のファイルをCloudFront 経由でエンドユーザーにストリーミング配信する、といった仕組みを容易に構築することが可能になります。
AIサービス
Rekognition
画像・動画を認識するサービスです。Rekognition には、あらかじめ学習済みの顔や物体、テキスト、シーン等を検出するモデルがサービスに組み込まれており、インプットとして画像や動画を提供することで、簡単に画像・動画認識を実現することができます。
Polly
テキストデータから音声データへの変換を行うサービスです。Polly にテキスト形式の文章をインプットとして提供すると、その文章の内容を認識し、人間のように自然な音声で読み上げます。
Transcribe
Polly とは逆に音声から言語を認識し、テキストに変換するサービスです。Transcribe は、文字起こしのストリーミング処理や複数話者の認識に対応するだけでなく、Amazon Transcribe Medical として、医療関係の専門用語をあらかじめ学習させておいた医療に特化したサービスも提供しています。
Translate
言語の機械翻訳サービスです。Translate がサポートする言語間であれば、テキストファイルをインプットとして提供することで、容易に外国語の翻訳を実現できます。
Comprehend
テキストの自然言語の内容をインプットとし、テキストの内容から話者の感情(満足している、怒っている、等)を推論するサービスです。たとえば、コールセンターでの会話の内容やソーシャルメディアへの投稿の内容をComprehend にインプットとして提供することで、自社製品に対する評価や顧客を分析し、サービスや製品の改善につなげることが可能になります。
Lex
Lex は、音声やテキストをインプットとし、アプリケーションに対して対話型インターフェイスを提供するサービスです。Lex を活用することで、Amazon Alexa のような自然言語による対話ボット(チャットボット)を容易に開発できるようになります。
Forecast
時系列予測サービスです。Forecast は、Amazon.com 社の需要予測で実際に使われているテクノロジーにもとづいており、インプットデータをもとに、製品需要やリソース計画といった予測を行うことができます
Personalize
レコメンデーション(推薦)サービスです。これは、Amazon.com社のEC サイトにおける「おすすめ商品」情報の生成に利用されているテクノロジーにもとづいています。Personalize を活用すれば、自社のアプリケーションへのレコメンデーション機能の組み込みを容易に行うことができます。