Slide 1

Slide 1 text

Software Architecture for Innovation Eberhard Wolff Fellow innoQ @ewolff

Slide 2

Slide 2 text

What is Innovation? > New products and services on the market > New sources of revenue

Slide 3

Slide 3 text

What is Innovation? €

Slide 4

Slide 4 text

How does innovation relate to software architecture?

Slide 5

Slide 5 text

What is software architecture?

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Software architecture implements desired quality attributes with technological means

Slide 9

Slide 9 text

Enable innovation… > Easy to change software > Measuring success (i.e. revenue)

Slide 10

Slide 10 text

Changeable software > Holy grail ever of software development > Through clean architecture > Good code quality

Slide 11

Slide 11 text

Continuous Delivery

Slide 12

Slide 12 text

[email protected] - 68d9d9b46d11128addca-20160331114327-5878-1 http://continuous-delivery-buch.de/

Slide 13

Slide 13 text

Delivery Pipeline

Slide 14

Slide 14 text

Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Many tests to minimize risk Infrastructure automation Fast Feedback

Slide 15

Slide 15 text

Jenkins + Build Pipeline Plug In

Slide 16

Slide 16 text

Commit Stage > Compile > Unit Tests > Static Code Analysis > Result: binary or installer

Slide 17

Slide 17 text

Acceptance Tests Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 18

Slide 18 text

UI Tests: Selenium > Easy to start > Natural for testers > Fragile > Loose semantics

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Capacity Tests Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 21

Slide 21 text

Capacity Tests > Automated > Realistic scenario and data > (Scaled-down) production- like system

Slide 22

Slide 22 text

Explorative Tests Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 23

Slide 23 text

Explorative Tests > No strict test plan > Focus on new features > …unforeseen behavior > Automation frees resources for manual testing

Slide 24

Slide 24 text

Release Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 25

Slide 25 text

Release > Automated! > No manual change to any system > Mitigate risk e.g. with Blue-green > Two environments > Install system on second in the background

Slide 26

Slide 26 text

Production Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 27

Slide 27 text

Production > Gather feedback > …by monitoring > ...and logging > Does the software perform as expected?

Slide 28

Slide 28 text

Continuous Delivery Software Production Quick& reliable Feedback

Slide 29

Slide 29 text

CD & Innovation > Make software easy to change > …by putting it into production quickly > ...and reliably > Less risk > Monitor success > ...by logging and monitoring

Slide 30

Slide 30 text

Continuous Delivery is one more tool to achieve desired quality attributes.

Slide 31

Slide 31 text

CD Quality Attributes > Architecture must enable Continuous Delivery > Easy to deploy & test > Independent deployment > Easy & fast Continuous Delivery Pipeline

Slide 32

Slide 32 text

Trading Quality Software Architecture Continuous Delivery Provide easy to deployment Provide changeability

Slide 33

Slide 33 text

What Software Architecture supports Continuous Delivery?

Slide 34

Slide 34 text

Microservice

Slide 35

Slide 35 text

http://microservices-buch.de/ http://microservices-book.com/

Slide 36

Slide 36 text

http://microservices-book.com/primer.html FREE!!!!

Slide 37

Slide 37 text

Server Server Microservice Definition > Independent deployment units > E.g. process, VMs, Docker containers > Any technology Micro Service Micro Service

Slide 38

Slide 38 text

Components Collaborate Micro Service Micro Service Link Data Replication REST Messaging

Slide 39

Slide 39 text

Microservices support Continuous Delivery!

Slide 40

Slide 40 text

Build Pipeline ECommerce System Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 41

Slide 41 text

Microservices ECommerce System 3rd party systems Database

Slide 42

Slide 42 text

Microservices 3rd party systems Database Order Catalog Billing Search

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

Microservice Pipeline > Independent deployment > Build pipeline per Microservice > Small > Easier to set up > Simpler (3rd party systems) > Faster Feedback: Less tests

Slide 45

Slide 45 text

Microservices enable innovation by Scaling Agile

Slide 46

Slide 46 text

Agility > Put software out quickly > …by implementing stories > Measure success > Provide feedback for next iteration > Hard to do for large applications

Slide 47

Slide 47 text

Deployment Monolith Deployment Monolith Stories Coordinating Releases Technical coordination

Slide 48

Slide 48 text

Add people until team too large – what now?

Slide 49

Slide 49 text

Conway‘s Law Architecture copies communication structures of the organization

Slide 50

Slide 50 text

Microservices > Team for each Microservice > Team responsible for business features > Ideal: Independent features

Slide 51

Slide 51 text

Microservices Microservice Stories Microservice Stories Microservice Stories Order Billing Search Release Release Release Technical coordination Technical coordination Technical coordination

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

Microservices enable innovation by self- organization

Slide 54

Slide 54 text

Self Organization > Team can decide when to deploy into production > Team can decide on technologies > Total freedom?

Slide 55

Slide 55 text

Microservices enable innovation by delegating technical decision to teams

Slide 56

Slide 56 text

Conclusion

Slide 57

Slide 57 text

There are other ways to make software easily changeable.

Slide 58

Slide 58 text

Continuous Delivery > Continuous Delivery allows to put out new features quickly > ...and measure success > Microservices support Continuous Delivery

Slide 59

Slide 59 text

Microservices > Microservices allow each team to create new products > …put them in production > ...and see the effect on revenue > …with little coordination

Slide 60

Slide 60 text

Microservices > Microservices allow to do experiments > ...and remove failed experiments > Even with new or different technologies!

Slide 61

Slide 61 text

Not new! > Amazon 2006 > Teams > …build business services > …operate them > ...foundation: Amazon Cloud > ...(i.e. virtual machines) > Microservices + DevOps + Continuous Delivery

Slide 62

Slide 62 text

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/

Slide 63

Slide 63 text

Thank You! @ewolff