【IT技術】Amazon LambdaでS3やRedshiftを使ってビッグデータ基盤を構築する
[:ja]皆様、ご無沙汰しております。
Johnneyは只今日本に出張しておりまして、浅草界隈のアパホテルでこの記事を書いています^^;
それにしても、アパホテルは、ビジネスマンにとっては過不足なく、いい距離感で接客してくれますので、非常に気に入っております笑
ところで、最近耳にするのが当たり前になってきた「ビックデータ」ですが、今までビッグデータの保存や検索には高度な技術や大容量のストレージ、サーバースペックを必要としてきました。ところが、徐々に技術やクラウドサービスが進化し、今では簡単にビッグデータ基盤を導入できるようになってきています。
今回は、そのビッグデータ基盤つくりに役立つ、AWS(Amazon Web Service)のLambda、S3やRedshiftについてお伝えいたします。
Lambdaとは?
LambdaとはAWSのサービスの1つで、サーバーを構築することなく、処理を組み立てることができる仕組みです。従来のクラウドでは、アプリケーションサーバー等を構築して、その中にバッチ処理やシェルスクリプトを設定し、定期実行する必要がありました。
その点、Lambdaは、AWS上の様々なイベントを起点(イベントトリガー)として、処理を実行できるようになっている優れモノなのです。
しかも、以下の図のようにAWSだけでなく他のサービスや外部サービスと連携して、様々な処理の組み立てが可能なのが、Lambdaの良いところでもあります。
そのLambdaの柔軟性、汎用性を利用すれば、比較的低コストでビッグデータ基盤を構築することが可能になります。
次に、AWSが提供しているビッグデータ基盤であるRedshiftについてお伝えします。
Amazon Redshiftとは?
Amazon RedShiftとは、PostgreSQLをビッグデータ用に発展させたAmazonが提供するビッグデータ基盤の1つです。
従来のデータ基盤(≒データベース)と比べて、大量データの検索に特化した仕組みとなっており、
特にTableau(タブロー)の様なデータ可視化ツールとの相性が良いといった特徴があります。
但し、データ登録や更新といった処理は遅くなりがちなため、頻繁に登録や更新が発生するようなデータの蓄積(会員、商品など)には向いていません。
従って、日ごとに変化するデータ(商品在庫の日次推移、株価など)等、一回登録すると更新が発生しないようなデータの分析に特化している仕組みになっています。
では、次にRedshiftにデータを取り込む場合、どのようにすればよいかをお伝えします。
Lambdaを操り、データファイルをRedshiftに取り込む
例えば、様々な為替情報を日次で1つのビッグデータ基盤(Redshift)にまとめる場合、
通貨ごと為替をCSVなどでAmazonS上にアップロードし、それをAmazon S3(ストレージサービス)から取り込むといったことができます。
従来の仕組みであれば、クラウド上にアプリケーションサーバーを構築し、そのアプリケーションサーバー内の定期処理(バッチ処理)によってストレージ領域にアップロードされたファイルを定期的にチェックし、新しいファイルがアップロードされていたら取り込む・・・といった処理を実装する必要がありました。
Lambdaはそれをすることなく、ファイルアップロードなどのイベントに紐づけて取込処理を実装できるようになっています。
取込処理も、従来のSQLだけでなく、COPYコマンドというシンプルな処理があり、Redshift上のテーブルとCSVを1:1で紐づけて、CSV内のレコードをまとめて取り込むことができます。逆に従来のSQLでInsertやUpdateを行うと、Redshiftの特性上(※)従来のSQLよりも遅くなってしまいます。
※詳しくは、「列志向」「行志向」で検索してみてください。
さらにLambdaの保守を容易にするCloudWatch
AWSにはLambdaの保守を助ける様々なオプションがあります。
例えば、CloudWatchは、Lambdaで処理した結果を長期間ログに保存する事ができます。
取込時に障害が起こった場合のログを保存できますし、Lambda上の実装も容易なので、わざわざプログラミングでログの処理を独自実装する必要がありません。
おわりに
Lambda、Redshift、AmazonS3など、様々なAWS内のクラウドサービスを使いこなせば、簡単にITインフラ基盤の構築が可能になりました。大量のデータを可視化して、利益拡大を図りたい方、膨大な研究データを扱う方は、是非ビッグデータ基盤の導入を検討されてみてはいかがでしょうか。
弊社は、ビックデータ基盤の構築も行っております。
興味がおありの方は、お気軽にご相談ください。
[:]