SlideShare a Scribd company logo
1 of 142
1
Applicare patterns
di sviluppo con
Azure
Marco Parenzan
Solutions Sales Specialist @ Insight
Azure MVP
@cloudgen_verona
#CodeGen
#dotnetconf
3
Main sponsor
4
Community sponsors
5
marco_parenzan
marcoparenzan
marcoparenzan
Marco Parenzan
Solutions Sales Specialist @ Insight
Azure MVP
7
Applicare patterns
di sviluppo con
Azure
Marco Parenzan
Solutions Sales Specialist @ Insight
Azure MVP
“Everything works...
...until it breaks the
damage!
“I don’t have to
convince you to
move to the cloud...
“...I want to convince
you what moving to
the cloud means...
“...just to avoid wrong
expectations...
“...saving money...
“...you can only
increase business!
“You can have HA
only with money and
design (patterns)
“Azure: the best place
where applying your
GOF book
“Cloud is 66% Lift&Shift
Don’t rewrite
17
IaaS and Lift & Shift: an anti-pattern?
From Wikipedia [https://en.wikipedia.org/wiki/Anti-pattern]:
An anti-pattern is a common response to a recurring
problem that is usually ineffective and risks being highly
counterproductive
18
IaaS and Lift & Shift an anti-pattern: why?
Moving to the cloud is just a matter of costs
It costs
Then limits comes again
And opportunities can become big limits
You don’t avoid IaaS limits (infrastructural, hidden,
unquoted costs)
19
IaaS is really evil?
NO....
...if, and only if,...
...a rewrite/evolution strategy is planned at day 1!
20
IaaS is not evil?
IaaS is the toolbox to hybridize company and cloud
Everything should be used with «care»
“PaaS if possible
IaaS if (really really
really) needed
22
[Software] Design pattern
From Wikipedia [https://en.wikipedia.org/wiki/Software_design_pattern]:
In software engineering, a software design pattern is a
general, reusable solution to a commonly occurring
problem within a given context in software design. It is
not a finished design that can be transformed directly
into source or machine code. It is a description or
template for how to solve a problem that can be used in
many different situations.
Design patterns are formalized best practices that the
programmer can use to solve common problems when
designing an application or system.
“Lot of services are
practice, not strictly
«design»
“Azure PaaS Services
are Pattern
implementations
“Believe it or not....
This is the way
26
context
Agile
Alm
Devops
Ci/cd
Microservices
Elastic
Geo redundancy
27
Just an example: Azure Virtual Machine
It’s not a pattern
It’s a tool in your toolbox TO RUN your pattern
implementation
Try to scale a VM in production....!
(every PaaS service run over VMs)
28
Just an example: Azure Sql Database
It’s just a Database
It’s a pattern!
Why?
«It’s ONLY 99.9% compatible with SQL Server»
It’s really very important?
How many projects use SQL Server for its full power?
It’s a lot if it use Views or Stored procedures, even Triggers!
why a pattern? Because it’s just most developers do
29
30
Some useful links
https://docs.microsoft.com/en-
us/azure/architecture/patterns/
https://docs.microsoft.com/en-us/azure/architecture/
https://azureinteractives.azurewebsites.net/CloudDesignPatt
erns/default.html
“Patterns
32
Categories
Availability
Data management
Design and implementation
Messaging
Management and monitoring
Performance and scalability
Resiliency
Security
33
Availability
Availability defines the
proportion of time that the
system is functional and
working...
Health Endpoint
Monitoring
Queue-Based Load Leveling
Throttling
34
Data Management
Data management is the key
element of cloud
applications, and influences
most of the quality
attributes…
Cache-Aside
Command and Query
Reponsibility
Event Sourcing
Index Table
Index Table
Materialized View
Sharding
Static Content Hosting
Valet Key
35
Design and Implementation
Good design encompasses factors…
…Decisions made during the design and
implementation phase have a huge impact
on the quality and the total cost of
ownership of cloud hosted applications and
services.
Ambassador
Anti Corruption Layer
Backends for Frontends
Command And Query Responsibility
Computer Resource Consolidation
External Configuration Store
Gateway Aggregation
Gateway Offloading
Gateway Routing
Leader Election
Pipes and Filters
Sidecar
Static Conten Hosting
Strangler
36
Messaging
The distributed nature of
cloud applications requires
a messaging infrastructure
that connects the
components and services,
ideally in a loosely coupled
manner in order to
maximize scalability. …
Compensating Consumers
Pipes and Filters
Priority Queue
Queue-Based Load Leveling
Scheduler Agent Supervisor
37
Management and Monitoring
Cloud applications run in a
remote datacenter where you
do not have full control of
the infrastructure or, in some
cases, the operating system.
…
Ambassador
Anti Corruption Layer
External Configuration Store
Gateway Aggregation
Gateway Offloading
Gateway Routing
Healt Endpoint Monitoring
Sidecar
Strangler
38
Performance and Scalability
Performance is an indication
of the responsiveness of a
system, while scalability is the
ability to gracefully handle
increases in load, perhaps
through an increase in
available resources…
Cache-aside
Command and Query
Responsibility
Compensating Consumers
Index Table
Materialized View
Priority Queue
Sharding
Static Content Hosting
Throttling
39
Resiliency
Resiliency is the ability of a
system to gracefully handle
and recover from failures…
Bulkhead
Circuit Breaker
Compensating Transaction
Leader Election
Retry
Scheduler Agent Supervisor
40
Security
Security is the capability of
a system to prevent
malicious or accidental
actions outside of the
designed usage, and to
prevent disclosure or loss
of information. …
Federated Identity
Gatekeeper
Valet key
“A scenario
42
Room reservation
Reserve a room from office
See a panel on the room to see the daily reservations
43
Classic approach
Client/server or three tier
Db/centricone db for all
Issues
• Coupling
• Integrity
• Performances
• Scalability
• Availability
• Single point of failure
44
Modern solution
four apps
Reservation
Worker
Handler
Panel
Four data stores
requests
Write
Events
read
Cons:
• Initial Higher cost
Pro:
• Long term lower cost
• Flexible
• Maintainable
• Scalable
• Available
“Our solution
46
Queue-Based Load Leveling
From Availability and
Performances
Use a queue that acts as a buffer
between a task and a service
that it invokes in order to
smooth intermittent heavy loads
that may otherwise cause the
service to fail or the task to time
out. This pattern can help to
minimize the impact of peaks in
demand on availability and
responsiveness for both the task
and the service.
47
Compensating Consumers
Enable multiple concurrent
consumers to process
messages received on the
same messaging channel.
This pattern enables a
system to process multiple
messages concurrently to
optimize throughput, to
improve scalability and
availability, and to balance
the workload.
“That’s why you have
(lot of) worker roles,
containers, actors
and microservices...
49
Command and Query Responsibility Segregation (CQRS)
Segregate operations that
read data from operations
that update data by using
separate interfaces. This
pattern can maximize
performance, scalability, and
security; support evolution of
the system over time through
higher flexibility; and prevent
update commands from
causing merge conflicts at
the domain level.
50
Materialized View
Generate pre-populated
views over the data in one
or more data stores when
the data is formatted in a
way that does not favor the
required query operations.
This pattern can help to
support efficient querying
and data extraction, and
improve performance.
“That’s why there are
a lot o data services
(No SQL, in memory,
graph, ...)
52
Event Sourcing
Use an append-only store to
record actions taken on data,
rather than the current state,
and use the store to
materialize the domain
objects. In complex domains
this can avoid synchronizing
the data model and the
business domain; improve
performance, scalability, and
responsiveness; provide
consistency; and provide
audit history to enable
compensating actions.
“That’s why you have
event-based services
like Functions, Logic
Apps, Event Grid and
Serverless!!!
55
Cache-aside
Load data on demand into
a cache from a data store.
This pattern can improve
performance and also helps
to maintain consistency
between data held in the
cache and the data in the
underlying data store.
“Conclusions
“Investing in patterns
means being natural
over cloud
“Find the patterns you
are confortable
“Patterns change the
way you think software
development, not only
cloud
Grazie
Domande?
marcoparenzan marco_parenzan marcoparenzan
“Patterns
“Availability
63
Availability
Availability defines the
proportion of time that the
system is functional and working
It will be affected by system
errors, infrastructure problems,
malicious attacks, and system
load. It is usually measured as a
percentage of uptime. Cloud
applications typically provide
users with a service level
agreement (SLA), which means
that applications must be
designed and implemented in a
way that maximizes availability.
Health Endpoint Monitoring
Queue-Based Load Leveling
Throttling
64
Health Endpoint Monitoring
Implement functional
checks within an
application that external
tools can access through
exposed endpoints at
regular intervals. This
pattern can help to verify
that applications and
services are performing
correctly.
65
Queue-Based Load Leveling
Use a queue that acts as a
buffer between a task and a
service that it invokes in
order to smooth intermittent
heavy loads that may
otherwise cause the service
to fail or the task to time out.
This pattern can help to
minimize the impact of peaks
in demand on availability and
responsiveness for both the
task and the service.
66
Throttling
Control the consumption of
resources used by an
instance of an application, an
individual tenant, or an entire
service. This pattern can
allow the system to continue
to function and meet service
level agreements, even when
an increase in demand places
an extreme load on
resources.
67
Materialized View
Generate pre-populated
views over the data in one
or more data stores when
the data is formatted in a
way that does not favor the
required query operations.
This pattern can help to
support efficient querying
and data extraction, and
improve performance.
“Data Management
69
Data Management
Data management is the key
element of cloud applications,
and influences most of the
quality attributes. Data is
typically hosted in different
locations and across multiple
servers for reasons such as
performance, scalability or
availability, and this can present
a range of challenges. For
example, data consistency must
be maintained, and data will
typically need to be
synchronized across different
locations.
Cache-Aside
Command and Query
Reponsibility
Event Sourcing
Index Table
Index Table
Materialized View
Sharding
Static Content Hosting
Valet Key
70
Cache-aside
Load data on demand into
a cache from a data store.
This pattern can improve
performance and also helps
to maintain consistency
between data held in the
cache and the data in the
underlying data store.
71
Command and Query Responsibility Segregation (CQRS)
Segregate operations that
read data from operations
that update data by using
separate interfaces. This
pattern can maximize
performance, scalability, and
security; support evolution of
the system over time through
higher flexibility; and prevent
update commands from
causing merge conflicts at
the domain level.
72
Event Sourcing
Use an append-only store to
record actions taken on data,
rather than the current state,
and use the store to
materialize the domain
objects. In complex domains
this can avoid synchronizing
the data model and the
business domain; improve
performance, scalability, and
responsiveness; provide
consistency; and provide
audit history to enable
compensating actions.
73
Index Table
Create indexes over the
fields in data stores that are
frequently referenced by
query criteria. This pattern
can improve query
performance by allowing
applications to more
quickly locate the data to
retrieve from a data store.
74
Materialized View
Generate pre-populated
views over the data in one
or more data stores when
the data is formatted in a
way that does not favor the
required query operations.
This pattern can help to
support efficient querying
and data extraction, and
improve performance.
75
Sharding
Divide a data store into a
set of horizontal partitions
or shards. This pattern can
improve scalability when
storing and accessing large
volumes of data.
76
Static Content Hosting
77
Valet key
Use a token or key that
provides clients with
restricted direct access to a
specific resource or service in
order to offload data transfer
operations from the
application code. This pattern
is particularly useful in
applications that use cloud-
hosted storage systems or
queues, and can minimize
cost and maximize scalability
and performance.
“Design and
Implementation
79
Design and Implementation
Good design encompasses factors such as
consistency and coherence in component
design and deployment, maintainability to
simplify administration and development,
and reusability to allow components and
subsystems to be used in other applications
and in other scenarios. Decisions made
during the design and implementation
phase have a huge impact on the quality
and the total cost of ownership of cloud
hosted applications and services.
Ambassador
Anti Corruption Layer
Backends for Frontends
Command And Query Responsibility
Computer Resource Consolidation
External Configuration Store
Gateway Aggregation
Gateway Offloading
Gateway Routing
Leader Election
Pipes and Filters
Sidecar
Static Conten Hosting
Strangler
80
Ambassador
Create helper services for
making networking
requests on behalf of a
consumer service or
application. An ambassador
service can be thought of
as an out of process proxy
that is co-located with the
client.
81
Anti Corruption Layer
Ensure the design and
structure of new apps and
services are not limited by
legacy resources. Implement
a façade or adapter layer in
between legacy systems and
modern systems where
features and capabilities are
being migrated to. This
façade or layer translates
requests between modern
systems and legacy
applications using methods
appropriate to each.
82
Backends for Frontends
Develop targeted backend
services for use with
specific frontend
applications or interfaces.
This pattern is useful when
you wish to avoid
implementing
customizations for multiple
interfaces in a single
backend.
83
Command and Query Responsibility Segregation (CQRS)
Segregate operations that
read data from operations
that update data by using
separate interfaces. This
pattern can maximize
performance, scalability, and
security; support evolution of
the system over time through
higher flexibility; and prevent
update commands from
causing merge conflicts at
the domain level.
84
Compute Resource Consolidation
Consolidate multiple tasks
or operations into a single
computational unit. This
pattern can increase
compute resource
utilization, and reduce the
costs and management
overhead associated with
performing compute
processing in cloud-hosted
applications.
85
External Configuration Store
Move configuration
information out of the
application deployment
package to a centralized
location. This pattern can
provide opportunities for
easier management and
control of configuration data,
and for sharing configuration
data across applications and
application instances.
86
Gateway Aggregation
Aggregate multiple
individual requests to a
single request using the
gateway aggregation
pattern. This pattern is
useful when a client must
make multiple calls to
different backend systems
to perform an operation.
87
Gateway Offloading
Offload shared or
specialized service
functionality to a gateway
proxy. This pattern can
simplify application
development by moving
shared service functionality,
such as the use of SSL
certificates, to a gateway
proxy, simplifying
application management.
88
Gateway Routing
Route requests to multiple
services using a single
endpoint with the gateway
routing pattern. This
pattern is useful when you
wish to expose multiple
services on a single
endpoint and route to the
appropriate service based
on the request.
89
Leader Election
Coordinate the actions
performed by a collection of
collaborating task instances in a
distributed application by
electing one instance as the
leader that assumes
responsibility for managing the
other instances. This pattern can
help to ensure that task
instances do not conflict with
each other, cause contention for
shared resources, or
inadvertently interfere with the
work that other task instances
are performing.
90
Pipes and Filters
Decompose a task that
performs complex
processing into a series of
discrete elements that can
be reused. This pattern can
improve performance,
scalability, and reusability
by allowing task elements
that perform the
processing to be deployed
and scaled independently.
91
Sidecar
Deploy components of an
application into a separate
process or container using
the sidecar pattern to
provide isolation,
encapsulation, and to
enable applications
composed of
heterogeneous
components and
technologies.
92
Static Content Hosting
93
Strangler
Incrementally move features
from legacy systems to more
modern systems while
allowing the new system to
add features in the
meantime. As features from
the legacy system are
replaced, the new system
eventually replaces all of the
old system’s features,
strangling the old system and
allowing you to
decommission it.
“Messaging
95
Messaging
The distributed nature of
cloud applications requires a
messaging infrastructure that
connects the components
and services, ideally in a
loosely coupled manner in
order to maximize scalability.
Asynchronous messaging is
widely used, and provides
many benefits, but also
brings challenges such as the
ordering of messages, poison
message management,
idempotency, and more.
Compensating Consumers
Pipes and Filters
Priority Queue
Queue-Based Load Leveling
Scheduler Agent Supervisor
96
Compensating Consumers
Enable multiple concurrent
consumers to process
messages received on the
same messaging channel.
This pattern enables a
system to process multiple
messages concurrently to
optimize throughput, to
improve scalability and
availability, and to balance
the workload.
97
Pipes and Filters
Decompose a task that
performs complex
processing into a series of
discrete elements that can
be reused. This pattern can
improve performance,
scalability, and reusability
by allowing task elements
that perform the
processing to be deployed
and scaled independently.
98
Priority Queue
Prioritize requests sent to
services so that requests
with a higher priority are
received and processed
more quickly than those of
a lower priority. This
pattern is useful in
applications that offer
different service level
guarantees to individual
clients.
99
Queue-Based Load Leveling
Use a queue that acts as a
buffer between a task and a
service that it invokes in
order to smooth intermittent
heavy loads that may
otherwise cause the service
to fail or the task to time out.
This pattern can help to
minimize the impact of peaks
in demand on availability and
responsiveness for both the
task and the service.
100
Scheduler Agent Supervisor
Coordinate a set of actions
across a distributed set of
services and other remote
resources, attempt to
transparently handle faults if any
of these actions fail, or undo the
effects of the work performed if
the system cannot recover from
a fault. This pattern can add
resiliency to a distributed system
by enabling it to recover and
retry actions that fail due to
transient exceptions, long-
lasting faults, and process
failures.
“Management and
Monitoring
102
Management and Monitoring
Cloud applications run in a
remote datacenter where you do
not have full control of the
infrastructure or, in some cases,
the operating system. This can
make management and
monitoring more difficult than
an on-premises deployment.
Applications must expose
runtime information that
administrators and operators
can use to manage and monitor
the system, as well as supporting
changing business requirements
without requiring the application
to be stopped or redeployed.
Ambassador
Anti Corruption Layer
External Configuration Store
Gateway Aggregation
Gateway Offloading
Gateway Routing
Healt Endpoint Monitoring
Sidecar
Strangler
103
Ambassador
Create helper services for
making networking
requests on behalf of a
consumer service or
application. An ambassador
service can be thought of
as an out of process proxy
that is co-located with the
client.
104
Anti Corruption Layer
Ensure the design and
structure of new apps and
services are not limited by
legacy resources. Implement
a façade or adapter layer in
between legacy systems and
modern systems where
features and capabilities are
being migrated to. This
façade or layer translates
requests between modern
systems and legacy
applications using methods
appropriate to each.
105
External Configuration Store
Move configuration
information out of the
application deployment
package to a centralized
location. This pattern can
provide opportunities for
easier management and
control of configuration data,
and for sharing configuration
data across applications and
application instances.
106
Gateway Aggregation
Aggregate multiple
individual requests to a
single request using the
gateway aggregation
pattern. This pattern is
useful when a client must
make multiple calls to
different backend systems
to perform an operation.
107
Gateway Offloading
Offload shared or
specialized service
functionality to a gateway
proxy. This pattern can
simplify application
development by moving
shared service functionality,
such as the use of SSL
certificates, to a gateway
proxy, simplifying
application management.
108
Gateway Routing
Route requests to multiple
services using a single
endpoint with the gateway
routing pattern. This
pattern is useful when you
wish to expose multiple
services on a single
endpoint and route to the
appropriate service based
on the request.
109
Health Endpoint Monitoring
Implement functional
checks within an
application that external
tools can access through
exposed endpoints at
regular intervals. This
pattern can help to verify
that applications and
services are performing
correctly.
110
Sidecar
Deploy components of an
application into a separate
process or container using
the sidecar pattern to
provide isolation,
encapsulation, and to
enable applications
composed of
heterogeneous
components and
technologies.
111
Strangler
Incrementally move features
from legacy systems to more
modern systems while
allowing the new system to
add features in the
meantime. As features from
the legacy system are
replaced, the new system
eventually replaces all of the
old system’s features,
strangling the old system and
allowing you to
decommission it.
“Performance and
Scalability
113
Performance and Scalability
Performance is an indication of the
responsiveness of a system, while
scalability is the ability to gracefully
handle increases in load, perhaps
through an increase in available
resources. Cloud applications,
especially in multi-tenant scenarios,
typically encounter variable
workloads and unpredictable
activity peaks and should be able
to scale out within limits to meet
demand, and scale in when
demand decreases. Scalability
concerns not just compute
instances, but other items such as
data storage, messaging
infrastructure, and more.
Cache-aside
Command and Query
Responsibility
Compensating Consumers
Index Table
Materialized View
Priority Queue
Sharding
Static Content Hosting
Throttling
114
Cache-aside
Load data on demand into
a cache from a data store.
This pattern can improve
performance and also helps
to maintain consistency
between data held in the
cache and the data in the
underlying data store.
115
Command and Query Responsibility Segregation (CQRS)
Segregate operations that
read data from operations
that update data by using
separate interfaces. This
pattern can maximize
performance, scalability, and
security; support evolution of
the system over time through
higher flexibility; and prevent
update commands from
causing merge conflicts at
the domain level.
116
Compensating Consumers
Enable multiple concurrent
consumers to process
messages received on the
same messaging channel.
This pattern enables a
system to process multiple
messages concurrently to
optimize throughput, to
improve scalability and
availability, and to balance
the workload.
117
Index Table
Create indexes over the
fields in data stores that are
frequently referenced by
query criteria. This pattern
can improve query
performance by allowing
applications to more
quickly locate the data to
retrieve from a data store.
118
Materialized View
Generate pre-populated
views over the data in one
or more data stores when
the data is formatted in a
way that does not favor the
required query operations.
This pattern can help to
support efficient querying
and data extraction, and
improve performance.
119
Priority Queue
Prioritize requests sent to
services so that requests
with a higher priority are
received and processed
more quickly than those of
a lower priority. This
pattern is useful in
applications that offer
different service level
guarantees to individual
clients.
120
Sharding
Divide a data store into a
set of horizontal partitions
or shards. This pattern can
improve scalability when
storing and accessing large
volumes of data.
121
Static Content Hosting
122
Throttling
Control the consumption of
resources used by an
instance of an application, an
individual tenant, or an entire
service. This pattern can
allow the system to continue
to function and meet service
level agreements, even when
an increase in demand places
an extreme load on
resources.
“Resiliency
124
Resiliency
Resiliency is the ability of a system
to gracefully handle and recover
from failures. The nature of cloud
hosting, where applications are
often multi-tenant, use shared
platform services, compete for
resources and bandwidth,
communicate over the Internet,
and run on commodity hardware
means there is an increased
likelihood that both transient and
more permanent faults will arise.
Detecting failures, and recovering
quickly and efficiently, is necessary
to maintain resiliency.
Bulkhead
Circuit Breaker
Compensating Transaction
Leader Election
Retry
Scheduler Agent Supervisor
125
Bulkhead
Isolate the elements of an
application like the sectioned
partitions of a ship's hull. If
the hull of a ship that uses
bulkheads is compromised,
only the damaged section of
the ship will fill with water,
and the ship will not sink.
Using the same concept in
application design, this
pattern isolates instances of a
service or clients into pools
so that if one fails, the others
will continue to function.
126
Circuit Breaker
Handle faults that may take
a variable amount of time
to rectify when connecting
to a remote service or
resource. This pattern can
improve the stability and
resiliency of an application.
127
Compensating Transaction
Undo the work performed by
a series of steps, which
together define an eventually
consistent operation, if one
or more of the operations
fails. Operations that follow
the eventual consistency
model are commonly found
in cloud-hosted applications
that implement complex
business processes and
workflows.
128
Leader Election
Coordinate the actions
performed by a collection of
collaborating task instances in a
distributed application by
electing one instance as the
leader that assumes
responsibility for managing the
other instances. This pattern can
help to ensure that task
instances do not conflict with
each other, cause contention for
shared resources, or
inadvertently interfere with the
work that other task instances
are performing.
129
Retry
Enable an application to
handle anticipated,
temporary failures when it
attempts to connect to a
service or network resource
by transparently retrying an
operation that has previously
failed in the expectation that
the cause of the failure is
transient. This pattern can
improve the stability of the
application.
130
Scheduler Agent Supervisor
Coordinate a set of actions
across a distributed set of
services and other remote
resources, attempt to
transparently handle faults if any
of these actions fail, or undo the
effects of the work performed if
the system cannot recover from
a fault. This pattern can add
resiliency to a distributed system
by enabling it to recover and
retry actions that fail due to
transient exceptions, long-
lasting faults, and process
failures.
“Security
132
Security
Security is the capability of a
system to prevent malicious or
accidental actions outside of the
designed usage, and to prevent
disclosure or loss of information.
Cloud applications are exposed
on the Internet outside trusted
on-premises boundaries, are
often open to the public, and
may serve untrusted users.
Applications must be designed
and deployed in a way that
protects them from malicious
attacks, restricts access to only
approved users, and protects
sensitive data.
Federated Identity
Gatekeeper
Valet key
133
Federated Identity
Delegate authentication to
an external identity
provider. This pattern can
simplify development,
minimize the requirement
for user administration, and
improve the user
experience of then
application.
134
Gatekeeper
Protect applications and
services by using a dedicated
host instance that acts as a
broker between clients and
the application or service,
validates and sanitizes
requests, and passes requests
and data between them. This
pattern can provide an
additional layer of security,
and limit the attack surface of
the system.
135
Valet key
Use a token or key that
provides clients with
restricted direct access to a
specific resource or service in
order to offload data transfer
operations from the
application code. This pattern
is particularly useful in
applications that use cloud-
hosted storage systems or
queues, and can minimize
cost and maximize scalability
and performance.
“Let’s restart from
single patterns
137
Valet key
Use a token or key that
provides clients with
restricted direct access to a
specific resource or service in
order to offload data transfer
operations from the
application code. This pattern
is particularly useful in
applications that use cloud-
hosted storage systems or
queues, and can minimize
cost and maximize scalability
and performance.
Security
Data Management
138
Queue-Based Load Leveling
Use a queue that acts as a
buffer between a task and a
service that it invokes in
order to smooth intermittent
heavy loads that may
otherwise cause the service
to fail or the task to time out.
This pattern can help to
minimize the impact of peaks
in demand on availability and
responsiveness for both the
task and the service.
139
Cache-aside
Load data on demand into
a cache from a data store.
This pattern can improve
performance and also helps
to maintain consistency
between data held in the
cache and the data in the
underlying data store.
140
Command and Query Responsibility Segregation (CQRS)
Segregate operations that
read data from operations
that update data by using
separate interfaces. This
pattern can maximize
performance, scalability, and
security; support evolution of
the system over time through
higher flexibility; and prevent
update commands from
causing merge conflicts at
the domain level.
141
Index Table
Create indexes over the
fields in data stores that are
frequently referenced by
query criteria. This pattern
can improve query
performance by allowing
applications to more
quickly locate the data to
retrieve from a data store.
142
Materialized View
Generate pre-populated
views over the data in one
or more data stores when
the data is formatted in a
way that does not favor the
required query operations.
This pattern can help to
support efficient querying
and data extraction, and
improve performance.

More Related Content

What's hot

How SMB's benefit from cloud
How SMB's benefit from cloudHow SMB's benefit from cloud
How SMB's benefit from cloudAlessandro Guli
 
Mmckeown hadr that_conf
Mmckeown hadr that_confMmckeown hadr that_conf
Mmckeown hadr that_confMike McKeown
 
Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013
Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013
Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013Amazon Web Services
 
Edge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine Data
Edge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine DataEdge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine Data
Edge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine DataDataWorks Summit
 
EVault Technical DRaaS Guide_Final
EVault Technical DRaaS Guide_FinalEVault Technical DRaaS Guide_Final
EVault Technical DRaaS Guide_FinalJamie Evans
 
GDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in Practice
GDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in PracticeGDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in Practice
GDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in PracticeJames Anderson
 
Resiliency through Failure @ OSCON 2013
Resiliency through Failure @ OSCON 2013Resiliency through Failure @ OSCON 2013
Resiliency through Failure @ OSCON 2013Ariel Tseitlin
 
10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure
10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure
10 Things you didn't know about Cloud Platforms: AWS, GAE, AzureAnna Liu
 

What's hot (9)

How SMB's benefit from cloud
How SMB's benefit from cloudHow SMB's benefit from cloud
How SMB's benefit from cloud
 
Mmckeown hadr that_conf
Mmckeown hadr that_confMmckeown hadr that_conf
Mmckeown hadr that_conf
 
Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013
Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013
Trusted Analytics as a Service (BDT209) | AWS re:Invent 2013
 
Edge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine Data
Edge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine DataEdge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine Data
Edge to AI: Analytics from Edge to Cloud with Efficient Movement of Machine Data
 
EVault Technical DRaaS Guide_Final
EVault Technical DRaaS Guide_FinalEVault Technical DRaaS Guide_Final
EVault Technical DRaaS Guide_Final
 
GDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in Practice
GDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in PracticeGDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in Practice
GDG Cloud Southlake #3 Charles Adetiloye: Enterprise MLOps in Practice
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Resiliency through Failure @ OSCON 2013
Resiliency through Failure @ OSCON 2013Resiliency through Failure @ OSCON 2013
Resiliency through Failure @ OSCON 2013
 
10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure
10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure
10 Things you didn't know about Cloud Platforms: AWS, GAE, Azure
 

Similar to Azure patterns for availability

Apply Coding Patterns in Azure
Apply Coding Patterns in AzureApply Coding Patterns in Azure
Apply Coding Patterns in AzureMarco Parenzan
 
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...David J Rosenthal
 
Cloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftCloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftKesavan Munuswamy
 
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016Shannon Lietz
 
Cloud computing fundamentals with Microsoft Azure
Cloud computing fundamentals with Microsoft AzureCloud computing fundamentals with Microsoft Azure
Cloud computing fundamentals with Microsoft AzureRadoslav Gatev
 
No more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and AzureNo more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and AzureMarco Parenzan
 
Meetup HybridCloud successful 14.12.2016 #hybridcloudsuccessful
Meetup HybridCloud successful 14.12.2016 #hybridcloudsuccessfulMeetup HybridCloud successful 14.12.2016 #hybridcloudsuccessful
Meetup HybridCloud successful 14.12.2016 #hybridcloudsuccessfulSebastian Straube
 
Machine Learning and AI
Machine Learning and AIMachine Learning and AI
Machine Learning and AIJames Serra
 
Migrating to cloud-native_app_architectures_pivotal
Migrating to cloud-native_app_architectures_pivotalMigrating to cloud-native_app_architectures_pivotal
Migrating to cloud-native_app_architectures_pivotalkkdlavak3
 
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)Tim Kirby
 
Migrating_to_Cloud-Native_App_Architectures_Pivotal
Migrating_to_Cloud-Native_App_Architectures_PivotalMigrating_to_Cloud-Native_App_Architectures_Pivotal
Migrating_to_Cloud-Native_App_Architectures_PivotalEstevan McCalley
 
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)Dean Bruckman
 
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015Darryl Nelson
 
