TaswarBhatti
Agenda
• What are Patterns?
• The External Configuration Pattern
• The Cache Aside Pattern
• The Federated Identity Pattern
• The Valet Key Pattern
• The Gatekeeper Pattern
• The Circuit Breaker Pattern
• Questions
What are Patterns?
• General reusable solution to a recurring problem
• A template on how to solve a problem
• Best practices
• Patterns allow developers communicate with each other in well
known and understand names for software interactions.
External Configuration Pattern
External Configuration Pattern
• Helps move configuration information out of the application
deployment
• This pattern can provide for easier management and control of
configuration data
• For sharing configuration data across applications and other
application instances
Typical Application
Storing Configuration in file
Multiple application
Problems
• Configuration becomes part of deployment
• Multiple applications share the same configuration
• Hard to have access control over the configuration
External Configuration Pattern
When to use the pattern
• When you have shared configuration, multiple application
• You want to manage configuration centrally by DevOps
• Provide audit for each configuration
When not to use
• When you only have a single application there is no need to use
this pattern it will make things more complex
Cloud Solution Offerings
• Azure Key Vault
• Vault by Hashicorp
• AWS KMS
• Keywhiz
Cache Aside Pattern
Cache Aside Pattern
• Load data on demand into a cache from datastore
• Helps improve performance
• Helps in maintain consistency between data held in the cache
and data in the underlying data store.
Typical Application
Cache Aside Pattern
When to use the pattern
• Resource demand is unpredictable.
• This pattern enables applications to load data on demand
• It makes no assumptions about which data an application will
require in advance
When not to use
• Don’t use it for data that changes very often
Things to consider
• Sometimes data can be changed from outside process
• Have an expiry for the data in cache
• When update of data, invalidate the cache before updating the
data in database
• Pre populate the data if possible
Cloud Offerings
• Redis (Azure and AWS)
• Memcache
• Hazelcast
• Elastic Cache (AWS)
Federated Identity Pattern
Federated Identity Pattern
• Delegate authentication to an external identity provider.
• Simplify development, minimize the requirement for user
administration
• Improve the user experience of the application
• Centralized providing MFA for user authentication
Typical Application
Problem
Problem
• Complex development and maintenance (Duplicated code)
• MFA is not an easy thing
• User administration is a pain with access control
• Hard to keep system secure
• No single sign on (SSO) everyone needs to login again to
different systems
Federated Identity Pattern
When to use
• When you have multiple applications and want to provide SSO
for applications
• Federated identity with multiple partners
• Federated identity in SAAS application
When not to use it
• You already have a single application and have custom code
that allows you to login
Things to consider
• The identity Server needs to be highly available
• Single point of failure, must have HA
• RBAC, identity server usually does not have authorization
information
• Claims and scope within the security auth token
Cloud Offerings
• Azure AD
• Gemalto STA and SAS
• Amazon IAM
• GCP Cloud IAM
Valet Key Pattern
Valet Key Pattern
• Use a token that provides clients with restricted direct access to
a specific resource
• Provide offload data transfer from the application
• Minimize cost and maximize scalability and performance
Typical Application
Problem
Valet Key Pattern
When to use it
• The application has limited resources
• To minimize operational cost
• Many interaction with external resources (upload, download)
• When the data is stored in a remote data store or a different
datacenter
When not to use it
• When you need to transform the data before upload or
download
Cloud Offerings
• Azure Blob Storage
• Amazon S3
• GCP Cloud Storage
Gatekeeper Pattern
Gatekeeper Pattern
• Using a dedicated host instance that acts as a broker between
clients and services
• Protect applications and services
• Validates and sanitizes requests, and passes requests and data
between them
• Provide an additional layer of security, and limit the attack
surface of the system
Typical Application
Problem
Gatekeeper Pattern
When to use it
• Sensitive information (Health care, Authentication)
• Distributed System where perform request validation separately
When not to use
• Performance vs security
Things to consider
• WAF should not hold any keys or sensitive information
• Use a secure communication channel
• Auto scale
• Endpoint IP address (when scaling application does the WAF
know the new applications)
Circuit Breaker Pattern
Circuit Breaker Pattern
• To handle faults that might take a variable amount of time to
recover
• When connecting to a remote service or resource
Typical Application
Problem
Circuit Breaker
When to use it
• To prevent an application from trying to invoke a remote service
or access a shared resource if this operation is highly likely to fail
• Better user experience
When not to use
• Handling access to local private resources in an application, such
as in-memory data structure
• Creates an overhead
• Not a substitute for handling exceptions in the business logic of
your applications
Libraries
• Polly (http://www.thepollyproject.org/)
• Netflix (Hystrix) https://github.com/Netflix/Hystrix/wiki
Questions?
Taswar Bhatti
System Solutions Architect (Gemalto)
Microsoft MVP
http://taswar.zeytinsoft.com
@taswarbhatti

Cloud Design Patterns

  • 1.
  • 2.
    Agenda • What arePatterns? • The External Configuration Pattern • The Cache Aside Pattern • The Federated Identity Pattern • The Valet Key Pattern • The Gatekeeper Pattern • The Circuit Breaker Pattern • Questions
  • 3.
    What are Patterns? •General reusable solution to a recurring problem • A template on how to solve a problem • Best practices • Patterns allow developers communicate with each other in well known and understand names for software interactions.
  • 4.
  • 5.
    External Configuration Pattern •Helps move configuration information out of the application deployment • This pattern can provide for easier management and control of configuration data • For sharing configuration data across applications and other application instances
  • 6.
  • 7.
  • 8.
  • 9.
    Problems • Configuration becomespart of deployment • Multiple applications share the same configuration • Hard to have access control over the configuration
  • 11.
  • 12.
    When to usethe pattern • When you have shared configuration, multiple application • You want to manage configuration centrally by DevOps • Provide audit for each configuration
  • 13.
    When not touse • When you only have a single application there is no need to use this pattern it will make things more complex
  • 14.
    Cloud Solution Offerings •Azure Key Vault • Vault by Hashicorp • AWS KMS • Keywhiz
  • 15.
  • 16.
    Cache Aside Pattern •Load data on demand into a cache from datastore • Helps improve performance • Helps in maintain consistency between data held in the cache and data in the underlying data store.
  • 17.
  • 18.
  • 19.
    When to usethe pattern • Resource demand is unpredictable. • This pattern enables applications to load data on demand • It makes no assumptions about which data an application will require in advance
  • 20.
    When not touse • Don’t use it for data that changes very often
  • 21.
    Things to consider •Sometimes data can be changed from outside process • Have an expiry for the data in cache • When update of data, invalidate the cache before updating the data in database • Pre populate the data if possible
  • 22.
    Cloud Offerings • Redis(Azure and AWS) • Memcache • Hazelcast • Elastic Cache (AWS)
  • 23.
  • 24.
    Federated Identity Pattern •Delegate authentication to an external identity provider. • Simplify development, minimize the requirement for user administration • Improve the user experience of the application • Centralized providing MFA for user authentication
  • 25.
  • 26.
  • 27.
    Problem • Complex developmentand maintenance (Duplicated code) • MFA is not an easy thing • User administration is a pain with access control • Hard to keep system secure • No single sign on (SSO) everyone needs to login again to different systems
  • 28.
  • 29.
    When to use •When you have multiple applications and want to provide SSO for applications • Federated identity with multiple partners • Federated identity in SAAS application
  • 30.
    When not touse it • You already have a single application and have custom code that allows you to login
  • 31.
    Things to consider •The identity Server needs to be highly available • Single point of failure, must have HA • RBAC, identity server usually does not have authorization information • Claims and scope within the security auth token
  • 32.
    Cloud Offerings • AzureAD • Gemalto STA and SAS • Amazon IAM • GCP Cloud IAM
  • 33.
  • 34.
    Valet Key Pattern •Use a token that provides clients with restricted direct access to a specific resource • Provide offload data transfer from the application • Minimize cost and maximize scalability and performance
  • 35.
  • 36.
  • 37.
  • 38.
    When to useit • The application has limited resources • To minimize operational cost • Many interaction with external resources (upload, download) • When the data is stored in a remote data store or a different datacenter
  • 39.
    When not touse it • When you need to transform the data before upload or download
  • 40.
    Cloud Offerings • AzureBlob Storage • Amazon S3 • GCP Cloud Storage
  • 41.
  • 42.
    Gatekeeper Pattern • Usinga dedicated host instance that acts as a broker between clients and services • Protect applications and services • Validates and sanitizes requests, and passes requests and data between them • Provide an additional layer of security, and limit the attack surface of the system
  • 43.
  • 45.
  • 46.
  • 47.
    When to useit • Sensitive information (Health care, Authentication) • Distributed System where perform request validation separately
  • 48.
    When not touse • Performance vs security
  • 49.
    Things to consider •WAF should not hold any keys or sensitive information • Use a secure communication channel • Auto scale • Endpoint IP address (when scaling application does the WAF know the new applications)
  • 50.
  • 51.
    Circuit Breaker Pattern •To handle faults that might take a variable amount of time to recover • When connecting to a remote service or resource
  • 52.
  • 53.
  • 55.
  • 56.
    When to useit • To prevent an application from trying to invoke a remote service or access a shared resource if this operation is highly likely to fail • Better user experience
  • 57.
    When not touse • Handling access to local private resources in an application, such as in-memory data structure • Creates an overhead • Not a substitute for handling exceptions in the business logic of your applications
  • 58.
    Libraries • Polly (http://www.thepollyproject.org/) •Netflix (Hystrix) https://github.com/Netflix/Hystrix/wiki
  • 59.
    Questions? Taswar Bhatti System SolutionsArchitect (Gemalto) Microsoft MVP http://taswar.zeytinsoft.com @taswarbhatti