2

私は別のソース(サービス)からのデータを使用する1つのサービスを構築しています。だから、AWS SQS必須かどうか

その他のサービス----> SNSトピック----> SQS ----> AWSラムダ---->ダイナモDbの

- :だから、私は次のパイプラインを使用することを考えていますSQSが加入者となるSNSトピックにデータをプッシュします。 AWS LambdaはこのSQSのトリガーを持ってSQSのメッセージを聞き、それをDynamo Dbにプッシュします。これは大丈夫ですが。しかし、今私は本当にSQSが必要かどうかを考えています。それを避けることはできますか? SQSを使用する代わりに、AWS LambdaはSNSに直接トリガーを与えます。 AWS SQSを使用しない場合、私はちょうど1つのケースを考えています。 AWS Dynamo DBが失敗した場合のシナリオはどのように処理されますか?私はSNSだけで、その間にいくつかのメッセージが失われると思います。私のDynamo Dbは失敗した状態ですが、SQSを持っていれば、それらのメッセージはSQSキューに保存されます。

私の理解が正しいかどうか教えてください。

ありがとうございました。

+1

SQSはポーリングアーキテクチャであるため、Lambdaを起動できません。ただし、Lambdaのようにイベント駆動型であるため、SNSからLambdaを起動することはできます。詳細については、Lambdaの[サポートされているイベントソース](http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html)を参照してください。 – stdunbar

+0

あなたの答えをありがとう。私はSQSから直接行う方法はないと思います。しかし、私はこのブログで述べたように私たちができると思う一つのカスタム方法があります。 https://cloudonaut.io/integrate-sqs-and-lambda-serverless-architecture-for-asynchronous-workloads/。それ以外の問題は、SNSだけでSQSを使用しないと、Dynamo Dbが失敗した場合に問題が発生する可能性があることです。 – hatellla

答えて

5

コメントにはあまり答えられないので、ここで試してみます。

リンク先のアーキテクチャはかなり一般的です。 2つの最大の落とし穴は、何もする必要がなくても、ラムダの使用のために請求されることであり、あなたのデータは最低1分のポーリング間隔の量だけ遅れることがあります。しかし、これらの事柄のどちらもあなたの問題では重要ではありません。

SQSは、DynamoDBに障害が発生した場合のデータの一時ストアとして使用できます。しかし、それが失敗した場合、あなたは何をするつもりですか? SQSが失敗してメッセージを失った場合はどうなりますか?ラムダが失敗してコードが実行されない場合はどうすればよいですか? DynamoDBは、SQSやLambdaのようなホスティングサービスです。Amazonは他のサービスと同じように動作させるために非常に努力します。発生する可能性のあるすべての障害シナリオを想定して設計すると、決してコードを提供できなくなります。私はあなたができる最も簡単なアーキテクチャに集中し、あなたが支払っているサービスに信頼を置いていきます。

+0

ありがとうございました。それで、あなたは何をお勧めしますか?SQSの使用はそれほど多くないようですね。 – hatellla

+1

いいえ、あなたのシナリオでSQSの値が表示されません。実際のメリットがないために複雑さが増します。 – stdunbar

+0

コメントのように「考えられるすべての失敗シナリオの周りに建築をしようとすると、決してコードを提供しないだろう」と言います。 +1。 –

関連する問題