(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014
(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014
(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014Amazon Web Services
 
2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with Azure2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with AzureMarco Parenzan
 

Similar to Azure patterns for availability (20)

Apply Coding Patterns in Azure
Apply Coding Patterns in AzureApply Coding Patterns in Azure
Apply Coding Patterns in Azure
 
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
 
Cloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftCloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from Microsoft
 
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
Cloud computing fundamentals with Microsoft Azure
Cloud computing fundamentals with Microsoft AzureCloud computing fundamentals with Microsoft Azure
Cloud computing fundamentals with Microsoft Azure
 
No more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and AzureNo more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and Azure
 
Deploying Models
Deploying ModelsDeploying Models
Deploying Models
 
Meetup HybridCloud successful 14.12.2016 #hybridcloudsuccessful
Meetup HybridCloud successful 14.12.2016 #hybridcloudsuccessfulMeetup HybridCloud successful 14.12.2016 #hybridcloudsuccessful
Meetup HybridCloud successful 14.12.2016 #hybridcloudsuccessful
 
Adam azure presentation
Adam   azure presentationAdam   azure presentation
Adam azure presentation
 
Machine Learning and AI
Machine Learning and AIMachine Learning and AI
Machine Learning and AI
 
Migrating to cloud-native_app_architectures_pivotal
Migrating to cloud-native_app_architectures_pivotalMigrating to cloud-native_app_architectures_pivotal
Migrating to cloud-native_app_architectures_pivotal
 
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
 
Migrating_to_Cloud-Native_App_Architectures_Pivotal
Migrating_to_Cloud-Native_App_Architectures_PivotalMigrating_to_Cloud-Native_App_Architectures_Pivotal
Migrating_to_Cloud-Native_App_Architectures_Pivotal
 
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
Migrating_to_Cloud-Native_App_Architectures_Pivotal (2)
 
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
 
(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014
(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014
(SEC312) Taking a DevOps Approach to Security | AWS re:Invent 2014
 
Cloud Design Patterns
Cloud Design PatternsCloud Design Patterns
Cloud Design Patterns
 
Ml ops on AWS
Ml ops on AWSMl ops on AWS
Ml ops on AWS
 
2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with Azure2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with Azure
 

More from Marco Parenzan

Azure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerAzure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerMarco Parenzan
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxMarco Parenzan
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsMarco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central Marco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralMarco Parenzan
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .netMarco Parenzan
 
Math with .NET for you and Azure
Math with .NET for you and AzureMath with .NET for you and Azure
Math with .NET for you and AzureMarco Parenzan
 
Power BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralPower BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralMarco Parenzan
 
.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogameMarco Parenzan
 
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Marco Parenzan
 
Anomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETAnomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETMarco Parenzan
 
Deploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsDeploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsMarco Parenzan
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetMarco Parenzan
 
Anomaly Detection with Azure and .net
Anomaly Detection with Azure and .netAnomaly Detection with Azure and .net
Anomaly Detection with Azure and .netMarco Parenzan
 
Code Generation for Azure with .net
Code Generation for Azure with .netCode Generation for Azure with .net
Code Generation for Azure with .netMarco Parenzan
 
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicRunning Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicMarco Parenzan
 
Time Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTTime Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTMarco Parenzan
 

More from Marco Parenzan (20)

Azure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineerAzure IoT Central per lo SCADA engineer
Azure IoT Central per lo SCADA engineer
 
Azure Hybrid @ Home
Azure Hybrid @ HomeAzure Hybrid @ Home
Azure Hybrid @ Home
 
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptxStatic abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
Static abstract members nelle interfacce di C# 11 e dintorni di .NET 7.pptx
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT Solutions
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Power BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT CentralPower BI Streaming Data Flow e Azure IoT Central
Power BI Streaming Data Flow e Azure IoT Central
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .net
 
Math with .NET for you and Azure
Math with .NET for you and AzureMath with .NET for you and Azure
Math with .NET for you and Azure
 
Power BI data flow and Azure IoT Central
Power BI data flow and Azure IoT CentralPower BI data flow and Azure IoT Central
Power BI data flow and Azure IoT Central
 
.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame.net for fun: write a Christmas videogame
.net for fun: write a Christmas videogame
 
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
Building IoT infrastructure on edge with .net, Raspberry PI and ESP32 to conn...
 
Anomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NETAnomaly Detection with Azure and .NET
Anomaly Detection with Azure and .NET
 
Deploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data SolutionsDeploy Microsoft Azure Data Solutions
Deploy Microsoft Azure Data Solutions
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnet
 
Azure IoT Central
Azure IoT CentralAzure IoT Central
Azure IoT Central
 
Anomaly Detection with Azure and .net
Anomaly Detection with Azure and .netAnomaly Detection with Azure and .net
Anomaly Detection with Azure and .net
 
Code Generation for Azure with .net
Code Generation for Azure with .netCode Generation for Azure with .net
Code Generation for Azure with .net
 
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magicRunning Kafka and Spark on Raspberry PI with Azure and some .net magic
Running Kafka and Spark on Raspberry PI with Azure and some .net magic
 
Time Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETTTime Series Anomaly Detection with Azure and .NETT
Time Series Anomaly Detection with Azure and .NETT
 

Recently uploaded

chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
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.pdfkalichargn70th171
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
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 ...MyIntelliSource, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
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.pdfWave PLM
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
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 ApplicationsAlberto González Trastoy
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 

Recently uploaded (20)

chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
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
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
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 ...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
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
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
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
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 

Azure patterns for availability

  • 1. 1 Applicare patterns di sviluppo con Azure Marco Parenzan Solutions Sales Specialist @ Insight Azure MVP
  • 5. 5
  • 7. 7 Applicare patterns di sviluppo con Azure Marco Parenzan Solutions Sales Specialist @ Insight Azure MVP
  • 9. “I don’t have to convince you to move to the cloud...
  • 10. “...I want to convince you what moving to the cloud means...
  • 11. “...just to avoid wrong expectations...
  • 14. “You can have HA only with money and design (patterns)
  • 15. “Azure: the best place where applying your GOF book
  • 16. “Cloud is 66% Lift&Shift Don’t rewrite
  • 17. 17 IaaS and Lift & Shift: an anti-pattern? From Wikipedia [https://en.wikipedia.org/wiki/Anti-pattern]: An anti-pattern is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive
  • 18. 18 IaaS and Lift & Shift an anti-pattern: why? Moving to the cloud is just a matter of costs It costs Then limits comes again And opportunities can become big limits You don’t avoid IaaS limits (infrastructural, hidden, unquoted costs)
  • 19. 19 IaaS is really evil? NO.... ...if, and only if,... ...a rewrite/evolution strategy is planned at day 1!
  • 20. 20 IaaS is not evil? IaaS is the toolbox to hybridize company and cloud Everything should be used with «care»
  • 21. “PaaS if possible IaaS if (really really really) needed
  • 22. 22 [Software] Design pattern From Wikipedia [https://en.wikipedia.org/wiki/Software_design_pattern]: In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
  • 23. “Lot of services are practice, not strictly «design»
  • 24. “Azure PaaS Services are Pattern implementations
  • 25. “Believe it or not.... This is the way
  • 27. 27 Just an example: Azure Virtual Machine It’s not a pattern It’s a tool in your toolbox TO RUN your pattern implementation Try to scale a VM in production....! (every PaaS service run over VMs)
  • 28. 28 Just an example: Azure Sql Database It’s just a Database It’s a pattern! Why? «It’s ONLY 99.9% compatible with SQL Server» It’s really very important? How many projects use SQL Server for its full power? It’s a lot if it use Views or Stored procedures, even Triggers! why a pattern? Because it’s just most developers do
  • 29. 29
  • 32. 32 Categories Availability Data management Design and implementation Messaging Management and monitoring Performance and scalability Resiliency Security
  • 33. 33 Availability Availability defines the proportion of time that the system is functional and working... Health Endpoint Monitoring Queue-Based Load Leveling Throttling
  • 34. 34 Data Management Data management is the key element of cloud applications, and influences most of the quality attributes… Cache-Aside Command and Query Reponsibility Event Sourcing Index Table Index Table Materialized View Sharding Static Content Hosting Valet Key
  • 35. 35 Design and Implementation Good design encompasses factors… …Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services. Ambassador Anti Corruption Layer Backends for Frontends Command And Query Responsibility Computer Resource Consolidation External Configuration Store Gateway Aggregation Gateway Offloading Gateway Routing Leader Election Pipes and Filters Sidecar Static Conten Hosting Strangler
  • 36. 36 Messaging The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. … Compensating Consumers Pipes and Filters Priority Queue Queue-Based Load Leveling Scheduler Agent Supervisor
  • 37. 37 Management and Monitoring Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. … Ambassador Anti Corruption Layer External Configuration Store Gateway Aggregation Gateway Offloading Gateway Routing Healt Endpoint Monitoring Sidecar Strangler
  • 38. 38 Performance and Scalability Performance is an indication of the responsiveness of a system, while scalability is the ability to gracefully handle increases in load, perhaps through an increase in available resources… Cache-aside Command and Query Responsibility Compensating Consumers Index Table Materialized View Priority Queue Sharding Static Content Hosting Throttling
  • 39. 39 Resiliency Resiliency is the ability of a system to gracefully handle and recover from failures… Bulkhead Circuit Breaker Compensating Transaction Leader Election Retry Scheduler Agent Supervisor
  • 40. 40 Security Security is the capability of a system to prevent malicious or accidental actions outside of the designed usage, and to prevent disclosure or loss of information. … Federated Identity Gatekeeper Valet key
  • 42. 42 Room reservation Reserve a room from office See a panel on the room to see the daily reservations
  • 43. 43 Classic approach Client/server or three tier Db/centricone db for all Issues • Coupling • Integrity • Performances • Scalability • Availability • Single point of failure
  • 44. 44 Modern solution four apps Reservation Worker Handler Panel Four data stores requests Write Events read Cons: • Initial Higher cost Pro: • Long term lower cost • Flexible • Maintainable • Scalable • Available
  • 46. 46 Queue-Based Load Leveling From Availability and Performances Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to time out. This pattern can help to minimize the impact of peaks in demand on availability and responsiveness for both the task and the service.
  • 47. 47 Compensating Consumers Enable multiple concurrent consumers to process messages received on the same messaging channel. This pattern enables a system to process multiple messages concurrently to optimize throughput, to improve scalability and availability, and to balance the workload.
  • 48. “That’s why you have (lot of) worker roles, containers, actors and microservices...
  • 49. 49 Command and Query Responsibility Segregation (CQRS) Segregate operations that read data from operations that update data by using separate interfaces. This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent update commands from causing merge conflicts at the domain level.
  • 50. 50 Materialized View Generate pre-populated views over the data in one or more data stores when the data is formatted in a way that does not favor the required query operations. This pattern can help to support efficient querying and data extraction, and improve performance.
  • 51. “That’s why there are a lot o data services (No SQL, in memory, graph, ...)
  • 52. 52 Event Sourcing Use an append-only store to record actions taken on data, rather than the current state, and use the store to materialize the domain objects. In complex domains this can avoid synchronizing the data model and the business domain; improve performance, scalability, and responsiveness; provide consistency; and provide audit history to enable compensating actions.
  • 53. “That’s why you have event-based services like Functions, Logic Apps, Event Grid and Serverless!!!
  • 54.
  • 55. 55 Cache-aside Load data on demand into a cache from a data store. This pattern can improve performance and also helps to maintain consistency between data held in the cache and the data in the underlying data store.
  • 57. “Investing in patterns means being natural over cloud
  • 58. “Find the patterns you are confortable
  • 59. “Patterns change the way you think software development, not only cloud
  • 63. 63 Availability Availability defines the proportion of time that the system is functional and working It will be affected by system errors, infrastructure problems, malicious attacks, and system load. It is usually measured as a percentage of uptime. Cloud applications typically provide users with a service level agreement (SLA), which means that applications must be designed and implemented in a way that maximizes availability. Health Endpoint Monitoring Queue-Based Load Leveling Throttling
  • 64. 64 Health Endpoint Monitoring Implement functional checks within an application that external tools can access through exposed endpoints at regular intervals. This pattern can help to verify that applications and services are performing correctly.
  • 65. 65 Queue-Based Load Leveling Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to time out. This pattern can help to minimize the impact of peaks in demand on availability and responsiveness for both the task and the service.
  • 66. 66 Throttling Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. This pattern can allow the system to continue to function and meet service level agreements, even when an increase in demand places an extreme load on resources.
  • 67. 67 Materialized View Generate pre-populated views over the data in one or more data stores when the data is formatted in a way that does not favor the required query operations. This pattern can help to support efficient querying and data extraction, and improve performance.
  • 69. 69 Data Management Data management is the key element of cloud applications, and influences most of the quality attributes. Data is typically hosted in different locations and across multiple servers for reasons such as performance, scalability or availability, and this can present a range of challenges. For example, data consistency must be maintained, and data will typically need to be synchronized across different locations. Cache-Aside Command and Query Reponsibility Event Sourcing Index Table Index Table Materialized View Sharding Static Content Hosting Valet Key
  • 70. 70 Cache-aside Load data on demand into a cache from a data store. This pattern can improve performance and also helps to maintain consistency between data held in the cache and the data in the underlying data store.
  • 71. 71 Command and Query Responsibility Segregation (CQRS) Segregate operations that read data from operations that update data by using separate interfaces. This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent update commands from causing merge conflicts at the domain level.
  • 72. 72 Event Sourcing Use an append-only store to record actions taken on data, rather than the current state, and use the store to materialize the domain objects. In complex domains this can avoid synchronizing the data model and the business domain; improve performance, scalability, and responsiveness; provide consistency; and provide audit history to enable compensating actions.
  • 73. 73 Index Table Create indexes over the fields in data stores that are frequently referenced by query criteria. This pattern can improve query performance by allowing applications to more quickly locate the data to retrieve from a data store.
  • 74. 74 Materialized View Generate pre-populated views over the data in one or more data stores when the data is formatted in a way that does not favor the required query operations. This pattern can help to support efficient querying and data extraction, and improve performance.
  • 75. 75 Sharding Divide a data store into a set of horizontal partitions or shards. This pattern can improve scalability when storing and accessing large volumes of data.
  • 77. 77 Valet key Use a token or key that provides clients with restricted direct access to a specific resource or service in order to offload data transfer operations from the application code. This pattern is particularly useful in applications that use cloud- hosted storage systems or queues, and can minimize cost and maximize scalability and performance.
  • 79. 79 Design and Implementation Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services. Ambassador Anti Corruption Layer Backends for Frontends Command And Query Responsibility Computer Resource Consolidation External Configuration Store Gateway Aggregation Gateway Offloading Gateway Routing Leader Election Pipes and Filters Sidecar Static Conten Hosting Strangler
  • 80. 80 Ambassador Create helper services for making networking requests on behalf of a consumer service or application. An ambassador service can be thought of as an out of process proxy that is co-located with the client.
  • 81. 81 Anti Corruption Layer Ensure the design and structure of new apps and services are not limited by legacy resources. Implement a façade or adapter layer in between legacy systems and modern systems where features and capabilities are being migrated to. This façade or layer translates requests between modern systems and legacy applications using methods appropriate to each.
  • 82. 82 Backends for Frontends Develop targeted backend services for use with specific frontend applications or interfaces. This pattern is useful when you wish to avoid implementing customizations for multiple interfaces in a single backend.
  • 83. 83 Command and Query Responsibility Segregation (CQRS) Segregate operations that read data from operations that update data by using separate interfaces. This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent update commands from causing merge conflicts at the domain level.
  • 84. 84 Compute Resource Consolidation Consolidate multiple tasks or operations into a single computational unit. This pattern can increase compute resource utilization, and reduce the costs and management overhead associated with performing compute processing in cloud-hosted applications.
  • 85. 85 External Configuration Store Move configuration information out of the application deployment package to a centralized location. This pattern can provide opportunities for easier management and control of configuration data, and for sharing configuration data across applications and application instances.
  • 86. 86 Gateway Aggregation Aggregate multiple individual requests to a single request using the gateway aggregation pattern. This pattern is useful when a client must make multiple calls to different backend systems to perform an operation.
  • 87. 87 Gateway Offloading Offload shared or specialized service functionality to a gateway proxy. This pattern can simplify application development by moving shared service functionality, such as the use of SSL certificates, to a gateway proxy, simplifying application management.
  • 88. 88 Gateway Routing Route requests to multiple services using a single endpoint with the gateway routing pattern. This pattern is useful when you wish to expose multiple services on a single endpoint and route to the appropriate service based on the request.
  • 89. 89 Leader Election Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances. This pattern can help to ensure that task instances do not conflict with each other, cause contention for shared resources, or inadvertently interfere with the work that other task instances are performing.
  • 90. 90 Pipes and Filters Decompose a task that performs complex processing into a series of discrete elements that can be reused. This pattern can improve performance, scalability, and reusability by allowing task elements that perform the processing to be deployed and scaled independently.
  • 91. 91 Sidecar Deploy components of an application into a separate process or container using the sidecar pattern to provide isolation, encapsulation, and to enable applications composed of heterogeneous components and technologies.
  • 93. 93 Strangler Incrementally move features from legacy systems to more modern systems while allowing the new system to add features in the meantime. As features from the legacy system are replaced, the new system eventually replaces all of the old system’s features, strangling the old system and allowing you to decommission it.
  • 95. 95 Messaging The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. Asynchronous messaging is widely used, and provides many benefits, but also brings challenges such as the ordering of messages, poison message management, idempotency, and more. Compensating Consumers Pipes and Filters Priority Queue Queue-Based Load Leveling Scheduler Agent Supervisor
  • 96. 96 Compensating Consumers Enable multiple concurrent consumers to process messages received on the same messaging channel. This pattern enables a system to process multiple messages concurrently to optimize throughput, to improve scalability and availability, and to balance the workload.
  • 97. 97 Pipes and Filters Decompose a task that performs complex processing into a series of discrete elements that can be reused. This pattern can improve performance, scalability, and reusability by allowing task elements that perform the processing to be deployed and scaled independently.
  • 98. 98 Priority Queue Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those of a lower priority. This pattern is useful in applications that offer different service level guarantees to individual clients.
  • 99. 99 Queue-Based Load Leveling Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to time out. This pattern can help to minimize the impact of peaks in demand on availability and responsiveness for both the task and the service.
  • 100. 100 Scheduler Agent Supervisor Coordinate a set of actions across a distributed set of services and other remote resources, attempt to transparently handle faults if any of these actions fail, or undo the effects of the work performed if the system cannot recover from a fault. This pattern can add resiliency to a distributed system by enabling it to recover and retry actions that fail due to transient exceptions, long- lasting faults, and process failures.
  • 102. 102 Management and Monitoring Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. This can make management and monitoring more difficult than an on-premises deployment. Applications must expose runtime information that administrators and operators can use to manage and monitor the system, as well as supporting changing business requirements without requiring the application to be stopped or redeployed. Ambassador Anti Corruption Layer External Configuration Store Gateway Aggregation Gateway Offloading Gateway Routing Healt Endpoint Monitoring Sidecar Strangler
  • 103. 103 Ambassador Create helper services for making networking requests on behalf of a consumer service or application. An ambassador service can be thought of as an out of process proxy that is co-located with the client.
  • 104. 104 Anti Corruption Layer Ensure the design and structure of new apps and services are not limited by legacy resources. Implement a façade or adapter layer in between legacy systems and modern systems where features and capabilities are being migrated to. This façade or layer translates requests between modern systems and legacy applications using methods appropriate to each.
  • 105. 105 External Configuration Store Move configuration information out of the application deployment package to a centralized location. This pattern can provide opportunities for easier management and control of configuration data, and for sharing configuration data across applications and application instances.
  • 106. 106 Gateway Aggregation Aggregate multiple individual requests to a single request using the gateway aggregation pattern. This pattern is useful when a client must make multiple calls to different backend systems to perform an operation.
  • 107. 107 Gateway Offloading Offload shared or specialized service functionality to a gateway proxy. This pattern can simplify application development by moving shared service functionality, such as the use of SSL certificates, to a gateway proxy, simplifying application management.
  • 108. 108 Gateway Routing Route requests to multiple services using a single endpoint with the gateway routing pattern. This pattern is useful when you wish to expose multiple services on a single endpoint and route to the appropriate service based on the request.
  • 109. 109 Health Endpoint Monitoring Implement functional checks within an application that external tools can access through exposed endpoints at regular intervals. This pattern can help to verify that applications and services are performing correctly.
  • 110. 110 Sidecar Deploy components of an application into a separate process or container using the sidecar pattern to provide isolation, encapsulation, and to enable applications composed of heterogeneous components and technologies.
  • 111. 111 Strangler Incrementally move features from legacy systems to more modern systems while allowing the new system to add features in the meantime. As features from the legacy system are replaced, the new system eventually replaces all of the old system’s features, strangling the old system and allowing you to decommission it.
  • 113. 113 Performance and Scalability Performance is an indication of the responsiveness of a system, while scalability is the ability to gracefully handle increases in load, perhaps through an increase in available resources. Cloud applications, especially in multi-tenant scenarios, typically encounter variable workloads and unpredictable activity peaks and should be able to scale out within limits to meet demand, and scale in when demand decreases. Scalability concerns not just compute instances, but other items such as data storage, messaging infrastructure, and more. Cache-aside Command and Query Responsibility Compensating Consumers Index Table Materialized View Priority Queue Sharding Static Content Hosting Throttling
  • 114. 114 Cache-aside Load data on demand into a cache from a data store. This pattern can improve performance and also helps to maintain consistency between data held in the cache and the data in the underlying data store.
  • 115. 115 Command and Query Responsibility Segregation (CQRS) Segregate operations that read data from operations that update data by using separate interfaces. This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent update commands from causing merge conflicts at the domain level.
  • 116. 116 Compensating Consumers Enable multiple concurrent consumers to process messages received on the same messaging channel. This pattern enables a system to process multiple messages concurrently to optimize throughput, to improve scalability and availability, and to balance the workload.
  • 117. 117 Index Table Create indexes over the fields in data stores that are frequently referenced by query criteria. This pattern can improve query performance by allowing applications to more quickly locate the data to retrieve from a data store.
  • 118. 118 Materialized View Generate pre-populated views over the data in one or more data stores when the data is formatted in a way that does not favor the required query operations. This pattern can help to support efficient querying and data extraction, and improve performance.
  • 119. 119 Priority Queue Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those of a lower priority. This pattern is useful in applications that offer different service level guarantees to individual clients.
  • 120. 120 Sharding Divide a data store into a set of horizontal partitions or shards. This pattern can improve scalability when storing and accessing large volumes of data.
  • 122. 122 Throttling Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. This pattern can allow the system to continue to function and meet service level agreements, even when an increase in demand places an extreme load on resources.
  • 124. 124 Resiliency Resiliency is the ability of a system to gracefully handle and recover from failures. The nature of cloud hosting, where applications are often multi-tenant, use shared platform services, compete for resources and bandwidth, communicate over the Internet, and run on commodity hardware means there is an increased likelihood that both transient and more permanent faults will arise. Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency. Bulkhead Circuit Breaker Compensating Transaction Leader Election Retry Scheduler Agent Supervisor
  • 125. 125 Bulkhead Isolate the elements of an application like the sectioned partitions of a ship's hull. If the hull of a ship that uses bulkheads is compromised, only the damaged section of the ship will fill with water, and the ship will not sink. Using the same concept in application design, this pattern isolates instances of a service or clients into pools so that if one fails, the others will continue to function.
  • 126. 126 Circuit Breaker Handle faults that may take a variable amount of time to rectify when connecting to a remote service or resource. This pattern can improve the stability and resiliency of an application.
  • 127. 127 Compensating Transaction Undo the work performed by a series of steps, which together define an eventually consistent operation, if one or more of the operations fails. Operations that follow the eventual consistency model are commonly found in cloud-hosted applications that implement complex business processes and workflows.
  • 128. 128 Leader Election Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances. This pattern can help to ensure that task instances do not conflict with each other, cause contention for shared resources, or inadvertently interfere with the work that other task instances are performing.
  • 129. 129 Retry Enable an application to handle anticipated, temporary failures when it attempts to connect to a service or network resource by transparently retrying an operation that has previously failed in the expectation that the cause of the failure is transient. This pattern can improve the stability of the application.
  • 130. 130 Scheduler Agent Supervisor Coordinate a set of actions across a distributed set of services and other remote resources, attempt to transparently handle faults if any of these actions fail, or undo the effects of the work performed if the system cannot recover from a fault. This pattern can add resiliency to a distributed system by enabling it to recover and retry actions that fail due to transient exceptions, long- lasting faults, and process failures.
  • 132. 132 Security Security is the capability of a system to prevent malicious or accidental actions outside of the designed usage, and to prevent disclosure or loss of information. Cloud applications are exposed on the Internet outside trusted on-premises boundaries, are often open to the public, and may serve untrusted users. Applications must be designed and deployed in a way that protects them from malicious attacks, restricts access to only approved users, and protects sensitive data. Federated Identity Gatekeeper Valet key
  • 133. 133 Federated Identity Delegate authentication to an external identity provider. This pattern can simplify development, minimize the requirement for user administration, and improve the user experience of then application.
  • 134. 134 Gatekeeper Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them. This pattern can provide an additional layer of security, and limit the attack surface of the system.
  • 135. 135 Valet key Use a token or key that provides clients with restricted direct access to a specific resource or service in order to offload data transfer operations from the application code. This pattern is particularly useful in applications that use cloud- hosted storage systems or queues, and can minimize cost and maximize scalability and performance.
  • 137. 137 Valet key Use a token or key that provides clients with restricted direct access to a specific resource or service in order to offload data transfer operations from the application code. This pattern is particularly useful in applications that use cloud- hosted storage systems or queues, and can minimize cost and maximize scalability and performance. Security Data Management
  • 138. 138 Queue-Based Load Leveling Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to time out. This pattern can help to minimize the impact of peaks in demand on availability and responsiveness for both the task and the service.
  • 139. 139 Cache-aside Load data on demand into a cache from a data store. This pattern can improve performance and also helps to maintain consistency between data held in the cache and the data in the underlying data store.
  • 140. 140 Command and Query Responsibility Segregation (CQRS) Segregate operations that read data from operations that update data by using separate interfaces. This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent update commands from causing merge conflicts at the domain level.
  • 141. 141 Index Table Create indexes over the fields in data stores that are frequently referenced by query criteria. This pattern can improve query performance by allowing applications to more quickly locate the data to retrieve from a data store.
  • 142. 142 Materialized View Generate pre-populated views over the data in one or more data stores when the data is formatted in a way that does not favor the required query operations. This pattern can help to support efficient querying and data extraction, and improve performance.