Book Image

Hybrid Cloud for Developers

By : Manoj Hirway
Book Image

Hybrid Cloud for Developers

By: Manoj Hirway

Overview of this book

This book introduces you to the hybrid cloud platform, and focuses on the AWS public cloud and OpenStack private cloud platforms. It provides a deep dive into the AWS and OpenStack cloud platform services that are essential for developing hybrid cloud applications. You will learn to develop applications on AWS and OpenStack platforms with ease by leveraging various cloud services and taking advantage of PaaS. The book provides you with the ability to leverage the ?exibility of choosing a cloud platform for migrating your existing resources to the cloud, as well as developing hybrid cloud applications that can migrate virtual machine instances from AWS to OpenStack and vice versa. You will also be able to build and test cloud applications without worrying about the system that your development environment supports. The book also provides an in-depth understanding of the best practices that are followed across the industry for developing cloud applications, as well as for adapting the hybrid cloud platform. Lastly, it also sheds light on various troubleshooting techniques for OpenStack and AWS cloud platform services that are consumed by hybrid cloud applications. By the end of this book, you will have a deep understanding of the hybrid cloud platform and will be able to develop robust, efficient, modular, scalable, and ?exible cloud applications.
Table of Contents (16 chapters)
Title Page
Dedication
Packt Upsell
Contributors
Preface
Index

Understanding hybrid clouds


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

What is 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 :

  • Software-as-a-Service (SaaS)
  • Platform-as-a-Service (PaaS)
  • Infrastructure-as-a-Service (IaaS)

Lets discuss these models in brief.

Software as a Service

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

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.

Infrastructure as a Service

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.

Characteristics of a cloud

A cloud service should have the following characteristics:

  • On-demand service: The user of the cloud should be able to provision resources on their own without any human action or intervention from the cloud providers.
  • Wide network accessibility: The cloud resources should be available over the network to users either using a thick or thin client.
  • Resource pooling: Cloud resources such as servers, disk storage, and so on should be dynamically allocated and de-allocated to users based on the demand. The same resources can be shared or pooled between users, giving them a virtually isolated instance of the resource. 
  • Rapid elasticity: Resources should be easily scalable. Based on the user's requests, resources should be scaled up and scaled down, giving an impression that there are more than enough resources available at a given point in time.
  • Measured service: A cloud should also have the ability to measure the consumption of resources, as well as automatically control and optimize those resources.

Types of cloud

There are two fundamental types of cloud models:

  • Private cloud
  • Public cloud

A combination of these two types of cloud yields a third type of cloud, called a hybrid cloud.

Private 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:

  • Reduced cost of usage
  • More control over services, data, and users
  • Higher security as the cloud platform resides within the organization’s network
  • Higher performance as the cloud is on the local network

Disadvantages of a private cloud:

  • High infrastructure cost
  • High maintenance and administration costs
  • Proper resource utilization is administrator's responsibility

Public 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:

  • No administration and maintenance costs
  • Simple and easy to use
  • Quickly available on demand

Disadvantages of a public cloud:

  • Security is a concern as data goes to a public network
  • Lack of full control over the cloud

Technologies used by cloud providers

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:

  • Hypervisor: A hypervisor is a combination of software, firmware, and sometimes hardware that is capable of running a virtual machine. A hypervisor that is capable of running a virtual machine on bare metal hardware is referred to as a Type 1 hypervisor. For example, VMWare ESXi server and Microsoft Hyper-V server are Type 1 hypervisors. The hypervisors that run on an operating system are referred to as Type 2 hypervisors. For example, Oracle VirtualBox, and VMWare Workstation are Type 2 hypervisors. OpenStack uses the Type 2 QEMU/KVM hypervisor as the default hypervisor. Similarly, AWS uses the Type 1 XEN hypervisor.
  • Storage:Cloud storage is based on a virtualized storage infrastructure, which provides elasticity, multi-tenancy, scalability, and metered resource usage. Cloud storage mainly comes in object storage and block storage solutions. The OpenStack component that provides object storage is called Swift and the one that provides block storage is called Cinder. The AWS component for object storage is called S3, whereas for block storage is called EBS.
  • Software Defined Networking (SDN): Most of the networking is managed by networking software such as OpenContrail, OpenVPN, and so on. AWS provides features such as Virtual Private Cloud, DirectConnect, and so on, which are provided by SDN. Similarly, OpenStack has a component called Neutron that can be used to configure OpenStack networking such as DHCP, DNS, Gateway, and so on.