Developing cloud products is hard. Compared to enterprise software products, cloud software is based on a wholly different execution environment which provides less guarantees e.g. in regards to availability but at the same time the product needs to meet higher expectations from users. I wrote about this already in my other blog post: Uncover implicit requirements for cloud software.
I’m happy that recently I had the chance to further elaborate on this topic in the German magazine “Java aktuell” of the iJUG and share some of my experiences in their current edition “Architecture”. In this article I’m telling a story about “Bertha Business” and “Tanja Technology” who start developing a cloud product and fail (and recover) a few times on the way, ultimately risking the success of the product. They encounter
- sudden service restarts which lead to inconsistencies in their data
- that architectural changes are required because of the transitive dependencies that consistency guarantees of different subsystem have
- how important metrics are in a distributed system
- users changing their behavior suddenly which overloads the system, because they need “points of synchronization” in their architecture where all requests need to be serialized to achieve functional correctness
- and that cloud software has implicit requirements.
The full article is available for download (German):
In order to build sustainably successful cloud products, it is important to clearly and explicitly define the requirements especially regarding availability and scalability, to architecturally handle points of synchronization upfront and always keep a watchful eye on the overall system while developing.
Photo by Ben Dumond on Unsplash.
