Slide 1

Slide 1 text

Democratising Software Architecture Eoin Woods Endava @eoinwoodz ICSA 2019, Hamburg, March 2019 1

Slide 2

Slide 2 text

Eoin Woods • Endava’s CTO, based in London • 10+ years in product dev - Bull, Sybase, InterTrust • 10 years in capital markets applications - UBS and BGI • Software engineer, then architect, now CTO • Software engineer in theory & practice (BSc, MSc, recently PhD) • Author, editor, speaker, community guy

Slide 3

Slide 3 text

3 DISCLAIMER These are my views based on my experience in the domains I have worked in. Others may differ in their views !

Slide 4

Slide 4 text

EVOLVING SOFTWARE ARCHITECTURE 4

Slide 5

Slide 5 text

5 ages of software Systems Intelligent Connected (2020s) Internet is the System (2010s) Internet Connected (2000s) Distributed Monoliths (1990s) Monolithic (1980s)

Slide 6

Slide 6 text

Architecture has changed too Computing Era Architecture Concern Monolithic Era => Structuring programs Distributed Monoliths Era => Architecture emerges Internet-Connected Era => Quality properties Internet-is-the-System Era => Architecture at speed Intelligent Connected Era => … ?

Slide 7

Slide 7 text

Historical Context • Central small group • Organisation of large pieces • Relatively static connections • Largely completed before implementation • Structures, qualities, stakeholders, technology choices 7 https://donmaclennan.com/

Slide 8

Slide 8 text

What has changed? 8 FLUID EVOLVING ARCHITECTURE DevOps Microservices Cloud Agile

Slide 9

Slide 9 text

What is the problem? 9 ? ? !! ? !! !! ? !!

Slide 10

Slide 10 text

Our traditional model is of less value • Constant evolution => less ”certainty” early in lifecycle • Less decided early in lifecycle => less value in thorough ”up front” architecture 10 • Autonomous teams => independent activity • Independent activity => constant parallel decision making • Constant decisions => architect overload => blocks progress

Slide 11

Slide 11 text

Is architecture still needed? 11 • Difficult quality attributes • Stakeholders don’t go away • Still have tradeoffs • Cross cutting concerns across many independent elements • BUT traditional ”structural” focus may need to change Cross-Cutting Concerns Tradeoffs Stakeholders Quality Attributes Yes!

Slide 12

Slide 12 text

WHAT PRACTITIONERS DO 12

Slide 13

Slide 13 text

Software Architecture in Practice • Empowered cross-functional teams • Less “architects” more “engineers” • Lightweight description – C4, ADRs • Code Analysis – dependency visibility • Runtime Analysis – dependency visibility, trends • Informal description – Wiki, PowerPoint, Visio • Modelling – occasional use of UML and Archimate 13

Slide 14

Slide 14 text

C4 Model • Simon Brown’s accessible 4-view model for software architecture • Context • Containers • Component • Code (class diagram - optional) • Optional Landscape, Dynamic and Deployment views • Structurizr tool • Widely recognized in industry 14 c4model.com

Slide 15

Slide 15 text

Architecture Decision Records • Old idea “rediscovered” by Michael Nygard in 2011 • Simple textual decision records using templates • Stored with the code • Nygard’s form: • Title, Status, Context, Decision & Consequences 15 thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions github.com/joelparkerhenderson/architecture_decision_record

Slide 16

Slide 16 text

Code Analysis • Generally static code analysis • Open source tools dominate • SonarQube in particular • “Code doesn’t lie” • Main architectural aspect is dependency analysis 16

Slide 17

Slide 17 text

Runtime Analysis • Response to dynamic nature of microservices • Distributed monitoring & tracing • Jaeger, Zipkin • Prometheus + Grafana • Log aggregation & analysis - ELK • AppDynamics & NewRelic • “Production is reality” 17

Slide 18

Slide 18 text

Visio, PowerPoint, Wiki, … • Where most ADs end up • Quality varies from useless to very valuable • Familiar & highly accessible • Usually custom syntax and semantics • Interpretation, precision and consistency often limited 18

Slide 19

Slide 19 text

Modelling: UML and Archimate • Rare choice today • Their genericity is a difficulty • UML good base for a DSL … but significant investment needed • Archimate useful for EA but not really solution or software arch • Tools can get in the way • Can actually be a communication barrier 19

Slide 20

Slide 20 text

A NEW APPROACH 20

Slide 21

Slide 21 text

21 Architecture is a skill not a role Principles, styles & patterns over structures Delegate & share wherever possible ”Little and often” (and adapt) Aim for “shared commons” Stream of decisions, not “one off” architecture Architecture Work in the New World

Slide 22

Slide 22 text

22 Architecture work in every sprint Decisions, principles, styles, patterns Deliver decisions as they are needed Form an inclusive architecture group Practical tests to validate architecture work Keep the architecture ”close to the code” Key Practices

Slide 23

Slide 23 text

23 RDCA (Risk & Cost Driven Architecture) Eltjo Poort, CGI eltjopoort.nl

Slide 24

Slide 24 text

Architecturally Evident Code • George Fairbanks • Code reflects the architecture • Names, structures line up • Changes code packaging • Can affect testing • Often “messes up” architecture! • Can be hard to check • ArchUnit 24

Slide 25

Slide 25 text

Common Problems • Sharing and managing architecture information (AKM) • Lack of artefacts => misunderstanding, knowledge loss • Understanding the system-wide view • Resistance to any design work (“we’re agile”) • Desire for a ”complete” architecture up front • Enterprise architects (!) 25

Slide 26

Slide 26 text

FOR RESEARCH 26

Slide 27

Slide 27 text

Research vs Practice Disconnection RESEARCH PRACTICE Models and theories Technologies, patterns, code Architecture as separate activity Architecture as dev activity Completed architecture Just enough architecture Solving idealised problems Focus on today’s delivery Papers, academic conferences Github, blogs, conferences Validation via small survey Validation by production operation 27

Slide 28

Slide 28 text

Some Suggestions WHILE PLANNING WHILE RESEARCHING Link to industry projects Prioritise flow of change to production Understand practice through OSS Codify ideas in code, patterns, templates Watch industry event topics* Be sensitive to adoption effort vs validation level Attend industry events* Be aware of standard tools Consider motivation & validation 28 * QCON, SATURN, DevTernity, JAX, NDC, …

Slide 29

Slide 29 text

TO CONCLUDE 29

Slide 30

Slide 30 text

Software development is changing: so will software architecture 30 Agile + DevOps change how we WORK Cloud + Containers change how we BUILD Less “Upfront” Architecture Quality Attributes, Tradeoffs, Stakeholders Flow Of Decisions & Guidance Changes to Architect’s Work Changes to Architect Training

Slide 31

Slide 31 text

Architect: From Purveyor of Wisdom … 31

Slide 32

Slide 32 text

… to Trusted Leader and Advisor 32

Slide 33

Slide 33 text

Eoin Woods Endava eoin.woods@endava.com @eoinwoodz 33 THANK YOU …