designing systems that don't suck - amazon s3€¦ · • devops should never be an...
TRANSCRIPT
![Page 1: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/1.jpg)
Designing and Building Systems that Don’t Suck
Homeland of Linux Edition
![Page 2: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/2.jpg)
Contents
Who is Matt Lancaster and why is he talking to
me?
• Goals
• Patterns
• Components
• Tools
• Delivery
![Page 3: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/3.jpg)
Begin with Goals
![Page 4: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/4.jpg)
4
UNDERSTANDING GOALS
![Page 5: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/5.jpg)
5
• Understand the business goals of what you’re designing• Understand how these relate to technical goals• Quantify success, and ensure that the metric is well understood
UNDERSTANDING GOALS
![Page 6: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/6.jpg)
6
• Define a Minimum Viable Product (MVP) that aligns with business goals• As Technology Architects, you must be involved in design-time activities• Neither creative nor technology are special, both are needed
USE GOALS AS CONSTRAINTS & EARLY DAYS
![Page 7: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/7.jpg)
Establish Vision, Choose Patterns
![Page 8: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/8.jpg)
Vision Quest!
Before you truly begin the design process, take
some time to establish a vision for the whole
system. Take some time to write out a very
high level functional description of the system.
Take a page or two to write it out.
If you immediately knew what this was, you had as much fun as I did in university… or you’re a
botanist.
![Page 9: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/9.jpg)
9
• From the narrative you wrote, pay attention to the verbs, and how you’re describing interaction.• Does it feel Realtime? Asynchronous? Synchronous? Do actions feel like
moments in time? (e.g. Events)?• This will help determine interaction patterns
• Can you group the subjects into components?
VISIONING
![Page 10: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/10.jpg)
10
• DDD is a lost art. Rediscover it• What are your functional domains? How are they grouped?
DOMAIN DRIVEN DESIGN
![Page 11: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/11.jpg)
11
• You’re ready to begin selecting patterns, but be careful! • Don’t get too stuck in the bleeding edge, but also don’t get stuck in the
stone age• Consider constraints before selection• How do your domains interact, based on the above?• What business problems are you solving for?
PATTERNS: BE MODERN, BUT PRAGMATIC
![Page 12: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/12.jpg)
12
Example Biz Problem: Technology Limits User ExperienceCause: Legacy UI technologies, Fragmented UI
Solution Patterns: Client/API, Modular UI
Solution Details (NOT YET!)
Representative technologies
Booking LoyaltyOn-
Prem UIs
Modular UI
Separate SPAs
Common Framework
APIs
Content
![Page 13: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/13.jpg)
13
• Sketch out your high level system on a whiteboard• Use a thick marker… don’t allow yourself to be drawn into the details
WHITEBOARDING
![Page 14: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/14.jpg)
Story Time
Visioning together!
![Page 15: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/15.jpg)
• Be pragmatic
• Vision != Ideology
• Don’t make meaningless compromise
Trumpism of Architecture #1: “IF YOU’RE
GOING TO BE THIKING ANYWAY, THINK
YUUUGE”
Don’t Drink the Kool Aid - Fruit Punch Edition
![Page 16: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/16.jpg)
Drilling Down: Architecture Components
![Page 17: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/17.jpg)
17
• Not tool selection (yet)• Think in big terms (e.g. API, Event Stream, Data source) • Be Minimalist!• Component-based patterns reign supreme (e.g. Microservices)
COMPONENT SELECTION
![Page 18: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/18.jpg)
18
EXAMPLE COMPONENTS
![Page 19: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/19.jpg)
19
EXAMPLE COMPONENT: MICROSERVICE
![Page 20: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/20.jpg)
Story Time
Architecture Astronauts at Work
![Page 21: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/21.jpg)
• DRY!!!!!!!!!!!! … !!!!
• That said, don’t be afraid to build a
better mouse trap
• Don’t be an architecture astronaut!
Trumpism of Architecture #2 “PATTERNS
FIRST!!! PATTERNS FIRST!!!!”
Don’t Drink the Kool Aid – Lime Edition
![Page 22: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/22.jpg)
USE BETTER TOOLS
![Page 23: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/23.jpg)
23
• Select tools based on your components, not the other way around• Prioritize developer productivity• Don’t forget machines!
• Unless you’re doing .NET, trend toward *nix (e.g. Macs)• Remember: if developers have shitty machines, they’re slow
USE BETTER TOOLS: PRINCIPLES
![Page 24: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/24.jpg)
Don’t Just Assemble Packages
• It never ends well!
• Where should you use something off the
shelf vs build?
• Are you solving for a common business
process, or something of unique value to the
business?
![Page 25: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/25.jpg)
• (common example) If you need a few
simple REST APIs, is a full blown API
gateway solution needed?
• Don’t use a Rolls Royce to plow a bean
field (don’t overthink problems)
USE ‘GOLDILOCKS’ TOOLS
![Page 26: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/26.jpg)
26
TLDR; THIS POINT IN THREE TWEETS
![Page 27: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/27.jpg)
27
MICROSERVICE: TOOLS VIEW
![Page 28: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/28.jpg)
Story Time
Queues and Busses
![Page 29: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/29.jpg)
• Deliverability beats Purity
• Don’t be a technology hipster
• Don’t be a fanboy (or fangirl)
• Pick your battles
• Sometimes old things are used because
they’re really good
• Java can usually get it done (more
slowly)
Trumpism of Architecture #3: “SOMETIMES
THE BEST COMPONENTS ARE THE ONES
YOU ELIMINATE… BIGGLY”
Don’t Drink the Kool Aid - Orange Edition
![Page 30: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/30.jpg)
Don’t Forget Delivery
![Page 31: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/31.jpg)
31
• Every software system needs an engineering system• Isolate features, apply full quality definition before merge• DevOps should never be an afterthought• Embrace Behavior Driven Design / Development
DELIVERY PRINCIPLES
![Page 32: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/32.jpg)
32
• What is your vertical slice?• How can you use a vertical slice to improve delivery?
• Instrumentation & Measurement• Measuring waste• Measuring quality
EMBRACE LEAN
![Page 33: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/33.jpg)
33
• Waterfall/Wagile makes most new IT architectures impossible• Bloated teams, project mindset, org model mismatch can make your
lives hell• Be mindful of culture
MAKE SURE THE ORG/PROCESS DOESN’T PRECLUDE NEW ARCHITECTURE
![Page 34: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/34.jpg)
34
• Switch from ’Infantry Divisions’ to ’Special Forces Teams’FIT TEAMS TO ARCHITECTURE AND ENGINEERING SYSTEM
![Page 35: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/35.jpg)
Story Time
Test Complexity: Multiplication vs. Addition
![Page 36: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/36.jpg)
• Tech debt is never paid down
• Culture eats strategy (and delivery) for
breakfast
Trumpism of Architecture #4: “MAKE
ARCHITECTURE GREAT AGAIN!!!”
Don’t Drink the Kool Aid – Grape Edition
![Page 37: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/37.jpg)
Questions?
![Page 38: Designing Systems that Don't Suck - Amazon S3€¦ · • DevOps should never be an afterthought • Embrace Behavior Driven Design / Development DELIVERY PRINCIPLES. 32 • What](https://reader035.vdocuments.mx/reader035/viewer/2022071219/60587b8cbc98e01a5a48fc60/html5/thumbnails/38.jpg)
FINNISH FINISH