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 amount 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 which maintains a code base 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 which 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 which 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 infrastructure such as microservices or e-commerce sites on a technology like Kubernetes, you automatically have access to an unlimited amount of auto scaling which can happen across multiple public clouds. This can provide 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 are many other models of consuming cloud infrastructure such as private and hybrid which we’ll be covering much more in-depth later.