Slide 1

Slide 1 text

Squaring the circle Mastering the next level of architectural design Uwe Friedrichsen – codecentric AG – 2006-2022

Slide 2

Slide 2 text

Uwe Friedrichsen Works @ codecentric https://twitter.com/ufried https://www.speakerdeck.com/ufried https://ufried.com/

Slide 3

Slide 3 text

The “good ol’ times” Software architectural work until 2008

Slide 4

Slide 4 text

Typical setting (1/2) • Many internally used systems • Relatively few external systems • Mostly monolithic systems • Rich frontend apps or server-side rendered web pages • On-premises data centers

Slide 5

Slide 5 text

Typical setting (2/2) • Perimeter-based security • Pre-definable load patterns • “IT is a cost center” thinking • Effects of distribution handled by infrastructure

Slide 6

Slide 6 text

Typical mindset • “Single process, single thread” thinking • Availability demands handled by infrastructure • Security demands handled by infrastructure • Project-scope thinking • Integration as 2nd class citizen

Slide 7

Slide 7 text

Architectural work (1/3) • Design solution that satisfies project needs • Project cost efficiency as dominant design driver • Focus on system structure • Layered architecture was predominant

Slide 8

Slide 8 text

Architectural work (2/3) • Availability, security, scaling, … left to Ops • Standard, often mandatory solutions offered by Ops • Often respective NFRs determined by solutions offered • Performance as 2nd class citizen • Usability and architecture completely unrelated • Integration as 2nd class citizen • Either solved ad hoc or via centralized integration solution

Slide 9

Slide 9 text

Architectural work (3/3) • Core area of tension • Solution maintainability and changeability • Project cost efficiency • Speed of change usually constrained by project lead times • Typically measured in months or years

Slide 10

Slide 10 text

Architectural work summary • Dominated by project constraints • Focus on system structure • Required architectural work quite well understood • At least in theory • Still not easy in practice • Many solutions from that time as witnesses

Slide 11

Slide 11 text

Focus on structure Core area of tension Changeability Maintainability Flexibility Project efficiency Opposing goals Amplifying goals Usability Detached topic Performance Minor design consideration Availability Scalability Reliability Confidentiality Integrity Security “Ops problem” Dominant solution driver Portability Interoperability Minor design considerations

Slide 12

Slide 12 text

Architectural work typically meant „Create building block design and decide technology” * * within the predefined constraints

Slide 13

Slide 13 text

The age of confusion Software architectural work between 2008 and 2015

Slide 14

Slide 14 text

The age of confusion • The IT world went “Agile” • Developers were “The new kingmakers” * • Countermovement to the architecture-centric movement of the 1990s * https://www.oreilly.com/library/view/the-new-kingmakers/9781449368036/

Slide 15

Slide 15 text

“We do not need architects. The dev team is the architect.” “We do not need architectural work. Architecture emerges.”

Slide 16

Slide 16 text

IT changed a lot in those days

Slide 17

Slide 17 text

Architectural work mostly stood still

Slide 18

Slide 18 text

Focus on structure Core area of tension Changeability Maintainability Flexibility Project efficiency Opposing goals Amplifying goals Usability Detached topic Performance Minor design consideration Availability Scalability Reliability Confidentiality Integrity Security “Ops problem” Dominant solution driver Portability Interoperability Minor design considerations We were still here

Slide 19

Slide 19 text

Or sometimes even worse “From 0 to legacy in just 6 months”

Slide 20

Slide 20 text

The present Software architectural work since 2015

Slide 21

Slide 21 text

Novel drivers (1/3) • Cloud revolution * • Completely new solution options • Pay per use • Elasticity • Moving data around has a price tag • Availability and reliability on non-HA hardware * https://www.ufried.com/blog/public_cloud_revolution_1/

Slide 22

Slide 22 text

Changeability Maintainability Usability Performance Availability Scalability Reliability Confidentiality Integrity Security Portability Interoperability Flexibility Cloud revolution Project efficiency Opposing goals Amplifying goals Suitability New solution options Pay per use Interoperability Data flow Economic efficiency Data flow Elasticity Elasticity Scalability Resilience Availability Reliability Scale out on non-HA hardware Project efficiency

Slide 23

Slide 23 text

Novel drivers (1/3) • Cloud revolution • Big data & ML/AI • Huge amounts of data to store, move and process • Data flow becoming 1st class citizen of system design • Polyglot persistence • MLaaS/AIaaS

