What is a public cloud deployment model?

Cloud deployment types define how you provision and manage your cloud resources, effectively the different type of cloud offerings. The choice in deployment model is largely influenced by a variety of key factors: pricing or cost savings, privacy concerns, end user needs, data storage and residency, and most importantly your business needs.

No matter how you manage your cloud deployment, there are a variety of cloud service models you consume in the cloud. The offerings and tooling vary considerably between cloud providers but all major cloud providers offer a variety of means of managing your cloud architecture, cloud computing services, and tools supporting your infrastructure management.

For example, imagine you need MySQL server in a cloud environment. You could provision a server, a virtual machine, and install MySQL on it yourself. You’ll be responsible for managing all upgrades, resource allocation, and support of the MySQL server instance. Also, you’ll need to manage the backups, replication for redundancy, and the routing of your requests across instances if you want to ensure greater resiliency.

Alternatively, you could provision MySQL server as a service directly from the cloud service provider where you administer the internals of the server, define resource allocation, but only for your server, not on the underlying hardware or VM. The cloud service provider would own installation, configuration, and upgrades of MySQL server. These are only two examples of cloud service models, there are more and next we’ll dive into those. 

At its core, the cloud service model defines which layer of service you manage and which layer the cloud service provider manages. AWS refers to this as the shared responsibility model. As with the cloud deployment models, there is no one size fits all, let’s unpack all three so you can decide which one is best for you. In all likelihood, the answer will be like a buffet—a little bit everything. You can pick different models for different components of your cloud infrastructure so that you can take advantage of higher-order cloud solutions, those services that combine a number of services under the hood, or sometimes you need to be as close as possible to the bare metal and deeply control and manage your resources.

Infrastructure as a Service (IaaS)

IaaS is a cloud service model in which the cloud provider manages the physical hardware (servers, storage, and networking), and you manage the rest. It means that you don’t have to worry about placing servers in the data center, nor connecting those servers to the network, or attaching any storage to them. The cloud provider ensures the hardware is ready to use, reliable, and resiliently configured. You select your operating system and you have full access to the machine on the operating system level and full control over what software to install on it. When you create computing resources, for example, on AWS, Oracle Cloud Infrastructure, Google Cloud, Microsoft Azure, etc., that’s IaaS.

The most important advantages of IaaS are flexibility and virtualization. You can provision a virtual machine ready to use in minutes without concern for upfront capital expense. You get absolute control over the virtual machine and many public cloud providers offer straightforward ways to install a new operating system with just a few clicks. Since you have full control over the machine, you can configure it to meet your workload’s needs or install any software your use case demands. With IaaS you can virtually clone any existing IT infrastructure, creating test environments, disaster recovery solutions, or a redundant replica of your entire entire infrastructure.

Advantages:

  • Immense flexibility, you have a machine, network, and storage, do anything you want to meet your business needs
  • Almost anything you can do on premise, you can do with IaaS

Disadvantages:

  • Significant work involved in managing the IaaS resources - installs, updates, configuration, you own it all
  • Challenging to optimize for cost, performance, and security simultaneously
  • Risk of noisy neighbors varies based on your cloud architecture

Platform as a Service (PaaS)

As we give some ownership back to the cloud service provider, we move up to the PaaS service model where the cloud service provider manages the operating system and software installed on the machine.

Imagine you’re getting ready to use a cloud platform—for example, managed Kubernetes or Kafka. In this model, you’re not limited to one specific application (for example, if you get PaaS Kubernetes, you can deploy anything you want on it), but you are limited to one specific platform.

The biggest advantage of the PaaS model is that you don’t have to handle all the installation and maintenance efforts of the cloud platform. Installing and configuring a Kubernetes or Kafka cluster optimally can take considerable technical expertise and experience to setup and to maintain.

Advantages:

  • Ease of provisioning and resourcing, many platforms can be provisioned for you in minutes
  • Cost savings is typical because the cloud service provider benefits from economies of scale
  • Reduced complexity in configuration and setup, less expertise required

Disadvantages:

  • The cloud service provider manages the platform so you have less control over the platform’s configuration than if you ran it yourself in IaaS
  • Platform errors may be concealed from you and make it harder to debug or troubleshoot because you can’t see “inside”

Software as a Service (SaaS)

