Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building...

36
Building Microservices with .NET Core and Steeltoe Zach Brown and Matt Horan, Pivotal

Transcript of Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building...

Page 1: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Building Microservices with.NET Core and Steeltoe

Zach Brown and Matt Horan, Pivotal

Page 2: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Outline• Introduction

Welcome to the .NET Renaissance

• What is Steeltoe?(and why is Steeltoe? and what’s in Steeltoe?)

• Demo• Roadmap & Resources

Page 3: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Be engaged!Join the dialogueShare your thoughts, opinions and photos ...even if you disagree

Zach Brown@moredeploys

Steeltoe Project@SteeltoeOSS

Page 4: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Introduction:Welcome to the .NET

Renaissance

Page 5: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown
Page 6: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown
Page 7: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

The .NET Renaissance

We are on the cusp of a

.NET renaissance.- Ian Cooper

NDC Oslo

Page 8: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

The .NET Renaissancea convergence of forces

• It’s about time… (.NET’s 15th Birthday)

• Cross-platform .NET Core

• Rise of Cloud

• Growing OSS community

• But we need more projects that

support for 12-factor, cloud-native, and microservices

Page 9: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

What is Steeltoe?

Page 10: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Why is Steeltoe?

Page 11: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Cloud-Native .NET

- 12 Factor App principles (https://12factor.net/) - Configuration stored in environment variables- Out of process session state- No r/w to registry, GAC, Local file system- Loosely coupled backing services (i.e. RDBMS)

“Today’s best practices are tomorrow’s anti-patterns.”

Page 12: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Microservices

Benefits of Microservices Architectures

- Quickly iterate and release frequently- Easy for new devs to join and be productive- Increased developer velocity- Shorter test cycles- Polyglot becomes reality- Independently scalable components

Page 13: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

But Microservices are hardMicroservices = Distributed Systems = Way more complexity

- How to troubleshoot microservices?

- How to set global configuration across the whole application?

- How to look up the dynamic addresses of services you consume?

- What do you do when a service you depend on stops responding?

Page 14: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

The Good news is...

and

There are some great OSS solutions already available

But until now they’ve been focused on Java and not very accessible to .NET devs…

Page 15: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

So that’s why we built Steeltoe

To help you build

Cloud native .NET applications and leverage Spring Cloud tooling for

resilient microservices

Page 16: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

What’s in Steeltoe?

Page 17: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Cloud-Native .NET

- MySQL

- Postgres

- Redis

- RabbitMQ

- OAuth2

Connectors for common data services

Page 18: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Cloud-Native .NETSecurity Providers

- OAuth2 SSO Provider

- JWT resource protection

- Redis-backed Key Ring Repository

Page 19: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Cloud-Native .NETManagement Endpoints - /info

arbitrary app info, e.g. git build tag

- /health application health information

- /trace circular buffer of last 100 http requests/responses

- /loggers shows and modifies configuration of loggers down to the class level

Page 20: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Cloud-Native .NET

Cloud Foundry• VCAP_APPLICATION, VCAP_SERVICES, CF_*

Config Server• Access config stored in Spring Cloud Config Server

(backed by Git, Vault, local filesystem)

• Across all instances, all apps, all environments

Configuration Providers

Page 21: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Cloud-Native .NETSpring Cloud Config Server

Page 22: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Resilient MicroservicesService Discovery with Eureka

- .NET Client for Netflix Eureka

- Dynamically discover and call

registered services

- Supports direct addressing

Page 23: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Resilient MicroservicesCircuit Breaker

- .NET implementation of Netflix Hystrix

- Bypass failing services with

elegant fall-back behavior

(so your users don’t see nasty error messages)

- Rich metrics and monitoring

Page 24: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Resilient MicroservicesNetflix Hystrix

Page 25: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Open and Flexible

Steeltoe works...

with .NET Core and with the .NET framework

on Windows and on Linux

standalone and running on Cloud Foundry

Page 26: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Demo: ASP.NET Music Store

Page 27: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

ASP.NET Music Store

MusicUI

OrderProcessing

MusicStore

ShoppingCart

mySQL

redis

mySQL

mySQL

session cache

GitHub repo: https://github.com/SteeltoeOSS/Samples/tree/master/MusicStore

Browse music

Add item to cart

PlaceOrder

Page 28: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

config

ASP.NET Music Store w/Steeltoe - Config Server

MusicUI

OrderProcessing

MusicStore mySQL

redis

mySQL

mySQL

session cache

ConfigServer

configconfig

config

ShoppingCart

git

GitHub repo: https://github.com/SteeltoeOSS/Samples/tree/master/MusicStore

Page 29: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

redisconnector

ASP.NET Music Store w/Steeltoe - Connectors

MusicUI

OrderProcessing

MusicStore mySQL

redis

mySQL

mySQL

session cache

ConfigServer

mysqlconnector

mysqlconnector

mysqlconnector

git

ShoppingCart

GitHub repo: https://github.com/SteeltoeOSS/Samples/tree/master/MusicStore

Page 30: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

ASP.NET Music Store w/Steeltoe - Discovery

MusicUI

OrderProcessing

MusicStore mySQL

redis

mySQL

mySQL

session cache

ConfigServergit

ShoppingCart

EurekaServer

service addresses

GitHub repo: https://github.com/SteeltoeOSS/Samples/tree/master/MusicStore

Browse music

PlaceOrder

Add item to cart

Page 31: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

ASP.NET Music Store w/Steeltoe - Management

MusicUI

OrderProcessing

MusicStore mySQL

redis

mySQL

mySQL

session cache

ConfigServergit

ShoppingCart

EurekaServer /info

/health/trace/loggers

/info/health/trace/loggers

/info/health/trace/loggers

GitHub repo: https://github.com/SteeltoeOSS/Samples/tree/master/MusicStore

Page 32: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Roadmap & Resources

Page 33: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

What’s coming on the Steeltoe Roadmap

- Additional Management endpoints - Thread dump, Heap dump

- Netflix Ribbon- Load balancing for Eureka client

- Distributed Tracing

What else would you like to see?

Page 34: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

How to Get Started

Learn more → http://steeltoe.io

Clone a sample → https://github.com/SteeltoeOSS/Samples

Get the bits → https://www.nuget.org/profiles/steeltoe

Talk to us → http://slack.steeltoe.io/

Tell your friends → @SteeltoeOSS

The best way to get started is to take a look at our docs, clone a sample from the GitHub repo, and contact the team in Slack with questions and feedback.

Page 35: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown

Other ResourcesUpcoming Training

2-day Hands-on training course at Spring One Platform conferencehttps://springoneplatform.io/training/steeltoe-net-developer

Blogs on Steeltoe

Steeltoe 1.1 and the Cloud-Native .NET Renaissance https://content.pivotal.io/blog/steeltoe-1-1-and-the-net-cloud-native-renaissance

Adding Circuit Breakers to your .NET applicationshttps://seroter.wordpress.com/2017/09/21/adding-circuit-breakers-to-your-net-applications/

Polyglot microservices and Eurekahttps://seroter.wordpress.com/2017/03/27/yes-you-can-use-a-single-service-registry-for-net-and-java-microservices/

Page 36: Building Microservices with .NET Core and Steeltoeschd.ws/hosted_files/cfeu17/ea/Building Microservices with .NET... · Building Microservices with.NET Core and Steeltoe Zach Brown