1. Brief Introduction – Cloud Foundry
Cloud Foundry is an open platform as a service, providing a choice of clouds, developer frameworks, and application services. Cloud Foundry makes it faster and easier to build, test, deploy and scale applications. It is an open source project and is available through a variety of private cloud distributions and public cloud instances.
2. Logical Architecture & Components
Router routes traffic coming into Cloud Foundry to the appropriate component, whether it is an operator addressing the Cloud Controller or an application user accessing an app running on a Diego Cell.
UAA is a multi-tenant identity management service, used in Cloud Foundry, but also available as a standalone OAuth2 server. It works together with Login Server to provide identity management.
3. App Lifecycle
Cloud Controller provides an API for staging and running apps and provisioning and binding services to them. Nsync, BBS, and Cell Reps work together along a chain to keep apps running. Diego Brain distributes Tasks and LRPs to Diego Cells. Cell Reps monitors the containers and provides the ActualLRP value.
4. App Storage & Execution
Blob Store is a repository for large binary files including Application code packages, Buildpacks, etc.
Diego Cell executes application start and stop actions locally in application VM, manages the VM’s containers, and reports app status and other data. Garden provides the container technology for the Diego project (future architecture for Cloud Foundry)
Applications typically depend on services such as databases or third-party SaaS providers. When a developer provisions and binds a service to an application, the service broker for that service is responsible for providing the service instance.
Bulletin Board System (BBS) stores more frequently updated and disposable data such as cell and application status, unallocated work, and heartbeat messages.
Consul stores longer-lived control data, such as component IP addresses and distributed locks that prevent components from duplicating actions.
NATS is used to broadcast the latest routing tables to the routers.
7. Metrics & Logging
Metrics collector gathers metrics and statistics from the components.
App Log Aggregator streams application logs to developers.