Slide 24

Slide 24 text

Changeability Maintainability Usability Performance Confidentiality Integrity Security Portability Flexibility Big data & ML/AI Project efficiency Suitability Data flow Resilience Project efficiency Economic efficiency Move, store & process data Mlaas/AIaas Economic efficiency Availability Scalability Reliability Interoperability Performance Process & move data Polyglot persistence Suitability Processing options Interoperability Move data Scalability Move, store & process data Store data Reliability Availability

Slide 25

Slide 25 text

Novel drivers (1/3) • Cloud revolution • Big data & ML/AI • Mobile devices • Completely new interaction patterns • Various novel device classes • Less reliable and often limited connectivity • Unpredictable load patterns

Slide 26

Slide 26 text

Changeability Maintainability Usability Performance Confidentiality Integrity Security Portability Flexibility Mobile devices Project efficiency Suitability Resilience Project efficiency Economic efficiency Availability Scalability Reliability Interoperability Performance Limited battery Scalability Unpredictable usage patterns Suitability New interaction patterns Usability Increased user expectations Adaptability Novel device classes Portability Novel attack vectors Security Confidentiality Integrity Availability Dependability Less reliable connectivity Versatility Manifold subclasses Interoperability Less reliable connectivity Changeability Increased user expectations

Slide 27

Slide 27 text

Novel drivers (1/3) • Cloud revolution • Big data & ML/AI • Mobile devices • IoT & Edge • Most of the effects of mobile devices “to the square” • Solutions enter safety-critical domains

Slide 28

Slide 28 text

Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Integrity Security Portability Flexibility IoT & Edge Project efficiency Suitability Resilience Project efficiency Economic efficiency Availability Scalability Reliability Interoperability Performance Limited battery Suitability New interaction patterns Usability Novel device classes Portability Novel attack vectors Security Confidentiality Integrity Availability Dependability Less reliable connectivity Versatility Manifold subclasses Interoperability Less reliable connectivity Adaptability Safety Safety-critical applications

Slide 29

Slide 29 text

Novel drivers (2/3) • Distributed systems • Highly connected, distributed system landscape • Service-based applications, … • Intricate new failure types need to be handled • Effects of distribution penetrate to the application level • Near-realtime response expectations intensify effects

Slide 30

Slide 30 text

Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Integrity Security Portability Flexibility Distributed systems Project efficiency Resilience Project efficiency Economic efficiency Availability Scalability Performance Latency Confidentiality Integrity Adaptability Safety Reliability Remote communication Security Safety Availability Dependability Distributed failure modes Reliability Resilience Interoperability Suitability Communication flow Usability Suitability Communication flow Interoperability Observability Distributed failure modes

Slide 31

Slide 31 text

Novel drivers (2/3) • Distributed systems • Near-realtime • Batch updates turn into online updates • Complex web of continuously communicating systems • Integration becomes first-class citizen • Near-realtime insights feedback loop • Intensifies effects of system distribution

Slide 32

Slide 32 text

Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Integrity Security Portability Flexibility Near-realtime Project efficiency Suitability Resilience Project efficiency Economic efficiency Availability Scalability Interoperability Performance Latency Confidentiality Integrity Adaptability Safety Reliability Availability Dependability Distribution failure modes Reliability Resilience Interoperability Integration as 1st class citizen Observability

Slide 33

Slide 33 text

Novel drivers (2/3) • Distributed systems • Near-realtime • 24x7 • Maintenance windows are gone • Overnight batch processing windows are gone • Upgrade/repair systems in-flight

Slide 34

Slide 34 text

Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Integrity Security Portability Flexibility 24x7 Project efficiency Suitability Resilience Project efficiency Economic efficiency Availability Scalability Interoperability Confidentiality Integrity Adaptability Safety Reliability Availability Dependability In-flight system upgrade/repair Reliability Observability In-flight system upgrade/repair Observability Batch windows gone Performance

Slide 35

Slide 35 text

Novel drivers (2/3) • Distributed systems • Near-realtime • 24x7 • Perimeter-less security • Trusted zones are gone: “The Internet is everywhere” • Remote work, BYOD, mobile devices, etc. intensify challenges • “Shift left security” mandatory

Slide 36

Slide 36 text

Observability Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Perimeter-less security Project efficiency Suitability Resilience Project efficiency Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability Observability Trusted zones gone Integrity Trusted zones gone Security Confidentiality

Slide 37

Slide 37 text

