Profile Pic of Jack

What the H*ck is the Cloud?

November 26, 2024

Recently at work I was encouraged to get the AZ-900 Azure Fundamentals certification from Microsoft. The certification is essentially an acknowledgement that I am familiar with basic cloud concepts and specifically, how they apply to Microsoft’s cloud product; Azure. Now I’m not the biggest fan of certifications as I often feel they’re overrated relative to true work experience and not necessarily a good representation of what you truly know. But hey it’s a nice thing for work purposes and free since I got reimbursed for passing.

That all being said, what I did come to realize after talking to a few folks about the actual exam and what some of the topics covered, is that “the Cloud” as a concept is not nearly as well known as I may have originally thought. So here we are with a blog post on all the basics you need to know to actually understand what exactly “the Cloud” is. Note, since I recently did this for Microsoft this will focus on Azure, however the core concepts would still apply to Amazon’s AWS, Oracle's OCI, or Google’s GCP.

Data centers and Servers. Contrary to belief, the cloud we’re talking about here is not some mystical wisp that floats in the atmosphere that houses and can transmit all your data. The cloud is actually a combination of various IT infrastructure components that sit in large data centers spread out all over the world. Most prominent of the aforementioned IT infrastructure components is the humble server. If we ask some friendly AI chatbot what a server is you’ll get the following definition: “A server is a computer or device that manages resources and provides services to other computers, called clients, over a network. Servers can be hardware or software, and they are essential for businesses and organizations that need to store and manage large amounts of data.” If you’re still not super familiar with the server definition, think of anytime you go to do something on the internet. Your laptop / computer (this is the client) sends a request out to the internet, that request is routed eventually to the address of what you’re trying to do, and once the request reaches the destination it then communicates with a server to retrieve said information. An example is as simple as pulling up ChatGPT on your phone. Your phone in this case is the client, and when you type in ChatGPT’s website, a request is made to one of ChatGPT’s servers to pull up the ChatGPT homepage. From there depending on what you type in, ChatGPT will then use its servers to help create a response by retrieving the information relevant to the prompt you typed in.

Below is a photo of one of Microsoft’s data centers. As you can see, pretty big!

Azure Data center

So why did we cover what a data center and a server is? Well when we refer to the cloud, the cloud is essentially just giant data centers with a bunch of servers in them. The beauty of the cloud is that anyone can use them, that is for a price. These servers sitting in giant data centers are basically available to be rented by anyone and in most cases, how a majority of organizations function today. For the purposes of the rest of this post we’re going to focus on what is known as “The Public Cloud”. The public cloud just refers to using the infrastructure provided by one of the major vendors (Azure, AWS, GCP, etc). For reference, the two other types of cloud are “Hybrid Cloud” and “Private Cloud”. Hybrid cloud essentially means running part of your infrastructure in your own private data center and the other part in the public cloud. Private cloud means, that’s right you guessed it, running your infrastructure in your own private data center and not using the public cloud at all.

So what is a simple example of what the cloud can be used for? Let’s take a look at a basic web application architecture setup according to Microsoft. Note, Microsoft has a bunch of architecture diagrams you can browse on their website here: Browse Azure Architectures

Basic Web App Architecture

Pretty standard stuff. You have the user on the left representing someone interacting with some type of front end such as a website. This sends a request to where the website is hosted, which is drumroll please the cloud! The boxes around App Service built in easy authentication, App Service Instance, Managed Identity, SQL Database, Microsoft Entra ID, Application Insights, and Azure Monitor all represent various Azure Products that are available through their cloud services. Now if you’re following along and thinking: “hmm, these must all be managed by the servers in these so-called data centers Microsoft owns.” Then yup, you guessed correctly. The different Azure products represented in the picture are all services that you can use when setting up your system in the cloud. If you’re curious what each represent, here’s what they are and why they are important:

  • App Service Instance: This is a virtual machine (VM) that runs a single application for you in Azure.
    • Side note, a virtual machine is essentially a computer that lives on one of the physical servers in the datacenter. It typically acts as a server to host an app such as this example or can be used as an actual computer like a desktop.
  • App Service built in easy authentication: Is how your users authenticate into the app so they can use said app, but also how the app knows who is who and what data to provide back to the user.
  • Microsoft Entra ID: Basically how you manage all your users. If you are familiar with what an Active Directory is, this is similar.
  • Microsoft Managed Identity: This is how Azure helps manage the IDs used in easy authentication and Microsoft Entra ID in a secure way.
  • SQL Database: Where does all the data relevant to you get stored? That’s right, a database. Things like username, email, address, etc. are all stored and managed in a database.
  • Application Insights: How do companies know what is working well or not working well for their website or app? They use various forms of analytics. Application insights is one of those types of analytics. It provides info on how users are interacting with the app and if there’s any areas that could lead to future issues.
  • Azure Monitor: It’s important to understand how all your cloud resources are performing. This is where Azure Monitor comes into play. In short it basically keeps an eye on all your resources and makes sure they’re healthy. If something is going wrong, Azure Monitor can alert you to let you know there’s an issue.

