SlideShare a Scribd company logo
Building Cloud Ready
Apps in .NET
Layla Porter
● Developer advocate for .NET,
VMware Tanzu
● Microsoft MVP, GitHub Star and
Progress Ninja
● Founder, #WomenOfDotNet
● Pineapple connoisseur
What does
cloud-ready
mean?
A “cloud-ready” application is a legacy
software program that has been modified to
run on a cloud computing infrastructure.
Where you
are now.
and why you're probably
not cloud-ready
What's wrong with my app?
Hard to scale Hard to maintain Hard to release
Hard to monitor Not resilient Tightly coupled
Cloudy Ready?
Well, no, not really.
Changing
tack.
(thinking cloud-ready)
Building Cloud Ready Apps
Resiliency
Faster
development
time
Deployability
Automation
Maintainability
Enforcement of
design
Testability
Scalability
How do we get
there?
And things you may have
heard of.
Build well-considered applications
using good design principles
and thoughtful processes
Some good patterns and ideas to get
you started.
A sniff of domain driven design….
We're just skirting around the edge, here.
Loose coupling
and
High Cohesion
This is a core design principle to keep in the
forefront of your mind
Elements within a module have high cohesion
and are tightly related to each other.
This enables us to keep code loosely coupled,
where we can write code within one module
without impacting other modules.
The road to
modularity
And the modular monolith…
The options
You think you may need to go here
But, you'll end up here…
What you need to do
Where to start decomposition
Look for areas with High Cohesion
and start there
I told you it was important!
N-tier monolith
Make vertical slices
modular monolith
Large modules - keep things simple
Large modules - breaking them down into smaller modules as the need arises
Incrementally - choose one "domain" area and start with that
Incrementally - choose one "domain" area and start
with that
Monolith
Monolith Satellite
Implementation ideas for
Cloud-Readiness
Especially useful with modular and distributed apps
Messaging
Messaging is a form of asynchronous
communication, often called non-blocking, is a
way of passing information between different
components of a system or different systems
where the components do not need to be
synchronized in real-time.
It enables systems to communicate and work
together while being decoupled from each other,
which makes it a useful approach in many
scenarios.
What is it?
Building Cloud Ready Apps
● When there is a need to decouple components or
systems and allow them to work independently.
● When processing time varies, and components or
systems need to wait for a response.
● When there is a need to scale up the system or
components.
When should it be used?
● A message broker is a middleware that enables
communication between different components
or systems using asynchronous communication.
● It receives messages from the sender (Producer)
and delivers them to the recipient(s) (Consumer)
based on predefined rules.
● It provides features such as message queuing,
message transformation, and message routing.
Message brokers
Error handling
Asynchronous communication can
result in errors, such as message
loss, message duplication, or
message processing failure
Building Cloud Ready Apps
Demo with
RabbitMQ
Blog post
https://bit.ly/rabbit-topic
Service
Discovery
Like a
phonebook for
your apps
● Service Discovery provides a centralized way of
managing services in a distributed system.
● It allows services to register themselves with a
registry and discover other services and their
endpoints. Yay! Less work for us!
● This enables services to communicate with each
other in a dynamic and scalable way.
Benefits
Some common Service Discovery options
Step 2
Service registry and
discovery server for
building distributed
systems.
Eureka
Distributed service
networking layer to connect,
secure, and configure
services across any runtime
platform
Consul
Centralized service for
maintaining config,
naming, distributed
synchronization, etc
ZooKeeper
Building Cloud Ready Apps
Demo with
Steeltoe and
Netflix Eureka
API Gateways
Without a gateway
With a gateway
● Acts as an entry point for all external requests to a
system's backend.
● Provides a unified interface for clients to interact with
the system's different microservices and APIs.
● Can handle tasks such as authentication, rate limiting,
caching, and load balancing.
In short…. An API gateway
Pros and Cons of API Gateway
● Provides a unified interface for clients to
interact with
● Allows for centralized management of
API versioning and security.
● Can improve performance by handling
tasks such as load balancing and
caching.
● Adds additional complexity to the
system architecture.
● Requires careful consideration of
security and access control, as API
Gateway can act as a single point of
failure.
● May introduce additional latency and
overhead, especially for small-scale
systems.
Pros: Cons:
Blog posts
.NET 6 & YARP
https://bit.ly/net6_yarp
.NET 6 & YARP &
Eureka
https://bit.ly/net6_yarp
_eureka
YARP Video
https://bit.ly/yarp-video
Resiliency
An HTTP client needs to be resilient to failures,
having policies in place and the ability to fail
gracefully when failure cannot be avoided.
Policies are rules that define how an
application should behave in different
situations.
Resilient applications use policies to handle
errors, failures, and other unexpected
events.
What are policies
Retries
● A way to handle transient errors in
distributed systems.
● When an error occurs, the
application can automatically
retry the operation, typically with
some delay or backoff.
● Can help improve system
availability and reduce the
impact of temporary failures.
Circuit Breaker
● Helps prevent cascading
failures in distributed systems.
● When a service fails or
becomes unresponsive, it can
prevent further requests from
being sent to that service.
● Can help improve system
availability and reduce the
impact of failures.
Building Cloud Ready Apps
Fallback
● A backup plan an application can
use when a primary service or
resource is unavailable.
● Resilient applications use
fallbacks to provide a degraded,
but still functional, user
experience during failures.
The Polly Project
Policy Premise AKA How does the policy mitigate
Retry Many faults are transient and may self-
correct after a short delay.
"Maybe it's just a blip" Allows configuring automatic retries.
Circuit-breaker When a system is seriously struggling,
failing fast is better than making
users/callers wait.
Protecting a faulting system from
overload can help it recover.
"Stop doing it if it
hurts"
"Give that system a
break"
Breaks the circuit (blocks
executions) for a period, when faults
exceed some pre-configured
threshold.
Fallback Things will still fail - plan what you will
do when that happens.
"Degrade gracefully" Defines an alternative value to be
returned (or action to be executed)
on failure.
Timeout Beyond a certain wait, a success result
is unlikely.
"Don't wait forever" Guarantees the caller won't have to
wait beyond the timeout.
Policy Premise AKA How does the policy mitigate
Bulkhead
Isolation
When a process faults, multiple failing calls can
stack up (if unbounded) and can easily swamp
resource (threads/ CPU/ memory) in a host.
This can affect performance more widely by
starving other operations of resource, bringing
down the host, or causing cascading failures
upstream.
"One fault shouldn't
sink the whole ship"
Constrains the governed actions to
a fixed-size resource pool, isolating
their potential to affect others.
Cache Some proportion of requests may be similar. "You've asked that
one before"
Provides a response from cache if
known.
Stores responses automatically in
cache, when first retrieved.
Policy Premise AKA How does the policy mitigate
PolicyWrap Different faults require different
strategies; resilience means using a
combination.
"Defence in depth" Allows any of the above policies to
be combined flexibly.
Combining Policies
Resilient applications often use a combination of
policies, such as retries, circuit breakers, and
fallbacks, to provide a robust and reliable user
experience.
Video
https://bit.ly/apps-go-splat
External
Configuration
How does is work?
● Easily update configuration on running apps
without downtime
● Ensure multiple instances of an app are
using the same configuration
● Share config across multiple applications
and services
● Versioning of configuration
● Decouples config from code
Why?
Don't dox yourself!
External configuration isn't always secret.
Providers
Blob Storage
Azure app configuration
Spring Cloud Config Server
Kubernetes Config maps
and more…
Other
Considerations
Other Considerations
● 12 Factor App
● Security
● Testing
● Scalability
● Observability and Monitoring
● Distributed tracing
RabbitMQ:https://www.rabbitmq.com/
Steeltoe:https://steeltoe.io/
Polly:http://www.thepollyproject.org/
Links
Building Cloud Ready Apps
Link in zoom chat
Please complete
the Survey
Thanks!
@LaylaCodesIt
@LaylaCodesIt @Layla-P
https://layla.dev

