Starting a new software project can be daunting and picking a cloud provider that has the services you need can be even more confusing. With Amazons AWS offering upwards of 175 different cloud services and their competitors not to far behind, picking the right provider and effectively deploying your application can be a daunting task for even the most experienced engineers. At P&D, our cloud provider of choice for new projects is AWS, but we are comfortable working on Azure and Google Cloud. With all the offerings available out there we have built a pretty robust method for picking the right platform for the job every time here is how we tend to think through this:
The big initial question is if the client's application is already deployed and we are coming in as a support or extended resource team. In this case, it is almost always effective to keep the existing framework in place and focus on development. There are, however, some cases that call for a re-architecture. If the platform is running on local servers or some kind of colocation/smaller provider a cost benefit can generally be gained by moving to a cloud hosted platform along with what is inevitably a feature benefit. Some cases are merely an outdated design issue, as cloud providers update their offerings and platforms change, smaller teams may not always have the resources, know how, or desire to update their environment to the latest and greatest architecture. This can leave platforms open to a variety of security issues and other potentially explosive problems. In the case of a dated architecture a re-architecture is almost always needed.
When starting a new project, architecture choice can be even more critical when compared to taking over another project. Picking the right cloud provider with the right tool set can allow a platform to grow into what they are offering while picking a poor provider can stifle an even well built application. While there is no "best" provider one of the three major players often ends up in the forefront of any choice, and decisions should generally consider the specific aspects of what they offer. Often times people get wrapped up in what they need now and fail to think about what they may need down the line. Picking a good provider goes hand in hand with thinking about the capabilities you may need when you scale out and grow your business.