AWS #reinvent サーバレスアーキテクチャのワークショップに参加してきた

2022.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS re:Inventとは?

年に1度ラスベガスで開催されるAWS主催の大規模なイベントです。
今回はサーバレスアーキテクチャ作成というタイトルのワークショップ(実地操作ありのセッション)に参加してきました。
ワークショップ自体の内容はかなり長いので細かくは書けないですが、個人的にかなり苦戦しました。(というか時間内に終わらなかった)
なので、今回は初級者向けの記事として作成したアーキテクチャとそれぞれのリソースについて簡単に解説します。
また私自身、メインでGoogle Cloudを担当していてちょくちょく両クラウドの対応するサービスを一言入れるかもしれないので、受け流しながら聞いてください。?

構成したリソース

・Amazon Kinesis Data Streams
・Amazon QuickSight
・Amazon Redshift Serverless
・AWS Glue
・AWS Cloud9

主に構成するアーキテクチャのイメージとしては、データソース(実際はIoTやデータレイクなど)からストレーミング処理をして分析用にRedshift Serverless(データウェアハウス)に取り込んだり、保存用にS3(データレイク)を使用する。そして、その取り込んだデータに対してはQuickSightというBI(ビジネスインテリジェンスツール)で可視化を行うといった流れです。(実例の構成例としていくつかハンズオンの前に紹介していました)
また実際の構築のハンズオンには、Lambda(Faasサービス)という、いわゆるイベントドリブン型のリソースやAthenaも作成していましたが今回は割愛します。

※また余談として、Google Cloudではストリーミング処理にDataFlow、データウェアハウスにBigQuery、データレイクにはCloud Strage、BIツールとしてはLookerがそれぞれ該当するかな??と思います。
(Google Cloudなら、Pub/Sub→DataFlow→BigQuery→Looker的な構成がよく教科書的にもみますが)

では、各リソースについて初級者向けに解説していきたいと思います。

Amazon Redshift Serverless

・概要

分析用のデータウェアハウス(蓄積されたデータを分析)として機能し、Serverlessのためリソースの管理が不要となります。
他社クラウドと比較されるリソースとして主にBigQueryなどが挙げられます。

・特徴

通常のRedshiftではプロビジョニング(リソースの作成)にあらかじめノード数インスタンスタイプを決めなければならず、運用管理にコストがかかる使用となっていましたが、Serverlessになるとその両方の手間が省かれます。(ちなみにServerlessとはサーバーを意識しなくてもいいよという意味合いでもちろん物理的には存在する)
内部的には大まかにマスターノードコンピューティングノードデータを保存するストレージになります。
Redshift Serverless動きとしては、クエリ(分析のための言語)を投げると自動的にプロビジョニング/スケールをしてくれます。
利用料金的には、クエリの分析費用保存するストレージ料金がかかります。
公式からRedshiftの内部イメージ図を引っ張ってきました。

とりあえず一言でまとめると、Redshiftというサービスよりも作成(プロビジョニング)と運用ににかかる手間を省いてくれる比較的最近できたサービスのような感じでいいかなと思います(AWS初学者用の記事ですので多めにみてください...?)

Amazon Kinesis Data Streams

・概要

Amazon Kinesis(Video Stream,Data Stream,Fire House,Data Analytics)のうちの一つに分類されるサービスです。 こちらもサーバーレスであり、主な役割としてはIoTなどの継続的に数秒単位で数多くのデータを送ってくるものと、Fire HouseやLambda、Data Analytics、データを保存する系のリソースなどとの間に位置するサービスです。(Google CloudでいうとDataFlowにあたるのかも)
下記イメージ図


(公式から引用)

・特徴

主に考えられるユースケースの特徴としては、LambdaまたはKinesis Data Analyticsと繋げて、クリックストリームデータなどの高頻度のイベントデータ用のアプリケーションを構築し、数秒でインサイトへのアクセスを可能にするといったものでしょうか。
とにかく、大量のデータ素早く俊敏にさらにスケールも自動的に行なってくれるストリーミングサービスです。
ちなみにFire Houseは数秒でデータをロードするといったリアルタイム性には劣りますが、コード不要で設定のみでデータの受け渡しができるようで、主な宛先としてはS3Redshiftが挙げられます。
Fire Houseとの違いについては過去に当社の方も記事にしているのでご覧ください。
またAWSのSolution Architect試験で使えそうな覚え方としては、Fire Houseの宛先はS3Redshift、Kinesis Data Streamはその他サービス、というような感じで勉強しました(あっているかはわかりませんが、それで受かりました、、笑)

AWS Glue

・概要

フルマネージドなETLツールになります。
ちなみにETLとは、
抽出、変換、ロード (ETL) は、複数のソースからのデータを、データウェアハウスと呼ばれる中心的な大規模リポジトリにまとめるプロセスの事です。ETLは、一連のルールを使用してrawデータをクリーニングおよび整理し、ストレージ、データ分析、機械学習 (ML) 用にあらかじめデータを変換しておきます。
(公式から引用)

