SlideShare a Scribd company logo
1 of 30
Download to read offline
Pathway to Cloud-
Native .NET
Modernizing .NET applications to Cloud Native
Robert Sirchia Practice Lead
15.2.2019
2
» App Portfolio Rationalization
» SNAP
» Decomposition
» Steeltoe
› Configuration
› Circuit
› Health
› Service
» Key Takeaways
Agenda
3
Who am I?
Robert is a Lead Consultant with Magenic, heading
up the Magenic Pivotal Practice, and has more than
15 years’ experience with the .NET and Microsoft
technologies. He has been working with Pivotal
Cloud Foundry in the .NET space for more than two
years, and during that time, Robert has led large re-
platforming and modernization efforts in moving
.NET applications to Pivotal Cloud Foundry. He also
has industry experience in real estate, financial
institutions, politics, and energy and chemical.
4
» This isn’t me…
Who I am Not.
5
Who is Magenic
6
What do we got?
Portfolio Rationalization
7
Portfolio Rationalization
Inventory Analyze Catalog Backlog
• All applications
• Ancillary services
• All data sources
• Diagram the
system
• Decompose
functionality
• Catalog the
functionality of
each application
• Identifying
functionality that
crosses apps
• Determine if the
app is still used
• Determine its
business value
• Determine
suitability for the
cloud (SNAP)
• Backlog based on
app inventory and
functionality
catalog
• Organize based
on deprecation or
modernizations
8
Conversational approach of
evaluating the suitability of
moving an app to the cloud.
» Flush out risks
» Outline priorities
» General understand of the
technologies used
» Understand relative sizing
SNAP
9
» Overall for the app
» All of the deploy points
What to SNAP?
My App
Web UI
API 2
API 1
My App
XXL
Web UI
S
API 1
L
API 2
XXL
10
» Event storming
› Workshop method used to understand domains in a system
› People
− Business: those who understand events in business process
− Technical: those who understand where the bodies are buried
› Stickies
− Orange: Events
− Blue: Commands
− Yellow: Aggregates
− Purple: trouble spots
› Select services
− Start small to prove out SDLC
− Then ramp up to higher value
Decomposition
11
Event Storming
Customer Party
Size and Name
Recorded
What do we do
if no seats are
available?
Drinks Ordered
Food Ordered
Drinks Served
Order Queued Food Served
Food EatenFood Cooked
Food Staged
Bill Presented
Bill Paid
Order Drinks Queue Order Present BillRing BellSeat Requested
Customer
Seated
Pay Bill
What do we do
if payment is
declined?
12
Event Storming
Bill Presented
Bill Paid
Present Bill
Pay Bill
What do we do
if payment is
declined?
13
» Identifying and catalog functionality
for each application
› On such platforms like Confluence
» Evaluate proposed efforts against
any existing functionality
› Consider centralizing functionality if
possible that crosses applications
» Update the catalog frequently
Cataloging
14
Cloud Native Frameworks
Fast Open Source Way to the Cloud
15
Is an open source framework of Cloud-native
libraries for implementing industry standard
best practices when building microservices
for the cloud.
» .NET Core and .NET Framework
» Runs on Windows and Linux
» Works with or without Pivotal Cloud Foundry
Steeltoe
16
Configuration
Configuration enables developers to configure an application with values from a variety
of sources by using Configuration Providers. Each provider supports reading a set of
name-value pairs from a given source location and adding them into a combined multi-
level configuration dictionary.
17
» Configuration Server
› Centralized configurations
› Served through Config Server
› Stored in Vault, GIT, or local file system
Spring Cloud Configuration Server
Java
App
.NET
App
Java
App
18
» Add Cloud Foundry in Program.cs
» Configure Options in Startup.cs
» Inject in to your class
» Get values you need
Implementing Configuration Provider in .NET
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.ConfigureCloudFoundryOptions(Configuration);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[]
{
_applicationOptions.Application_Name,
_servicesOptions.Services["value"].ToString()
};
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.AddCloudFoundry()
.UseStartup<Startup>();
public ValuesController(IOptions<CloudFoundryApplicationOptions> applicationOptions,
IOptions<CloudFoundryServicesOptions> servicesOptions)
{
_applicationOptions = applicationOptions.Value;
_servicesOptions = servicesOptions.Value;
}
19
Service Registration and Discovery
A service registry provides a database that applications can use to implement the
Service Discovery pattern, one of the key tenets of a microservices-based architecture.
Applications can use a service registry to dynamically discover and call registered
services.
20
» Based on Netflix Eureka
» Centralized service registry
» Basic health checking
» Useful for container to container
(C2C)
Service Discovery
Consumer
Service
Registry
Producer
Producer
Producer
Producer
Producer
Register
Discover
Connect
21
Implementing Service Discovery in .NET
» Client rewrites hostname portion
of URL with an actual service node
» Create a new Discovery Handler
» Call the service
DiscoveryHttpClientHandler _handler;
ILogger<AccountService> _logger;
private const string ACCOUNT_URL = "http://accountService/api/account";
public AccountService(IDiscoveryClient client, ILoggerFactory logFactory)
{
_handler = new DiscoveryHttpClientHandler(client,
logFactory.CreateLogger<DiscoveryHttpClientHandler>());
_logger = logFactory.CreateLogger<AccountService>();
}
public async Task<string> GetAccountName()
{
var client = GetClient();
var result = await client.GetStringAsync(ACCOUNT_URL);
_logger.LogInformation("AccountName: {0}", result);
return result;
}
private HttpClient GetClient()
{
var client = new HttpClient(_handler, false);
return client;
}
22
Circuit Breaking
Cloud-native architectures typically consist of multiple layers of distributed services.
End-user requests may require multiple calls to these services, and failures in lower-
level services can spread to other dependent services and cascade up to the end user.
Heavy traffic to a failing service can also make it difficult to repair. By using Circuit
Breaker frameworks, you can prevent failures from cascading and provide fallback
behavior until a failing service is restored to normal operation.
23
» Based on Netflix Hystrix
» Designed to prevent
cascading failures
» Gives live metrics on state
» Maintaining three states
» Used to fail gracefully and with
a known failure state
» Opens a circuit on
› Timeout
› failure
Circuit Breaker
Closed
Half-Open
Open
Trip breaker
Attempt
reset
Trip
breaker
Reset
24
public class AccountCommand : HystrixCommand<Account>
{
private readonly ILogger<AccountCommand> _logger;
private readonly IAccountService _accountService;
private string _accountId;
public AccountCommand(IHystrixCommandOptions options, ILogger<AccountCommand> logger,
IAccountService accountService) : base(options)
{
_logger = logger;
_accountService = accountService;
}
public async Task<Account> GetAccount(string accountId)
{
_accountId = accountId;
return await Execute sync();
}
protected override async Task<Account> RunAsync()
{
return await _accountService.GetAccount(_accountId);
}
protected override async Task<Account> RunFallbackAsync()
{
_logger.LogError("Couldn't get account");
return await Task.FromResult(new Account());
}
}
» Extend HystrixCommand
» Add an Execute method
» RunAsync (Circuit Closed)
› What executes normally
» RunFallbackAsync (Circuit Open)
› What executes under failure
Implementing a Circuit Breaker in .NET
25
Management
Both frameworks have a number of management endpoints that you can easily add to
your application. The way the endpoints are exposed and used depends on the type of
technology you choose in exposing the functionality of the endpoint.
26
» Helps with monitoring and managing services in production
» Can be exposed via HTTP and integrate with Pivotal Apps Manager
» Customizable endpoints
› Settings
› Health
› Info
› Loggers
› Tracing
› etc.
Management
27
» Quick way to check the
status of an application
» Customize to monitor
› Underlying services
› External services
› Messaging systems
» Used to tie in to existing
monitoring tools
Health Management
Service 3
Service 1
Health Check
OK
Health Check
Database is not
online
Database
28
» Completely open source
» Active user community
› Dedicated Slack channel
› Open Pivotal Tracker
» Examples and sample code in GitHub
Open and Engaged
29
» Using techniques to understand your portfolio of applications
» Get started sooner and in the correct place
» Use the tools to optimize applications to the cloud
Key Takeaways
30
Appendix

