Introduction to cloud computing and IBM Bluemix
This unit covers the following topics:
Cloud overview
Bluemix overview
1.1 What you should be able to do
After completion of this unit, you should be able to:
Define cloud computing
Describe the factors that lead to the adoption of cloud computing
Describe the choices that developers have when creating cloud applications
Describe infrastructure as a service, platform as a service, and software as a service
Describe IBM Bluemix
Describe the architecture of IBM Bluemix
Identify the runtimes and services that IBM Bluemix offers
1.2 References
The following publications are useful for further research on the topic presented in this unit:
What is Cloud Computing?
Cloud Service Models
Bluemix Runtimes
Bluemix Services
Services by Region
What is IBM Bluemix?
Bluemix fundamentals: 5 key advantages, from a developer's perspective
1.3 What is cloud computing?
Figure 1-1 What is cloud computing?
Notes:
The term cloud is used as a metaphor for the Internet and a virtualized set of hardware resources. The term cloud is an abstraction for the complex infrastructure it conceals. The generally accepted definition of cloud computing comes from the National Institute of Standards and Technology (NIST). The NIST definition runs to several hundred words but essentially says that:
“Cloud Computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction.”
Examples of computing resources include:
Networks
Servers
Storage
Applications
Services
1.4 As opposed to…
Figure 1-2 As opposed to...
Notes:
Cloud computing as a deployment model is replacing an older approach where each application that a user interacts with had its own custom built services, networking, data storage, and computing power.
The ability to reuse and repurpose hardware rapidly, and to host multiple applications and systems within a single set of hardware in an isolated fashion, are some of the main characteristics driving the adoption of cloud computing.
In the old approach, the IT staff needs to manage the entire stack, from hardware all the way to the latest software changes. This model does not scale as well as today's businesses and organizations require.
1.5 Factors contributing to growth of cloud
Figure 1-3 Factors contributing to growth of cloud
Notes:
One factor contributing to the growth of cloud computing is that today's apps require a short time to delivery. Developers are pressured to get their product to market as soon as possible. They want to get feedback quickly, and then iterate on the idea to make the product better, faster. Cloud makes hardware resources readily available and quick to configure, which shortens the time required for developers to show a working version of their products. Also, cloud allows the reuse of the same resources for multiple successive projects, which is more cost-efficient.
Another factor contributing to the growth of cloud computing is that developers expect to be able to use many languages and interact with predefined services. Cloud computing provides prepackaged language support, which enables the support of many more languages than the traditional do-it-yourself environment. Cloud computing can also make available shared services that provide an externally managed way of delivering frequently-used functions.
Another factor driving the adoption of cloud computing is that developers want to be able to add more resources to a given app (scaling up, or vertical scaling), or add more duplicate instances of an app (scaling out, or horizontal scaling) to handle increased customer load. Cloud platforms provide standardized methods to scale applications.
Developers expect the pay-as-you-go utility computing billing method that cloud provides.
1.6 Cloud and mobile computing are changing traditional IT
Figure 1-4 Cloud and mobile computing are changing traditional IT
Notes:
Cloud and mobile computing are changing traditional IT.
Cloud computing is a disruptive change in the IT industry that represents a new model for the IT infrastructure that is very different from the traditional IT computing models. Cloud computing enables ubiquitous computing, where computing is made to appear anytime and everywhere, using any device, in any location, and in any format. The surge of mobile devices is greatly contributing to this model.
This new model demands a dynamic and responsive IT infrastructure due to short application lifecycle. To support this model. new development processes, application design, and development tools are required.
Virtualization and high speed Internet connectivity provided the foundation that enables cloud computing. Virtualization is key to cloud computing. It is the enabling technology that allows the creation of an intelligent abstraction layer that hides the complexity of underlying hardware or software. Virtualization provides the ability to represent physical hardware with software-defined and managed systems.
1.7 Cloud service models
Figure 1-5 Cloud service models
Notes:
In the infrastructure as a service model (IaaS) cloud service model, a set of physical assets such as servers, network devices, and storage disks, are offered as reserved and privately accessible to consumers. The services in this model support application infrastructure. IBM SoftLayer® is an example of an IaaS cloud service model.
Platform as a service (PaaS) is a cloud service model in which application framework and runtime is a self-service, shared, virtualized entity. The goal of PaaS is to enable the developer or team to focus on the application business functions, code, and data, rather than worrying about infrastructure. IBM Bluemix is an example of the PaaS cloud service model.
Most everyday web users are familiar with software as a service (SaaS), although they may not know it. Applications in the SaaS model are provided on-demand to users through the internet, as opposed to desktop applications. Examples of SaaS applications include Salesforce.com, Google Apps, IBM Cloud for SAP Applications, and Facebook.
1.8 Infrastructure as a service (IaaS) architecture
Figure 1-6 Infrastructure as a service (IaaS) architecture
Notes:
Infrastructure as a service (IaaS) is a way of delivering cloud computing infrastructure (including servers, storage, network, and operating systems) on-demand and by using self-service tools. Rather than purchasing servers, software, data center space, or network equipment, organizations instead buy or reserve these resources through an application or API that automatically provisions or reserves the resources and makes them available.
IaaS offerings are built on top of a standardized, secure, and scalable infrastructure. Virtualizing the hardware is performed by a program known as hypervisor. A hypervisor manages virtual machines or virtual servers, which are multiple operating system instances running on a given physical machine. Each operating system appears to have the host's processor, memory, and other resources all to itself, but in reality the hypervisor is controlling and provisioning access.
Finally, self-service is an important attribute of IaaS. Users do not have to contact support to perform common tasks, such as creating their own server, setting up basic networking, and so on.
1.9 IBM SoftLayer: IaaS offering from IBM
Figure 1-7 IBM SoftLayer: IaaS offering from IBM
Notes:
SoftLayer is an IBM infrastructure as a service platform. IBM has more than 20 SoftLayer cloud centers, with automation and standardization across data centers, to provide a seamless global network with access to a virtualized hosting infrastructure. Many organizations favor SoftLayer due to the easy access it provides to “bare metal” servers.
In addition to virtual servers, SoftLayer offers bare metal servers, which provide the raw horsepower that some organizations require for processor-intensive and disk I/O-intensive workloads.
 