More Related Content

PPT
Web Speed And Scalability
PDF
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
PPTX
Prometheus - Open Source Forum Japan
PPTX
Understanding System Design and Architecture Blueprints of Efficiency
PDF
Adopting the Cloud
PPTX
Tef con2016 (1)
PPTX
Prometheus for Monitoring Metrics (Fermilab 2018)
PPTX
Cloud architecture
Web Speed And Scalability
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Prometheus - Open Source Forum Japan
Understanding System Design and Architecture Blueprints of Efficiency
Adopting the Cloud
Tef con2016 (1)
Prometheus for Monitoring Metrics (Fermilab 2018)
Cloud architecture

Similar to Building Cloud Ready Apps (20)

PPTX
Over view of software artitecture
ODP
Building Enterprise Clouds - Key Considerations and Strategies - RED HAT
ODP
Best practice adoption (and lack there of)
PDF
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
PPTX
Microservices architecture
PDF
Web Services Testing Best Practices: Secure, Reliable, and Scalable APIs
PPTX
Azure architecture design patterns - proven solutions to common challenges
PPT
Scalability for Startups (Frank Mashraqi, Startonomics SF 2008)
PDF
Prometheus Overview
PPTX
08 hopex v next service fabric
PDF
Advanced web application architecture - Talk
PPTX
Microservice Workshop Hands On
PPTX
An Introduction to Prometheus (GrafanaCon 2016)
PPTX
Best practices for application migration to public clouds interop presentation
PDF
Building Cloud capability for startups
PDF
Map r whitepaper_zeta_architecture
PPTX
PayPal Resilient System Design
PDF
Concurrency in Operating system_12345678
PPT
Design patterns and plan for developing high available azure applications
PDF
Software Architecture for Cloud Infrastructure
Over view of software artitecture
Building Enterprise Clouds - Key Considerations and Strategies - RED HAT
Best practice adoption (and lack there of)
Your data is in Prometheus, now what? (CurrencyFair Engineering Meetup, 2016)
Microservices architecture
Web Services Testing Best Practices: Secure, Reliable, and Scalable APIs
Azure architecture design patterns - proven solutions to common challenges
Scalability for Startups (Frank Mashraqi, Startonomics SF 2008)
Prometheus Overview
08 hopex v next service fabric
Advanced web application architecture - Talk
Microservice Workshop Hands On
An Introduction to Prometheus (GrafanaCon 2016)
Best practices for application migration to public clouds interop presentation
Building Cloud capability for startups
Map r whitepaper_zeta_architecture
PayPal Resilient System Design
Concurrency in Operating system_12345678
Design patterns and plan for developing high available azure applications
Software Architecture for Cloud Infrastructure
Ad

