When I tell people, “No transactions!” their first reaction is either “he’s mad” or “for my use-case its necessary”.
I know this was my reaction when it was first said to me.
I happened to be working on a money based system at the time; something you would think that is the very definition of a system that “must” use transactions.
As engineers we are instinctively drawn to things that are “right”, “clean” or “correct” and we are therefore attracted to the warm fuzzy feeling we get from using ACID compliant transactions.
We happily use SQL transactions with the knowledge that our data will always be perfectly clean and neat.
However, should you ever need to build a system that truly scales, this same perfectionism will kill you.
In order to get the maximum possible performance out of your system, you might just have to do something uncomfortable and sacrifice “correct” on the altar of performance.