If you’ve worked in the open-source world, these next words may surprise you. Right now—this very moment—is a tremendously exciting time to be a .NET developer. Yes, .NET. You read that correctly.
Java experienced a revival in recent years. The result is a rich community of projects for building cloud-native web applications. Spring Boot, Spring Cloud, and Netflix OSS have revitalized enterprise Java development.
The same thing is happening in the .NET ecosystem. We are now in the midst of a .NET renaissance.
Why now? What changed?
Microsoft has embraced Linux. They’ve open-sourced the .NET framework. They’ve launched .NET Core, a new cross-platform set of runtimes and libraries. With .NET Core, you can build apps (using familiar C#) that run equally well on Linux, Windows or MacOS. Most importantly, Microsoft is placing .NET at the center of its open-source efforts. Dozens of new communities have sprung up as a result.
Whereas a previous incarnation of Microsoft may have envisioned itself as competing with open source, the .NET Foundation was established to foster the open source community, to support and grow it.
Who saw this picture coming 5 years ago?
The seeds have been sown. The open-source community around .NET has started to grow. Which brings us to Steeltoe.
Steeltoe is an open source project that helps .NET developers implement common cloud-native patterns like service discovery, shared configuration, and circuit breaker. It provides .NET clients for common open source projects like Netflix Eureka, Spring Cloud Config Server, and Netflix Hystrix.
Steeltoe also includes connectors to integrate your .NET applications with Cloud Foundry security and data services. Best of all, Steeltoe works with both .NET Core as well as the .NET Framework. Use Steeltoe to build new, cloud-native microservices. Need to modernize legacy apps? Use Steeltoe for those too, and make them more cloud-friendly on Linux or Windows!
We’ve hit an exciting milestone, with the GA of Steeltoe 1.1. Let’s take a look at what’s new.
Circuit Breaker: Help Microservices Fail Gracefully
If an important microservice on stops responding, how do you prevent the failure from cascading? How can you ensure the user experience doesn’t degrade? Use a circuit breaker!
Steeltoe 1.1 includes a full .NET implementation of Hystrix, an industry standard circuit breaker. (Hystrix was created to meet the demands of Netflix’s hyperscale video streaming applications.) The service provides a default fallback behavior. That means your apps can fail gracefully, until the broken service recovers. It also includes rich metrics. With the Hystrix dashboard you can see circuit-breaker status at a glance.
Management Endpoints Speed Troubleshooting
Troubleshooting microservices can be a challenge. Especially when they’re running at scale, and in a production environment. To help .NET developers solve that problem, Steeltoe 1.1 introduces management endpoints. Drawing inspiration from the Spring Boot Actuator project, the Steeltoe Management libraries complement your app or microservice with protected endpoints. These endpoints help you troubleshoot your app without disrupting your code while it’s running in prod.
Steeltoe 1.1 includes these endpoints:
\health provides health information about your application (such as memory and disk usage).
\info returns arbitrary application info such as a git hash so you can reconcile the running version of an app, with a specific git commit.
\trace provides a circular buffer of the last 100 HTTP requests and responses.
\loggers allows you to see and configure logging levels for your running application on the fly. This is controllable per running instance of your app, and all the way down to the individual class.
Container Networking for Improved Isolation
Steeltoe 1.0 included support for service discovery with Eureka, another NetflixOSS project. With Eureka, you can look up healthy instances of a microservice, then load balance calls across all available instances of that service.
In 1.1, the feature is extended to support Cloud Foundry’s new container networking stack, including direct addressing by IP address. Why does this matter? Container networking saves you network hops because each call doesn’t need to go through a public load balancer. It’s especially useful in enterprise deployments, when dependent services don’t have publicly routable addresses.
Store Secrets in Spring Cloud Config Server
Lastly, Spring Cloud Config Server recently introduced support for storing application configuration (such as certs and connection strings) in Hashicorp Vault. We bring this same feature to Steeltoe 1.1.
Join the .NET Renaissance
The .NET renaissance is underway. .NET devs now have access to a growing community of open source projects that support resilient cloud-native web applications.
About the Author
Zach Brown does product strategy and marketing at Pivotal. He’s responsible for Steeltoe and the Pivotal Cloud Foundry .NET developer experience.Follow on Twitter More Content by Zach Brown