Public cloud provides developers the ability to provision resources on-demand and only pay for what they use, but what makes up a public cloud?
In this lightboard video, I’m going to provide an overview of public cloud and break down the different compute solutions, levels of control, and the many capabilities that are available in a public cloud.
Make sure to like and subscribe if you enjoy the video!
What is public cloud?
Public cloud is an incredible resource for developers today. It brings the ability to provision resources on-demand and only pay for what you use. This leads to greater developer efficiency while bringing down overall costs. But, what exactly makes up a public cloud?
Today, we’ll start with an analogy. Say you wanted to bake a pie from scratch—well, how committed are you? Are you going to make your own flour? Are you going to grow your own fruits? Well, in this society, we’ve generally accepted that for certain ingredients, you’ll go to a supermarket.
A public cloud is a supermarket of sorts, it has multiple vendors and multiple solutions, allowing you to pick and choose the right tools and solutions for your tastes.
Different compute solutions available in a public cloud
Now, to start my explanation of public cloud, I could start by talking about things like Infrastructure-as-a-Service or maybe Platform-as-a-Service, or Software-as-a-Service—more naturally known as PaaS, IaaS, and SaaS—but instead, I’m going to focus on the overall control and overhead for the different compute solutions that are available in a public cloud.
So, as a box gets bigger here, there’s more control but that comes with more overhead.
Now let’s start with the biggest box, where we’ve got things like bare metal. Now with this, you’re gonna have the most control, but that also comes with a lot of overhead to actually maintain those instances.
VPC and VMware
Let’s take it a step higher. Here, we’ve got things like VPC and VMware. So, with these solutions, you’re gonna have a little less overhead because there’s automation that allows you to spin up the actual machines.
Kubernetes and OpenShift Container Platform
Going a step higher we’ve got solutions like Kubernetes and OpenShift Container Platform. These will allow you to get kind of higher abstraction over the actual worker nodes—the machines that power your actual cluster are basically going to be managed by the platform, and you can focus on writing containers.
Cloud Foundry and Cloud Functions
And, going up higher on the list, we get to things like Cloud Foundry as well as Functions, which are gonna allow you to focus, as a developer, entirely on the code and let the platform take care of things like networking and scaling and that kind of thing.
So, we’ve got our set of capabilities for compute, but that’s not the only thing in a public cloud. You’re going to have integrations and services that allow you to start spinning up capabilities that you need.
Sample application architecture in the public cloud
So, today let’s go over a sample application architecture for which we’re going to use the public cloud. Now, let’s say, to start, we have something like a legacy application that relies on VMs or bare metal capabilities.
So, we’ll say over here that we’ve got VPC and/or bare metal. Now, on top of this, we’re gonna spin up some containers—some machines, rather. Now in those machines let’s say we have our legacy backend application.
So, we’ll scale it out onto three different machines. So there we go, we’ve got our backend pieces. Now that covers our backend compute for our sample application.
Now let’s say for our frontend application, we’re taking a model where we have a frontend and a backend for frontend which are based on containers.
So, here it’s a little bit of a different model—the worker nodes are going to be managed for us by the Kubernetes or OpenShift layer. So here, we’ll have the Kubernetes and our OpenShift layer.
Now on top of this, we can start deploying our containers. So, let’s say, like we mentioned, we have that frontend as well as a backend for that frontend application. And for each of those, we want to scale those out, which Kubernetes or OpenShift can handle for us.
There we go, so these are the basics of our application architecture—we’ve got some backend stuff we’ve got some frontend stuff and all of that is kind of running on some of our compute solutions.
Let’s actually start taking advantage of some of the cloud integrations that are possible to build out some of the other requirements we have here.
First things first, storage. So, our frontend application—let’s say we need something like, I don’t know, a SQL database to actually store things like customer login data. So our applications here are gonna use a SQL datastore… there we go.
Now, for our backend application, let’s say we need something different—not a standard SQL store, but something like cloud object storage.
So here, we’ll sketch out a cloud object store instance, which our backend application will be using.
DevOps and toolchain capabilities
So, we’ve talked about storage, next let’s talk about DevOps and toolchain capabilities which we’ll also take advantage of our public cloud for.
Now, our code is probably split into two different repositories for this particular application that we’ve got here—our Kubernetes app. We’ll say we’ve got a set of code for the actual containers and applications and a separate set of code for the actual infrastructure, because we want to manage our Infrastructure-as-Code as well.
Now, for this, we want to take advantage of some toolchain capabilities. So for our app, we’ll take advantage of a toolchain which will deploy our containers. Now for our infrastructure, I’m going to take advantage of a similar toolchain, but in this case, we want to use Terraform, which is an open source way of managing your Infrastructure-as-Code to actually manage the infrastructure.
So in this case, this will manage your spinning up the worker nodes as well as the Kubernetes layer. So there we go, we’ve got we’ve talked about so far storage, as well as DevOps from our cloud.
Logging and monitoring
Next, let’s talk about you know having a central logging or monitoring solution for our tools. So we’ve got our backend application here as well as our frontend application, and for both of those, we want to stream to a central logging store.
So, let’s say I’ve got a logging service that I’ve created here, and that’s gonna be our central source of logs for both our application running on Kubernetes as well as our backend application running within VMware or bare metal or VPC. So there we go, we’ve talked about central logging now.
Networking and security
Now the next service that I want to take advantage of is thinking about things like networking and security. So, in this sample architecture, for our backend piece, let’s say we’ve got really private data—we want to make sure that access to that backend piece only happens over private endpoints. And for our frontend piece, we don’t care quite as much we can access over the public endpoint.
So, making a bisection here, we’ll say that this is entirely private—private endpoints only—and on this side, we can access our data over public endpoints.
Now, this doesn’t mean our data is insecure. We can still use something that allows us to bring our own keys to secure our data with our own kind of certs and keys.
So, both of these environments are going to be completely secured. But, by making this bisection how does our frontend app now start talking to some of those backend capabilities that we’ve got?
So again, we can tap into our cloud and take advantage of something like a VPN gateway. So, here we go, we’ll set up a gateway so that our frontend and backend can start talking to one another.
Now, this is just scratching the surface of the capabilities that are available in a public cloud. We haven’t even begun just talk about some of the artificial intelligence, machine learning, data analytics and insights, and so many other services that are available in a generic public cloud.