More Related Content

What's hot

Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Databricks
 
Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...
Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...
Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...
confluent
 

What's hot (20)

Redux data flow with angular
Redux data flow with angularRedux data flow with angular
Redux data flow with angular
 
#JaxLondon: Building microservices with Scala, functional domain models and S...
#JaxLondon: Building microservices with Scala, functional domain models and S...#JaxLondon: Building microservices with Scala, functional domain models and S...
#JaxLondon: Building microservices with Scala, functional domain models and S...
 
Context Information Management in IoT enabled smart systems - the basics
Context Information Management in IoT enabled smart systems - the basicsContext Information Management in IoT enabled smart systems - the basics
Context Information Management in IoT enabled smart systems - the basics
 
Orion Context Broker 20210907
Orion Context Broker 20210907Orion Context Broker 20210907
Orion Context Broker 20210907
 
Loggly - Case Study - Loggly and Kubernetes Give Molecule Easy Access to the ...
Loggly - Case Study - Loggly and Kubernetes Give Molecule Easy Access to the ...Loggly - Case Study - Loggly and Kubernetes Give Molecule Easy Access to the ...
Loggly - Case Study - Loggly and Kubernetes Give Molecule Easy Access to the ...
 
Redux data flow with angular
Redux data flow with angularRedux data flow with angular
Redux data flow with angular
 
