The Elastic Runtime architecture is composed of a load balancer, routers and applications. Platform customers interact with Pivotal Cloud Foundry through a simple command line interface (CLI), the “cf cli”. The cf push command is simple, but it does a lot for your code. When you cf push your application code and a few parameters, ERT automatically:
- Uploads your application code
- Determines and installs the correct runtime and middleware to run your application
- Sets up a route (or URL), creates a load balancing entry and creates SSL termination for your application
- Creates health monitoring and logging subsystems and starts your application in a healthy state with the desired number of instances
- Binds any backing services needed to your application by injecting the service credentials
To flexibly serve and scale apps online, ERT has subsystems that perform specialized functions. A few of these components are:
- Traffic & Routing - CF Cloud Controller runs the apps and other processes on the cloud’s VMs, balancing demand and managing app lifecycles. The router directs incoming traffic from the world to the VMs that are running the apps that the traffic demands, usually working with a customer-provided load balancer.
- Communication within ERT - components communicate with each other by posting messages internally using http and https protocols, and by sending NATS messages to each other directly.
- Monitoring & Analysis - As ERT operates, the Cloud Controller VM, router VM, and all VMs running apps continuously generate logs and metrics. The Loggregator system aggregates this information in a structured, usable form, the Firehose. You can use all of the output of the Firehose, or direct the output to specific uses, such as monitoring system internals or analyzing user behavior, by applying nozzles.
- Role-Based Access Controls - To organize user access to the cloud and to control resource use, a cloud operator defines Orgs and Spaces within an installation and assigns Roles such as admin, developer, or auditor to each user.