If you're starting a project today, you're most likely considering a cloud vendor to run your applications and services. As you’ll find out, this is becoming increasingly harder.
No longer is choosing between cloud providers a matter of choosing the best Infrastructure as a Service vendor.
No longer is running an application or a service a matter of simply installing it on an Operating System, running on a (virtual) machine in a data center or cloud.
No longer is designing a (cloud) infrastructure, a job an Infrastructure Architect can do after getting a hand-over from a software architect.
The cloud has become an integral part of the software architecture design phase. Software Architects and Cloud Architects can work together to analyze which cloud building blocks, by which cloud vendor, best suit the software architecture of a new application or service.
I.e. if you’re designing an image media handling application to process uploaded images of homes for sale by realtors for online presentation. You can impress your Software Architect by showing him how much of this coding hassle can be taken away by using Amazon Web Services S3, SQS & SWF. Leaving only a few lines of code to glue it all together and to do the real magic of the actual processing.
If your designing for a light weight campaign website, it takes only a few clicks & ticks to have a full blown hosting platform in Azure App Services (formerly known as Websites). And with a direct connection to a Bitbucket branch where the code is located, you get Continuous Delivery at your fingertips.
Today standard application vendors, like Web Content Management vendors Sitecore and EPiServer, are adapting their software to perfectly fit the cloud.
In both cases the Microsoft Azure Platform as a Service cloud. If you’re still installing these applications on servers in an Infrastructure as a Service cloud, you’re having a hell of a time implementing features which the Azure Platform as a Service implementation offers out-of-the-box. Features like:
- Zero-Downtime deployments through Azure’s integrated Staging environment.
- Auto-Healing through automated process recycles.
- Auto-Scaling, request based
So what is the State of the Cloud? Which cloud provider should you choose for which scenario? Generally I follow this approach:
For all projects which require an Infrastructure as a Service cloud, AWS is the go-to cloud provider. AWS is still leading IaaS cloud vendor when it comes to quality, performance, stability and (IaaS supporting) functions & features. Although Microsoft is making great progress in catching up, AWS is still in the lead here.
Azure is the go-to cloud provider for all my Platform as a Service projects. AWS seriously lacks the functions & features compared to Azure, when it comes to cloud building blocks for your applications.
Of course there are exceptions: Hybrid Clouds. As simple as connecting different IaaS clouds together. Or as complex as mixing and matching IaaS, PaaS, AWS, Azure, all in one big bowl. Basically picking the best of breed options, as far as you can go, without hurting your overall architecture.
A real life example of the latter is one of my customers. This customer is a large European eCommerce organization. They wanted to implement Sitecore CMS as their Web Content Management system. Biztalk to handle all eCommerce transactions. And legacy, non-cloud applications, in an old-school datacenter.
Like I mentioned before, Sitecore is very happy in the Azure Platform as a Service cloud using SQL Azure as DBMS. Microsoft offers a Biztalk as a Service proposition, but at the time of the design, it was still lacking funtions and features required by my customer. So a standard Biztalk installation was required.
I designed a Hybrid IaaS, PaaS multi cloud vendor solution. Today we are running a Pan-European eCommerce platform, with Sitecore in Azure PaaS, making full use of all functions and features available. Connected by Azure Service Bus to a BizTalk cluster, which handles all transactions to backend services in a old-school datacenter. A full best of breed solution and one happy customer.
So infact designing a new cloud solution for a project is only becoming more interesting, due to the ever increasing functionalities of the cloud and the increasing difference between the different cloud providers. Only a good understanding of all the options available, will help you design the best possible solution for your company or customer.