Developing functional domain models with event sourcing (oakjug, sfscala)
Developing functional domain models with event sourcing (oakjug, sfscala)Developing functional domain models with event sourcing (oakjug, sfscala)
Developing functional domain models with event sourcing (oakjug, sfscala)
 
CQRS and Event Sourcing with Akka, Cassandra and RabbitMQ
CQRS and Event Sourcing with Akka, Cassandra and RabbitMQCQRS and Event Sourcing with Akka, Cassandra and RabbitMQ
CQRS and Event Sourcing with Akka, Cassandra and RabbitMQ
 
APAC Confluent Consumer Data Right the Lowdown and the Lessons
APAC Confluent Consumer Data Right the Lowdown and the LessonsAPAC Confluent Consumer Data Right the Lowdown and the Lessons
APAC Confluent Consumer Data Right the Lowdown and the Lessons
 
PredictionIO - Building Applications That Predict User Behavior Through Big D...
PredictionIO - Building Applications That Predict User Behavior Through Big D...PredictionIO - Building Applications That Predict User Behavior Through Big D...
PredictionIO - Building Applications That Predict User Behavior Through Big D...
 
Cqrs, Event Sourcing
Cqrs, Event SourcingCqrs, Event Sourcing
Cqrs, Event Sourcing
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event Sourcing
 
Orion Context Broker 20210412
Orion Context Broker 20210412Orion Context Broker 20210412
Orion Context Broker 20210412
 
CQRS & event sourcing in the wild
CQRS & event sourcing in the wildCQRS & event sourcing in the wild
CQRS & event sourcing in the wild
 
[WSO2Con EU 2018] The Rise of Streaming SQL
[WSO2Con EU 2018] The Rise of Streaming SQL[WSO2Con EU 2018] The Rise of Streaming SQL
[WSO2Con EU 2018] The Rise of Streaming SQL
 
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
 
Orion Context Broker
Orion Context Broker Orion Context Broker
Orion Context Broker
 
Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...
Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...
Kafka Summit SF 2017 - From Scaling Nightmare to Stream Dream : Real-time Str...
 
#SlimScalding - Less Memory is More Capacity
#SlimScalding - Less Memory is More Capacity#SlimScalding - Less Memory is More Capacity
#SlimScalding - Less Memory is More Capacity
 
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
 

Similar to Pathway to Cloud-Native .NET

Similar to Pathway to Cloud-Native .NET (20)

Bringing Microservices to .NET: Modernizing Windows Applications as Cloud-Native
Bringing Microservices to .NET: Modernizing Windows Applications as Cloud-NativeBringing Microservices to .NET: Modernizing Windows Applications as Cloud-Native
Bringing Microservices to .NET: Modernizing Windows Applications as Cloud-Native
 
Easy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applicationsEasy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applications
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
AppliFire Blue Print Design Guidelines
AppliFire Blue Print Design GuidelinesAppliFire Blue Print Design Guidelines
AppliFire Blue Print Design Guidelines
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
 
Microservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applicationsMicroservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applications
 
Splunk Ninjas: New Features, Pivot, and Search Dojo
Splunk Ninjas: New Features, Pivot, and Search DojoSplunk Ninjas: New Features, Pivot, and Search Dojo
Splunk Ninjas: New Features, Pivot, and Search Dojo
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
From Zero to Serverless
From Zero to ServerlessFrom Zero to Serverless
From Zero to Serverless
 
Intershop Commerce Management with Microsoft SQL Server
Intershop Commerce Management with Microsoft SQL ServerIntershop Commerce Management with Microsoft SQL Server
Intershop Commerce Management with Microsoft SQL Server
 
