The implementation is less complex with kafka. Moreover the updates will be
in "real time".
The deployment task runs every 15seconds, and that's when the manager node will check for local changes, and check-in/commit the changes to the external repo. If there were indeed local file changes, carbon sends a depsync cluster message to rest of the nodes asking to update themselves. The cluster message is sent almost real-time.
Btw, with S3 sync, you can just commit and retrieve the file diffs. This is important because you don't want to update the timestamps of unchanged files. That'll lead to carbon deploying all the depl artifacts again and again.
How do you plan to send just file diffs with Kafka?