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.

Software Architecture for Innovation

1,387 views

Published on

How can software architecture help to enable innovation? Also discusses Continuous Delivery and Microservices.

Published in: Software
  • Be the first to comment

Software Architecture for Innovation

  1. 1. Software Architecture for Innovation Eberhard Wolff Fellow innoQ @ewolff
  2. 2. What is Innovation? > New products and services on the market > New sources of revenue
  3. 3. What is Innovation? €
  4. 4. How does innovation relate to software architecture?
  5. 5. What is software architecture?
  6. 6. Software architecture: set of structures needed to reason about a system, comprise software elements, relations among them, and properties of both.
  7. 7. Software architecture of a system: set of structures needed to reason about a system, comprise software elements, relations among them, and properties of both.
  8. 8. Software architecture implements desired quality attributes with technological means
  9. 9. Enable innovation… > Easy to change software > Measuring success (i.e. revenue)
  10. 10. Changeable software > Holy grail ever of software development > Through clean architecture > Good code quality
  11. 11. Continuous Delivery
  12. 12. eberhard.wolff@gmail.com - 68d9d9b46d11128addca-20160331114327-5878-1 http://continuous-delivery-buch.de/
  13. 13. Delivery Pipeline
  14. 14. Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Many tests to minimize risk Infrastructure automation Fast Feedback
  15. 15. Jenkins + Build Pipeline Plug In
  16. 16. Commit Stage > Compile > Unit Tests > Static Code Analysis > Result: binary or installer
  17. 17. Acceptance Tests Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  18. 18. UI Tests: Selenium > Easy to start > Natural for testers > Fragile > Loose semantics
  19. 19. Behavior-driven Scenario: User registers successfully Context Event Expected outcome Given a new user with email eberhard.wolff@gmail.com firstname Eberhard name Wolff When the user registers Then a customer with email eberhard.wolff@gmail.com should exist And no error should be reported
  20. 20. Capacity Tests Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  21. 21. Capacity Tests > Automated > Realistic scenario and data > (Scaled-down) production- like system
  22. 22. Explorative Tests Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  23. 23. Explorative Tests > No strict test plan > Focus on new features > …unforeseen behavior > Automation frees resources for manual testing
  24. 24. Release Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  25. 25. Release > Automated! > No manual change to any system > Mitigate risk e.g. with Blue-green > Two environments > Install system on second in the background
  26. 26. Production Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  27. 27. Production > Gather feedback > …by monitoring > ...and logging > Does the software perform as expected?
  28. 28. Continuous Delivery Software Production Quick& reliable Feedback
  29. 29. CD & Innovation > Make software easy to change > …by putting it into production quickly > ...and reliably > Less risk > Monitor success > ...by logging and monitoring
  30. 30. Continuous Delivery is one more tool to achieve desired quality attributes.
  31. 31. CD Quality Attributes > Architecture must enable Continuous Delivery > Easy to deploy & test > Independent deployment > Easy & fast Continuous Delivery Pipeline
  32. 32. Trading Quality Software Architecture Continuous Delivery Provide easy to deployment Provide changeability
  33. 33. What Software Architecture supports Continuous Delivery?
  34. 34. Microservice
  35. 35. http://microservices-buch.de/ http://microservices-book.com/
  36. 36. http://microservices-book.com/primer.html FREE!!!!
  37. 37. Server Server Microservice Definition > Independent deployment units > E.g. process, VMs, Docker containers > Any technology Micro Service Micro Service
  38. 38. Components Collaborate Micro Service Micro Service Link Data Replication REST Messaging
  39. 39. Microservices support Continuous Delivery!
  40. 40. Build Pipeline ECommerce System Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  41. 41. Microservices ECommerce System 3rd party systems Database
  42. 42. Microservices 3rd party systems Database Order Catalog Billing Search
  43. 43. Order Billing Customer Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release
  44. 44. Microservice Pipeline > Independent deployment > Build pipeline per Microservice > Small > Easier to set up > Simpler (3rd party systems) > Faster Feedback: Less tests
  45. 45. Microservices enable innovation by Scaling Agile
  46. 46. Agility > Put software out quickly > …by implementing stories > Measure success > Provide feedback for next iteration > Hard to do for large applications
  47. 47. Deployment Monolith Deployment Monolith Stories Coordinating Releases Technical coordination
  48. 48. Add people until team too large – what now?
  49. 49. Conway‘s Law Architecture copies communication structures of the organization
  50. 50. Microservices > Team for each Microservice > Team responsible for business features > Ideal: Independent features
  51. 51. Microservices Microservice Stories Microservice Stories Microservice Stories Order Billing Search Release Release Release Technical coordination Technical coordination Technical coordination
  52. 52. Team can deploy without integration Changes can be deployed independently & quickly One or many Microservices per Team Synergy Microservices / Conway’s Law Order SearchBilling Order Billing Search Technology decisions per team
  53. 53. Microservices enable innovation by self- organization
  54. 54. Self Organization > Team can decide when to deploy into production > Team can decide on technologies > Total freedom?
  55. 55. Microservices enable innovation by delegating technical decision to teams
  56. 56. Conclusion
  57. 57. There are other ways to make software easily changeable.
  58. 58. Continuous Delivery > Continuous Delivery allows to put out new features quickly > ...and measure success > Microservices support Continuous Delivery
  59. 59. Microservices > Microservices allow each team to create new products > …put them in production > ...and see the effect on revenue > …with little coordination
  60. 60. Microservices > Microservices allow to do experiments > ...and remove failed experiments > Even with new or different technologies!
  61. 61. Not new! > Amazon 2006 > Teams > …build business services > …operate them > ...foundation: Amazon Cloud > ...(i.e. virtual machines) > Microservices + DevOps + Continuous Delivery
  62. 62. Not radical! > Developer Anarchy is the radical approach. > No management > Programmers driven by business KPIs (Key Performance Indicators) > http://www.se-radio.net/2016/03/se-radio- episode-253-fred-george-on-developer- anarchy/
  63. 63. Thank You! @ewolff

×