In this blog post I would like to cover the common cloud deployment models, which should be part of the basic knowledge of each IT professional working with a cloud environment to a certain extent.
What is a cloud deployment model?
“A cloud deployment model represents a specific type of cloud environment, primarily distinguished by ownership and size.”
(source: Cloud School, Module 1 Fundamental Cloud Computing)
A public cloud is a cloud created, owned and maintained by a third-party provider (f.e. Amazon, Google, Microsoft) that has been made publicly accesible to a cloud consumer. A public cloud is outside the organizational boundaries of the cloud consumer.
A community cloud is similar to a public cloud except that it is only available and accesible for a specific group (members) of cloud consumers. The community cloud is either created, owned and maintained by the community itself or by a third-party cloud provider. Often a community cloud is created for collaboration purposes.
A private cloud is created, owned and maintained by a single organization. This cloud environment can be either within the organizational boundaries or outside as an extension of the on-premise environment (using VPN) that closely resembles a traditional network that organizations operate in their own data center,. It is important to notice that the cloud consumer is technically also the cloud provider but it is a best practice to clearly differentiate these roles.
A hybrid cloud is a cloud environment compromised of multiple cloud deployment models. A cloud consumer may decide to use a private cloud for sensitive information services and a public cloud for open data services. The result of this combination is a hybrid cloud deployment model that can be quite challenging in terms of creation or maintenance and may introduce additional complexity.
When it comes to the creation or hosting of integration services (or microservices) there shouldn’t be any difference when choosing a cloud deployment model. One should always take security into consideration (principle secure by design) whether it involves integrating a public, private or hybrid cloud. There are many security mechanisms to mitigate the risk of cloud security threats. In my honest opinion every integration service should be further fully agnostic to the execution environment. From that perspective it is much more relevant to pick the right cloud delivery model, for example Platform-as-a-Service (PaaS) and start using isolated containers (CloudFoundry, Docker), which can be deployed anywhere, anytime, independent of the cloud deployment model.