July 20, 2016 | Written by: Abtin Assadi
Share this post:
The cloud computing environment has come a long way in the past few years.
Today’s cloud computing models provide choices that vary in control, flexibility and ease, ranging from bare metal with maximum control and responsiveness to event-driven apps with maximum ease in development and deployment.
Until recently, virtual machines (VM) were the primary cloud computing model for workload deployments. VMs provide flexibility and enhance cloud resources through virtualization, but they are not optimal in all cases. For example, latency-sensitive applications requiring real-time interactions are not well suited to this model. Additionally, although VM provides for a layer of abstraction over the underlying hardware, users must provide everything, including the operating system (OS), libraries, middleware and so on. Moreover, VMs are hypervisor-dependent and use memory heavily, so they’re not quite portable or suitable for every use case.
Let’s take a look at today’s cloud computing models, all supported by IBM Bluemix:
A dedicated server or a cluster of servers in the cloud can be a great fit for high-performance, I/I/O intensive workloads. In this model, the user selects the type and speed of the underlying servers and has control over the hardware, but must provide the full software stack including hypervisors, OS and up.
Virtualization is a proven software technology that makes it possible to run multiple operating systems and applications on the same server at the same time. Users can create virtual machines for on-premises servers, or scale up to the cloud to balance resources and increase the application’s availability. The user still has to provide most required software for the stack, including OS and above.
Containers are a form of virtualization, sometimes referred to as OS virtualization, providing a perception of a fully isolated and independent OS to the application. The combination of instant startup (through OS virtualization) and reliable execution (from namespace isolation and resource governance) makes containers ideal for application development and testing. A containerized application works the same way on a developer’s laptop as it does on a production system whether on-premises or in the cloud. The environment and resource usage is consistent across systems. Again, the user must provide all required software stack above the OS, including the libraries.
A platform as a service (PaaS) makes the development, testing, and deployment of applications quick, simple, and cost-effective. PaaS provides the instant runtime environment to develop and deploy applications without the need to manage underlying servers, storage, network, hypervisor, OS or middleware. Developers only manage the applications. The instant runtime environment also provides database services (SQL and NoSQL), data services (Twitter and weather), Analytics services (BI, predictive, Hadoop, Spark, and machine learning) and many other services to simplify application development.
OpenWhisk provides a distributed compute service to execute application logic in response to events. It is an example of serverless architecture — a distributed, cloud-based, event-driven compute platform. OpenWhisk provides a programming model for uploading event handlers to a cloud service and registering these handlers to respond to events. OpenWhisk scales automatically to fulfill the triggered demand, freeing the developer from underlying infrastructure management and resource maintenance. Developers simply manage the events, actions and rules.
Use a combination of cloud computing models to power your apps. Then let IBM Bluemix handle the rest.