とのことで、簡単に言えばデータを保存する前に分析などしやすいように変換をしておく、もしくはその過程で他の機能と組み合わせてDLP機能を付属させるサービスなんてものもあります。
下記イメージ図

この画像では、オンプレミスにあるApach Kafkaと連携させてGlueでデータを分析用にロード/変換し、S3に保存させるという流れが書かれています。

・特徴

そしてフルマネージドなので、もちろんサーバーレスにあたります。(というかセッションが"サーバレスアーキテクチャで構築"なので当たり前ですよね...)
また、ETLツールなのでこれも類似のツールとしてGoogle CloudではDataFolwにあたるかと思います。(Google CloudではAWSと比較すると、一つの製品で機能をまとめている、というようなイメージがあります)
ちなみに今回はETL変換(AWS Glue Studio)をイベントのタスクで取り上げられていたので掲載しましたが、Glue関連のサービスにはその他に、AWS GlueデータカタログAWS Glue DataBrewなどもあるのも特徴です。
AWS Glue自体の実行時間もAWS Lambdaと比べて長時間できるのも違いとして挙げられます。

AWS Cloud9

・概要

ブラウザで操作可能なクラウドベースの統合開発環境 (IDE)になります。
通常であれば、IDE自体をインストールする必要などがありますが、クラウドなのでコンソール画面と同じようにブラウザが使えるわけです。
そしてもちろん、コードを記述、実行、デバッグなど通常のIDEと同じような機能が揃っています。

・特徴

今回は特徴をいくつかピックアップしてみます。

・端末が異なっても作業が可能(インターネット環境があればどこででも作業ができる)
・ブラウザで利用できる
・必要なツールがインストール不要で揃っている
・多言語に対応している
・チーム編集機能がある(ペアプログラミング)

ざっとこんな感じでしょうか??
簡単に言えばクラウドの利点を最大限享受できるIDEといったところですね!!
また逆に考えると、インターネット環境がないと通信できず使用不可といったデメリットも存在します。
通常の会社や自宅で使用する分には問題ないかと思いますが、出張などで通信環境が悪い場所に行ってしまうと、、、、ですね。

Amazon QuickSight

・概要

さまざまなデータソースから情報を取り込み、可視化出来るBIツールになります。
BIツールとはいわゆる、BI=ビジネスインテリジェンスの略で、某サイトでは「事業上の意思決定のために情報を分析して得られる知見およびそれを得る機構である」とありますが、つまり集めたデータをビジネスのために活用していく目的で使われます。
SaaSアプリやデータベース、あらゆるデータからビジネスに役立つ意思決定をするための材料を収集するといった具合でしょうか。
さらにQuickSights自体は専用のEC2でホストされるウェブアプリケーションとして提供されているため、パブリックエンドポイントを解してアクセスをする仕組みとなっております。
余談ですが、Google CloudではBigQueryCloud Storageもパブリックエンドポイントを使用しての操作になりますよね。そしてそこから、インターネットへ出たく無い場合に使用するプライベートアクセスなどもあり、どのようにそのサービスがホストされているかを頭に入れるのも、そこから派生するサービスを理解する上では大事だなー、、、と思いました。?

・特徴

・ダッシュボード機能
⏬こちらは言わずもがなですが、1番の特徴であるダッシュボードで一元的に可視化出来る事です。

データソースを問わずこのように簡単にダッシュボードに追加できるのはサーバーの調整が不要なサーバレスならではと言って良いかも知れません。

・ML Insightsによる分析が可能
この機能を使用すれば、専門知識やMLの使用経験がなくても、データ内の傾向や異常値を発見でき、簡単にデータからビジネスに役立つ情報を予測/分析することが可能です。

・アラート機能
閾値を設定し、異常が確認された場合にはアラートをメールで通知することも可能です。

・さまざまなソースからのインポートが可能
主にリレーショナルDB、SaaSアプリ、サポートされているファイルのインポート(S3またはローカル(オンプレミス)にあるファイル)が挙げられます。
ファイルのインポートの形式については、CSVTSV(カンマ区切りおよびタブ区切りのテキストファイル)、ELFCLF(拡張ログ形式と共通ログ形式のファイル)、JSON(フラットファイルor半構造化データファイル)、XLSX(Excelファイル)がサポートされています。
取り込み元をさらに詳しく知りたい方は公式サイトのサポートされているデータソースをご覧ください。

ざっと複数の機能を上げましたが、QuickSightsは他にも特徴的な機能がありますので少しでも知るきっかけになれれば幸いです。?‍♂️

まとめ

普段はGoogle Cloudばかりを担当しているためハンズオンラボではかなりついていくのに必死でしたが、わからないことを調べてブログにすることで、AWSとGoogle Cloudとの比較を考えられたり、知らない製品についての知見も増えたりととても有意義な調査ができました。
今後、re:Inventの記事をまたいくつかアップロードしていくのでお楽しみください〜。
長い時間ありがとうございました!!!