Sky株式会社の自社製品もSaaSが増えるなか、クラウドリソースを利用した開発が多岐にわたるようになっています。
今回はAWSのDynamoDBに関する技術紹介です。
DynamoDBへの更新をトリガーとして後続のLambdaを動かす必要があり、その方法と特徴について、今回は2通り調査しました。
DynamoDB Streams
DynamoDBの変更を検知します。
変更をトリガーに後続のLambdaの処理などを行うことができます。
下記のようなイメージです。
使用方法も簡単で、AWSコンソール上から有効にするだけで機能をONにすることができます。
DynamoDB > テーブル > ≪作成したテーブル≫の「エクスポートおよびストリーム」タブから設定できます。
※AWSコンソール上のDynamoDB設定画面のスクリーンショット
変更を検知するだけでなく、どの項目が変わったかを検知し、変更前後のデータを取得することもできるため、とても便利な機能となります。
Kinesis Data Streams for DynamoDB
DynamoDB Streamsはとても便利な機能ですが、DBの更新の順序とStreamsが検知する順序が必ずしも正確ではないという弱点があります。
そんな時に便利な機能がKinesis Data Streams for DynamoDBです。
DynamoDB Streamsをそのまま置き換えて使うことができます。
※Kinesis Data Streamsを事前に作成する必要があります。こちらは料金がかかります。
Kinesis Data StreamsがLambdaに渡すデータストリームレコードの中にあるApproximateCreationDateTime 属性を使用することで、更新発生の順番にソートすることが可能です。
まとめ
今回調査した2通りの方法を使用すれば、DynamoDBの変更をほぼリアルタイムで検知し、後続の処理を自動的に実行することができました。
また、設定次第で更新後の情報だけでなく、更新前の情報も取得することができ、DBの変更の差分も取得することが容易です。
クラウドリソースはかなりの速度で機能追加や変更、削除があります。
また、一つの課題に対しても何通りもソリューションを検討したうえで、スピード、コストが見合ったものを製品開発では選定して対応しています。
クラウド関連の開発をしている皆様の一助になれば幸いです。
最後までお読みいただきありがとうございました。