Introducing MongoDB Stitch, Backend-as-a-Service from MongoDB
Introducing MongoDB Stitch, Backend-as-a-Service from MongoDBIntroducing MongoDB Stitch, Backend-as-a-Service from MongoDB
Introducing MongoDB Stitch, Backend-as-a-Service from MongoDB
 
성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택
 
Cytoscape CI Chapter 2
Cytoscape CI Chapter 2Cytoscape CI Chapter 2
Cytoscape CI Chapter 2
 
Observability foundations in dynamically evolving architectures
Observability foundations in dynamically evolving architecturesObservability foundations in dynamically evolving architectures
Observability foundations in dynamically evolving architectures
 
Comment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitablesComment transformer vos données en informations exploitables
Comment transformer vos données en informations exploitables
 
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
 
Ibm xamarin gtruty
Ibm xamarin gtrutyIbm xamarin gtruty
Ibm xamarin gtruty
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
 

More from VMware Tanzu

More from VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Recently uploaded (20)

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 

Pathway to Cloud-Native .NET

  • 1. Pathway to Cloud- Native .NET Modernizing .NET applications to Cloud Native Robert Sirchia Practice Lead 15.2.2019
  • 2. 2 » App Portfolio Rationalization » SNAP » Decomposition » Steeltoe › Configuration › Circuit › Health › Service » Key Takeaways Agenda
  • 3. 3 Who am I? Robert is a Lead Consultant with Magenic, heading up the Magenic Pivotal Practice, and has more than 15 years’ experience with the .NET and Microsoft technologies. He has been working with Pivotal Cloud Foundry in the .NET space for more than two years, and during that time, Robert has led large re- platforming and modernization efforts in moving .NET applications to Pivotal Cloud Foundry. He also has industry experience in real estate, financial institutions, politics, and energy and chemical.
  • 4. 4 » This isn’t me… Who I am Not.
  • 6. 6 What do we got? Portfolio Rationalization
  • 7. 7 Portfolio Rationalization Inventory Analyze Catalog Backlog • All applications • Ancillary services • All data sources • Diagram the system • Decompose functionality • Catalog the functionality of each application • Identifying functionality that crosses apps • Determine if the app is still used • Determine its business value • Determine suitability for the cloud (SNAP) • Backlog based on app inventory and functionality catalog • Organize based on deprecation or modernizations
  • 8. 8 Conversational approach of evaluating the suitability of moving an app to the cloud. » Flush out risks » Outline priorities » General understand of the technologies used » Understand relative sizing SNAP
  • 9. 9 » Overall for the app » All of the deploy points What to SNAP? My App Web UI API 2 API 1 My App XXL Web UI S API 1 L API 2 XXL
  • 10. 10 » Event storming › Workshop method used to understand domains in a system › People − Business: those who understand events in business process − Technical: those who understand where the bodies are buried › Stickies − Orange: Events − Blue: Commands − Yellow: Aggregates − Purple: trouble spots › Select services − Start small to prove out SDLC − Then ramp up to higher value Decomposition
  • 11. 11 Event Storming Customer Party Size and Name Recorded What do we do if no seats are available? Drinks Ordered Food Ordered Drinks Served Order Queued Food Served Food EatenFood Cooked Food Staged Bill Presented Bill Paid Order Drinks Queue Order Present BillRing BellSeat Requested Customer Seated Pay Bill What do we do if payment is declined?
  • 12. 12 Event Storming Bill Presented Bill Paid Present Bill Pay Bill What do we do if payment is declined?
  • 13. 13 » Identifying and catalog functionality for each application › On such platforms like Confluence » Evaluate proposed efforts against any existing functionality › Consider centralizing functionality if possible that crosses applications » Update the catalog frequently Cataloging
  • 14. 14 Cloud Native Frameworks Fast Open Source Way to the Cloud
  • 15. 15 Is an open source framework of Cloud-native libraries for implementing industry standard best practices when building microservices for the cloud. » .NET Core and .NET Framework » Runs on Windows and Linux » Works with or without Pivotal Cloud Foundry Steeltoe
  • 16. 16 Configuration Configuration enables developers to configure an application with values from a variety of sources by using Configuration Providers. Each provider supports reading a set of name-value pairs from a given source location and adding them into a combined multi- level configuration dictionary.
  • 17. 17 » Configuration Server › Centralized configurations › Served through Config Server › Stored in Vault, GIT, or local file system Spring Cloud Configuration Server Java App .NET App Java App
  • 18. 18 » Add Cloud Foundry in Program.cs » Configure Options in Startup.cs » Inject in to your class » Get values you need Implementing Configuration Provider in .NET public void ConfigureServices(IServiceCollection services) { services.AddOptions(); services.ConfigureCloudFoundryOptions(Configuration); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); } [HttpGet] public ActionResult<IEnumerable<string>> Get() { return new string[] { _applicationOptions.Application_Name, _servicesOptions.Services["value"].ToString() }; } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .AddCloudFoundry() .UseStartup<Startup>(); public ValuesController(IOptions<CloudFoundryApplicationOptions> applicationOptions, IOptions<CloudFoundryServicesOptions> servicesOptions) { _applicationOptions = applicationOptions.Value; _servicesOptions = servicesOptions.Value; }
  • 19. 19 Service Registration and Discovery A service registry provides a database that applications can use to implement the Service Discovery pattern, one of the key tenets of a microservices-based architecture. Applications can use a service registry to dynamically discover and call registered services.
  • 20. 20 » Based on Netflix Eureka » Centralized service registry » Basic health checking » Useful for container to container (C2C) Service Discovery Consumer Service Registry Producer Producer Producer Producer Producer Register Discover Connect
  • 21. 21 Implementing Service Discovery in .NET » Client rewrites hostname portion of URL with an actual service node » Create a new Discovery Handler » Call the service DiscoveryHttpClientHandler _handler; ILogger<AccountService> _logger; private const string ACCOUNT_URL = "http://accountService/api/account"; public AccountService(IDiscoveryClient client, ILoggerFactory logFactory) { _handler = new DiscoveryHttpClientHandler(client, logFactory.CreateLogger<DiscoveryHttpClientHandler>()); _logger = logFactory.CreateLogger<AccountService>(); } public async Task<string> GetAccountName() { var client = GetClient(); var result = await client.GetStringAsync(ACCOUNT_URL); _logger.LogInformation("AccountName: {0}", result); return result; } private HttpClient GetClient() { var client = new HttpClient(_handler, false); return client; }
  • 22. 22 Circuit Breaking Cloud-native architectures typically consist of multiple layers of distributed services. End-user requests may require multiple calls to these services, and failures in lower- level services can spread to other dependent services and cascade up to the end user. Heavy traffic to a failing service can also make it difficult to repair. By using Circuit Breaker frameworks, you can prevent failures from cascading and provide fallback behavior until a failing service is restored to normal operation.
  • 23. 23 » Based on Netflix Hystrix » Designed to prevent cascading failures » Gives live metrics on state » Maintaining three states » Used to fail gracefully and with a known failure state » Opens a circuit on › Timeout › failure Circuit Breaker Closed Half-Open Open Trip breaker Attempt reset Trip breaker Reset
  • 24. 24 public class AccountCommand : HystrixCommand<Account> { private readonly ILogger<AccountCommand> _logger; private readonly IAccountService _accountService; private string _accountId; public AccountCommand(IHystrixCommandOptions options, ILogger<AccountCommand> logger, IAccountService accountService) : base(options) { _logger = logger; _accountService = accountService; } public async Task<Account> GetAccount(string accountId) { _accountId = accountId; return await Execute sync(); } protected override async Task<Account> RunAsync() { return await _accountService.GetAccount(_accountId); } protected override async Task<Account> RunFallbackAsync() { _logger.LogError("Couldn't get account"); return await Task.FromResult(new Account()); } } » Extend HystrixCommand » Add an Execute method » RunAsync (Circuit Closed) › What executes normally » RunFallbackAsync (Circuit Open) › What executes under failure Implementing a Circuit Breaker in .NET
  • 25. 25 Management Both frameworks have a number of management endpoints that you can easily add to your application. The way the endpoints are exposed and used depends on the type of technology you choose in exposing the functionality of the endpoint.
  • 26. 26 » Helps with monitoring and managing services in production » Can be exposed via HTTP and integrate with Pivotal Apps Manager » Customizable endpoints › Settings › Health › Info › Loggers › Tracing › etc. Management
  • 27. 27 » Quick way to check the status of an application » Customize to monitor › Underlying services › External services › Messaging systems » Used to tie in to existing monitoring tools Health Management Service 3 Service 1 Health Check OK Health Check Database is not online Database
  • 28. 28 » Completely open source » Active user community › Dedicated Slack channel › Open Pivotal Tracker » Examples and sample code in GitHub Open and Engaged
  • 29. 29 » Using techniques to understand your portfolio of applications » Get started sooner and in the correct place » Use the tools to optimize applications to the cloud Key Takeaways