In the beginning there was nothing. And the programmers said “let there be a monolith”. And a monolith was created, but it was coupled and not scalable, and the programmers saw that it was not good. Then they said “let there be microservices”. And microservices were created. At first it was good, but with microservices came chaos and problems, like: integrity, consistency, testing and concurrency issues. And the programmers thought “What if we could isolate all the side effects leveraging idempotency and functional programming to solve these issues?” So they said “let there be a side effect machine”. And a side effect machine was created. And It was very good. A magic new world was out there.