1.10 Platform as a service (PaaS) architecture
Figure 1-8 Platform as a service (PaaS) architecture
Notes:
Platform as a service (PaaS) can be defined as a computing platform that allows the creation of cloud-based applications quickly and easily, and without the complexity of configuring the required hardware and software resources. PaaS typically entails the developer uploading the app code, or pointing to it and letting the PaaS complete the following tasks:
1. Obtain the runtime binaries and dependencies for the app.
2. Structure their app bits into the proper directory tree for containerization.
3. Provision a container (or set of containers) on which the app can run.
4. Automatically generate simple and basic networking configuration for access to the application.
5. Provide automatic and built-in monitoring of the app.
6. Allow you to update and redeploy the application with zero downtime.
PaaS typically involves sacrificing some level of fine-grained control over the application's environment to gain convenience, ease of use, and rapid deployment by using a predefined deployment process. PaaS also makes use of external services or APIs that allow rapid composition of applications. Applications are rapidly composed by reusing pieces of infrastructure (for example, a database) that require little to no investment in setup and configuration.
PaaS also gives the developer some automatic method for scaling. For example, consider a situation where the developer wants more hardware resources dedicated to an app (scaling up or vertical scaling) or more instances of the app to handle the load (scaling out or horizontal scaling). PaaS also provides built-in application monitoring. For example, the platform sends notifications to inform developers when their application crashes.
1.11 Software as a service (SaaS) architecture
Figure 1-9 Software as a service (SaaS) architecture
Notes:
SaaS is a delivery model that provides access to capabilities through web-based services. Software as a service enables organizations to access business functionality, typically at a lower cost than paying for licensed applications. SaaS pricing is often based on a monthly fee. Because software is hosted remotely, organizations do not need to invest in new hardware to run the application. Software as a service removes the need for organizations to handle installation, setup, and maintenance.
Sometimes SaaS apps are free and providers generate revenue, for example, from web ads. Alternatively, SaaS application providers generate revenue directly from the usage of the service. Do these scenarios sound familiar? That may be because this cloud service model is ubiquitous. If you use a tax preparation service to file your income taxes online, or use an email service to check your mail, then you are familiar with this cloud service model. These types of applications are just a couple of examples. There are literally thousands of SaaS applications, and the number grows daily, primarily because of Web 2.0 technologies.
Under the SaaS model, the software provider is responsible for the creation, updating, and maintenance of software, including the responsibility for licensing the software. Customers usually rent the software on a per-usage basis, or buy a subscription to access it that includes a separate license for each person who uses the software.
In this model, the service user needs only to access the service itself, and not the platform or the infrastructure that the service is running on. The service is usually accessed as a web application, or invoked by using REST or other web-based APIs.
1.12 Split of provider-side and consumer-side responsibilities
Figure 1-10 Split of provider-side and consumer-side responsibilities
Notes:
This figure shows the split between the provider and consumer-side responsibilities when dealing with on-premises or “as a service” scenarios.
Typically the cost goes down as you move to the right in the figure scenarios, but the flexibility goes down as well. Organizations or departments within an organization make their own cost-based decision about which delivery model to use for individual applications or projects. Most enterprises end up using some combination of all of the models shown in Figure 1-10.
Traditional on-premises environments might not include a hypervisor. Some enterprises use their own internally-managed hypervisor to be more efficient. When they do have a hypervisor, they manage the storage, networking, and physical network that the hypervisor runs on.
1.13 Cloud computing: Benefits for developers
Figure 1-11 Cloud computing: Benefits for developers
Notes:
Cloud computing brings several benefits to developers:
Cloud provides readily available sandbox and production environments. These environments offer several capabilities that are attractive for developers:
 – Free trials offered with most products.
 – Pre-built templates and examples that help developers to get started fast.
 – Smaller learning curve to understand application lifecycle.
 – The environment to run an application is set up in minutes instead of days.
