Steeltoe 1.1 and The .NET Cloud-Native Renaissance

September 27, 2017 Zach Brown

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.

Ready to give Steeltoe a try? Start with the quick samples in the Steeltoe docs. Want to dig deeper? Join us for a two-day hands-on training course at SpringOne Platform this December.

About the Author

Zach Brown

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
Previous
Apache MADlib Comes of Age
Apache MADlib Comes of Age

MADlib has graduated to a Top Level Project in the Apache Software Foundation (ASF). Here, we describe the ...

Next
Frequent Iteration is the Antidote to Monolithic, Big Bet Software Projects
Frequent Iteration is the Antidote to Monolithic, Big Bet Software Projects

Learn how West Corp.—the company that powers 70% of all 911 calls in the US—adopted a modern approach to th...

Enter curious. Exit smarter.

Learn More