Everyone is talking about the cloud. There’s always the question of which one should you use and what are the advantages / disadvantages. This post (my first one in 7 years) will help to dispel which cloud is right for you. For the purpose of this article, we’re going to focus on 2 specifically.
Amazon Web Services and Azure
I will discuss the merits of both and hopefully, making the decision to move will be based on your needs.
Let’s get a couple of things straight. The cloud is nothing more than a series of services that provide infrastructure to you. Why is this important? You’re not in the business of keeping infrastructure running unless you’re a provider in which case this post is too elementary for you. As a business, your primary focus is to provide the services, products, or information to your customers. It is NOT focused on keeping a bunch of servers connected to the internet.
So.. let’s think about that last statement I just made.
“As a business, your primary focus is to provide the services, products, or information to your customers. It is NOT focused on keeping a bunch of servers connected to the internet.”
You want to be efficient. You want to be secure. You want to be highly-available.
The cloud takes much of that complexity away from your day-to-day operations and if that is one less thing you’re dealing with, then it’s more of your time, money, and energy that can be focused on your core business. I’ll speak metaphorically. If you have a restaurant and you serve spaghetti and meatballs, your interest is in preparing and serving the dish and NOT raising the cattle for your meatballs.
The two juggernauts in the industry (Amazon and Microsoft) have taken this complexity away from you providing you with the ability to spend more of your cycles promoting your business.
Perfect Example: Remember Microsoft Exchange and Sharepoint? The skillsets, complexity, and cost required to install, run, and operate a resilient and reliable Mail and Groupware solution was extremely costly. Microsoft realized this and created Office365. From that moment on, Exchange and Sharepoint became a trivial matter. It provided a solid solution that was resilient and well-run.
To set up those services internally would run you tens (or hundreds) of thousands of dollars and even then, you would not have a solution that was as resilient as what Office365 provided. Dollar for Dollar, it was cheaper to pay $7.00/month/user than it would be to deploy and maintain your own.
It became a no-brainer. Today, there are few organizations that actually run their own server-farms to provide this service, because it just doesn’t make financial sense.
So why the cloud? Chances are, you won’t be able to do it for a reasonable amount of budget and effort when compared to utilizing the offerings from these providers at this quality.
Which Cloud is right for me?
There lies the 64,000.00 question. (Yes, I’m showing my age with that comment). Which one?
Both companies provide resilient and quality offerings, but it comes down to which one is right for you. Chevy or Ford right? The answer is neither is a perfect fit for any organization, but with a bit of research on “How” you’re going to use it and your overall internal infrastructure, you can choose the vendor that makes the most sense for your organization.
Your Ecosystem: What is your internal ecosystem? Is it Microsoft or Linux? This question matters most. How tied are you to any one vendor’s technologies? What is your operating platform?
The Microsoft Paradigm: If you’re heavily reliant on Active Directory and the Microsoft set of technologies, it makes perfect sense to go Azure. Why? You can move your AD services to Azure, you can move your Sharepoint and Exchange there as well. You can utilize a VM or virtualized infrastructure that is completely compatible with what you’re using today and the reduce your operational burden significantly.
The Other-worldly or Linux Paradigm: You use Microsoft on the desktop or maybe it’s MacOS, but your enterprise runs on Linux. You’re heavily invested in Opensource technologies? It makes perfect sense to move to Amazon’s AWS. Why? You can most likely offload quite a bit of your existing stack operationally to the fine folks that follow Bezos.
Why is this important? Simple. Why set up MySQL or MariaDB if you don’t have to? Why set up Load Balancers, a CI/CD toolchain or Artifact repository if you can have it readily available? When was the last time you had to manage Layer 2 segments on your network? or handle storage IO and backups? How about data replication across multiple datacenters? Then there’s the question of Autoscaling an Open Source stack. Ever try your hand at doing that with your own infrastructure? (It’s not fun and requires a lot of time). Amazon provides you with the infrastructure to do that.
If you have the perfect product or you go viral, a properly set up cloud will keep you running and your customers won’t be met with the 404, 500, or other ungodly errors that make you look like you can’t handle the load. Lost customer views = lost revenue. End. of. Discussion.
There are other reasons to consider when choosing your cloud. There’s cost for example. A properly architected application in the cloud will actually be more efficient and cheaper to run. That’s where the magic is. It’s refactoring your application to provide the best bang for the buck. A properly designed cloud application deployment can save you more than 50% on your existing operational expense while providing near unlimited resiliency and availability. Interested yet? You should be.
Moving to the cloud is NOT just deploying VMs
Read that last line above. It’s not deploying VMs. The traditional “Lift and Shift” doesn’t really get you anything in terms of substantial savings. Yes, you can retire your hypervisors, but you’re missing the overall point of the exercise. Change the way you operate and you’ll change your bottom line. It makes no sense to have idle resources waiting for customers to consume them. THAT is the point of the exercise.
Use Case: The application on the web. Let’s look at a simple use-case that most organizations face. The web application. You have a simple 3 tier web application. Tier 1: Web Server, Tier 2: Application Server, and Tier 3: Database Server.
Legacy Solution: Today, you have two of each tier running in either an Active-Active or Active-Standby solution. If one goes down, you switch to the other. If one gets overloaded, you start spreading the load across both. It makes sense right? Except you’re only accounting for your known available resources. There are idle resources sitting around unused and you’re paying for them. VMs are sized to handle what you “think” you’re going to get traffic-wise and if you over or under-estimate, you’re either spending too much money or you can’t service your traffic load.
Cloud Architecture Intelligence Solution: In a re architecture exercise (and while moving your workload to the cloud), we make a couple of simple changes. For example, the front end is a load balancer that passes the traffic to a container. Each container runs your workload much more efficiently and as traffic increases, the load-balancer spawns new workers to handle the additional workload. How does this help? Simply, you have little to no idle resources. Add a CDN to the mix and a bit of intelligence to your landing page on your application and you can route traffic to the closest data center and distribute your workload to your customers so that they can complete their transactions quicker. That’s just Tier 1 and Tier 2. What about Tier 3? The dreaded Database that always seems to be overloaded.
Here’s where it gets more interesting. Why run a cluster of monolithic DB servers? Just use in the case of Amazon, Aurora. In the case of Azure, SQL Database. Why? It’s a DB cluster in a box already pre-configured and ready to go. You can have up to 15 read replicas (AWS) or 3 Replication Nodes (Azure SQL), you have automatic replication across multiple data centers and most importantly, you get high-throughput database services for less than the cost of 2 DB servers you’d normally run. If there’s a failure on the master, any of the Read Replicas can be immediately promoted to be the new master. This allows the flexibility of having a big DB cluster without the expense required to operate one on your own. That by itself is worth the cost of admission. There’s also the issue of hardware provisioning and maintenance.
There are many other ways to further optimize the solution, but that requires a more in-depth discussion that is specific to your workload. Bottom line, Cloud works and if used efficiently, can save you significant amounts of time, money, and most importantly; sanity.
If you’re interested in discussing what the Cloud can do for you or you’re looking for an Architect / Solution provider, consider hiring me.