Novel drivers (3/3) • Digital transformation • “IT and business are the same side of the same coin; the other side are the market and your customers” • IT being integral part of all business offerings • IT being integral part of most customer interactions • IT enabling new, previously unthinkable business models • IT becoming indispensable part of business and private lives

Slide 38

Slide 38 text

Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Digital transformation Suitability Resilience Project efficiency Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability New business models Adaptability System lifecycle Products, not projects Economic efficiency Availability Dependability Integral part of business offerings Reliability Resilience Scalability Usability Suitability Integral part of customer interactions Integrity Security Confidentiality Safety Indispensable part of our lives Interoperability API-driven revenue streams Changeability New business models Flexibility Maintainability Human needs Socio-technical systems Affecting humans

Slide 39

Slide 39 text

Novel drivers (3/3) • Digital transformation • Post-industrial markets • Supply exceeds demand by far à customer-driven markets • Fast adoption to changing demands becomes vital • Lead and cycle times become essential • Continuous feedback on all levels needed • More complex multidisciplinary collaboration needed

Slide 40

Slide 40 text

Human needs Socio-technical systems Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Post-industrial markets Suitability Resilience Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability Fast adoption Adaptability Human needs Socio-technical systems Multidisciplinary collaboration Changeability Fast adoption Flexibility Maintainability Observability Observability Continuous feedback Usability Suitability Customer-driven market System lifecycle

Slide 41

Slide 41 text

Novel drivers (3/3) • Digital transformation • Post-industrial markets • Exploding complexity • Probably the 2nd biggest challenge of the upcoming years • IT drowns in complexity and every day it becomes worse • Due to shortsighted thinking • Due to important decisions not made

Slide 42

Slide 42 text

Gregor’s Law: Excessive complexity is nature’s punishment for organizations that are unable to make decisions. -- Gregor Hohpe Source: https://architectelevator.com/architecture/it-complexity/

Slide 43

Slide 43 text

Human needs Socio-technical systems Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Exploding complexity Suitability Resilience Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability System lifecycle Simplicity Tackling complexity System empathy System viability and collaboration

Slide 44

Slide 44 text

Novel drivers (3/3) • Digital transformation • Post-industrial markets • Exploding complexity • Ecological sustainability • Probably the biggest challenge of the upcoming years • Making sustainability 1st class citizen of system design • Counterforce to many other forces

Slide 45

Slide 45 text

Human needs Socio-technical systems Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Ecological sustainability Suitability Resilience Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability System lifecycle Fostering sustainability Sustainability Simplicity System empathy

Slide 46

Slide 46 text

Finally, let us add the amplifying and opposing forces

Slide 47

Slide 47 text

Human needs Socio-technical systems Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Opposing goals Amplifying goals Suitability Resilience Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability System lifecycle Simplicity System empathy Sustainability Project efficiency … and many more

Slide 48

Slide 48 text

All quality goals need to be balanced according to the given needs * * needs of different stakeholder groups, short-term and long-term needs, amplifying vs. opposing goals, …

Slide 49

Slide 49 text

All influencing forces and the derived quality goals vastly influence the resulting solution architecture

Slide 50

Slide 50 text

Observations What has changed in the last decade?

Slide 51

Slide 51 text

Human needs Socio-technical systems Integrity Integrity Dependability Versatility Changeability Maintainability Usability Performance Confidentiality Security Portability Flexibility Opposing goals Amplifying goals Suitability Resilience Economic efficiency Availability Scalability Interoperability Confidentiality Adaptability Safety Reliability Observability System lifecycle Simplicity System empathy Sustainability Project efficiency Focus on structure not sufficient anymore Data flow Communication flow Limited view on projects not sufficient anymore Economic perspective over lifecycle as 1st class citizen Prevalent complexity of IT system landscapes requires new design approaches Exploding number of device classes Integration as 1st class citizen Thinking in feedback loops Holistic view required. Focus on software alone not sufficient anymore Novel drivers of future system design. Counterforces to many other design forces Enterprise software affects safety-critical systems more and more Security as 1st class citizen in design (“Shift left security”) Huge new challenges due to highly interconnected distributed system landscapes (“microservices”) Unpredictable load patterns Massively increased user expectations influence system design Technology evolution provides new options and changes what a feasible solution is

Slide 52

Slide 52 text

Lots of new forces. Lots of new tasks and challenges. Partially completely novel forces and resulting tasks.

Slide 53

Slide 53 text

Reinforces long know, yet still unsolved problems

