IBM Support

An overview of IBM Bluemix

Question & Answer


Question

An overview of IBM Bluemix

Answer

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.

Built on Cloud Foundry open source technology Bluemix provides pre-built Mobile Backend as a Service (MBaaS) capabilities. Bluemix offers more control to application developers by using its Platform as a Service (PaaS) offering. The goal is to simplify the delivery of an application by providing services that are ready for immediate use and hosting capabilities to enable internal scale development.

With the broad set of services and runtimes in Bluemix the developer gains control and flexibility and has access to various data options from predictive analytics to big data.

Bluemix provides the following features:
  • A range of services that enable you to build and extend web and mobile apps fast
  • Processing power for you to deliver app changes continuously
  • Fit-for-purpose programming models and services
  • Manageability of services and applications
  • Optimized and elastic workloads
  • Continuous availability

Bluemix abstracts and hides most of the complexities that are associated with hosting and managing cloud-based applications. As an application developer you can focus on developing your application without having to manage the infrastructure that is required to host it. For mobile applications you can use the pre-built services that are provided by Bluemix. For web applications you can upload your application to Bluemix and indicate how many instances that you want running. Then Bluemix takes care of the rest. After your applications are deployed you can easily scale them up or down when the usage or load of the apps change.

You can use Bluemix to quickly develop applications in the most popular programming languages. You can develop mobile apps in iOS Android and HTML with JavaScript. For web applications you can use languages such as Ruby PHP and Java?.

Bluemix also provides middleware services for your applications to use. Bluemix acts on the application's behalf when it provisions new service instances and then binds those services to the application. This process enables the application to perform its real job which leaves the management of the services to the infrastructure.

Bluemix architecture

At its core Bluemix is an environment for you to build applications and use services when you develop applications. Bluemix also provides an environment to host application artifacts that run on an application server such as Liberty. By using SoftLayer Bluemix deploys virtual containers that host each deployed application. In this environment the application can use pre-built services (including third-party services) to make application assembly easy.

As a developer you can interact with the Bluemix infrastructure by using a browser-based user interface. You can also use a Cloud Foundry command line interface called cf to deploy web applications.

Clients which can be mobile apps applications that run externally applications that are built on Bluemix or application developers that are using browsers interact with the Bluemix-hosted applications. Clients use REST or HTTP APIs to route requests through Bluemix to one of the application instances or the composite services.

The following figure shows the high-level Bluemix architecture.Figure 1. Bluemix architecture
Bluemix architecture


How Bluemix works

When you deploy an application to Bluemix you must configure Bluemix with enough information to support the application.
  • For a mobile application Bluemix contains an artifact that represents the mobile applications back-end such as the services that are used by the mobile application to communicate with a server.
  • For a web application you must ensure that information about the proper runtime and framework is communicated to Bluemix. Then it can set up the proper execution environment to run the application.
Each execution environment including both mobile and web is isolated from the execution environment of other applications. The execution environments are isolated even though these apps are on the same physical machine. The following figure shows the basic flow of how Bluemix manages the deployment of applications:Figure 2. Deploying an application
Deploying an application
When you create an application and deploy it to Bluemix the Bluemix environment determines an appropriate virtual machine (VM) to which the application or artifacts that the application represents is sent. For a mobile application a mobile back-end project is created in Bluemix. Any code for the mobile application that is running on the cloud eventually runs in the Bluemix environment. For a web application the code that is running on the cloud is the application itself that the developer deploys to Bluemix. The determination of the VM is based on several factors including:
  • The load already on the machine
  • Runtimes or frameworks that are supported by that VM.
After a VM is chosen an application manager on each VM installs the proper framework and runtime for the application. Then the application can be deployed into that framework. When the deployment is completed the application artifacts are started.

You can have one or more instances running for your application. When you have multiple instances for one application the application is uploaded only once. However Bluemix deploys as many instances of the application as requested across as many VMs as needed. Instances of the same application can be on the same or different VMs based on the load of the VMs. Bluemix manages the deployment of the instances so the application developer is unaware of the choices.

The following figure shows the structure of a VM that has multiple applications deployed to it:Figure 3. Design of a VM
Design of a VM

In each VM an application manager communicates with the rest of the Bluemix infrastructure and manages the applications that are deployed to this VM. Each VM has containers to separate and protect applications. In each container Bluemix installs the appropriate framework and runtime that are required for each application.

When the application is deployed if it has a web interface such as a Java web application or other REST-based services such as mobile services exposed publicly to the mobile application users of the application can communicate with it by using normal HTTP requests.Figure 4. Invoking a Bluemix application
Invoking a Bluemix application

Each application can have one or more URLs associated with it. However all of them must point to the Bluemix endpoint. When a request comes in Bluemix examines the request determines which application it is intended for and then selects one of the instances of the application to receive the request.

Bluemix is designed to host scalable applications and application artifacts. When the load of your application changes instances of your application might need to be created or deleted. Therefore any instance of your application might be terminated deleted moved or re-created on a new VM or container when it is required even if your application has only one instance. Because it might be removed at any time your application needs to save all persistent data in a data store that is outside of your application for example on one of the data store services that are provided by Bluemix. Any data that is stored locally to your application such as in memory or on local disk is removed when the instance of your application is removed.


Bluemix concepts

Bluemix consists of applications services buildpacks and other components.

Applications

In the context of Bluemix an application or app represents the artifact that a developer is building.
Mobile apps
Mobile apps run outside of the Bluemix environment and use services to which the mobile apps are exposed. These services typically act in concert? and represent the back-end projection of that application. Bluemix can also host application code that the developer would rather run on a back-end server in a container-based environment.
Web apps
Web apps consist of all the code that is required to be run or referenced at run time. Web apps are uploaded to Bluemix to host the application.
For languages such as Java where the source code is compiled into runtime binary files only the binary files are required to be uploaded.


Services

A service is a cloud extension that is hosted by Bluemix. The service provides functionality that is ready-for-use by the app's running code. The predefined services provided by Bluemix include database messaging push notifications for mobile apps and elastic caching for web apps.

You can create your own services in Bluemix. These services can vary in complexity. They can be simple utilities such as the functions you might see in a runtime library. Alternatively they can be complex business logic that you might see in a business process modeling service or a database.

Bluemix simplifies the use of services by provisioning new instances of the service and binding those service instances to your application. The management of the service is handled automatically by Bluemix. For all available services in Bluemix see the catalog in the Bluemix user interface.

Add-ons

An add-on is a Bluemix extension that manages and monitors applications. Add-ons are not used by the running code but provide functions to manage the application. You can use add-ons to provide many application management functions that you might otherwise have to code into an application yourself. Some of these functions include:

  • Auto scaling to automatically increase or decrease the platform capacity by adding more application or service instances
  • Monitoring response time performance and availability
  • Agile application development planning
  • Secure integration with on-premises systems
  • Continuous delivery through automatic building

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SS2PX6","label":"IBM Bluemix"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
08 December 2018

UID

ibm10776103