Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Architecture for Innovation

Software Architecture for Innovation

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

Eberhard Wolff

April 19, 2016
Tweet

More Decks by Eberhard Wolff

Other Decks in Technology

Transcript

  1. Software architecture: set of structures needed to reason about a

    system, comprise software elements, relations among them, and properties of both.
  2. Software architecture of a system: set of structures needed to

    reason about a system, comprise software elements, relations among them, and properties of both.
  3. Changeable software > Holy grail ever of software development >

    Through clean architecture > Good code quality
  4. Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing

    Manual Explorative Testing Release Many tests to minimize risk Infrastructure automation Fast Feedback
  5. Commit Stage > Compile > Unit Tests > Static Code

    Analysis > Result: binary or installer
  6. UI Tests: Selenium > Easy to start > Natural for

    testers > Fragile > Loose semantics
  7. Behavior-driven Scenario: User registers successfully Context Event Expected outcome Given

    a new user with email [email protected] firstname Eberhard name Wolff When the user registers Then a customer with email [email protected] should exist And no error should be reported
  8. Capacity Tests > Automated > Realistic scenario and data >

    (Scaled-down) production- like system
  9. Explorative Tests > No strict test plan > Focus on

    new features > …unforeseen behavior > Automation frees resources for manual testing
  10. Release > Automated! > No manual change to any system

    > Mitigate risk e.g. with Blue-green > Two environments > Install system on second in the background
  11. Production > Gather feedback > …by monitoring > ...and logging

    > Does the software perform as expected?
  12. CD & Innovation > Make software easy to change >

    …by putting it into production quickly > ...and reliably > Less risk > Monitor success > ...by logging and monitoring
  13. CD Quality Attributes > Architecture must enable Continuous Delivery >

    Easy to deploy & test > Independent deployment > Easy & fast Continuous Delivery Pipeline
  14. Server Server Microservice Definition > Independent deployment units > E.g.

    process, VMs, Docker containers > Any technology Micro Service Micro Service
  15. 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
  16. Microservice Pipeline > Independent deployment > Build pipeline per Microservice

    > Small > Easier to set up > Simpler (3rd party systems) > Faster Feedback: Less tests
  17. Agility > Put software out quickly > …by implementing stories

    > Measure success > Provide feedback for next iteration > Hard to do for large applications
  18. Microservices > Team for each Microservice > Team responsible for

    business features > Ideal: Independent features
  19. Microservices Microservice Stories Microservice Stories Microservice Stories Order Billing Search

    Release Release Release Technical coordination Technical coordination Technical coordination
  20. Team can deploy without integration Changes can be deployed independently

    & quickly One or many Microservices per Team Synergy Microservices / Conway’s Law Order Search Billing Order Billing Search Technology decisions per team
  21. Self Organization > Team can decide when to deploy into

    production > Team can decide on technologies > Total freedom?
  22. Continuous Delivery > Continuous Delivery allows to put out new

    features quickly > ...and measure success > Microservices support Continuous Delivery
  23. Microservices > Microservices allow each team to create new products

    > …put them in production > ...and see the effect on revenue > …with little coordination
  24. Microservices > Microservices allow to do experiments > ...and remove

    failed experiments > Even with new or different technologies!
  25. Not new! > Amazon 2006 > Teams > …build business

    services > …operate them > ...foundation: Amazon Cloud > ...(i.e. virtual machines) > Microservices + DevOps + Continuous Delivery
  26. 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/