Infrastructure paves the way to success
This is a short post about a phenomenon I have seen already in the past years. Every time we build a project the developer makes everything work locally in whatever way is known to him. So either using a service or own docker images or installing the actual software on the host system.
For many years the rise of DevOps is taking place. These engineers are there to help you not only make your daily life easier by providing you the correct way of doing local development but also extend that entire line to production environment.
Right now and in the recent past developers would add new services and third party technologies and then when it came time to deploy to acceptance and production the resident system administrator or DevOps engineer would get told “oh yeah by the way I need MongoDB, Redis and a task scheduler written in python 3 on there as well.” . Which is a lot more work than you might realise. As it needs to be maintained, secured, scaled and made future proof.
If infrastructure gets consulted from the start than the choice for the service you want might be negated because it is not doable to run it easily in large environments. For example Websockets are quite a pain to do properly and make it so all instances know about the connections. Maybe another way exists to do the same that is more time developing it but less time maintaining the infrastructure or better yet less fragile.
Fragility
The fragility or conversely the less robust a particular infrastructure is the worse it will be for your success rate. Maintaining it is horrendous and it is also not reliable. Anything that is not reliable and secure you cannot trust and if you cannot trust your own product how do you expect others to?
Fail early, fail often
For everything in life it is better to fail early and often than later and occasionally. Infrastructure engineers need to learn the limits and setups that seem good on paper by putting them in the real world. There is always something you forgot to take into a account.
Get your infrastructure together with the software architecture and develop them both continuously. That way you will be the most successful one out there.