To Cloud or Not to Cloud
This is not a regular blog post. I was looking for an old blog post that I wrote several years ago, and while searching, I found an even older blog post that I wrote back in 2009. It had the same title that you see here - To Cloud or Not to Cloud?
In 2009 the cloud was already a thing, but it was the early days. Microsoft's cloud, Azure, wasn't even announced yet until February 2010. The cloud has seen a tremendous advancement over the years. It's interesting and also amusing to read what I wrote 12 years ago about the cloud. Some things are still true today, while others are completely irrelevant.
So here it is...
To Cloud or Not to Cloud (2009 Edition)
I love looking at the sky. Staring at the clouds, your imagination can run wild and you can invent wonderful stories about the shapes you see in them, but they always seem so far away out of your reach. For me, as a DBA, it's the same with cloud computing.
Cloud computing has been around for a long time, starting with Google Apps and Amazon AWS. About a year ago, I was asked to join a panel discussing IT for startups, where one of the most interesting issues raised was: “Should we use the cloud hosting solution?”. My answer then was NO. Over the last year, my view about cloud computing has shifted to favoring cloud computing as a partial solution for startups.
What are the Benefits of Cloud Computing?
Scaling up and down is possible within a matter of hours. Moreover, you only pay for what you use, and on an hourly basis. Meaning, if a new client comes along, you can place a request for ten new servers, and within the next day, you’ve received them fully load-balanced and ready to go.
All hardware and OS management are the provider’s responsibility. No need for highly qualified IT tech that has wide knowledge in networking, security, virtualizations, storage, and FW.
You receive fully monitored OS and hardware services, including reporting and alerts.
You receive a fully redundant solution with an obligation for high availability.
Worldwide location distribution brings the application closer to your users.
No need to upgrade your hardware every three years.
What are the Problems with Cloud Computing?
These are not your servers! Your control on selected OS versions, maintenance, and patches is limited.
These are not your servers! Placing sensitive data from passwords to your core technology is an issue.
These are not your servers! If it crashes, nobody promises you how hard they will try to save the data stored on the hard drives.
These are not your servers! For some reason, I can’t see you passing a credit card company inspection…
These are not your servers! You will probably have to make changes to your application to fit cloud computing.
Windows .NET-based applications are not native to this environment. If you want to enjoy the monitoring and management benefits, you will have to use a non-.NET language.
Database solutions are very limited either in capacity and version or in manageability.
Deciding whether to use cloud computing is not an easy decision. It will affect your application design and development environment. I can give you some pointers for consideration:
CDN or Cloud?
Downloads require a lot of bandwidth. You will probably want a redundant network (which costs a lot of money), and there is always an issue of being close to your users (which requires multiple locations).
In order to solve these issues, you’re probably using some kind of a CDN solution. If your total download is not in terabytes, I recommend looking into a cloud solution such as Amazon S3. Pay per usage has a huge advantage (I’m talking about thousands of dollars per year) over buying a minimal quota package per month from major CDN providers.
If you are a new company, requiring just a few dedicated servers, including load balancing, buying, and hosting a server - a managed dedicated solution will cost you $1,000-$1,500 per month per server. Each cloud server is about $200-$500 and you only pay for what you use.
The key benefit is the ability to scale up in a matter of hours and not days or weeks. And it’s important to place your servers close to your users, no matter where they are in the world.
If you require a simple DB service with storage requirements lower than 10GB, and the number of hits on your server per second is in the low thousands, finding an adequate SQL Server or MySQL solution should not be a problem. Your solution will enjoy high availability and be redundant.
Back to the Future - 2021 Update
This was my original blog post from 2009. So much has changed since. Here is a brief update about cloud computing today:
In many cases, scaling up and down is a matter of seconds, not hours. For some cloud services, such as Azure Synapse Analytics, you can also scale out. Some cloud services offer auto-scaling or a serverless model, in which you don't even need to take care of scaling. Everything is done automatically.
Provisioning of new servers or services is also a lot faster than 12 years ago. You can spin up a bunch of servers within minutes. You can do it manually through the portal or programmatically through cloud shells and other scripting languages of your choice (e.g. PowerShell).
High availability is a lot higher than before. All cloud providers give you a clear SLA for each service, and you can use availability features, such as Availability Sets and Ge-Redundant Replication, to comply with your availability requirements.
Today, the world is full of data centers, and you can choose how to distribute your services and your data according to latency and regulatory requirements. Azure, for example, has more than 160 data centers in more than 60 regions across the world. And a new data center in Israel is coming soon. This gives you a lot of flexibility.
Security is a top priority of all cloud providers. It used to be a concern to put your data in the cloud, but today it's clear that you will never get the same level of security in your own data center compared to what you get in the cloud. Cloud providers adhere to all the latest security regulations, such as HIPPA, PCI DSS, and GDPR. And you get built-in services, such as Threat Protection and DDoS Protection.
Today, .NET is fully compatible with the cloud, as well as any other language or programming platform. And there are many tools and IDEs, such as Visual Studio Code and Azure Data Studio, that make it easy to develop cloud-first applications.
Did you say Database? There are so many options to choose from. You can choose IaaS (e.g. SQL Server on Azure VM) or PaaS (e.g. Azure SQL Database). You can choose different service tiers, such as General-Purpose, Business-Critical, or Serverless. You can choose between various managed database platforms, such as SQL Server, PostgreSQL, and MySQL. And you get so many features and services out of the box.