38
Copyright © 2014, Intellyx, LLC 1 The Paradox of Agile Architecture Quality: Designing for Failure Jason Bloomberg President [email protected] @theebizwizard

The Paradox of Agile Architecture Quality: Designing for Failure

Embed Size (px)

Citation preview

Page 1: The Paradox of Agile Architecture Quality: Designing for Failure

Copyright © 2014, Intellyx, LLC

1

The Paradox of Agile Architecture Quality:

Designing for Failure

Jason Bloomberg

President

[email protected]

@theebizwizard

Page 2: The Paradox of Agile Architecture Quality: Designing for Failure

About Jason Bloomberg

• President of Intellyx

• Advise companies on their digital transformation initiatives & help vendors communicate their agility stories

• Write for Forbes, Wired, & DevX on Digital Transformation

• Buy my latest book, The Agile Architecture Revolution

Copyright © 2014, Intellyx, LLC2

Page 3: The Paradox of Agile Architecture Quality: Designing for Failure

The Iron Triangle

Copyright © 2014, Intellyx, LLC3

Page 4: The Paradox of Agile Architecture Quality: Designing for Failure

Quality: The Fourth Corner

Copyright © 2014, Intellyx, LLC4

Photo

Cre

dit:

Cra

ig B

row

n -

htt

p:/

/ww

w.b

ett

erp

roje

cts

.net/

2009/0

3/i

t-used-t

o-b

e-i

ron-t

riangle

.htm

l

Page 5: The Paradox of Agile Architecture Quality: Designing for Failure

What about Agility?

• Business agility is a metarequirement

• Requirement that requirement change must be supported

• Balance quality and agility

Copyright © 2014, Intellyx, LLC5

Photo

Cre

dit:

TH

OR h

ttps:/

/ww

w.f

lickr.

com

/photo

s/g

eis

haboy500/

Requirement: Make the Organization More Agile

Page 6: The Paradox of Agile Architecture Quality: Designing for Failure

Agile Architecture Quality Star

Copyright © 2014, Intellyx, LLC6

Page 7: The Paradox of Agile Architecture Quality: Designing for Failure

Best-Effort Quality

• Quality takes time, limiting agility

• Insufficient agility lowers quality

• Need to rethink approach to quality

• Preventing adverse behavior less important than automatic recovery from such behavior

– Core Cloud architecture principle

Copyright © 2014, Intellyx, LLC7

Resilience More Important than Being Defect-Free P

hoto

Cre

dit:

Sam

uel M

. Liv

ingsto

n h

ttps:/

/ww

w.f

lickr.

com

/photo

s/3

9747297@

N05/

Page 8: The Paradox of Agile Architecture Quality: Designing for Failure

Different Meanings of “Agile”

• “Agile-with-a-capital-A”

– Software development that follows the Agile Manifesto

• General meaning of “agile”

• Business agility as property of an organization

Copyright © 2014, Intellyx, LLC8

Photo

Cre

dit:

Earl

McG

ehee

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/e

jmc/1

0653135183/s

izes/l

Page 9: The Paradox of Agile Architecture Quality: Designing for Failure

The Agile Manifesto

Manifesto for Agile Software Development

We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:

– Individuals and interactions over processes and tools

– Working software over comprehensive documentation

– Customer collaboration over contract negotiation

– Responding to change over following a plan

That is, while there is value in the items onthe right, we value the items on the left more.

Copyright © 2014, Intellyx, LLC9

Sourc

e:

htt

p:/

/ww

w.a

gilem

anifesto

.org

Page 10: The Paradox of Agile Architecture Quality: Designing for Failure

Context: Software Development

• Focus on small teams that crank out code

• Iterative, self-organizing, collaborative

• Focus on creating working software

Copyright © 2014, Intellyx, LLC10

Well-run Agile development means producing a lot of good software

quickly

Photo

Cre

dit:

Phil W

hitehouse h

ttps:/

/ww

w.f

lickr.

com

/photo

s/p

hilliecasabla

nca/2

473728872/s

izes/l

Page 11: The Paradox of Agile Architecture Quality: Designing for Failure

What about Architecture on Agile Projects?