Cloud brings a wide range of choices to developers in the following areas:
 – Programming languages and frameworks.
 – Services.
 – APIs.
Cloud facilitates integrated development, test, and debugging:
 – The new model is to integrate development and operations teams into devops.
 – Build engine for compilation and testing.
1.14 What is IBM Bluemix?
Figure 1-12 What is IBM Bluemix?
Notes:
IBM Bluemix is the IBM open cloud platform that provides mobile and web developers access to IBM software for integration, security, transaction, and other key functions, as well as software from business partners.
Cloud Foundry is an open platform as a service offering that provides a choice of clouds, frameworks, and application services. Cloud Foundry includes a scriptable command-line interface (CLI) and integration with development tools to ease the deployment process.
Bluemix is deployed on IBM SoftLayer data centers.
1.15 IBM Bluemix ecosystem
Figure 1-13 IBM Bluemix ecosystem
Notes:
The IBM Bluemix environment is an open ecosystem of services, runtimes, and boilerplates. A catalog of selectable services makes it easy for developers to bind services, such as databases, mobile support, analytics, and security, to their applications. Integration services allow applications to access traditional workloads running in the organization’s on-premises environment.
Boilerplates are predefined, preconfigured sets of a runtime and one or more services that work together to show an example of how to compose services into a PaaS-deployed app.
The operational environment is composed of Cloud Foundry and DevOps Services. Cloud Foundry provides the monitoring, deployment, and logging tools. DevOps services provides an online code editor, a build pipeline, and a version control system.
Solutions show how to weave these various offerings together to create your app and improve the way that you do business.
1.16 Bluemix architectural overview
Figure 1-14 Bluemix architectural overview
Notes:
As a developer, you interact with the Bluemix infrastructure using your web browser or the command line tool. Your requests are sent to the Cloud Controller. The cloud controller is responsible for managing the lifecycle of applications.
When you push an application to Cloud Foundry, the Cloud Controller stores the raw application bits, creates a record to track the application metadata, and directs a droplet execution agent (DEA) node to stage and run the application. When you send your app code, Cloud Foundry packages your app with its dependencies and run time to build a droplet.
A droplet is an archive within Cloud Foundry that contains an application and its runtime and framework dependencies, prior to deployment to the cloud. It is a package created on the fly that contains everything to run your app in a particular operating system environment.
The Cloud Foundry Router sends incoming traffic to an instance of your application, which is running on a machine called a droplet execution agent (DEA). The DEA manages application instances, tracks started instances, and broadcasts state messages.
Application instances live inside containers, which helps ensure that application instances run in isolation, get their fair share of resources, and are protected from “noisy” neighbors. Clients, either mobile apps or web applications that run externally, can interact with Bluemix-hosted applications.
REST Clients can use APIs and make their requests through Bluemix Routers to one of the application instances. If the app is browser-based, then users use their browser to interact with the app through the routers. Bluemix routers send incoming traffic to the appropriate component in the environment.
For example, routers can send content to the cloud controller for management of applications in their lifecycle, or to a running application on a DEA node. When you create an application and deploy it to Bluemix, the cloud controller determines an appropriate DEA to send the droplet to, and then deploys and starts it there.
Bluemix is multitenant but isolated, because several applications can run on the same DEA machine at the same time, but not know that the others exist.
1.17 Bluemix: Choice of runtimes
Figure 1-15 Bluemix: Choice of runtimes
Notes:
With Bluemix, developers are given a choice of runtimes on which to run their applications. The IBM runtimes include Liberty for Java and the SDK for Node.js. There are two runtimes available for Java:
Tomcat, which is an open source Java web application server.
IBM WebSphere Liberty. With WebSphere Liberty, you can get support from IBM support organizations or from forums such as IBM developerWorks®, which focuses on WebSphere products. Liberty can deploy any Tomcat application, but additionally offers support for many more Java web features, for example MBeans and JMX.
Additional runtimes are available, and are supported through the developer community forums. Runtimes are provided through the use of a buildpack, which is a set of scripts that perform the job of packaging your app and any of its dependencies into the droplets mentioned previously.
 
