Cloud Foundry is an open source cloud computing platform as a service (PaaS). It provides a choice of clouds, developer frameworks, and application services.
It is primarily written in Ruby and Go, enables application lifecycle automation and thus well-suited to the continuous delivery strategy.
Deploying Cloud Foundry involves interfacing with the underlying infrastructure using the Cloud Foundry BOSH (bosh outer shell) deployment scripting language, another open source tool from Pivotal.
When an application is deployed to Cloud Foundry, an image is created for it and stored internally. The image is then deployed to a Warden container to run in.
For multiple instances, multiple images are started on multiple containers. This is where BOSH comes in - Cloud Foundry's internal Controller uses BOSH to get the underlying infrastructure to spin up virtual machines to run the Warden containers on.
When an application is deleted, all of its containers are destroyed and their resources are freed for other applications to use. If the application instance crashes, its container is killed and a new Warden container is started automatically.
A container only ever runs one application ensuring isolation, security and resilience. A load-balancing router sits at the front of Cloud Foundry to route incoming requests to the correct application - essentially to one of the containers where the application is running.
Services have to be deployed to the platform first and then are available to any application using it. Another advantage of Pivotal Cloud Foundry is that many pre-defined services can be deployed into it directly using the Administration Console. Users of the Open Source Cloud Foundry must make services available by writing and running BOSH scripts.
The following services are available to Pivotal Cloud Foundry
MySQL, PostgreSQL, MongoDB, Redis, Riak, DataStax (Cassandra), Neo4J, Pivotal HD (Hadoop)
CloudBees Jenkins (Continuous Integration)
API Gateway, Data Sync, Push Notifications (Pivotal proprietary services to support Mobile Apps).
Our Expertise on Cloud Foundry
Routes incoming traffic to the appropriate component, usually the Cloud Controller or a running application on a DEA node.
The OAuth2 server and Login Server work together to provide identity management.
The Cloud Controller is responsible for managing the lifecycle of applications.
monitors, determines and reconciles applications to determine their state, version and number of instances, and directs Cloud Controller to take action to correct any discrepancies.
Application Execution (DEA)
The Droplet Execution Agent manages application instances, tracks started instances, and broadcasts state messages.
The blob store holds, application code, buildpacks and droplets.
When a developer provisions and binds a service to an application, the service broker for that service is responsible for providing the service instance.
Cloud Foundry uses NATS, a lightweight publish-subscribe and distributed queueing messaging system, for internal communication between components.
Logging and Statistics
The metrics collector gathers metrics from the components. Operators can use this information to monitor an instance of Cloud Foundry.