• We don’t need no stinkin’ architecture!

• Architecture lumped in with documentation (less is more)

• Architects slow down developers

• Architects produce artifacts that aren’t Agile

– Lead to extra work

Copyright © 2014, Intellyx, LLC11

Photo

Cre

dit:

Yort

whtt

ps:/

/ww

w.f

lickr.

com

/photo

s/y

ort

w/5

470226807/s

izes/l

Widespread belief that Agile and Architecture don’t mix

Page 12: The Paradox of Agile Architecture Quality: Designing for Failure

But we Do Need Architecture!

• Software architecture

– Appropriate modularization of code

– Selection of appropriate components & libraries

– Integration strategy

• Systems architecture

– Scalability of distributed application

– Cloud deployment issues

– Availability, caching, etc.

Copyright © 2014, Intellyx, LLC12

Page 13: The Paradox of Agile Architecture Quality: Designing for Failure

Create Minimum Viable Architecture

• All documentation, artifacts, diagrams, etc. are means to an end

• Don’t architect more than the stakeholders want

• Problems:

– Shortsighted

– Leads to legacy issues

– Limits agilityCopyright © 2014, Intellyx, LLC13 P

hoto

Cre

dit:

Cam

era

Eye P

hoto

gra

phy h

ttps:/

/ww

w.f

lickr.

com

/photo

s/c

am

era

_is

_a_m

irro

r_w

ith_m

em

ory

/6628934195/s

izes/l

Page 14: The Paradox of Agile Architecture Quality: Designing for Failure

Defer Commitment on Design Decisions

• Traditional architecture completed before development

• On Agile projects, tentative architecture good enough

• Commit to design decisions in appropriate iteration/sprint

Copyright © 2014, Intellyx, LLC14

Photo

Cre

dit:

Wade R

ockett

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/w

adero

ckett

/2947370316/s

izes/o

/

Page 15: The Paradox of Agile Architecture Quality: Designing for Failure

Why Agile Software Architecture isn’t Agile

• Agile movement focuses on working software

– Focus on getting the software to meet its requirements

– Get all roadblocks out of the way

• Agile-built software is coded to be fit for purpose

Copyright © 2014, Intellyx, LLC15

Photo

Cre

dit:

B4bees h

ttps:/

/ww

w.f

lickr.

com

/photo

s/b

rizo_th

e_scot/

4013939756/s

izes/l

Page 16: The Paradox of Agile Architecture Quality: Designing for Failure

Instant Legacy

• Difficult to upgrade

• Systems are inflexible

• Impossible to replace

• Difficult to customize

• Challenge to integrate

• Expensive over time

Copyright © 2014, Intellyx, LLC16

Photo

Cre

dit:

LH

OO

N h

ttps:/

/ww

w.f

lickr.

com

/photo

s/l

hoon/2

288339151/s

izes/l

Page 17: The Paradox of Agile Architecture Quality: Designing for Failure

The Overbuilding Paradox

• How do stakeholders know what flexibility they will require?

• How generalized should code be?

• When to build capabilitiesvs. when to build affordances?

Copyright © 2014, Intellyx, LLC17

Photo

Cre

dit:

Ishik

aw

a K

en h

ttps:/

/ww

w.f

lickr.

com

/photo

s/c

hid

ori

an/1

9898378/s

izes/l

Page 18: The Paradox of Agile Architecture Quality: Designing for Failure

Capabilities vs. Affordances

• Capability

– Ability to perform or achieve certain outcomes through features or functions

– Apps have capabilities

• Affordance

– A property of an object which allows an individual to perform an action

– Tools have affordances

– Depends upon how user wants to use tool

Copyright © 2014, Intellyx, LLC18 Photo

Cre

dit:

Era

Phern

alia

Vin

tage h

ttps:/

/ww

w.f

lickr.

com

/photo

s/e

raphern

alia_vin

tage/3

034341310/s

izes/o

/

Page 19: The Paradox of Agile Architecture Quality: Designing for Failure

Scaling Agile for the Enterprise

• Enterprise Architecture context

– Organization, process, technology, and information

• Legacy context

