Introducing Steeltoe RC1, A Microservices Toolkit for .NET

October 11, 2016 Jared Ruckle

 

Go to any industry conference today, and you’ll undoubtedly hear the about “microservices”—an approach to software architecture that’s gaining momentum with enterprise developers.

Steeltoe, a new open source project with a recent RC1 (packages here on NuGet), aims to ease microservices adoption for .NET developers, using the same NetflixOSS that’s popular in the Java world. It is purpose-built to help developers evolve an application from a monolithic .NET 4.x architecture to a set of .NET microservices.

Let’s set some context. How did we get to this point?

Beating The Monolith Boss

At the heart of the enterprise data center stands the monolithic application. These systems are a paradox—crucial to business processes today, yet a painful obstacle to tomorrow’s requirements. While the business demands speed and agility, these systems are slow and cumbersome.

Engineers spend much of their time reconciling these two realities. It is not an easy task. But that’s where microservices come in, a new approach that’s producing results in the real-world.

What are microservices? It’s a programming style where an application is built from decoupled services with single responsibilities.

Microservices builds on the concept of SOA, but with important differences. The descriptors “decoupled” and “single responsibilities” are key distinctions. Another one: SOA typically features binding to a service bus, a constraining central point that doesn’t fit today’s preference for distributed systems.

With microservices, developers can carve up the monolith, one piece at a time, and re-platform them into small components. And this approach is gaining popularity.

For example, Java developers have adopted new open source tooling, Spring Cloud (based on NetflixOSS) to break down monolithic architectures. And they are making progress! Many big companies proudly tout their newfound agility at industry events, and showcase how Netflix tech has helped accelerate their shift to microservices.

Which brings us back to Steeltoe.

Microservices
and Cloud Native with dotNet?
Steeltoe makes it so! https://t.co/JV6wNC7SRk

— Steeltoe (@SteeltoeOSS) September 26, 2016

 

Steeltoe is, in essence, an adapter between the .NET framework and Spring-based NetflixOSS tooling. This approach offers additional efficiencies to enterprises that use both Java and .NET, since it’s a shared set of services used by both runtimes.

We have a 1.0 release candidate, and we’d like your feedback and contributions! Read on for details, as well as a sample app.

NetflixOSS + .NET Patterns = Goodness

So what is Steeltoe? Steeltoe contains best of breed components around configuration, service discovery, and soon, distributed tracing. These components are based on NetflixOSS. That means they have been vetted in real world, production scenarios, and have proven that they can scale to the needs of one of the world’s most demanding microservice architectures.

Wherever possible, we’ve embraced .NET patterns and practices, so this should look and feel similar to other tools you use today.

Here’s what’s in Steeltoe today.

Config Server Client

The Steeltoe bindings to Spring Cloud Config Server provide a way to push configuration to a set of microservices in a late binding manner (i.e. reading config from a service instead of a config file). Get started with Config Server Client.

Eureka Client

The Eureka client provides bindings to Eureka Server, Netflix’s solution for service discovery. What’s exciting about Eureka compared to other tools (Consul, etcd) is that it makes trade-offs with respect to consistency and availability that are advantageous for the service discovery scenario. Specifically, Eureka sacrifices consistency guarantees to remain available in the event of a partition, allowing microservices to continue to register themselves and resolve other services in a given partition. Eureka is also useful for multi-region availability. Get started with Steeltoe’s Eureka client.

Cloud Connectors

These connectors simplify how applications connect to services, and gain operating environment awareness in cloud platforms, such as Cloud Foundry. Spring Cloud Connectors are designed for extensibility: use one of the provided cloud connectors or write one for your cloud platform. Further, you can use the built-in support for commonly-used services (relational databases, MongoDB, Redis, RabbitMQ) or extend Cloud Connectors to work with your own services. Writing homegrown connectors is simple enough, but it would just redundant code. Why bother when you have Spring Cloud Connectors?

Pivotal Loves .NET

Investment themes for @PivotalCF via #S1P. For more on what Circle of Code means see: https://t.co/VwadGgsoAD pic.twitter.com/Ypgl6hHosS

— Pivotal (@pivotal) August 1, 2016

 

These three clients are just the start. We’re working on adding in Zipkin (distributed tracing) and Circuit Breaker (fault tolerance based on the Netflix Hystrix library) to Steeltoe.

Pivotal, the sponsor of Steeltoe, is working on many different fronts to bring the world of Cloud Foundry, microservices, and immutable infrastructure to the Windows and .NET ecosystem. My colleague Richard Seroter details these efforts – including BOSH, a .NET Core Buildpack, deeper support for Microsoft Azure for Pivotal Cloud Foundry, as well Steeltoe.

MusicStore Sample App: Steeltoe in Action

The best way to get familiar with Steeltoe? Check out this sample app repo, based on the reference app MusicStore provided by Microsoft. The sample app breaks up MusicStore into multiple independent services, and shows all the Steeltoe components in action. If you’d like to see a demo of the Music Store, and how it can be deployed to PCF, check out this Channel 9 video.

Additional Resources

 

About the Author

Jared Ruckle

Jared works in product at Pivotal.

Follow on Twitter More Content by Jared Ruckle
Previous
Pay Transparency Matters
Pay Transparency Matters

Pivotal is embracing pay transparency to build employee trust. We are pleased to report that a recent pay a...

Next
The Whys And Hows: “Platform Switch” For Enterprise Java Apps
The Whys And Hows: “Platform Switch” For Enterprise Java Apps

In order to modernize software development to meet the needs and speeds of today’s digital business, compan...

×

Subscribe to our Newsletter

Thank you!
Error - something went wrong!