Config Server for PCF is an externalized application configuration service. It is a central place to manage an application’s external properties across all environments. The service provides configurations stored as either Java Properties files or YAML files. (The sources of configurations are usually stored as files in a Git repository.) Given the URI of a configuration source, the server clones the repository. The configurations are then made available to client applications in JSON as a series of propertySources.
- Managing configuration content with Git makes application configuration versioned and auditable.
- The service manages application configuration for your application as it advances through the deployment pipeline (dev, test, prod).
- Developers use Config Server to ensure an application has everything it needs to run during this process.
- Config Server supports labeled versions of environment-specific configurations.
- HTTPS encryption secures the connections from the source Git to the Config Server instances.
Service Registry for PCF provides an implementation of the Service Discovery pattern, based on NetflixOSS Eureka. This is one of the key tenets of a microservice-based architecture. Why? Manual configuration of each client or service is difficult, often proving brittle in production. Instead, use Service Registry to dynamically discover and call registered services.
- First, a client registers with the Service Registry. The client also provides metadata about itself, like its host and port.
- Once registered, the Registry expects a regular heartbeat message from each service instance.
- If the heartbeat message is not received consistently, the Service Registry removes the instance from its registry.
- HTTPS encryption secures all client-to-service communication.
- Registry replication makes the service highly available. It also supports the Cloud Foundry permissions model; developers only see the services they are permitted to see.
The NetflixOSS Hystrix library (part of Spring Cloud Netflix) provides an implementation of the Circuit Breaker pattern. The Circuit Breaker Dashboard for PCF visualizes the metrics of the circuit breakers inside an app. A microservices architecture is often composed of many layers of distributed services. End-user requests may comprise multiple calls to these services. If a lower-level service fails, that failure can cascade up to the end user and spread to other dependent services. Heavy traffic to a failing service can also make it difficult to repair. Hystrix circuit breakers prevent failures from cascading. They can provide fallback behavior until a failing service is restored to normal.
- When applied to a service, a circuit breaker watches for failing calls to the service. If a failure reaches a certain threshold, it “opens” the circuit.
- The circuit breaker automatically redirects calls to the specified fallback mechanism. This gives the failing service time to recover.
- The Circuit Breaker Dashboard runs as a containerized web application and provides operational visibility into the behavior of all of the circuit breakers present in a fleet of cloud-native services.
- On the platform, Spring Cloud Stream and RabbitMQ infrastructure automatically provide reliable, encrypted transport for streams of NetflixOSS Turbine metrics data.