Slide 1

Slide 1 text

T o m e r G a b e l Kraków, 15-17 May 2019 // Architecting for a Better Future T o m e r G a b e l Tel Aviv, 26-27 Dec 2021 //

Slide 2

Slide 2 text

Prelude

Slide 3

Slide 3 text

Yay handwaving! ”Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled.” - Eoin Woods “Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.” – Grady Booch ”Architecture is about the important stuff. Whatever that is.” - Ralph Johnson 01 02 03

Slide 4

Slide 4 text

Yay handwaving! “Architect: Someone who knows the difference between that which could be done and that which should be done.” - Larry McVoy “A software architect is a software development expert who makes high-level design choices and tries to enforce technical standards, including software coding standards, tools, and platforms.” - Wikipedia 01 02

Slide 5

Slide 5 text

Prelude • The systems we build are getting more complex • Taming this complexity is nontrivial! • We all know we need architects… • ... but we can’t agree on what they do • … or how to measure their success • … or how to hire and retain them

Slide 6

Slide 6 text

Prelude • The systems we build are getting more complex • Taming this complexity is nontrivial! • We all know we need architects… • ... but we can’t agree on what they do • … or how to measure their success • … or how to hire and retain them Not gonna talk about these (they’re artifacts anyway)

Slide 7

Slide 7 text

Prelude • The systems we build are getting more complex • Taming this complexity is nontrivial! • We all know we need architects… • ... but we can’t agree on what they do • … or how to measure their success • … or how to hire and retain them This is our focus today

Slide 8

Slide 8 text

Who or what am I? • Freelance software engineer • Been around for way too long • From the stone-age… • … to the silicon-age… • … to whatever-age • Up and down the stack • For a bunch of companies you’ve heard of • Can we move on, please?

Slide 9

Slide 9 text

A tale of two Bobs

Slide 10

Slide 10 text

“System architects”

Slide 11

Slide 11 text

Evil Bob

Slide 12

Slide 12 text

Indifferent Bob

Slide 13

Slide 13 text

•Indifferent Bob works for Initrode •Loves diagrams •Writes documents •Talks too much

Slide 14

Slide 14 text

•Evil Bob works for Initech •Doesn’t code •Will only use UML •Manages a team •Sits on Architecture Review Board

Slide 15

Slide 15 text

What’s Amiss?

Slide 16

Slide 16 text

Architecture != Development • Software development is about value delivery • Architecture can involve everything else: • Compute: hardware, OS, containerization… • Platform: messaging, discovery, load balancing… • Operations: log aggregation, metrics, alerts… • Is this sufficient, though?

Slide 17

Slide 17 text

This is architecture.

Slide 18

Slide 18 text

AWS (Primary Region) Primary Cluster Remote Region Replica Cluster Operational Region Development Cluster NGINX Vault Consul HAProxy httpd httpd httpd MySQL 1 (primary) MySQL 1 (replica) MariaDB Trip Pool Grafana ELK Grafana NGINX ELK Redis Grafana NGINX Vault Consul HAProxy httpd Disaster Recovery Zone Master 1 (delayed) MySQL 2 (primary) Master 2 (delayed) ELK Redis Grafana MySQL 1 MySQL 2 MySQL 2 (replica) MySQL 2 (replica) Vault Consul ELK HAProxy httpd NGINX Redis Grafana This is also architecture.

Slide 19

Slide 19 text

Even this is, you guessed it, architecture. Source: Architecture of SQLite (public domain)

Slide 20

Slide 20 text

Your point, sir? • Architecture is contextual. • Zoom in or out a bit and the picture changes dramatically. • Architecture exists in all software. • It’s in the way modules are organized; • It’s in the way services communicate; • It’s in the way applications are built up • Architecture can be emergent. • You either plan for it (hard), retrofit it (expensive) or stick it on with duct tape

Slide 21

Slide 21 text

Architecture is the art of layering.

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Good Architecture: Unix Pipes • The Unix Philosophy, abriged version: 1. Write programs that do one thing and do it well. 2. Write programs to work together. 3. Write programs to handle text streams, because that is a universal interface. • Plenty of criticism out there, some valid • … but it stands the test of time!

Slide 24

Slide 24 text

Good Architecture: Unix Pipes • ”The Unix philosophy” is epitomized in pipes • Pipes are all about composition • Why were they so successful? • Byte streams can carry anything • Text isn’t implied, neither is structure • Pipes only provide one layer • ... and avoid introducing up- or downstream contraints! tar gzip curl

Slide 25

Slide 25 text

What can we learn? • Very simple concepts • Very easy to explain • Limited surface area (lots of room to innovate) In short: coherent boundaries I approve this message

Slide 26

Slide 26 text

Counterexample • An ORM, by definition: • Understands objects • Understands the DB schema • Integrates with the underlying VM (relations, property access) • Manages DB connectivity (transactions, lazy loads) • That’s an awful lot! Source: Red Hat, “Hibernate architecture documentation”

Slide 27

Slide 27 text

Counterexample: ORM • Why is ORM “bad”? • Creates coupling between very different concepts • Debugging can be hard • Scaling can be hard • Lots of pitfalls and nuances (transactions, DB types, relations…) • ORMs operate across many layers at once • ORMs aim to blur the boundaries between layers

Slide 28

Slide 28 text

KO

Slide 29

Slide 29 text

Software architecture is the software engineering discipline of predicting and enabling the future evolution of the system.

Slide 30

Slide 30 text

A software architect’s job is to minimize the impact of today’s design decisions on future evolution of the system.

Slide 31

Slide 31 text

What does that mean, exactly? We define disciplines by their desired outcome • Programmers implement the system program • QA provides the framework and tools to assure quality • Operations provide the means to run the system in the field What is the desired outcome of a software architect? • If software architecture is about layering • And good layering is about coherent boundaries • It follows that…

Slide 32

Slide 32 text

Two core skills for an architect Interpolation Selecting solutions that meet known requirements A skill that is taught: 1. Training 2. Postmortems 3. Blogs/conferences/etc. Extrapolation Reasoning about downstream effects A skill that is learned: 1. Experience 2. Introspection 3. Aptitude

Slide 33

Slide 33 text

[email protected] @tomerg https://github.com/holograph Thank you for listening Questions? The fineprint Office Space the Bobs were created by Mike Judge and subsequently made into a movie by 20th Century Fox. If you haven’t seen the movie, it’s fine: you still have you whole life ahead of you. But is it worth living, really, without having seen Office Space? That point is subject of some debate among philosophers specializing in the European Dark Ages, however it is so far removed from my experience I won’t even pretend to have an educated opinion. Instead, I offer you this: the TL;DR version is that you should watch Office Space. Really. Just go. Watch it already. It’s good for you.