Today, almost every Web actors have moved or are moving to the Cloud. At Sogilis, we diagnosed a (way too much widespread) design practice, that we’re calling the “reverse design methodology”, which consists in choosing a platform, and then adapt your application and business to fit it !
Typically, this implies to join the hype of Docker/Kubernetes, hire someone that we call « devops » to operate that new thing. Then move our code to this endlessly scalable wonderland, progressively, while redesigning our legacy system along the way, to fit the platform. That is the « Kubernetes Driven Development » ! And here come the hidden cost of « porting the legacy code to the cloud » (distributed logs, monitoring, race conditions, request tracking, memory sharing ….). While all these costs are normal, they are usually unpredicted by developers and architects, because they underestimate the complexity of distributed software.
This is quite a shame because battle proven guidelines exist ! They are gathered under the « Cloud Native » and « 12 factors app » paradigms, which are perfect candidates to lead to a clean, consistent and scalable application design for the Cloud.
In this talk, we propose to expose the unpredicted consequences that we diagnosed on the Kubernetes Driven developments met in our experiences, and then introduce the Cloud Native and 12 factors app principles to explain how these guidelines could protect a system design (or evolution) from having unpredicted costs.