I have been searching extensively about the difference between synchronous and asynchronous patterns and how this relates to event driven architecture. On its face it is quite obvious, I simply equated asynchronous with Event Driven. But then I came across this quote:
All asynchronous systems are event driven, but not all event driven systems are asynchronous.
This kind of makes sense, if we define synchronous as keeping things in time order. I have also heard other definitions as client and server working with the same "clock", its systems are in "sync". This definition does not make sense to me at all, because no system is actually always in sync. Across the internet, we always have delays and this delay always varies. Hence that seems as a sloppy explanation to me. Thus I fall back to synchronous means "processing in strict time order".
So this made me think that an event driven system can be synchronous if we introduce FIFO queues as our event pattern. That will keep the strict ordering and therefore we have a synchronous event driven pattern.
So, I thought I had it under wraps until I came across this article from Amazon. According to my thought process both these systems are synchronous but Amazon names one synchronous and the other asynchronous. Which led me to this forum, since I trust Amazon documentation more than my own vague reasoning in this context.
TLDR What is a synchronous system? What is an event driven synchronous system?