More from VMware Tanzu (20)

PDF
Spring into AI presented by Dan Vega 5/14
PDF
What AI Means For Your Product Strategy And What To Do About It
PDF
Make the Right Thing the Obvious Thing at Cardinal Health 2023
PPTX
Enhancing DevEx and Simplifying Operations at Scale
PDF
Spring Update | July 2023
PPTX
Platforms, Platform Engineering, & Platform as a Product
PDF
Spring Boot 3 And Beyond
PDF
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
PDF
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
PDF
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
PPTX
tanzu_developer_connect.pptx
PDF
Tanzu Virtual Developer Connect Workshop - French
PDF
Tanzu Developer Connect Workshop - English
PDF
Virtual Developer Connect Workshop - English
PDF
Tanzu Developer Connect - French
PDF
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
PDF
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
PDF
SpringOne Tour: The Influential Software Engineer
PDF
SpringOne Tour: Domain-Driven Design: Theory vs Practice
PDF
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
Spring into AI presented by Dan Vega 5/14
What AI Means For Your Product Strategy And What To Do About It
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Enhancing DevEx and Simplifying Operations at Scale
Spring Update | July 2023
Platforms, Platform Engineering, & Platform as a Product
Spring Boot 3 And Beyond
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 | Seattle 2023
tanzu_developer_connect.pptx
Tanzu Virtual Developer Connect Workshop - French
Tanzu Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
Tanzu Developer Connect - French
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
Ad

