はじめに
知ってる人には常識なのかもしれませんが、個人的にへぇボタン連発だったので、超小ネタですが恥を忍んで共有します。
経験した事象
CloudWatch Eventsでcron式を用いて定時にルールをトリガーするようにしていたら、ある日ターゲットがほぼ同時に2回実行された。
原因
1 つのイベントに応じてルールが複数回トリガーされました。
CloudWatch イベントで、ルールのトリガーまたはターゲットへのイベントの提供で何が保証されますか。
まれに、単一のイベントまたはスケジュールされた期間に対して同じルールを複数回トリガーしたり、
特定のトリガーされたルールに対して同じターゲットを複数回起動したりする場合があります。
バッチリ書いてある。。。
おわりに
知っていればなんてことはないのですが、知らなければそんなことは頭になく、単純に利用する分には再現性もないのでテストしていてもスルッと漏れていってしまうタイプの現象でした。
ドキュメントをちゃんと読む。基本的なことをしっかりやりましょう(お前が)。
反省はさておき、分散システムにおいて一貫性と、可用性とかスケーラビリティみたいなことは常にトレードオフであり、AWSはCloudWatch Eventsのようなサービスにおいてこういう仕様を選択したんだなあと興味深く査収した次第です。
クラウドネイティブなアプリケーションにおいてリトライの可能性や冪等性といったことは基本事項としておくことの重要性をあらためてかみしめながらこちらからは以上でございます。