Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Raquel Guimaraes- Third party infrastructure as code

175 Aufrufe

Veröffentlicht am

While implementing cloud Infrastructure as Code you might have come across the problem of dealing with third-party resources. This is most common in complex environments where most of the resources live in a cloud provider (GCP or AWS for example) and there are some SaaS solutions to integrate with (Datadog and Pingdom for example). In this talk we will expose the problem and explain a solution that is currently being used by one of our key clients in Spain.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

Raquel Guimaraes- Third party infrastructure as code

  1. 1. THIRD-PARTY INFRASTRUCTURE AS CODE Raquel Guimar�es
  2. 2. 2 ABOUT ME
  3. 3. A story in four parts 3 The Context The Problem The Idea The Solution
  4. 4. THE CONTEXT
  5. 5. THE CONTEXT 5
  6. 6. THE CONTEXT 6
  7. 7. THE CONTEXT 7
  8. 8. THE CONTEXT 8
  9. 9. THE CONTEXT 9
  10. 10. THE CONTEXT 10
  11. 11. THE PROBLEM
  12. 12. THE PROBLEM Multiple third-party (SaaS) solutions to configure 12
  13. 13. THE PROBLEM Multiple third-party (SaaS) solutions to configure 13 Does that even count as infrastructure?
  14. 14. THE PROBLEM Multiple third-party (SaaS) solutions to configure 14 Does that even count as infrastructure? Setup via the GUI
  15. 15. THE PROBLEM Multiple third-party (SaaS) solutions to configure 15 Does that even count as infrastructure? Setup via the GUI Running on CIs and manually Setup via ad hoc scripts
  16. 16. THE IDEA
  17. 17. THE IDEA Recognize the patterns
  18. 18. THE IDEA Recognize the patterns APIs and SDKs
  19. 19. THE IDEA Recognize the patterns Reuse existing scripts APIs and SDKs
  20. 20. THE IDEA Recognize the patterns Reuse existing scripts Custom solution? APIs and SDKs
  21. 21. THE SOLUTION
  22. 22. THE SOLUTION 22 CloudFormation Custom Resource
  23. 23. { "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MyDashboard" : { "Type": "Custom::Dashboard", "Properties" : { "ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource", "sampleAttribute" : "sampleAttributeValue", "sampleArrayAttribute" : [ "3", "2", "4" ], "sampleObjAttribute" : { "sampleAttribute" : "sampleAttribute", } } } }, "Outputs" : { "topItem" : { "Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] } } } } THE SOLUTION: SIDE NOTE 23 CloudFormation Custom Resource
  24. 24. { "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MyDashboard" : { "Type": "Custom::Dashboard", "Properties" : { "ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource", "sampleAttribute" : "sampleAttributeValue", "sampleArrayAttribute" : [ "3", "2", "4" ], "sampleObjAttribute" : { "sampleAttribute" : "sampleAttribute", } } } }, "Outputs" : { "topItem" : { "Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] } } } } THE SOLUTION: SIDE NOTE 24 CloudFormation Custom Resource
  25. 25. { "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MyDashboard" : { "Type": "Custom::Dashboard", "Properties" : { "ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource", "sampleAttribute" : "sampleAttributeValue", "sampleArrayAttribute" : [ "3", "2", "4" ], "sampleObjAttribute" : { "sampleAttribute" : "sampleAttribute", } } } }, "Outputs" : { "topItem" : { "Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] } } } } THE SOLUTION: SIDE NOTE 25 CloudFormation Custom Resource Indicates that this represents a custom resource
  26. 26. { "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MyDashboard" : { "Type": "Custom::Dashboard", "Properties" : { "ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource", "sampleAttribute" : "sampleAttributeValue", "sampleArrayAttribute" : [ "3", "2", "4" ], "sampleObjAttribute" : { "sampleAttribute" : "sampleAttribute", } } } }, "Outputs" : { "topItem" : { "Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] } } } } THE SOLUTION: SIDE NOTE 26 CloudFormation Custom Resource AWS resource that will answer the request Indicates that this represents a custom resource
  27. 27. THE SOLUTION 27 CloudFormation Custom Resource
  28. 28. THE SOLUTION 28 CloudFormation Custom Resource Service CF template
  29. 29. THE SOLUTION 29 CloudFormation Custom Resource CloudFormation
  30. 30. THE SOLUTION 30 CloudFormation Custom Resource SNS
  31. 31. THE SOLUTION 31 CloudFormation Custom Resource Custom Resource Lambda
  32. 32. THE SOLUTION 32 CloudFormation Custom Resource Third-Party resource
  33. 33. THE SOLUTION 33 CloudFormation Custom Resource
  34. 34. THE SOLUTION 34 CloudFormation Custom Resource Manipulates the third-party resource
  35. 35. THE SOLUTION 35 CloudFormation Custom Resource Manipulates the third-party resource Testable code!
  36. 36. THE SOLUTION 36 CloudFormation Custom Resource Manipulates the third-party resource Testable code! Easily enhanceable, custom DSLs
  37. 37. THE SOLUTION 37 CloudFormation Custom Resource Manipulates the third-party resource Testable code! Reusable entrypoint, if needed Easily enhanceable, custom DSLs
  38. 38. THE SOLUTION 38 CloudFormation Custom Resource Manipulates the third-party resource Testable code! State is managed by CloudFormation Reusable entrypoint, if needed Easily enhanceable, custom DSLs
  39. 39. THE SOLUTION 39 CloudFormation Custom Resource Manipulates the third-party resource Testable code! State is managed by CloudFormation Third-Party resources are defined together with the other resources Reusable entrypoint, if needed Easily enhanceable, custom DSLs
  40. 40. THE SOLUTION 40 CloudFormation Custom Resource
  41. 41. THANK YOU Raquel Guimar�es raquel.guimaraes@thoughtworks.com

×