As we move toward higher levels of abstraction away from infrastructure management, away from operating system management, shifting more responsibility to the cloud service provider, we come to SaaS, where the cloud service provider manages all layers cloud infrastructure.

Consider managed databases, if you use SaaS MySQL, you only concern yourself with your data, access controls, scale, and redundancy as defined by your business needs, use case, and end users. The cloud service provider manages the cloud infrastructure, scalability of underlying hardware, the operating system, the database management system version, and the resiliency of systems to ensure that failures don’t affect your consumption of the DBaaS (database as a service).

The difference between PaaS and SaaS is that SaaS limits you to one specific application (as mentioned, MySQL). The advantage of SaaS is that it offloads most of the engineering effort of a cloud service from you. You can simply deploy a MySQL database and start writing data to it in a matter of minutes. With PaaS, you get a platform that does nothing on its own, but provides a foundation on which you can create something. With SaaS, you don’t need to do anything else to start using it.

Advantages:

  • Reduced risk of outages
  • The highest order of virtualization
  • Cloud service offerings vary by cloud service provider (not easy to migrate)

Disadvantages:

  • Optimize for operational efficiency, the cloud service provider owns the cloud infrastructure and the redundancy concerns
  • Not applicable for all use cases, less flexible than IaaS and PaaS
  • Data residency restrictions may be prohibitive here depending on data privacy concerns since you don’t own where the data lives

Deploying to the cloud

The end goal of all cloud deployment models and cloud service models is ultimately to enable software deployment. Picking the best cloud deployment model and service model ensures the optimal balance between cost, security, compliance, and scalability.

There are so many ways to ship your software now. The ability to release software on-demand, with the same flexibility, scalability, and control as you can with your cloud computing resources is absolutely essential. If you can have new servers, new platforms, or new services under your control in minutes, your end users can’t wait hours to see your software evolve.

The idea of shipping software more frequently is often met with resistance because we lack confidence that our changes our safe to release and we believe that we need more time spent testing. The truth is that code doesn’t age well. Features sitting on a shelf waiting to be tested are already paid for upfront, but aren’t improving your end user experience or adding to your bottomline and may be incompatible with your platform as it evolves if they’re not actively being used or developed.

But avoiding downtime and unexpected problems doesn’t mean you won’t be able to deploy often. There are ways of deploying software often and safely. Both canary launches and dark launches let you limit the risk of the new deployment. The canary launch means that you deploy new software to only a small sampling of users first. You test whether things work as expected, then progressively roll out the change to the rest of the users. This way, if something goes wrong, it affects only a portion of your users. 

A canary launch is a type of a dark launch. But a dark launch can also include deploying a feature to production for internal testers while hiding the feature from users. As you can see, the risk of deploying software can be greatly minimized.

LaunchDarkly’s feature management platform allows teams to use feature flags to perform dark launches and canary launches on a large scale and with a great deal of sophistication. 

Summary

The cloud has evolved dramatically in recent years. Initially, it was an exotic option without many variations. Today it comes in many flavors from the public to the private and everywhere in-between.

In this post, you learned about different cloud deployment models and cloud service models available. It’s important to remember that, the public cloud isn’t the only option. In fact, for some, running a private cloud in your own data center is probably the best way to manage your IT infrastructure.

No matter what cloud deployment model will suit you best, you still need to pick the right software deployment method. To make good decisions here, learn how to deploy software to the cloud fast and fearlessly via canary launches and dark launches (enabled by LaunchDarkly.) Also, learn how to use LaunchDarkly feature flags to perform smooth, uneventful database migrations to the cloud.

What is private cloud deployment model?

A private cloud refers to a cloud deployment model operated exclusively for a single organization, whether it is physically located at the company's on-site data center, or is managed and hosted by a third-party provider.

What are 3 types of cloud deployment models?

There are four cloud deployment models: public, private, community, and hybrid. Each deployment model is defined according to where the infrastructure for the environment is located. There are three main cloud service models: Software as a Service, Platform as a Service, and Infrastructure as a Service.

What is cloud deployment model with example?

A cloud deployment is an installation of hardware and software that is accessible over the internet on a specialized platform. We can think of Software as a Service (SaaS), Platform as a Service (PaaS), Infrastructure as a Service (IaaS), and other solutions as being good examples of this.

What does the public cloud deployments provide?

Public cloud deployments are frequently used to provide web-based email, online office applications, storage and testing and development environments.