Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

8 cloud design patterns you ought to know - Update Conference 2018

237 views

Published on

8 Cloud Design Patterns presented at Update Conference Prague Nov 2018. https://www.updateconference.net/en/schedule

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

8 cloud design patterns you ought to know - Update Conference 2018

  1. 1. 8 Cloud Design Patterns you ought to know Taswar Bhatti System/Solutions Architect at Gemalto (Canada) Microsoft MVP
  2. 2. Ponder • For every 25 percent increase in problem complexity, there is a 100 percent increase in solution complexity. • There is seldom one best design solution to a software problem. • If cars were like software, they would crash twice a day for no reason, and when you called for service, they’d tell you to reinstall the engine.
  3. 3. Who am I • Taswar Bhatti – Microsoft MVP since 2014 • Global Solutions Architect/System Architect at Gemalto • In Software Industry since 2000 • I know Kung Fu (Languages)
  4. 4. What I am not
  5. 5. 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 • The Retry Pattern • The Strangler Pattern • Demo • Questions
  6. 6. Bad Design
  7. 7. Bad Design
  8. 8. Bad Design
  9. 9. Bad Design
  10. 10. Bad Design
  11. 11. Feature doesn’t make sense????
  12. 12. Anger
  13. 13. Bad day at work
  14. 14. Happy family
  15. 15. Next day at work
  16. 16. Ship it
  17. 17. Customer Feature didn’t make sense
  18. 18. Bad Design?
  19. 19. Itunes when I use it
  20. 20. 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.
  21. 21. External Configuration Pattern
  22. 22. 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
  23. 23. Typical Application
  24. 24. Storing Configuration in file
  25. 25. Multiple application
  26. 26. Problems • Configuration becomes part of deployment • Multiple applications share the same configuration • Hard to have access control over the configuration
  27. 27. External Configuration Pattern
  28. 28. 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
  29. 29. 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
  30. 30. Cloud Solution Offerings • Azure Key Vault • Vault by Hashicorp • AWS KMS • Keywhiz
  31. 31. Demo KeyVault
  32. 32. Cache Aside Pattern
  33. 33. 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.
  34. 34. Typical Application
  35. 35. Cache Aside Pattern
  36. 36. 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
  37. 37. When not to use • Don’t use it for data that changes very often
  38. 38. 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
  39. 39. Cloud Offerings • Redis (Azure and AWS) • Memcache • Hazelcast • Elastic Cache (AWS)
  40. 40. Federated Identity Pattern
  41. 41. 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
  42. 42. Typical Application
  43. 43. Problem
  44. 44. 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
  45. 45. Federated Identity Pattern
  46. 46. 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
  47. 47. When not to use it • You already have a single application and have custom code that allows you to login
  48. 48. 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
  49. 49. Cloud Offerings • Azure AD • Gemalto STA and SAS • Amazon IAM • GCP Cloud IAM
  50. 50. Valet Key Pattern
  51. 51. 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
  52. 52. Typical Application Client App Storage
  53. 53. Problem Client App Storage Client Client Client Client
  54. 54. Valet Key Pattern Client App Generate Token Limited Time And Scope Storage
  55. 55. 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
  56. 56. When not to use it • When you need to transform the data before upload or download
  57. 57. Cloud Offerings • Azure Blob Storage • Amazon S3 • GCP Cloud Storage
  58. 58. Gatekeeper Pattern
  59. 59. 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
  60. 60. Typical Application
  61. 61. Problem
  62. 62. Gatekeeper Pattern
  63. 63. When to use it • Sensitive information (Health care, Authentication) • Distributed System where perform request validation separately
  64. 64. When not to use • Performance vs security
  65. 65. 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)
  66. 66. Circuit Breaker Pattern
  67. 67. Circuit Breaker Pattern • To handle faults that might take a variable amount of time to recover • When connecting to a remote service or resource
  68. 68. Typical Application
  69. 69. Problem
  70. 70. Client Circuit Breaker Api Closed State Timeout Closed State Open State Half Open State After X Retry Closed State
  71. 71. Circuit Breaker
  72. 72. 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
  73. 73. 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
  74. 74. Libraries • Polly (http://www.thepollyproject.org/) • Netflix (Hystrix) https://github.com/Netflix/Hystrix/wiki
  75. 75. Retry pattern
  76. 76. Retry Pattern • Enable an application to handle transient failures • When the applications tries to connect to a service or network resource • By transparently retrying a failed operation
  77. 77. Typical Application Network Failure
  78. 78. Retry Pattern • Retry after 2, 5 or 10 seconds
  79. 79. When to use it • Use retry for only transient failure that is more than likely to resolve themselves quickly • Match the retry policies with the application • Otherwise use the circuit break pattern
  80. 80. When not to use it • Don’t cause a chain reaction to all components • For internal exceptions caused by business logic • Log all retry attempts to the service
  81. 81. Libraries • Roll your own code • Polly (http://www.thepollyproject.org/) • Netflix (Hystrix) https://github.com/Netflix/Hystrix/wiki
  82. 82. Demo Retry
  83. 83. Strangler Pattern
  84. 84. Strangler Pattern • Incrementally migrate a legacy system • Gradually replacing specific pieces of functionality with new applications and services • Features from the legacy system are replaced by new system features eventually • Strangling the old system and allowing you to decommission it
  85. 85. Monolith Application
  86. 86. Strangler Pattern
  87. 87. When to use • Gradually migrating a back-end application to a new architecture
  88. 88. When not to use • When requests to the back-end system cannot be intercepted • For smaller systems where the complexity of wholesale replacement is low
  89. 89. Considerations • Handle services and data stores that are potentially used by both new and legacy systems. • Make sure both can access these resources side-by-side • When migration is complete, the strangler façade will either go away or evolve into an adaptor for legacy clients • Make sure the façade doesn't become a single point of failure or a performance bottleneck.
  90. 90. Questions? Taswar Bhatti System Solutions Architect (Gemalto) Microsoft MVP http://taswar.zeytinsoft.com @taswarbhatti
  91. 91. Credits • For the background • www.Vecteezy.com

×