As developers build their applications, they are faced with the dilemma of
- Using an IaaS that allows more freedom and lower cost with high management overhead or
- Using a PaaS which simplifies the setup while restricting freedom and increasing costs.
The open source PaaS Cloud Foundry gives the best of both worlds and is starting to get traction in enterprise.
Given this outcome, in this blog, we will introduce you to Cloud Foundry by way of a glossary that helps define what it can do. We lead with a definition of the topic at hand.
Cloud Foundry:An open Platform-as-a-Service (PaaS) which provides a wide range of cloud, framework and application services.
Application Manifest:A YAML file that includes specifics of the application, including number of instances to be created, size of memory that needs to be allocated, and the services the application will use. Cloud Foundry allows a minimal manifest which allows application deployment without using a manifest. Manifest benefits include:
- Cross-cloud portability
Database Migration: This refers to changing a database schema due to application development or maintenance. DB Migration is done in three ways:
- Migrate Once - Execute SQL command directly in the database.
- Migrate Occasionally - A scheme migration command or script is created and executed while deploying a single instance of the application. Following this, re-deploy the application using the original command.
- Migrate Frequently - Run an idempotent script that performs partial automations on the first instance of the application.
Blue-Green Deployment: This is a release technique that runs two identical production environments called Blue and Green. At any given time, one of the two environments is live and the state of the other environment is idle. A new release can be tested on the environment that is idle and, once ready, the idle environment becomes the live environment, thereby making the current live environment idle. This deployment technique reduces downtime and risk. Cloud Foundry has built-in support for Blue-Green deployments.
Loggregator: Logs of all actions that affect the app are consolidated using this. However, it limits the amount of log data that is stored and typically replaces the oldest log with the new ones. It is necessary to export the log data if needed for later use as it loses all data at restart.
Buildpack: A framework and runtime support is provided by Cloud Foundry’s Buildpacks. User-provided artifacts are examined to determine:
- Dependencies to download
- Application configuration to communicate with bound services
Cloud Foundry offers four buildpacks:
BOSH: With minimum configuration changes, this installs and updates software packages on VMs. It supports several IaaS providers, including AWS, Open Stack and vSphere. This allows flexibility and reduces concerns of working in different environments. BOSH main components include:
Director: This is the core orchestrating component in BOSH. Its features offer:
- VM Creation and Deployment
- Software and Service Lifecycle Events
CPI:A Cloud Provider Interface is an API that provides abstraction to Cloud infrastructures and is used for interaction with IaaS providers. It helps create and manage stemcells and VMs.
Blobstore: This is used for storing package and releases sources. When a new release is uploaded, the release is inserted into the Blobstore. The results of the orchestrated packages are stored in the Blobstore.
Agent: Acts as the mediator between Director and VM. Listens for instructions from the Director and sends it to the VM, assigning it a job. Every VM gets it’s own agent.
Other components include: CLI, DB, DNS Name Server, Health Monitor, Message Bus, Registry, Resurrector, Tasks and Workers.
Cloud Controller:This manages the lifecycle of applications. When an application is pushed to Cloud Foundry, Cloud Controller:
- Stores the raw application bits
- Creates a new record to keep track of the application’s metadata
- Signals the DEA to run the application
Controller also maintains records of organizations, spaces, services, service instances, user roles, and so on.
DEA: An acronym for Droplet Execution Agent, this manages application instances, tracks started instances, and broadcasts state messages. The main functionalities include:
- Managing Warden Containers - Warden is an API that manages isolated environments.
- Stage Applications - DEA selects the appropriate buildpack when a new application is launched.
- Run Droplets - Manages the lifecycle of each instance of the application by starting and stopping droplets.
HM9000: This ensures the availability of applications running on Cloud Foundry. It makes an application available when one of the following scenarios occur:
- DEA stops running
- Warden kills an app
- Application Process exits with a non-zero exit code
HM9000 monitors applications, determines their expected state, matches the actual and desired state, and signals the controller to take action when an issue occurs.
So, let’s continue the conversation about Cloud Foundry. Send your inquiries to us at firstname.lastname@example.org. Or, just visit us at www.flux7.com for more information about the cloud.