– Existing applications, middleware, systems of record

• Business focused, iterative, get stuff to work, iconoclastic

Copyright © 2014, Intellyx, LLC19

Photo

Cre

dit:

Bosto

n P

ublic L

ibra

ry h

ttps:/

/ww

w.f

lickr.

com

/photo

s/b

osto

n_public_libra

ry/8

962106164/s

izes/l

Page 20: The Paradox of Agile Architecture Quality: Designing for Failure

Business Agility

• Responsiveness

– Tactical value

• Resilience

– Risk mitigation

• Innovativeness

– Strategic value

Copyright © 2014, Intellyx, LLC20 Photo

Cre

dit:

Masonite B

urn

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/m

asonite-b

urn

/6273626739/s

izes/l

Ability to respond to change in the business environment and leverage change for competitive advantage

Page 21: The Paradox of Agile Architecture Quality: Designing for Failure

Responsiveness

• The ability to respond quickly and efficiently to (potentially) positive change in the business environment

– Changing customer demand

– Changing marketplace environment

– Changing supply chain factors

• Tactical driver

Copyright © 2014, Intellyx, LLC21

Photo

Cre

dit:

Good E

ye M

ight

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/b

ritt

anyg/1

796000993/s

izes/l

Page 22: The Paradox of Agile Architecture Quality: Designing for Failure

Resilience

• The ability to respond quickly and efficiently to negative change in the business environment

– Managing risk

– Bouncing back from adverse events

– Disaster recovery

– Security breach response

– Regulatory change response

• Tactical driverCopyright © 2014, Intellyx, LLC22

Photo

Cre

dit:

Joe h

ttps:/

/ww

w.f

lickr.

com

/photo

s/b

itshaker/

167480266/s

izes/o

/

Page 23: The Paradox of Agile Architecture Quality: Designing for Failure

Innovativeness

• The ability to introduce change into the business environment in order to achieve a strategicadvantage

– New products or services

– Expand market share

– Enter new markets

Copyright © 2014, Intellyx, LLC23

Photo

Cre

dit:

Kay K

im h

ttps:/

/ww

w.f

lickr.

com

/photo

s/k

aykim

/3883340152/s

izes/o

/

Page 24: The Paradox of Agile Architecture Quality: Designing for Failure

The Goal of Agile Software

• Requirement to build software that responds to changing requirements

• Inherent flexibility vs. rapid development & deployment

Copyright © 2014, Intellyx, LLC24 Photo

Cre

dit:

Robert

Couse-B

aker

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/2

9233640@

N07/1

4859431605/s

izes/z

/

Page 25: The Paradox of Agile Architecture Quality: Designing for Failure

Bloomberg Agile Architecture Layers of Abstraction

Copyright © 2014, Intellyx, LLC25

META Dealing with Change (metaprocesses, metapolicies, etc. )

DYNAMIC Abstract Models (dynamic schemas, dynamic APIs, etc.)

ABSTRACTED (LOGICAL)

Abstracted Technology (schemas, software interfaces, etc.)

PHYSICAL Technology (software, middleware, databases, etc.)

Page 26: The Paradox of Agile Architecture Quality: Designing for Failure

What are You Writing?

• Code?

– Least flexible, most susceptible to overbuilding, reuse always a challenge

• Metadata via declarative programming?

– Abstracts code, but leads to complexity shell game

• Abstract models?

– Essential for implementable Agile Architecture, but vendors largely fall short

Copyright © 2014, Intellyx, LLC26

Photo

Cre

dit:

david

dhtt

ps:/

/ww

w.f

lickr.

com

/photo

s/p

uuik

ibeach/6

989179273/s

izes/l

Page 27: The Paradox of Agile Architecture Quality: Designing for Failure

Applying Model-Driven Architecture

• Business model drives platform-independent model, platform-independent model drives platform-specific models

• For BAA, business model at meta level

– Represents business agility driver

• Abstract models resolve to logical models at run time

Copyright © 2014, Intellyx, LLC27

Photo

Cre

dit:

Joe H

aupt

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/5

1764518@

N02/8

726236053/s

izes/l

