Everyone is talking about the Cloud. And indeed there are many good reasons to deploy your solution in the Cloud. Let us share some Cloud benefits, challenges of hosting on-premise and why the Cloud should be a consideration even in restrictive environments.
When I started my first job in 2003 the majority of software was developed as a desktop application. Web applications were somewhere far on the horizon, discussed rather as the vision of the future than reality. Nowadays it seems to be quite the opposite - web applications are the first choice for most companies developing new products (or at least should be if one wants to hit the global market).
The Key Benefits
Software as a Service (SaaS) offerings have become a daily life for many companies due to the following benefits:
No additional installation is required as your web browser is already installed.
With automatic license management there is no need to track real usage.
There is full cost control—you typically pay for an exact amount of users (or similar resources).
The entry and exit costs are low—often you can start in minutes and need not be bothered with infrastructure clean-up once you stop.
For further information in this direction let me recommend the following article: SaaS or not: bringing clarity to the confusion around Cloud software.
The Challenges of On-Premise
With the classic on-premise approach on the other hand side, Operations departments often struggle—together with Architects and Developers—in answering key questions such as:
How much bandwidth do we need right now and what do we expect for the future?
What hardware will get the job done at the moment?
How are we going to scale the infrastructure (hardware, software and network)?
How much disk space to we need for backup today, next year or in 3 years?
What are we going to do in direction of redundancy and high availability?
and other hard to predict fortune-teller things
Business on the other hand is concerned about costs:
What we are going to do if we over/under estimate infrastructure needs and cause financial loss or bad user experience (poor performance) based on wrong sizing?
What if we hit the market, need to quickly scale and won’t be able to fulfil demand?
What if an unexpected event strikes our server room / colocation point gets flooded or has any physical malfunctions?
What if we want to move our support team to another location?
The ultimate answer to most of these questions that will relieve your headaches is: Use the Cloud Luke ;-).
The Response From Cloud Providers
Providers such as Amazon (aka AWS Cloud), Microsoft (aka Azure Cloud) and Google (aka Google Cloud) are capable of deliver services and resources on a level of quality that will make you sleep way better than the constants worries caused by any on-premise setup. Most of the concerns described further above will simply vanish completely. Lets have a closer look with some examples:
Bandwidth Fulfilling virtually any bandwidth needs is none of your concern anymore. All major providers have incredible bandwidth (a couple GBits if not hundreds) at their and your disposal—with automatic DDoS protection included.
Hardware There typically is a large amount of different types of virtual machines that you can have available in minutes rather than days or weeks (which is so often the case in large enterprise environments)
Scaling Many core services are scaled automatically—out of the box with extremely low to zero effort from your side. That goes from Load Balancers over Web Applications (Azure) to Lambda (AWS)—to mention just a few.
Redundancy and High Availability You can typically expect several large scale data centers in each region—connected with Fiber networking. Your typical on-premise environment is no match to that.
Moving support teams Obviously that won’t be an issue—just create logins and take care about good Internet connection
What Is a Real Cloud?
Let me not leave unmentioned that you should be aware that not all service providers are actual Cloud providers—regardless of what they claim. But what is a ‘real’ Cloud from our perspective:
There is a high level of automation (no need to ask for additional disk space or creation of support tickets to have a new virtual machine supplied).
Unlimited resources (from a customer perspective).
There is a high level of redundancy.
Infrastructure elements are available as a service (e.g. load balancers, networks, shared disk spaces).
There are automatic license management and costs (no need for you to go and buy Windows or OracleDB licenses to name two examples).
With well planned backups and restoration tests, the worst case scenario where an entire regions goes offline (e.g. political reasons) means you can bring back your services in minutes (or a couple of hours if your have a large service) in another region. Compare that to building your own server rooms across several countries all over the globe and you will quickly realise how powerful and relatively cheap the Cloud option actually is.
Cloud Makes Sense Even Where It Is No Option
But behold! You are afraid of data leakages or you are legally bound (e.g. as a financial institution) to creating your own data centers? Even in this scenario the Cloud is very interesting option! You can leverage a Cloud environment to prepare scenarios and test your application in order to get objective answers to questions such as “What resources do I need?” or “Is my application scaling well and as expected?”. That allows you to be prepared for all the things that might happen in your own environment. This is still cheaper and more convenient than over-buying on hardware (based on conservative and unproven estimates) or taking the risk that your environment is under-estimated and will fail to serve its purpose. Moreover, this will help you to plan expected infrastructure costs in advance and more accurately.
Conclusion
To summarise all of the above, the Cloud is a very good option to host all kinds of applications for the following compelling reasons:
Security, scalability and high availability are available out of the box.
No upfront costs - start small, pay little and observe how the situation evolves.
You can start almost instantaneously and decide later if (at all) you prefer to move on-premise (this direction is certainly more convenient and cheaper than the opposite scenario).
There are no worries about hard to answer questions about a hard to predict future.
If hosting is not an option you can still use the Cloud as an environment for testing so many 'on-premise questions' can be answered faster and more accurately.