32
Mary Poppendieck [email protected] www.poppendieck.com Photograph © Tom Poppendieck

The Future of Software Engineering (Berlin) - GOTO Blog · The Evolution of IT 1996 2016 Running on any available set of physical resources (public/private/ virtualized) Assembled

  • Upload
    lytuong

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Mary [email protected] © Tom Poppendieck

Copyright©2016 Poppendieck.LLC

2Photograph © Tom Poppendieck

Business Software:

Why One Server?

Monolithic & Slow to changeERP Database  IntegrationOn a Single Server

CAP Theorem:Partitioned databasesmust choose between:

AvailabilityConsistency

Photograph © Tom Poppendieck

Copyright©2016 Poppendieck.LLC

3

[c. 2001]

Copyright©2016 Poppendieck.LLC

4

Get a bigger computer.

Copyright©2016 Poppendieck.LLC

5

Get more computers. Google Hardware c. 1999

Search the entire InternetInstantly

Response:Horizontal ScalingBreak files into small piecesMake three copies of each pieceSpread the pieces across many servers

Manage the pieces with software

Google’s Problem:

Copyright©2016 Poppendieck.LLC

6

Amazon ~ 2001Handle a gazillion transactionsAll at once

What Amazon Did:Break transactions into servicesReplicate bottleneck services

Each service owned by a semi‐autonomous “two pizza” team

Option 2:Scale Out

Option 1:Scale Up

Copyright©2016 Poppendieck.LLC

7

Copyright©2016 Poppendieck.LLC

8Photograph © Tom Poppendieck

Pinkham moves to South AfricaAsked to pursue project thereAssembles and leads a teamDevelops EC2 in 2 years

EC2 Launches in 200610 Years Later: 

$10 billion/yr.

Autonomous Services Autonomous Service Teams Independent Deployment

Much Stress in Operations

Chris Pinkham (VP Infrastructure) Proposes self‐service deploymentfor development teamsMaybe sell the capability?

Time Passes….

Photograph © Tom PoppendieckCopyright©2016 Poppendieck.LLC 9

Economics Technology

Copyright©2016 Poppendieck.LLC 10

Applications designed for traditional data architectures do not work well in the cloud without a lot of recoding.*

The Cloud is cheaper, more stable, more secure, and more expandable than most on‐premises data centers.

Photograph © Tom Poppendieck

*Arthur Cole ‐ IBM

Copyright©2016 Poppendieck.LLC 11

ContainersAs Process

ServerlessArchitectures 

Software DefinedNetworks

Copyright©2016 Poppendieck.LLC

12Photograph © Tom Poppendieck

The Evolution of IT1996 2016

Running on any available set of 

physical resources(public/private/virtualized)

Assembled by developers using best available  

services

Thin app on mobile, tabletThick, client‐server app 

on thick client

Well‐defined stack:‐ O/S‐ Runtime‐ Middleware

MonolithicPhysical

Infrastructure

www.docker.io13

Scale Out

Technology Platform

Scale Up

EnterpriseArchitecture

Federated Architecture

Copyright©2016 Poppendieck.LLC 14

API’s as Architecture API’s as ProductOwned by a Responsible TeamFocus on API ConsumersEvolving Capabilities

Copyright©2016 Poppendieck.LLC 15

Enable Service ArchitecturesLower Integration FrictionLocal Persistence

API’s Replace 

Databases

API’s Enable the Internet of Things

Designing for scale: Resilient Architectures:Big Data systems are inherently distributed; their architectures must explicitly handle: 

partial failuresconcurrencyconsistencyreplication communications latencies

Replicate data to ensure availability in the case of failure. Design components to be

statelessreplicatedtolerant of failures of dependent services 

Distribution, Data, Deployment: Software Architecture Convergence in Big Data SystemsIan Gorton, John Klein, Software Engineering Institute Carnegie Mellon University, May 2014

“Big data applications are pushing the limits of software engineering …. It is essential that the body of software architecture knowledge evolves to capture this advanced design knowledge for big data systems.”

Photograph © Tom PoppendieckCopyright©2016 Poppendieck.LLC 16

Three Kinds of Systems

Copyright©2016 Poppendieck.LLC

17

Nassim Nicholas Taleb: Antifragile – Things that gain from Disorder

Acm Queue,  September 2012:“Resilience Engineering: Learning to Embrace Failure”

Picture Credit: André Faria Gomes

Monolithic ArchitectureDatabase as IntegratorStateful ProtocolsConsecutive ExecutionSynchronous CommunicationProcedural ProgrammingDefect Free / Fragile

Federated ArchitectureAPI’s as ConnectorsStateless ProtocolsConcurrent ExecutionAsynchronous CommunicationEvent Driven ProgrammingFault Tolerant / Antifragile

Copyright©2016 Poppendieck.LLC 18

The Internet of Things The Enterprise Legacy

Photograph © Tom Poppendieck Copyright©2016 Poppendieck.LLC 19

For Complex SystemsThis does not work

Copyright©2016 Poppendieck.LLC 20

For Complex SystemsThis works

Copyright©2016 Poppendieck.LLC 21

Acceptance test driven development processCross‐functional teams include Product, QA and OpsAutomated build, testing, db migration, and deploymentIncremental development on the trunk with continuous integrationSoftware always production ready, or everything stops until it isDeploy constantly, release by switch

Slide content credit: Jez Humble

Faster – Safer – Better 

Copyright©2016 Poppendieck.LLC 22

Copyright©2016 Poppendieck.LLC 23Photograph © Tom Poppendieck

Photograph © Tom Poppendieck

Online Experimentation at Microsoftby Kohavi , Crook, & Longbotham

Presented at KDD 2009(Knowledge Discovery & Data Mining)

http://exp‐platform.com/expMicrosoft.aspx

Copyright©2016 Poppendieck.LLC 24

Photograph © Dustin Poppendieck

Standish Group Study Reported at XP2002 by Jim Johnson, Chairman

Copyright©2016 Poppendieck.LLC 25

Delivery Problem Solving

Copyright©2016 Poppendieck.LLC 26

Start with SignalsFocus on ProblemsPlan with Hypotheses

Do MultipleExperiments

Use Data to Decide

Not Requirements Not FeaturesNot Estimates

Not a Backlogof Stories 

Don’t Guess ata Solution

Signals /Patterns

Problem Statement

HypothesisExperiment

Analysis & Conclusion

Copyright©2016 Poppendieck.LLC 27

Sketch: Jake KnappCopyright©2016 Poppendieck.LLC 28

Google I/O 2014  Design SprintA process for prototyping and testing any product in 5 days.

Sketch: Jake Knapp Copyright©2016 Poppendieck.LLC 29

30

Copyright©2016 Poppendieck.LLC

Photograph © Tom Poppendieck

1. Explore multiple ideas, including outliers.

2.Pursue a variety of ideas with champions and volunteers.

3.Gradually narrow the ideas to those that will work.

4.Maintain multiple options as long as possible.

Copyright©2016 Poppendieck.LLC 31Photograph © Tom Poppendieck

Copyright©2016 Poppendieck.LLC 32Photograph © Tom Poppendieck

Mary [email protected]

Mary [email protected]