Page 28: The Paradox of Agile Architecture Quality: Designing for Failure

The Agility Platform

Copyright © 2014, Intellyx, LLC28

Your Application

Your Application

Application-Building Tool

Your Application

Application-Building Tool

Tool-Building Platform

Maximize Affordances

Page 29: The Paradox of Agile Architecture Quality: Designing for Failure

Coding for a Declarative Model

• Avoid declarative shell game

– Pushing all the complexity to the configuration (declarative model)

• Configuration should be

– Standards-based

– Browser UI friendly

– Simple

– Consistent

• Code should focus on affordances

Copyright © 2014, Intellyx, LLC29

Photo

Cre

dit:

Theodore

Scott

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/t

heodore

scott

/4516759806/s

izes/o

/

Page 30: The Paradox of Agile Architecture Quality: Designing for Failure

Tool-Building Agility Platform: Maximum

Affordance

• Instead of software that can do things, want software that can enable users to do things

– Maximize affordances

– Software smart enough to afford any action

• Computers are examples of maximum affordance

• Build software with the same purpose

Copyright © 2014, Intellyx, LLC30

Photo

Cre

dit:

Mahender

G h

ttps:/

/ww

w.f

lickr.

com

/photo

s/g

mahender/

Page 31: The Paradox of Agile Architecture Quality: Designing for Failure

Working with Abstract Models

• Abstracts choice of schema

• Abstracts choice of API contract

• Abstracts semantic context

Copyright © 2014, Intellyx, LLC31

Photo

Cre

dit:

Tony C

alr

ns

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/t

onycair

ns/1

4731782052/s

izes/l

Resolve to logical models at run time

Page 32: The Paradox of Agile Architecture Quality: Designing for Failure

Supporting Abstract Models in Software

• Tool-building platform (business agility platform)

– All affordances, affords tool-building capabilities

• Application-building tool

– Affords application-building capabilities to non-developers

– Rich UI support

– Non-imperative logic

• Event-driven, process-centric, and/or rules-based, for example

Copyright © 2014, Intellyx, LLC32

Photo

Cre

dit:

ellenm

1 h

ttps:/

/ww

w.f

lickr.

com

/photo

s/e

llenm

1/6

489345851/s

izes/l

Page 33: The Paradox of Agile Architecture Quality: Designing for Failure

Where’s Our Business Agility?

• Organizations must be responsive, resilient, and innovative

• Business agility is a property of the enterprise

• People and technology can be flexible as well, but we must architect our organizations to be agile

Copyright © 2014, Intellyx, LLC33

Photo

Cre

dit:

Stu

art

Berw

ick h

ttps:/

/ww

w.f

lickr.

com

/photo

s/l

aple

ader/

793507962/s

izes/l

Page 34: The Paradox of Agile Architecture Quality: Designing for Failure

The Transformative Role of Automation

• Cloud automates operational environment

• DevOps as automation-driven organizational change

Copyright © 2014, Intellyx, LLC34

Photo

Cre

dit:

wir

edfo

rlego

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/w

iredfo

rsound23/6

813264988/s

izes/l

DevOps as Model for Cross-Cutting Architecture

Page 35: The Paradox of Agile Architecture Quality: Designing for Failure

From DevOps to “BizOps”

• Before: dev chucking code to test, then over wall to ops

• Now: continuous test, continuous deployment

• In progress: responsiveness to continuous requirements change & variation

Copyright © 2014, Intellyx, LLC35

Photo

Cre

dit:

fdecom

ite

htt

ps:/

/ww

w.f

lickr.

com

/photo

s/f

decom

ite/1

2598505695/s

izes/l

Page 36: The Paradox of Agile Architecture Quality: Designing for Failure

DevOps & AA Quality Star

Copyright © 2014, Intellyx, LLC36

Page 37: The Paradox of Agile Architecture Quality: Designing for Failure

DevOps Drumbeat

Copyright © 2014, Intellyx, LLC37

Page 38: The Paradox of Agile Architecture Quality: Designing for Failure

Jason Bloomberg

President, Intellyx

[email protected]

@theebizwizard

Send email NOW to [email protected] to download this presentation

Thank You!