So how does this all tie together? Well these are all Azure Cloud services that are available to anyone using Azure Cloud. Anything cloud related is all being managed / stored in one of the super large data centers that represent one of Azure’s cloud regions. If we take a look at Microsoft’s explore data centers page, you’ll see the “North Central US” region.

Azure Data center Map

Now without getting too technical, the reason why Azure has multiple regions spread out all over the globe is to provide their users core cloud concepts: Resiliency, High Availability, Elasticity, and Predictability. For reference, here’s how Microsoft defines these concepts, with bonus color commentary from yours truly:

  • High Availability is a system's ability to continue functioning even when some components fail. It's a key component of disaster recovery (DR) planning and is essential for mission-critical systems that can't tolerate service interruptions.
    • This is referring to the ability to still keep things up and running even if other parts of your service are struggling or failing. A server may have errored out or your network is under serious strain causing webpages to load super slow, however your system continues to function thanks to the Cloud having additional resources it can automatically provision to try and support your service to get it back to normal.
  • Resiliency is the ability of a system to recover from failures and continue to function.
    • Similar to High Availability, this basically means if something went worst case scenario in one of the data centers or your server goes kaput, you’ll be able to still recover any data and restore your application back to its last state before things went awry. This is because your data is being replicated to other cloud regions that can be used in the event something goes bad so not all is lost.
  • Elasticity is the ability to quickly adjust computer resources, like memory, storage, and processing power, to meet changing demands.
    • Adjusting computer resources is how your system can react to high or low demands. If we tie this back to the high availability concept, one way systems can be elastic to handle large loads of traffic is adding more virtual machines for network traffic to be routed to, so not one machine (server) has to try and handle all the requests at once. When you add more machines to your system that is known as horizontal scaling. If you add more resources to a single machine, such as more memory, that is known as vertical scaling.
  • Predictability is the ability to anticipate the behavior, costs, and performance of cloud resources under various conditions.
    • Anticipating how your system will perform in various conditions is important. This is to ensure all users get the same intended experience. Being able to predict how your system functions in a situation where there is a ton of traffic is critically important. Think of some recent live streaming events that struggled under heavy network traffic. The engineers certainly tested systems as hard as they could to help predict how the actual event would go, but even testing can only do so much good. This is why predictability is key.

If you really want to understand in depth key principles of managing data and why there’s so much that goes into having various regions and tons of data centers around the world, I would recommend reading the computer science data holy grail: Designing Data Intensive Applications by Martin Kleppman. I will say you probably need to have a pretty strong background in building applications, as well as basic networking knowledge before reading Designing Data Intensive Applications.

Alright so we covered a lot, however we really only scratched the surface of all things cloud. That being said, hopefully you have a pretty good idea of what the cloud is and how it can be used. Think about this, if the cloud wasn’t there to provide all the services and functionality we covered today you would have to do it yourself, with your own hardware and data centers! So let’s summarize what we learned.

The cloud is not some fake imaginary being, it’s actually a composition of large data centers filled with hardware spread out all over the world. The cloud can be used to provide a variety of services depending on your needs, the main one being a place for companies to host their applications. Lastly, the cloud provides key features such as high availability, resiliency, elasticity, and predictability to ensure your application does exactly what it is supposed to do. And hey if not, the cloud has got you covered to help get you up and running again in no time. Hopefully you learned something cool and please let me know if you have any feedback or want me to go further in depth on a certain area!

Back to Home