patterns and practices for the cloud€¦ · in a distributed system, failures happen. design your...
TRANSCRIPT
![Page 1: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/1.jpg)
Cloud First Architecture
Patterns and Practices for the Cloud
![Page 2: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/2.jpg)
WELCOME
![Page 3: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/3.jpg)
Cameron Vetter
Cameron Vetter is a technologist with 20 years of experience using Microsoft tools and technologies to develop software. Cameron has experience in many roles including Development, Architecture, Infrastructure, Management, and Leadership roles. He recently received a Microsoft MVP award for his evangelism work around Deep Learning in Azure. He has worked for some of the largest companies in the world as well as small companies getting a breadth of experience helping him understand the needs of different size businesses and different Industries. Currently, Cameron is the Principal Architect at the Octavian Technology Group, where he helps clients develop Technical Strategies. He also helps clients Architect, Design, and Develop software focusing on Deep Learning / AI, Cloud Architecture, Microservices, Mixed Reality, and Azure.
Cloud / Machine Learning / Mixed Reality Consultant
![Page 4: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/4.jpg)
A Partner to Advise and Support
About Us
Our team offers a combined decades of experience in technology-related fields, and we leverage our expertise to take a business-focused approach to helping organizations solve real problems with proven solutions.
Octavian TG offers Cloud Architecture, Mixed Reality Development, Data Science, Machine Learning, Fractional CIO, and Agile trainers.
![Page 5: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/5.jpg)
5
Why Azure?
Everything we talk about today can be applied to any major cloud providers’ offerings. I use Azure as
example, because they have the most sophisticated offering and I have the most familiarity with it.
Credit: Azure Architecture Center @ https://docs.microsoft.com/en-us/azure/architecture/
![Page 6: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/6.jpg)
Introduction
Hosting Model
Architecture Styles
Design Principles
Best Practices
Cloud Design Patterns
Performance Antipatterns
Agenda
Question & Answer
![Page 7: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/7.jpg)
Hosting Model
![Page 8: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/8.jpg)
Infrastructure AAS Platform AAS Functions AAS
Cloud Hosting Models/ Good, Better, Best /
![Page 9: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/9.jpg)
Servers. Network, and Data Center management managed by Cloud Provider.
Availability Sets allow duplicate VM’s to exist in different data centers for scaling.
Closest to on premise, allowing for lift and shift migrations.
ADVANTAGES
Security is completely dependent on proper configuration of the plafform.
Operating System Updates, Application installation,, and database server management unchanged.
Lift and shift migrations usually reproduce most of your problems in a new location.
DISADVANTAGES
INFRASTRUCTURE AS A SERVICE/ Good/
![Page 10: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/10.jpg)
All levels of the infrastructure are managed by the cloud provider
Most security is handled by the cloud providers security team.
Automatic scaling and replication is available.
ADVANTAGES
Application and Services are responsible for not opening up security holes.
Application and Service change management is unchanged.
DISADVANTAGES
PLATFORM AS A SERVICE/ Better /
![Page 11: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/11.jpg)
Creation of compute is handled by the platform, no need to worry about selecting the right resources.
Extremely cost efficient.
ADVANTAGES
Limited to the FAAS platforms selection of tools and languages.
Lack of flexibility, software must be designed with a SOA pattern.
DISADVANTAGES
FUNCTIONS AS A SERVICE/ Best /
![Page 12: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/12.jpg)
Lift and Shift
A strategy for migrating a workload to the cloud without redesigning the application or making code changes. Sometimes called rehosting.
Cloud Optimized
A strategy for migrating to the cloud by refactoring an application to take
advantage of cloud-native features and capabilities.
![Page 13: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/13.jpg)
Architecture Styles
![Page 14: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/14.jpg)
ArchitecturesDependency Management Appropriate for your Domain Type
Vertically decomposed
services that interact
through an API
Microservices
Front and Backend
jobs decoupled with
async messaging
Web-Queue-Worker
Producer / Consumer.
Each subsystem is
independent.
Event Driven
Horizontal tiers
N-tier
Traditional Business
Domain / Few Updates
IoT and real-time systems /
Frequent Updates
Simple Domain / Resource Intensive
Complicated Domain / Frequent Updates
![Page 15: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/15.jpg)
Design Principles
![Page 16: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/16.jpg)
DESIGN FOR SELF HEALING
In a distributed system, failures happen. Design your application to be self healing when failures occur.
![Page 17: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/17.jpg)
MAKE EVERYTHING REDUNDANT
Build redundancy into your application, to avoid having single points of failure.
![Page 18: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/18.jpg)
MINIMIZE DEPENDENICES
Minimize dependencies between application services to achieve scalability.
![Page 19: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/19.jpg)
DESIGN TO SCALE OUT
Design your application so that it can scale horizontally, adding or removing new instances as demand requires.
![Page 20: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/20.jpg)
PARTITION AROUND LIMITS
Use partitioning to work around database, network, and compute limits.
![Page 21: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/21.jpg)
DESIGN FOR OPERATIONS
Design your application so that the operations team has the tools they need.
![Page 22: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/22.jpg)
USE MANAGED SERVICES
When possible, use platform as a service (PaaS) rather than infrastructure as a service (IaaS).
![Page 23: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/23.jpg)
USE THE BEST DATA STORE FOR THE JOB
Pick the storage technology that is the best fit for your data and how it will be used.
![Page 24: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/24.jpg)
DESIGN FOR EVOLUTION
All successful applications change over time. An evolutionary design is key for continuous innovation.
![Page 25: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/25.jpg)
BUILD FOR THE NEEDS OF THE BUSINESS
Every design decision must be justified by a business requirement.
![Page 26: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/26.jpg)
Best Practices
![Page 27: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/27.jpg)
Scalability
Scalability is the ability of a system to handle increased load. There are two main ways that an application can scale. Vertical scaling (scaling up) means increasing the capacity of a resource, for example by using a larger VM size. Horizontal scaling (scaling out) is adding new instances of a resource, such as VMs or database replicas.
The need to vertically scale signifies a problem.
![Page 28: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/28.jpg)
Availability
Availability is the proportion of time that the system is functional and working. It is usually measured as a percentage of uptime. Application errors, infrastructure problems, and system load can all reduce availability.
SLA is a combined effort of the cloud provider and the application architecture
![Page 29: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/29.jpg)
Resiliency
Resiliency is the ability of the system to recover from failures and continue to function. The goal of resiliency is to return the application to a fully functioning state after a failure occurs. Resiliency is closely related to availability.
A system with poor availability has a problem with resiliency
![Page 30: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/30.jpg)
Management and DevOps
Deployments must be reliable and predictable.
They should be automated to reduce the
chance of human error. Monitoring and
diagnostics are crucial.
Failed deploys usually are a symptom of a problem with your DevOps
![Page 31: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/31.jpg)
Security
You must think about security throughout the entire lifecycle of an application, from design and implementation to deployment and operations. The platform should provide protections against a variety of threats, but you still need to build security into your application and into your DevOps processes.
Don’t wait to start thinking about security until after your first breech.
![Page 32: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/32.jpg)
Cloud Design Patterns
![Page 33: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/33.jpg)
Design Patterns
Anti-Corruption Layer
Implement a façade or adapter layer between a modern application and a legacy system
Design Patterns
Backends for Frontends
Create separate backend services to be consumed by specific frontend applications or interfaces.
![Page 34: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/34.jpg)
Design Patterns
Circuit Breaker
Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
Design Patterns
Claim Check
Split a large message into a claim check and a payload to avoid overwhelming a message bus.
![Page 35: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/35.jpg)
Design Patterns
Competing Consumers
Enable multiple concurrent consumers to process messages received on the same messaging channel.
Design Patterns
Federated Identity
Delegate authentication to an external identity provider.
![Page 36: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/36.jpg)
Design Patterns
Publisher/Subscriber
Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.
Design Patterns
Strangler
Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.
![Page 37: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/37.jpg)
Antipatterns
![Page 38: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/38.jpg)
Busy Database
PROBLEM
Database Code execution, such as stored procedures and triggers overused, putting excessive load on the database server.
DETECTION
Monitor the volume of database activity, compare it to the usage of the other tiers.
SOLUTION
Refactor processing to other application tiers, limiting your database to data access operations..
![Page 39: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/39.jpg)
PROBLEM
Long synchronous tasks or excessive background threads can cause decreased response times
DETECTION
High latency on front end tasks and server failures including 500 or 503 errors.
SOLUTION
Make all front end tasks asynchronous and move resource intensive tasks to isolated compute.
Busy Front End
![Page 40: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/40.jpg)
Chatty I/O
PROBLEM
A high quantity of network calls and other I/O operations like disk operations.
DETECTION
End users report extended response times or failures caused by timeouts, due to resource contention.
SOLUTION
Reduce the quantity of I/O requests by batching data into larger requests.
![Page 41: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/41.jpg)
PROBLEM
Application retrieves lots more data than it needs which often gets discarded. Improper use of ORM tools to filter data retrieval in memory.
DETECTION
High latency and data store contention, Long running queries are identified.
SOLUTION
Fetch only the data that you need. Optimize ORM based requests to filter data at the database server not in memory.
Extraneous Fetching
![Page 42: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/42.jpg)
Improper Instantiation
PROBLEM
Using the wrong instantiation lifetime for classes, Not using a Singleton pattern where appropriate.
DETECTION
Exceptions related to exhaustion of resources, increased memory usage and garbage collection.
SOLUTION
Wrap classes in thread safe singleton’s when they are safe for reuse. Use resource pooling when appropriate.
![Page 43: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/43.jpg)
PROBLEM
Putting all of an applications data into a single data store, that may lead to resource contention or be a poor fit for some of the data.
DETECTION
Sudden dramatic slow downs that lead to eventual failures.
SOLUTION
Separate data according to use aligned with how the data is used.
Monolithic Persistence
![Page 44: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/44.jpg)
No Caching
PROBLEM
Repeatedly fetching the same information from a resource that is expensive. Repeatedly constructing the same calls to a remote service.
DETECTION
Exceptions related to exhaustion of resources, increased memory usage and garbage collection.
SOLUTION
Reads should check a cache then retrieve the data if it is not cached.
![Page 45: Patterns and Practices for the Cloud€¦ · In a distributed system, failures happen. Design your application to be self healing when failures occur. MAKE EVERYTHING REDUNDANT Build](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec5c1ee75eb2b22f126d8c2/html5/thumbnails/45.jpg)
www.cameronvetter.com
Any Questions?
@poshporcupine Linkedin.com/in/cameronvetter