In the first part of our Cloud 101 series, we discuss the fundamentals of the public cloud and its benefits such as the availability or CI tools.
The public cloud provides you with on-demand infrastructure components such as compute, networking and in some cases it also provides services that sit on top of these infrastructure components. The infrastructure is generally shared in the sense that you have a fully isolated virtual machine however it is collocated with other virtual machines belonging to other customers in that cloud.
However, the security models which are put in place make it near impossible for one virtual machine to read the contents of another virtual machine, however, it is still something that is within the realm of the possibilities.
The billing model is a usage-based model, which means that you're charged for the usage (most often by the hour) and you have access to an almost infinite amount of resources which can be extremely beneficial in high growth scenarios (you can go from 2 to 200 servers in a few minutes!)
The public cloud is very useful for starting out, as you're only charged for what you use and it makes it easy to transition into a cloud solution. It also gives you the ability to quickly scale without worrying about investing in hardware in advance as you only pay for what you use. In most other cases, if you needed a large number of servers quickly, you'd be stuck waiting for hardware vendors, shipping, etc and you wouldn't have much of a use for it when you don't need it anymore.
We've seen another very common use case for cloud infrastructure which is for continuous integration. If you have a development team that maintains a codebase with a large suite of tests, you may find your team constantly slowed down by the fact that you have a limited number of machines that run these tests which can slow down the speed that you can deliver new code.
With the cloud, you technically have access to an unlimited number of resources, which means that you can configure your Jenkins (or your CI tools) to point to the cloud and it will take care of automatically provisioning a new virtual machine for every job. The best part about all of this you're only charged for the hours that your job runs which means faster speed in your development cycle and decreased costs to run all of that testing infrastructure.
In addition, there are many new exciting container technologies that are built to be cloud-native first. One of the most common and popular examples is Kubernetes, the software which provides container orchestration which can be fully integrated with a public cloud, allowing you to scale your infrastructure easily on-demand.
This means that as long as you host your infrastructures such as microservices or e-commerce sites on technology like Kubernetes, you automatically have access to an unlimited amount of auto-scaling which can happen across multiple public clouds. This can provide a huge amount of resiliency for your software in addition to other benefits such as cost savings and high availability.
For most users starting out, the public cloud is the ideal choice as it provides the best mix of cost savings, flexibility and ease of use. There is so much more to the public cloud than meets the eye, and you can get all the information about public cloud! There are many other models of consuming cloud infrastructure such as private and hybrid which we'll be covering much more in-depth later.