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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

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

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

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

• 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

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

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

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

• (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

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

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

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

• 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

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

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

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

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

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

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

• 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

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

FINNISH FINISH


Top Related