Note: Bluemix and Cloud Foundry support more runtimes through the Community Buildpacks. This open source community has written buildpacks for just about every language you can think of. For more information, see Using community buildpacks on the following website:
1.18 Bluemix: Services
Figure 1-16 Bluemix: Services
Notes:
Bluemix services provide the building blocks for delivering great apps. There are far too many services available in Bluemix to show on one slide. Figure 1-16 is a screen capture of just those services available for Mobile developers. Bluemix provides a broad range of pre-built services that can be used when assembling your app. The following service categories are available:
Watson
Mobile
DevOps
Web and Application
Network
Integration
Data and Analytics
Security
Storage
Business Analytics
Internet of Things
APIs
1.19 Bluemix: Regions
Figure 1-17 Bluemix: Regions
Notes:
A Bluemix region is a defined geographical territory to which you can deploy your applications. Select the region that is nearest to your users, and deploy your apps to this region to achieve low application latency.
Different countries with different data security requirements might require you to run your Bluemix app in a different region. Running your app in multiple regions also helps make your app highly available. If your app goes down in one region, it will still be available from another region.
You can switch between Bluemix regions easily within the Bluemix web interface. You can also browse Bluemix directly for each region by using the URLs listed under “Point your browser here” in Figure 1-17. You can point your command line client to a specific Bluemix region by using the URLs listed under “Point your CLI here” in Figure 1-17.
 
Note: Not all Bluemix services are available in all regions.
1.20 Unit summary
Figure 1-18 Unit summary
Notes:
In this unit, we have defined cloud computing; described the factors that lead to the adoption of cloud computing; described the choices that developers have when creating cloud applications; described infrastructure as a service, platform as a service, and software as a service; described IBM Bluemix; described the architecture of IBM Bluemix; and identified the runtimes and services that Bluemix offers.
1.21 Checkpoint questions
Figure 1-19 Checkpoint questions
Notes:
(none)
1.22 Checkpoint answers
Figure 1-20 Checkpoint answers
Notes:
(none)
 
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.22.74.66