Before we delve into the world of hybrid clouds, it is necessary to discuss some fundamental concepts of cloud computing.

Hybrid Cloud for Developers
By :

Before we delve into the world of hybrid clouds, it is necessary to discuss some fundamental concepts of cloud computing.
In the last few years, cloud computing has become a popular technology for acquiring and providing computing, network, and storage infrastructure that provides elastic, scalable, and reliable resources. Cloud computing also helps in outsourcing parts of the organization's IT infrastructure to highly-automated commercial data centers. Large companies such as Amazon, Google, and Microsoft have reliable and scalable infrastructures that they have opened for public use by providing cloud services. Cloud computing technology thus emerged, along with supporting technologies such as virtualization, containerization, and software-defined networking.
In today's world, individuals use cloud technologies for various daily activities. For example, Google Drive is used to store files, Google Photos is used to store web albums, and so on. Similarly, organizations also use cloud computing platforms extensively. For computing, resources such as servers, storage, databases, networks, software, and so on are required. These resources can either be dedicated to a user’s system or can be provided by an external source. Cloud computing is thus a delivery of services such as infrastructure, computing, storage, database, networks and software from a consolidated platform over the internet. The companies that provide such services are called cloud providers.
Cloud providers typically provide three layers of service :
Lets discuss these models in brief.
Software as a Service (SaaS) is a cloud service that provides access to software such as Microsoft Office, Google Apps, and so on. It allows the user to connect to and use the software application over the internet. Most SaaS applications can be accessed directly using a web browser with a plugin, and without performing any large downloads or installations. For example, companies such as Salesforce, Google (Gmail), Microsoft (Office 365), and so on, are all SaaS providers.
Users need to subscribe to the SaaS provider to use their services. The subscription costs are lower than the cost of purchasing the software license and then installing and maintaining it. Using SaaS, organizations are able to mobilize their workforce since users are able to access SaaS applications over the internet.
Platform as a Service (PaaS) provides a platform on which software can be created and launched. It is mostly used by software developers to access a development platform and provision computer infrastructure. Users can then create software applications through software components that are created in the PaaS.
The main advantage of the PaaS model is that all applications built on this platform inherit all the characteristics of the cloud. Software development, testing, and launching are also much faster on PaaS, as it requires lesser coding and helps in migrating applications to hybrid clouds. Users can manage servers, storage, and networking more efficiently using a PaaS.
Examples of PaaS services include AWS Elastic Beanstalk, Windows Azure, Heroku, Salesforce, Google App Engine, and Apache Stratos.
The Infrastructure as a Service (IaaS) cloud computing model enables automated deployment of compute, storage, networking, and networking services. Using this cloud mode, users can build a virtual data center in the cloud with as many resource capabilities as found in traditional data centers. In addition, users can create their private data centers in the cloud and establish a VPN connectivity with their local data centers.
IaaS also provides Application Programming Interfaces (APIs) for software developers to access cloud resources programmatically.
Thus, users don't have to invest in hardware and are able to leverage the cloud resources and then be billed based on consumption. Cloud providers such as Amazon (AWS), Microsoft (Azure), Google (GCP), and so on, are examples of companies that provide IaaS.
The following diagram summarizes the differences between IaaS, PaaS, and SaaS:
As shown here, in traditional software deployments, the entire stack is managed by the organization that implements the system. IaaS reduces the burden of managing the Networking, Storage, Servers, and Virtualization layers by owning and managing them. Thus, the user no longer has to worry about these layers and can focus on the software applications.
PaaS further relieves the user from managing the Operating System, Middleware and Runtime layers, thus leaving only the application management and data management responsibilities to the user.
Finally, a SaaS provider will own and manage the entire stack and the user just has to log in to the host to perform their activities.
A cloud service should have the following characteristics:
There are two fundamental types of cloud models:
A combination of these two types of cloud yields a third type of cloud, called a hybrid cloud.
The cloud platform can be deployed and hosted privately on organizational premises. The services of such a cloud platform are made available to internal users of the organization. This cloud is referred to as a private cloud.
A private cloud shares many of the characteristics of public cloud computing, including resource pooling, self-service, elasticity, and pay-by-use, delivered in a standardized manner with the additional control and customization available from dedicated resources.
OpenStack is an open source cloud operating system that can be deployed within an organization and hosted as a private cloud. We will cover OpenStack in detail in Chapter 3, Developing AWS Cloud Applications.
It's common to store data on cloud storage using Software Defined Storage (SDS) technologies. SDS helps in decoupling the storage hardware, such as HDD and SSD, from the software that is used to manage the storage. This provides the ability to abstract and consolidate the storage capacity in a cloud. It also allows users to scale beyond the underlying hardware limitations.
Two of the most widely used software-defined storage solutions are Ceph for structured data and Gluster for unstructured data. Ceph is popular for its scalability. It also provides a programmable storage system that works well with the OpenStack cloud platform because it integrates object, block, and file storage into one pool of resources. Similarly, Gluster is popular for handling traditional file storage and works well with provisioning and managing elastic storage for container-based applications. OpenStack Swift is another object storage solution that is popular today.
Advantages of a private cloud:
Disadvantages of a private cloud:
When IT resources such as computing servers, storage, development platforms, applications, and so on are made available as a service over the internet and can be provisioned on demand using a publicly available self-service portal, such an offering is called a public cloud. Public clouds offer rapid elasticity and limitless scalability. They provide a measured service in which users are billed based on their usage.
Public clouds are hosted and managed using datacenters that belong to cloud service providers. The resources can be shared by multiple customers. This feature is called multi-tenancy. Sharing resources helps in reducing costs. However, there is reduced control over the resources in a public cloud than in a private cloud, because the underlying infrastructure is owned by the service provider. The level of control depends on the specific cloud delivery model.
There are many public cloud providers on the market, such as Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). We will be covering the AWS cloud in detail in this book.
Advantages of a public cloud:
Disadvantages of a public cloud:
A cloud platform is a combination of various technologies tied together to create a hyper-converged platform. The three basic technologies that lay the foundation of a cloud are as follows:
Change the font size
Change margin width
Change background colour