The Steeltoe client libraries enable .NET Core and .NET Framework apps to easily leverage Netflix Eureka, Hystrix, Spring Cloud Config Server, and Cloud Foundry services.
Distributed Service Discovery
Steeltoe connects to registries like Netflix Eureka to register and discover services. This makes the interactions between your microservices reliable and fault tolerant. Use it to ensure that consumers of your services know exactly where to find healthy service instances.
Dynamic Application Configuration, Simplified
Steeltoe leverages configuration stores such as Spring Cloud Config Server. Store your application’s configuration in a centralized repository (git, Vault, or both). Then, load it at runtime.
Prevent Cascading Failures with Circuit Breaker
Graceful, non-cascading failure and compensating actions are critical for distributed systems. Steeltoe Circuit Breaker—based on Netflix Hystrix—isolates dependencies and helps you fail gracefully until resolution is reached.
Steeltoe makes microservices for .NET painless. For all their benefits, microservice architectures expose many distributed computing problems that traditional monoliths avoided. Steeltoe brings the power of resilient, scalable microservices to .NET developers, without all the headache. Steeltoe includes:
- Highly Available Service Discovery
- Highly Available Config Server
- Circuit Breaker
- Cloud Connectors
- Cloud Security Providers
- Blue/green deployment support
Steeltoe provides .NET clients that integrate with Spring Cloud Services including: Service Discovery, Spring Cloud Config Server, and Circuit Breaker Monitoring.
Automatic configuration of bound Redis, RabbitMQ, MySQL, and Postgres service instances.
Supports Cloud Foundry UAA and Pivotal SSO for Authentication and Authorization.
“...perhaps the most compelling innovation with this round involves support for a library you may not have heard of: Steeltoe. It is an open source effort, stewarded by Pivotal, to construct a Netflix-inspired microservices model for full-fledged .NET Framework applications — not just .NET Core, not Xamarin, but the full enchilada.“
Steeltoe Configuration builds upon the .NET configuration API. The service enables developers to configure an application with values from a variety of sources, using Configuration Providers. Each provider reads a set of name-value pairs from a given source location. The data is then added to a multi-level configuration dictionary.
Each value contained in the configuration is tied to a string-typed key or name. The values are organized by key into a hierarchical list of name-value pairs. The components of the keys are separated by a colon (e.g. spring:application: key = value).
Out of the box, Steeltoe supports the following providers/sources:
- Cloud Foundry
- Spring Cloud Config Server including support for multiple backing repositories (use git, Vault, or both)
- Command-line arguments
- File sources (e.g. JSON, XML and INI)
- Environment variables
Microservices frequently depend on other services, but keeping track of dependent services can be a pain (especially when running at scale). How do service consumers find and load balance requests across healthy instances of a dependent service?
Eureka, Netflix's implementation of the Service Discovery application pattern, provides a centralized repository for microservices to register themselves and look up other registered services.
Steeltoe provides a Service Discovery client so your .NET app can connect to a Eureka server and register itself, or fetch a list of healthy service instances.
The Steeltoe Circuit Breaker bring Hystrix to .NET. The service aggregates all the metrics from your microservices into a dashboard so you can see how your app is behaving.
Cloud-native architectures are typically composed of multiple layers of distributed services. End-user requests may comprise multiple calls to these services. If a lower-level service fails, this failure can cascade up to the end user and spread to other services. Heavy traffic to a failing service can also make it difficult to repair. With the Circuit Breaker frameworks, you can prevent failures from cascading and provide fallback behavior until a failing service is restored to normal operation.
When applied to a service, a circuit breaker watches for failing calls to the service. If failures reach a certain threshold, it “opens” the circuit and automatically redirects calls to the specified fallback mechanism. This gives the failing service time to recover.
Steeltoe automatically connects your .NET application to data services like Redis, RabbitMQ, MySQL and Postgres.
Connectors enable your apps to discover services bound to your apps on Pivotal Cloud Foundry. Connectors also support settings-based configuration. That means developers can supply configuration settings at development and testing time, but then have those settings overridden when pushing the application to Pivotal Cloud Foundry.
All connectors use configuration information from Pivotal Cloud Foundry’s VCAP_SERVICES environment variable to detect and configure the available services. This a standard across the platform that is used to hold connection and identification information for all service instances.
Steeltoe helps you integrate ASP.NET Core authentication and authorization features with Cloud Foundry security services.
Steeltoe supports secure integration with Cloud Foundry two different ways:
- Use OAuth2 Single Sign-on with Cloud Foundry Security services such as UAA and Pivotal Single Sign-On.
- Use JWT tokens issued by Cloud Foundry Security services for securing access to REST resources/endpoints.
Steeltoe also supports an additional security provider that allows you to easily use a Cloud Foundry based Redis service for ASP.NET Core Data Protection Key Ring storage.
Let's talk about it.
Contact us about Steeltoe.