scale12x

54
Greater Configuration Re-Use Service Oriented Design & TDD

Upload: kaiyzen

Post on 27-Jan-2015

105 views

Category:

Technology


0 download

DESCRIPTION

Talk from the Scale12x conference in Feb 2014

TRANSCRIPT

  • 1. Greater Configuration Re-Use Service Oriented Design & TDD

2. Overview Background & Motivations Why greater configuration re-use? Service Oriented Design Change Mgmt & TDD FuturesSocal Linux Conference 2014 2/21/20142 3. Background & Motivations Developer, PM Became interested in ops Focused on service architecture & delivery Started Consulting Looking how to leverage work across projectsSocal Linux Conference 2014 2/21/20143 4. 10K Ft. ViewSocal Linux Conference 2014 2/21/20144 5. Socal Linux Conference 2014 2/21/20145 6. Working on Distributed Melting PotsSocal Linux Conference 2014 2/21/20146 7. BIG DATASocal Linux Conference 2014 2/21/20147 8. Why greater configuration Re-Use?Socal Linux Conference 2014 2/21/20148 9. Unique snowflakesSocal Linux Conference 2014 2/21/20149 10. Greater Re-Use Leverage work/assets across projects & teams No matter how different, they are pretty similar Quicker development and release cycles Be more nimble/agile from infrastructure perspective Power in #s (leverage work of experts) Both external/internal to organizationsSocal Linux Conference 2014 2/21/201410 11. Desired State Completed Infrastructure Fully operating serviceSocal Linux Conference 2014 2/21/201411 12. Getting there is complexSocal Linux Conference 2014 2/21/201412 13. Everyone wants blocksSocal Linux Conference 2014 2/21/201413 14. Piece TogetherSocal Linux Conference 2014 2/21/201414 15. Developer Blocks FrameworksInfrastructureLanguagesSocal Linux Conference 2014 2/21/201415 16. Dev needs to solve a Problem?Socal Linux Conference 2014 2/21/201416 17. Ops Blocks InfrastrcutureLanguagesSocal Linux Conference 2014 2/21/201417 18. Ops needs to solve a Problem?Socal Linux Conference 2014 2/21/201418 19. Lets download my infrastructure puppet module install apache knife cookbook site download apacheSocal Linux Conference 2014 2/21/201419 20. Doh!Socal Linux Conference 2014 2/21/201420 21. Debug TimeSocal Linux Conference 2014 2/21/201421 22. Debug TimeSocal Linux Conference 2014 2/21/201422 23. Why meSocal Linux Conference 2014 2/21/201423 24. Service Oriented Design/DeliverySocal Linux Conference 2014 2/21/201424 25. Service Oriented Design/Deliv. Module/Component Service Topology/Assembly BenefitsSocal Linux Conference 2014 2/21/201425 26. Object Oriented Analogy Model driven approach lays a foundation for OO for infrastructure dev Objects mapping to (?Whats best terms?): Puppet classes/defs/resources Chef recipe/resources Nginx, Linux User, MySQL, ES, etc, etc Focus on objects not actions on objects ie: mysql not install_mysql Socal Linux Conference 2014 2/21/201426 27. Components == Objects Objects as components that expose an interface Modules/Cookbooks containing 1+ components Components expose available attributes Dependencies/Constraints locality (more later)Socal Linux Conference 2014 2/21/201427 28. Model ExampleSocal Linux Conference 2014 2/21/201428 29. Model ExampleSocal Linux Conference 2014 2/21/201429 30. BenefitsSocal Linux Conference 2014 2/21/201430 31. Benefits Externalized, easy human/machine readable (yaml/json) Introduce typed attributes (ie: port, log, etc) Clear dependencies/constraints for usage Interface compatibility Foundation for CompositionSocal Linux Conference 2014 2/21/201431 32. Assembly == Service TopologySocal Linux Conference 2014 2/21/201432 33. Assembly == Service ToplogySocal Linux Conference 2014 2/21/201433 34. Assembly Model definition describing a service instance Includes Attributes Nodes and components that go on them x-Component Dependencies App foo needs a database Constraints locality versionSocal Linux Conference 2014 2/21/201434 35. 1 vs. Many Topologies 1 Nailed Topology Static dev/test environments Prod that doesnt change much/at all Not leveraging/sharing x-org/externally Many Topologies You are vendor or OSS whos software can be run in many ways Fast moving, rapid iteration on architectures Multivariate testing important (more later) Socal Linux Conference 2014 2/21/201435 36. Assembly ModelSocal Linux Conference 2014 2/21/201436 37. Assembly ModelSocal Linux Conference 2014 2/21/201437 38. BenefitsSocal Linux Conference 2014 2/21/201438 39. Benefits Externalized, easy human/machine readable (yaml/json) Captures cross node dependencies Basis for network analysis and connectivity Testing testing testing.Socal Linux Conference 2014 2/21/201439 40. Change ManagementSocal Linux Conference 2014 2/21/201440 41. Change Management Upgrades to implementation Interface changes Attribute Defaults Attributes Added/removed Depedencies New topology variantsSocal Linux Conference 2014 2/21/201441 42. Test Driven DevelopmentSocal Linux Conference 2014 2/21/201442 43. Service Minded Testing LintUnitFunctional/Behavioral/IntegationSocal Linux Conference 2014 2/21/201443 44. Service Minded Testing LintUnitFunctional/Behavioral/IntegationSocal Linux Conference 2014 2/21/201444 45. Lint/Grammar Puppet Lint http://puppet-lint.com Foodcritic http://acrmp.github.io/foodcritic/ Study perspective language style guides Git post commit hooksSocal Linux Conference 2014 2/21/201445 46. Unit Testing Rspec Puppet http://rspec-puppet.com/ Chefspec http://https://github.com/sethvargo/chefspecSocal Linux Conference 2014 2/21/201446 47. Thats great, but is my SERVICE running!?!?!Socal Linux Conference 2014 2/21/201447 48. Enter Serverspec http://serverspec.org/Socal Linux Conference 2014 2/21/201448 49. ServerspecSocal Linux Conference 2014 2/21/201449 50. ServerspecSocal Linux Conference 2014 2/21/201450 51. ServerspecSocal Linux Conference 2014 2/21/201451 52. Futures Auto-generation Serverspec verifications Monitoring Log Mgmt/Aggregration Deeper integration with load tests/verifications Containers to provide isolation and portability Deep networking integration in component & service model Socal Linux Conference 2014 2/21/201452 53. Recap We want blocks to pull off the shelf and Formalizing notion of component interface Formalizing notion of service topology Managing changes at different levels Implementation Interface toplogy designSocal Linux Conference 2014 2/21/201453 54. Thank you Nate DAmico @kaiyzen [email protected] http://slideshare.com/kaiyzen/scale12x http://github.com/rnp/scale12xSocal Linux Conference 2014 2/21/201454