2015 dwx - komponenten und konsequenzen

Click here to load reader

Post on 12-Aug-2015




4 download

Embed Size (px)


  1. 1. danielfisher.com Daniel Fisher Komponenten und Konsequenzen Daniel Fisher | [email protected]
  2. 2. danielfisher.com danielfisher.com Developer, Architect, Coach, Trainer lennybacon.com Blog Justcommunity.de Mit-Grnder und Vorstand nrwconf.de Mit-Grnder und Organisator twitter.com @lennybacon Daniel Fisher
  3. 3. danielfisher.com EFFICIENT COMMUNICATION
  4. 4. danielfisher.com No more monoliths https://www.flickr.com/photos/senorwences/2366892425
  5. 5. danielfisher.com https://www.flickr.com/photos/inju/2647397230
  6. 6. danielfisher.com Change must be cheap https://www.flickr.com/photos/smull/432813187
  7. 7. danielfisher.com Feedback must be fast https://www.flickr.com/photos/thatguyfromcchs08/2300190277
  8. 8. danielfisher.com Component-based software engineering is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. http://en.wikipedia.org/wiki/Component-based_software_engineering
  9. 9. danielfisher.com It is a reuse-based approach to defining, implementing and composing loosely coupled independent components into systems. This practice aims to bring about an equally wide-ranging degree of benefits in both the short-term and the long-termfor the software itself and for organizations that sponsor such software. http://en.wikipedia.org/wiki/Component-based_software_engineering
  10. 10. danielfisher.com Sorry this is *NO hot shit*! The idea first became prominent with Douglas McIlroy at the NATO conference on software engineering in Garmisch, Germany, 1968
  11. 11. danielfisher.com http://enterprisecraftsmanship.com/2015/01/10/how-to-build-microservices-wrong What about micro services?
  12. 12. danielfisher.com Don't reinvent the wheel!
  13. 13. danielfisher.com Nuf bla bla! So whats a component?
  14. 14. danielfisher.com https://www.flickr.com/photos/[email protected]/8059145606
  15. 15. danielfisher.com Divide and Conquer
  16. 16. danielfisher.com
  17. 17. danielfisher.com Separation of Concerns Single Responsibility Clean Code
  18. 18. danielfisher.com https://www.flickr.com/photos/lynsey_wells83/11054897226
  19. 19. danielfisher.com
  20. 20. danielfisher.com Explicit boundaries Autonomous Shared schema and contract Compatibility through Policy
  21. 21. danielfisher.com Ensure separation Ndepend http://www.ndepend.com/
  22. 22. danielfisher.com Component Component Component Domain ServicesDomain Objects API APIDDDTEC Layers Value Objects Aggregate Root
  23. 23. danielfisher.com The only thing really hard is making things really easy
  24. 24. danielfisher.com https://www.flickr.com/photos/shardayyy/5711563136
  25. 25. danielfisher.com Dependencies Core Directory Data DataModel Diagnostics ComponentModel DataModel.Data
  26. 26. danielfisher.com https://www.flickr.com/photos/archivesnz/8759939806 Source Control Repositories
  27. 27. danielfisher.com Branch Strategy Branch for stability Commit for stability
  28. 28. danielfisher.com Usual Repository Class Library Test Sample Class Library Class LibrarySample Test Test Class Library Test Sample Class Library Class LibraryExecutableSample Class Library
  29. 29. danielfisher.com Component Repository Class Library Test Sample
  30. 30. danielfisher.com Pros You just work with what you need Separation of concerns from the beginning
  31. 31. danielfisher.com Cons There will be lots of repositories There will be multiple histories/logs
  32. 32. danielfisher.com Consequences The need for a flexible SCM Aggregated feeds of history/logs
  33. 33. danielfisher.com Flexible version control GIT
  34. 34. danielfisher.com Tests
  35. 35. danielfisher.com Pros You only see and maintain relevant tests Feedback is delivered faster
  36. 36. danielfisher.com Cons Any?
  37. 37. danielfisher.com Consequences You need to change the way you did it before?
  38. 38. danielfisher.com Monolith solution or too many tests? NCrunch.NET http://www.ncrunch.net/ Wallaby.JS http://wallabyjs.com/
  39. 39. danielfisher.com Daniel Fisher Builds
  40. 40. danielfisher.com Builds A project consist of multiple builds Per branch? Check-In Nightly Feature Team Release It really depends on your business strategy and team organization!
  41. 41. danielfisher.com Pros Build can be parallelized Feedback is delivered faster You see where it breaks
  42. 42. danielfisher.com Cons There will be lots of builds There will be even more build results
  43. 43. danielfisher.com Consequences Build Process that supports build trees https://en.wikipedia.org/wiki/Topological_sorting Aggregated overview of build results
  44. 44. danielfisher.com Build Servers Good question!
  45. 45. danielfisher.com
  46. 46. danielfisher.com SOS
  47. 47. danielfisher.com Build Scripts https://www.flickr.com/photos/frf_kmeron/3587872772
  48. 48. danielfisher.com Build Process Checkout-Sources Generate-Code Set-Version Compile-Code Resolve-Dependencies Sign-Output Package-Output Publish-Package Analyze-Output Document-Output Test-Output Deploy-Package Test-Deployment Test-Integration
  49. 49. danielfisher.com Rake, Fake, Workflow
  50. 50. danielfisher.com IMHO Until you don't build value by writing build scripts avoid it
  51. 51. danielfisher.com Package Publication https://www.flickr.com/photos/leshaines123/5422165409
  52. 52. danielfisher.com Latest & Greatest vs. Old & Conservative https://www.flickr.com/photos/thomasletholsen/11139022726
  53. 53. danielfisher.com Package Publication NuGet NPM Bower
  54. 54. danielfisher.com Pros Orchestration of releases
  55. 55. danielfisher.com Cons Maintenance of multiple Package Repositories?
  56. 56. danielfisher.com Bug Tracking https://www.flickr.com/photos/goingslo/4523034319
  57. 57. danielfisher.com Software is not for itself! A Bug Tracker for each Product A category/tag for each project
  58. 58. danielfisher.com Roadmap https://www.flickr.com/photos/aigle_dore/5849712695
  59. 59. danielfisher.com Software is not for itself! A Feature plan for each Product A category/tag for each project
  60. 60. danielfisher.com Versions https://www.flickr.com/photos/jasonmichael/5396824640
  61. 61. danielfisher.com Software is not for support! One version number per Product for each Project