Recently uploaded (20)

PDF
KodekX | Application Modernization Development
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Electronic commerce courselecture one. Pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Advanced IT Governance
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Empathic Computing: Creating Shared Understanding
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Advanced Soft Computing BINUS July 2025.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPT
Teaching material agriculture food technology
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
KodekX | Application Modernization Development
Dropbox Q2 2025 Financial Results & Investor Presentation
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Understanding_Digital_Forensics_Presentation.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Electronic commerce courselecture one. Pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Diabetes mellitus diagnosis method based random forest with bat algorithm
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Advanced IT Governance
GamePlan Trading System Review: Professional Trader's Honest Take
20250228 LYD VKU AI Blended-Learning.pptx
The AUB Centre for AI in Media Proposal.docx
Empathic Computing: Creating Shared Understanding
NewMind AI Weekly Chronicles - August'25 Week I
Advanced Soft Computing BINUS July 2025.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Teaching material agriculture food technology
Bridging biosciences and deep learning for revolutionary discoveries: a compr...

Building Cloud Ready Apps

  • 2. Layla Porter ● Developer advocate for .NET, VMware Tanzu ● Microsoft MVP, GitHub Star and Progress Ninja ● Founder, #WomenOfDotNet ● Pineapple connoisseur
  • 4. A “cloud-ready” application is a legacy software program that has been modified to run on a cloud computing infrastructure.
  • 5. Where you are now. and why you're probably not cloud-ready
  • 6. What's wrong with my app? Hard to scale Hard to maintain Hard to release Hard to monitor Not resilient Tightly coupled
  • 11. How do we get there? And things you may have heard of.
  • 12. Build well-considered applications using good design principles and thoughtful processes
  • 13. Some good patterns and ideas to get you started.
  • 14. A sniff of domain driven design…. We're just skirting around the edge, here.
  • 15. Loose coupling and High Cohesion This is a core design principle to keep in the forefront of your mind
  • 16. Elements within a module have high cohesion and are tightly related to each other. This enables us to keep code loosely coupled, where we can write code within one module without impacting other modules.
  • 17. The road to modularity And the modular monolith…
  • 19. You think you may need to go here
  • 20. But, you'll end up here…
  • 21. What you need to do
  • 22. Where to start decomposition
  • 23. Look for areas with High Cohesion and start there I told you it was important!
  • 24. N-tier monolith Make vertical slices modular monolith
  • 25. Large modules - keep things simple
  • 26. Large modules - breaking them down into smaller modules as the need arises
  • 27. Incrementally - choose one "domain" area and start with that Incrementally - choose one "domain" area and start with that Monolith Monolith Satellite
  • 28. Implementation ideas for Cloud-Readiness Especially useful with modular and distributed apps
  • 30. Messaging is a form of asynchronous communication, often called non-blocking, is a way of passing information between different components of a system or different systems where the components do not need to be synchronized in real-time. It enables systems to communicate and work together while being decoupled from each other, which makes it a useful approach in many scenarios. What is it?
  • 32. ● When there is a need to decouple components or systems and allow them to work independently. ● When processing time varies, and components or systems need to wait for a response. ● When there is a need to scale up the system or components. When should it be used?
  • 33. ● A message broker is a middleware that enables communication between different components or systems using asynchronous communication. ● It receives messages from the sender (Producer) and delivers them to the recipient(s) (Consumer) based on predefined rules. ● It provides features such as message queuing, message transformation, and message routing. Message brokers
  • 34. Error handling Asynchronous communication can result in errors, such as message loss, message duplication, or message processing failure
  • 40. ● Service Discovery provides a centralized way of managing services in a distributed system. ● It allows services to register themselves with a registry and discover other services and their endpoints. Yay! Less work for us! ● This enables services to communicate with each other in a dynamic and scalable way. Benefits
  • 41. Some common Service Discovery options Step 2 Service registry and discovery server for building distributed systems. Eureka Distributed service networking layer to connect, secure, and configure services across any runtime platform Consul Centralized service for maintaining config, naming, distributed synchronization, etc ZooKeeper
  • 47. ● Acts as an entry point for all external requests to a system's backend. ● Provides a unified interface for clients to interact with the system's different microservices and APIs. ● Can handle tasks such as authentication, rate limiting, caching, and load balancing. In short…. An API gateway
  • 48. Pros and Cons of API Gateway ● Provides a unified interface for clients to interact with ● Allows for centralized management of API versioning and security. ● Can improve performance by handling tasks such as load balancing and caching. ● Adds additional complexity to the system architecture. ● Requires careful consideration of security and access control, as API Gateway can act as a single point of failure. ● May introduce additional latency and overhead, especially for small-scale systems. Pros: Cons:
  • 49. Blog posts .NET 6 & YARP https://bit.ly/net6_yarp .NET 6 & YARP & Eureka https://bit.ly/net6_yarp _eureka YARP Video https://bit.ly/yarp-video
  • 51. An HTTP client needs to be resilient to failures, having policies in place and the ability to fail gracefully when failure cannot be avoided.
  • 52. Policies are rules that define how an application should behave in different situations. Resilient applications use policies to handle errors, failures, and other unexpected events. What are policies
  • 53. Retries ● A way to handle transient errors in distributed systems. ● When an error occurs, the application can automatically retry the operation, typically with some delay or backoff. ● Can help improve system availability and reduce the impact of temporary failures.
  • 54. Circuit Breaker ● Helps prevent cascading failures in distributed systems. ● When a service fails or becomes unresponsive, it can prevent further requests from being sent to that service. ● Can help improve system availability and reduce the impact of failures.
  • 56. Fallback ● A backup plan an application can use when a primary service or resource is unavailable. ● Resilient applications use fallbacks to provide a degraded, but still functional, user experience during failures.
  • 58. Policy Premise AKA How does the policy mitigate Retry Many faults are transient and may self- correct after a short delay. "Maybe it's just a blip" Allows configuring automatic retries. Circuit-breaker When a system is seriously struggling, failing fast is better than making users/callers wait. Protecting a faulting system from overload can help it recover. "Stop doing it if it hurts" "Give that system a break" Breaks the circuit (blocks executions) for a period, when faults exceed some pre-configured threshold. Fallback Things will still fail - plan what you will do when that happens. "Degrade gracefully" Defines an alternative value to be returned (or action to be executed) on failure. Timeout Beyond a certain wait, a success result is unlikely. "Don't wait forever" Guarantees the caller won't have to wait beyond the timeout.
  • 59. Policy Premise AKA How does the policy mitigate Bulkhead Isolation When a process faults, multiple failing calls can stack up (if unbounded) and can easily swamp resource (threads/ CPU/ memory) in a host. This can affect performance more widely by starving other operations of resource, bringing down the host, or causing cascading failures upstream. "One fault shouldn't sink the whole ship" Constrains the governed actions to a fixed-size resource pool, isolating their potential to affect others. Cache Some proportion of requests may be similar. "You've asked that one before" Provides a response from cache if known. Stores responses automatically in cache, when first retrieved.
  • 60. Policy Premise AKA How does the policy mitigate PolicyWrap Different faults require different strategies; resilience means using a combination. "Defence in depth" Allows any of the above policies to be combined flexibly.
  • 61. Combining Policies Resilient applications often use a combination of policies, such as retries, circuit breakers, and fallbacks, to provide a robust and reliable user experience.
  • 64. How does is work?
  • 65. ● Easily update configuration on running apps without downtime ● Ensure multiple instances of an app are using the same configuration ● Share config across multiple applications and services ● Versioning of configuration ● Decouples config from code Why?
  • 66. Don't dox yourself! External configuration isn't always secret.
  • 67. Providers Blob Storage Azure app configuration Spring Cloud Config Server Kubernetes Config maps and more…
  • 69. Other Considerations ● 12 Factor App ● Security ● Testing ● Scalability ● Observability and Monitoring ● Distributed tracing
  • 72. Link in zoom chat Please complete the Survey