It is very common, that the primary task of the software developer is to ensure certain functionality of the application. The green button is green, and red button is red, and when pressing these buttons, certain processes are triggered. Issues related to the cost of underlying infrastructure necessary to operate the application, especially at scale, are sometimes forgotten, as this is not the developer’s problem any more. When in production, the application owner is often unpleasantly surprised about the actual cost of running the application, limitations of scalability due to improper architecture, and the cost associated to scaling the application, when necessary. Possible scenarios for situation development: start all over again (sunk costs and lost time), change the developer (highly unwanted, as normally no one is interested in taking up responsibility for someone else’s mess) and try to fix the application, buy loads of new hardware to support the existing clumsy application, or turn to a cloud service provider to at least have someone to blame, if the application is still not working fine or costs tons of money to run.
Buyers, who are competent themselves, normally avoid such situations by defining a precise task to developers and being able to track the progress and test the result. But what, if you don’t have the competence in-house? Very simple. Find an infrastructure partner, possibly a cloud service provider, to accompany you along the challenging way of application development. Infrastructure partner will not develop the application instead of developer. But it will turn yours and their attention to certain things, that need to be considered, such as – how will the application handle unexpected peaks? How will it load-balance requests? Will it be horizontally or vertically scalable, if any is an option? Will it be able to interact with load balancers? Will it be able to integrate into a CDN? Is the code small enough to be executed in a serverless compute environment? Is the web-site optimized well enough to save on traffic? Can the application be run in a high-availability mode, or even geo-redundant high-availability mode? And many more, depending on situation.
To conclude. Keep software development and infrastructure planning processes very close together. But still separate, as sourcing software development and infrastructure from the same one source will most certainly lead to extra resources necessary to run the software.