Slide 54

Slide 54 text

Unsolved problems • Getting functional design right (“modularization”) • Pondering behavior and data flow, not just structure • Systemic thinking instead of local optimizations • Balancing long-term and short-term effects • Understanding distributed systems • …

Slide 55

Slide 55 text

This is a completely different game .. … than that

Slide 56

Slide 56 text

Useful side effect It is acceptable again to talk about architecture * * and use words like “architect” or “architectural work” … ;)

Slide 57

Slide 57 text

Moving on Addressing the new challenges

Slide 58

Slide 58 text

The collaboration perspective

Slide 59

Slide 59 text

“Emergent architecture” is dead

Slide 60

Slide 60 text

Tackling the challenges of today requires hard work and careful decision making

Slide 61

Slide 61 text

Does that mean the “all-knowing” architect is back?

Slide 62

Slide 62 text

No! But you need the skills and someone who drives the architectural work that needs to be done.

Slide 63

Slide 63 text

Even the smartest architect imaginable will not be able to address all these challenges alone

Slide 64

Slide 64 text

In the end, architectural work always is a team effort

Slide 65

Slide 65 text

Does that mean the BDUF * is back? * Big Design UpFront

Slide 66

Slide 66 text

No! But you need to have an idea where the goal is before you start running.

Slide 67

Slide 67 text

Implementation without any upfront architectural work Implementation with some upfront architectural work

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

Sometimes, a new or previously undetected requirement may take us by surprise

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

But basically, your architecture will evolve over time

Slide 73

Slide 73 text

No content

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

Never forget Gall’s Law

Slide 77

Slide 77 text

“A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.” -- John Gall Source: John Gall, "Systemantics", 1975

Slide 78

Slide 78 text

The skills perspective

Slide 79

Slide 79 text

Learn about architectural work • Understand the problem from all perspectives • Find alternative solution options • Evaluate the trade-offs • Help stakeholders make best decisions possible

Slide 80

Slide 80 text

Improve your RE skills • Need to understand demands and consequences • Impeded by widespread division-of-labor approach • Help find requirements that do not harm the design • Often, alternatives with same outcome are possible • If not, you need to change the design of course • Uncover the actual “needs” behind the “wants” • Helps to avoid lots of accidental complexity

Slide 81

Slide 81 text

Learn better functional design • Especially master the foundations of good design • “Loose coupling, high cohesion” & “separation of concerns” • “Information hiding” especially with respect to APIs • Domain-driven design may be a useful starting point • Good design skills are more relevant than ever • Affect understandability, changeability and extensibility • Affect usability, stability and acceptance at API level • Affect robustness, availability and scalability at runtime

Slide 82

Slide 82 text

“I would advise students to pay more attention to the fundamental ideas rather than the latest technology. The technology will be out-of-date before they graduate. Fundamental ideas never get out of date.” -- David L. Parnas (http://www.sigsoft.org/SEN/parnas.html)

Slide 83

Slide 83 text

Embrace distributed systems “(Almost) every system is a distributed system” -- Chas Emerick “Everything fails, all the time” -- Werner Vogels • Understand the non-determinism of distributed systems • “Memory, guesses and apologies” & promise theory • Understand that infrastructure cannot guarantee robustness

Slide 84

Slide 84 text

Help people understand software • Not comparable to physical goods • Needs to be changed after initial release to keep its value • Software development is design, not shop floor assembly • Extreme malleability of software can turn into a curse • Invisibility makes it very hard to grasp “software”

Slide 85

Slide 85 text

Understand the new challenges • Simplicity – tackling ever-growing complexity • System empathy – accepting heterogeneity • Dependability – making sure we all can rely on IT • Resilience – being prepared for the unexpected • Safety – dealing with the growing blast radius • Security – indispensable for dependable system • Sustainability – reducing the ecological footprint of IT

Slide 86

Slide 86 text

Wrap-up

Slide 87

Slide 87 text

Wrap-up • Architectural challenges have changed a lot • Complexity went up significantly • New counterforces have emerged • Decision making has become a lot more demanding • Updated perception of architectural work needed • New collaboration modes required • Different skills have become vital

Slide 88

Slide 88 text

"Ultimately, design is a tool to enhance our humanity” -- Ilse Crawford

Slide 89

Slide 89 text

Uwe Friedrichsen Works @ codecentric https://twitter.com/ufried https://www.speakerdeck.com/ufried https://ufried.com/