SlideShare a Scribd company logo
1 of 131
Download to read offline
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
RE-ARCHITECTING
ON THE FLY
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
SO… MY APOLOGIES
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
I BELIEVE IN “FULL-CONTACT”
PRESENTATIONS
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Re-architecting on the fly
The decision and process behind rewriting or re-architecting
a system is often plagued with a series of problems: people
always underestimate the complexity, people never fully
understand the customers, system requirements constantly
change out from under them, and, in almost all cases, it takes
much longer than anybody can predict. As part of this workshop,
we’ll look at a couple of case studies of re-architecture to
gleam strategies of success from them as well as common
pitfalls to avoid. This workshop should arm you with a
framework by which to approach your own decisions around how
to manage, maintain, and evolve your own systems.
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
@raffi
Raffi Krikorian
VP, Platform Engineering
Twitter ,Inc.
raffi@twitter.com
EXPIRED
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
2009
0050ish people
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
2014
3000ish people
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
2014
0450ish people
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
About
Tweets sent per second
5800
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
THE EXERCISE
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
The Rules
Break up into teams of a few people

Take the following case study
discuss

dissect

ask questions

Play the role of architects and also engineering leads
Volunteers to present when we’re done
STORAGE &
RETRIEVAL
LOGICPRESENTATIONROUTING
Monorail MySQL
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Twitter already had some availability issues
earlier this week, leading to a complete
outage of about 90 minutes on Wednesday
and more fail whales popping up yesterday.
What we didn’t anticipate was some of the
complexities that have been inherent in
fixing and optimizing our systems before
and during the event.
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
…and the team?
We can’t ship things fast enough!
‘Velocity’ is going down! - Management

This code looks like crap! - Engineering
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Some hints as to what to do
You all are not just an architects, you are engineering leaders

How do you get a plan in place?

How do you figure out your first step?

What’s the execution of the plan look like?

Then…. what?

(Yes, this is vague. I’ll be floating around the room - ask
me questions!)
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
DO MY FORMER JOB
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
LET’S TALK
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
WHY ARE WE DOING THIS?
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Not servicing customers
Not scaling to incoming traffic, usage, users, etc.

But also not matching in features that users want

HipChat architected for Amazon Web Services

customer demand to move it to Enterprise

lacking higher level services

lots smaller machines vs small number of bigger machines
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
It’s easier to write code than it’s to read code
We're programmers. Programmers are, in their
hearts, architects, and the first thing they want to do
when they get to a site is to bulldoze the place flat
and build something grand. We're not excited by
incremental renovation: tinkering, improving,
planting flower beds.
- Joel Spolsky
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
It’s easier to write code than it’s to read code
Unless properly tended, real world code becomes
complicated over time
energy goes into bug fixes

every week in production means the code is gathering
bandaids, & experiences

Code reviews should be (partially) used to structure
software for “readability”
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Technical debt
/**

* For the brave souls who get this far: You are the chosen ones,

* the valiant knights of programming who toil away, without rest,

* fixing our most awful code. To you, true saviors, kings of men,

* I say this: never gonna give you up, never gonna let you down,

* never gonna run around and desert you. Never gonna make you cry,

* never gonna say goodbye. Never gonna tell a lie and hurt you.

*/
http://stackoverflow.com/questions/184618/

what-is-the-best-comment-in-source-code-you-have-ever-encountered
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Technical debt
// 

// Dear maintainer:

// 

// Once you are done trying to 'optimize' this routine,

// and have realized what a terrible mistake that was,

// please increment the following counter as a warning

// to the next guy:

// 

// total_hours_wasted_here = 42

//
http://stackoverflow.com/questions/184618/

what-is-the-best-comment-in-source-code-you-have-ever-encountered
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
You haven’t paid it down
Technical debt (also known as design debt or code debt) is a
recent metaphor referring to the eventual consequences of poor
system design, software architecture or software development
within a codebase. The debt can be thought of as work that
needs to be done before a particular job can be considered
complete or proper. If the debt is not repaid, then it will keep
on accumulating interest, making it hard to implement
changes later on. Unaddressed technical debt increases software
entropy.
- Wikipedia
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
The causes
BUSINESS PRESSURES - the business considers getting something released sooner
before all of the necessary changes are complete. That code is shipped “unfinished”.

LACK OF PROCESS - development is not well managed. Big, long-lived, & isolated
changes are in flight & merging those changes becomes really difficult. Usually, there
is a lack of test suite, which encourages quick & risky band-aids to fix bugs.

ARCHITECTURE - modularity hasn’t been managed, & the software is not flexible enough
to adapt to changes in business needs. As the requirements evolve, the code proves
unwieldy & must be refactored in order to support future requirements. The longer
that refactoring is delayed, & the more code is written to use the current form, the
more debt that piles up that must be paid at the time the refactoring is finally done.

LACK OF ENGINEERING MENTORSHIP - knowledge isn't shared around the organization,
business efficiency suffers, or junior developers are not properly mentored. Possibly,
the wrong engineers have been hired as well.
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
More, & more, & more
Time seems to dilate

each change is taking longer than we think

each change is turning out to be harder than we think

Each change results in a cascade of new defects

This causes your team to enter a vicious spiral
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
SOME EXAMPLE STORIES
WAR
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Textmate
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
JUNE
2012
TODAY
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
History of Word
The time is October 5, 1991

shipped award winning Mac Word 5.0

Win Word 2.0 shipped in 1991 as well with more features

Business problem is emerging - WordPerfect is eating up part
of the market
Technical problem - Mac Word and Win Word are different
codebases
Proposed solution? Project Pyramid.
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Pyramid was cancelled
Microsoft decided that “taking a few steps back” for Pyramid would
cause them to lose to WordPerfect

New strategy, target Mac Word from the Win Word codebase

Huge problems

Windowing is handled fundamentally differently between the operating
systems

68K Mac OS doesn’t do memory management

compiled with a beta version of Visual C++ 2.0 (so beta that most
optimizations had to be turned off)

In the end - Mac Word 6.0 wasn’t “Mac-like”
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Apache HTTP
1996
1997
1998
1999
2000
2001
2002
Whispers of
Apache 2
Apache Week talks about
filtering, & difficulty in
implementation. Need
multi-threading
Huge rewrite
planned for post 1.2
Decide same
codebase for all
releases in 2.0
Halt features
in pre 2.0
2.0 alpha
SSL in 1.3 & 2.0
2.0 beta
2.0 GA
Planning in
place
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
EC2 performance is sad
Customers demand exceptional performance & always-on
availability
experienced networking issues

hanging VM instances

unpredictable performance degradation (probably due to
noisy neighbors)

Spending more time working around these issues rather
than features
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Migrating SwiftType
Nothing fundamentally wrong with the architecture, just not
suitable for a zero downtime migration
Need connectivity between EC2 and the new datacenter

Migrate data

stateless services are not a problem

choose whether the backend services are replicated or deal with
inter-datacenter latency
build custom replication services for backends that can’t do it
natively (search)
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
What happens during a rewrite?
Business stays still or business moves on

Have to implement accrued business logic in a fraction of time

old code is used

old code is tested

lots of bugs have been found and fixed

The old system can’t be turned off until the new system is at
100% parity (or the company agrees to turn off the old)

This will ABSOLUTELY take a lot longer than anybody thinks!
BAD!
BAD!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
What about non-code issues?
You’re going to gather seriously unhappy customers
external - no features!

internal - things are being held up

Political battles within engineering

Excessive frustrations because deadlines 

will almost certainly be missed
NOBODY EVER TAKES INTO
ACCOUNT THIS STUFF
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
STORAGE &
RETRIEVAL
LOGICPRESENTATIONROUTING
Monorail MySQL
STORAGE &
RETRIEVAL
LOGICPRESENTATIONROUTING
Redis
Memcache
Flock
T-Bird
MySQLTweet
User
Timeline
Social
Graph
DMs
API
Web
Monorail
TFE
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
NEVER to do one if you can get away with it
It will take longer than you think
The market, product, & business will change while your
development is in flight

Existing customers will become frustrated
YOU DON’T CONTROL THE REWRITE, 

IT CONTROLS YOU
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
BREAK!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
SO, I HAVEN’T TALKED YOU
OUT OF IT YET
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Deep philosophical question
Are you better than those that came before you?

If you have the same team, there is NO GUARANTEE that
your team now will do better the second time through

If you have a different team, there is NO GUARANTEE that
your team now will do better than the last team
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
This isn’t big, right?
How good is your documentation?

Do you even know all the corner cases?

Systems get stronger by being in production

they accumulate bug fixes, bandaids, operational
knowledge

how well do you know all those?

can you reproduce all those?
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
@timoreilly testing, testing. can you hear this?
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
@timoreilly testing, testing. can you hear this?
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
@raffi i’m trying to reach you!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
ALL THE THINGS TO PLAN FOR
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Functionality
Do you REALLY know what the system does?

all the corner cases of the product?

“make it do what it already does” is harder than you think

Most programmers don’t know what to ask!

doubly true if they weren’t the original designers of the system

even if they are the original designers, no way they remember
all the corner cases

Can code serve as the spec?
PROBABLY

NOT!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Feature creep
This is incredibly tempting, especially if feature
development is halting on the old system

It will potentially kill you
YOU TRY NOT TO DO THIS DURING REGULAR
DEVELOPMENT, SO, WHY START NOW?
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
SIMPLICITY COMPLEXITY
FLEXIBILITY
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Flexibility breeds complexity
If you try to build a system
that is flexible, you’ll
probably get a system that is
complicated

If you build a system that is
simple, you may be able to
build something that is
flexible onto of it
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Aside: The Unix Pipeline
program1 | program2 | program3
A set of processes chained by their standard streams.
The output of each process (STDOUT) feeds directly as
input (STDIN) to the next one

Very simple idea evolves into component based software
engineering
STDOUT
STDIN
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
The different stages of software
IRRELEVANT
“OLD SCHOOL”
MAINSTREAM
EARLY ADOPTER
IDEA TODAY
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Nothing works as expected
1. TECHNOLOGY TRIGGER - proof-of-concept stories &
media interest trigger significant publicity. No usable
products exist & commercial viability is unproven.

2. PEAK OF INFLATED EXPECTATIONS - some success & lots
of failures. Few companies take action; many do not.

3. TROUGH OF DISILLUSIONMENT - experiments &
implementations fail. Investments continue only if
the surviving providers improve their products.

4. SLOPE OF ENLIGHTENMENT - instances of the
technology’s benefits start to crystallize & become
more widely understood. 2nd- & 3rd-gen products
appear from providers. More pilots funded;
conservative companies remain cautious.

5. PLATEAU OF PRODUCTIVITY - mainstream adoption
starts to take off. The technology's broad market
applicability & relevance are clearly paying off.
1 2 3 4 5
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
The 5 stages of grief
1. ELATION - yay! we get to throw out that crappy product! we
get to start it over, & do it the right way!

2. BUCKLE DOWN - wow, there is a lot of work here.

3. OH SHIT - there really is a lot of work here. We’re never going
to get it done in time.

4. EXHAUSTION - we missed our deadline. Again. 

5. RELIEF - we’re out the door! But… it’s crappy. We cut
corners, but, we’re done. Next time, we’re totally going to do
it right.
http://www.jamesshore.com/Blog/How-to-Survive-a-Rewrite.html
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
ONE LAST TRY, BECAUSE I DON’T
WANT YOU TO DO THE REWRITE!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Ammunition against the rewrite
One goal of a rewrite is usually to create a cleaner
codebase
remember how learning all the edge cases is hard?

remember how writing code is easier than reading code?

to save time, a lot of developers cut and paste code from the
old system to the new system!

It’s hard to create a cleaner codebase during the rewrite!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Can we quantify this somehow?
Can we make a more data driven decision?

Gives more confidence to the decision, and helps sell it
better to others

A rewrite is a massive investment, and its only fair to be
really sure before going down the road
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
If you don’t do anything
pstarting + (vcurrent x t)
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
If you are on a new system
pstarting + (vnew x (t - trewrite))
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
What we’re betting on
pstarting + (vcurrent x t)

<

pstarting + (vnew x (t - trewrite))
pstarting + (vnew x (t - trewrite))
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
What we’re betting on
For some value of t where t > trewrite

Variables to play with

vnew = that the new system has to be faster to iterate on

trewrite = that we need to min(time to write the new system)
vcurrent x t < vnew x (t - trewrite)
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
How do we estimate vnew
Take the new tech for a spin
Have a small team build something non-trivial

This will not be a hard science

gives you a sense of the extent of the software

gives you a sense of the capabilities of the team

Have to understand maintenance costs, scalability costs
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
How do we estimate trewrite
Given that you estimated vnew, use that to try to scope
out the rewrite

Given an estimate of trewrite, try to understand whether
that t is too long

what is the state of the product now?

how much time will you lose in the business?
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
OK, I STILL HAVEN’T TALKED
YOU OUT OF THIS
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Hold the line
Product managers are going to get
anxious

you’ve sold them on a great vision

they feel like you are taking too
long and blocking them 

You have to manage them (or,
ignore them)

Do the smallest thing you can
each step of the way
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Define “done”
100% feature matching is
difficult
Implementing features is hard

remember how hard it was to
write it the first time?

you’re at a different part of
the software cycle

Try to do things incrementally
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Aside: The Saturn V
Von Braun says “German
engineering dictates that you
should test each part”

Worst case situation: a fireball
of 1,400’ that will burn for 35s
at 2500F

Will we make the “end of the
decade”?

George Mueller, pulled rank,
and pushed for an “all up test”
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Be incremental
All-up almost never works - the
Saturn V is an exception
Don’t be “lazy” and assume all-up is
easier

do an integrated approach & ready
to release at every step of the way
TFE
(HTTP Proxy)
Woodstar
TFE
(HTTP Proxy)
Monorail Woodstar
TFE
(HTTP Proxy)
Monorail Woodstar
100% Monorail 0% Woodstar
TFE
(HTTP Proxy)
Monorail Woodstar
50% Monorail 50% Woodstar
TFE
(HTTP Proxy)
Monorail Woodstar
0% Monorail 100% Woodstar
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Find the starting line
If you're going with feature parity, then do the biggest
bang part of the system first

If you can, spend a bit of time extending your runway a bit
too

Drive with data, & instrument the old system to gather
that data
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Twitter API
Other
Photos
Profile
Activity
Home
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Don’t ignore data!
Your implementations may change, but your
underlying data will change very slowly

Fake or synthetic data gives you a false sense of
security
Test with real data as soon as possible

get real data piped through the system

figure out how you are going to do reconciliations
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Manage tech debt better
Try to reduce scheduled pressure
Establish a culture of design quality

Start refactoring, continuous
design, & other code-quality
practices

Partition out a portion of time to
always work on technical debt
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Shy away from vanity stuff
Don’t let the sirens drag you to a “hot new language”

Stay away from the trap of “we could do a better job
recruiting if our stack looked like…”

Do what’s right for your team and what your team can
execute on
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Prepare for mounting tension
We all know that fixing bugs and firefighting is stressful

imagine one team who has to do this, & another team
who doesn’t have to worry about it

which would you like to be on?

Tension is going to build & people are going to be angry

Make friends, communicate, & be transparent
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Know the business
Figure out who are all the stakeholders
in the rewrite

Figure out who are the decision makers
& the ones who control your fate

they are usually not those who
complain the most

they are those who have “the
power”

Understand all the different non-
technical motivations of the
company
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Find your inner salesperson
You have to sell it to the business

Gather all the data

cost savings

feature iteration

reliability

performance

stability

Focus on the data. Don't use
anecdotes, but, instead, show results
of experiments.
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Get ready for the politics
You are in a precarious position

You are exposed

taking up engineering resources

not delivering new features for the
company

in an “open transaction”

Keep the in-flight work small and
well integrated
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Keep an eye on code quality!
On repeat - getting feature
parity is really hard!

To keep parity, developers,
inevitably, cut & paste code
from a previous system!

Have code quality metrics
APPROVED
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Get the team ready
Organizations which design systems ... are
constrained to produce designs which are copies of
the communication structures of these organizations
- Conway’s Law
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
I still haven’t talked you out of this
1. Hold the line

2. Define “done”

3. Incrementalism

4. Find the starting line

5. Don’t ignore data

6. Manage tech debt better

7. Stay away from vanity stuff

8. Prepare for mounting
tension

9. Know the business

10.Get ready for politics

11.Key an eye on code quality

12.Get the team ready
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
LET’S RECAP!
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
The 5 stages ofgrief
1. ELATION - yay! we get to throw out that crappy product! we
get to start it over, & do it the right way!

2. BUCKLE DOWN - wow, there is a lot of work here.

3. OH SHIT - there really is a lot of work here. We’re never going
to get it done in time.

4. EXHAUSTION - we missed our deadline. Again. 

5. RELIEF - we’re out the door! But… it’s crappy. We cut
corners, but, we’re done. Next time, we’re totally going to do
it right.
http://www.jamesshore.com/Blog/How-to-Survive-a-Rewrite.html
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
What we’re betting on
vcurrent x t < vnew x (t - trewrite)
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
OK, I STILL HAVEN’T TALKED
YOU OUT OF THIS
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
I still haven’t talked you out of this
1. Hold the line

2. Define “done”

3. Incrementalism

4. Find the starting line

5. Don’t ignore data

6. Manage tech debt better

7. Stay away from vanity stuff

8. Prepare for mounting
tension

9. Know the business

10.Get ready for politics

11.Key an eye on code quality

12.Get the team ready
Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015

Software Architecture Conference 2015
THANKS! (WHEW)

More Related Content

What's hot

Анастасия Войтова: Здоровая психологическая атмосфера в жизни разработчика, ...
Анастасия Войтова:  Здоровая психологическая атмосфера в жизни разработчика, ...Анастасия Войтова:  Здоровая психологическая атмосфера в жизни разработчика, ...
Анастасия Войтова: Здоровая психологическая атмосфера в жизни разработчика, ...Fwdays
 
2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud
2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud
2018-05-09_CRAFTConf_FirstStepsMovingToTheCloudAbigail Bangser
 
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, MunichTest-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, MunichJames Grenning
 
Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"Fwdays
 
The QA in the DevOps world
The QA in the DevOps worldThe QA in the DevOps world
The QA in the DevOps worldTheresa Neate
 
Opencast Architecture
Opencast ArchitectureOpencast Architecture
Opencast ArchitectureGregLogan7
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程Tony Deng
 
WordCamp SF 2014 - WIRED Migration Project
WordCamp SF 2014 - WIRED Migration ProjectWordCamp SF 2014 - WIRED Migration Project
WordCamp SF 2014 - WIRED Migration Projectkvignos
 
Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Stephen Ritchie
 
Gitora, Version Control for PL/SQL
Gitora, Version Control for PL/SQLGitora, Version Control for PL/SQL
Gitora, Version Control for PL/SQLGerger
 
Automating Code Reviews for Salesforce Apps
Automating Code Reviews for Salesforce AppsAutomating Code Reviews for Salesforce Apps
Automating Code Reviews for Salesforce AppsLorenzo Frattini
 
Failing Fast - An Autopsy of a Failed Release
Failing Fast - An Autopsy of a Failed ReleaseFailing Fast - An Autopsy of a Failed Release
Failing Fast - An Autopsy of a Failed Releasejohnfcshaw
 
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course ContentBrightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course ContentD2L Barry
 
Alexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesAlexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesNaotaka Jay HOTTA
 
Github, Travis-CI and Perl
Github, Travis-CI and PerlGithub, Travis-CI and Perl
Github, Travis-CI and PerlDave Cross
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference SpeakerSven Peters
 
MVP Showcase 2015 - Entity Framework 7 - NoORM
MVP Showcase 2015 - Entity Framework 7 - NoORMMVP Showcase 2015 - Entity Framework 7 - NoORM
MVP Showcase 2015 - Entity Framework 7 - NoORMRicardo Peres
 
Introducing Gitora,the version control tool for PL/SQL
Introducing Gitora,the version control tool for PL/SQLIntroducing Gitora,the version control tool for PL/SQL
Introducing Gitora,the version control tool for PL/SQLGerger
 
Version control for PL/SQL
Version control for PL/SQLVersion control for PL/SQL
Version control for PL/SQLGerger
 

What's hot (20)

Анастасия Войтова: Здоровая психологическая атмосфера в жизни разработчика, ...
Анастасия Войтова:  Здоровая психологическая атмосфера в жизни разработчика, ...Анастасия Войтова:  Здоровая психологическая атмосфера в жизни разработчика, ...
Анастасия Войтова: Здоровая психологическая атмосфера в жизни разработчика, ...
 
2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud
2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud
2018-05-09_CRAFTConf_FirstStepsMovingToTheCloud
 
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, MunichTest-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
 
Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"
 
The QA in the DevOps world
The QA in the DevOps worldThe QA in the DevOps world
The QA in the DevOps world
 
Opencast Architecture
Opencast ArchitectureOpencast Architecture
Opencast Architecture
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程
 
WordCamp SF 2014 - WIRED Migration Project
WordCamp SF 2014 - WIRED Migration ProjectWordCamp SF 2014 - WIRED Migration Project
WordCamp SF 2014 - WIRED Migration Project
 
Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11
 
Gitora, Version Control for PL/SQL
Gitora, Version Control for PL/SQLGitora, Version Control for PL/SQL
Gitora, Version Control for PL/SQL
 
Automating Code Reviews for Salesforce Apps
Automating Code Reviews for Salesforce AppsAutomating Code Reviews for Salesforce Apps
Automating Code Reviews for Salesforce Apps
 
Failing Fast - An Autopsy of a Failed Release
Failing Fast - An Autopsy of a Failed ReleaseFailing Fast - An Autopsy of a Failed Release
Failing Fast - An Autopsy of a Failed Release
 
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course ContentBrightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
 
Alexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummiesAlexa Skills Kit programing for dummies
Alexa Skills Kit programing for dummies
 
Github, Travis-CI and Perl
Github, Travis-CI and PerlGithub, Travis-CI and Perl
Github, Travis-CI and Perl
 
Agile Apps
Agile AppsAgile Apps
Agile Apps
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference Speaker
 
MVP Showcase 2015 - Entity Framework 7 - NoORM
MVP Showcase 2015 - Entity Framework 7 - NoORMMVP Showcase 2015 - Entity Framework 7 - NoORM
MVP Showcase 2015 - Entity Framework 7 - NoORM
 
Introducing Gitora,the version control tool for PL/SQL
Introducing Gitora,the version control tool for PL/SQLIntroducing Gitora,the version control tool for PL/SQL
Introducing Gitora,the version control tool for PL/SQL
 
Version control for PL/SQL
Version control for PL/SQLVersion control for PL/SQL
Version control for PL/SQL
 

Viewers also liked

Palm Hills - Egypt - by www.aramanstudio.com
Palm Hills - Egypt - by www.aramanstudio.comPalm Hills - Egypt - by www.aramanstudio.com
Palm Hills - Egypt - by www.aramanstudio.comaraman
 
Future of construction industry in Egypt
Future of construction industry in EgyptFuture of construction industry in Egypt
Future of construction industry in EgyptHassan Yahya
 
Adding the "Where" to the "When"
Adding the "Where" to the "When"Adding the "Where" to the "When"
Adding the "Where" to the "When"Raffi Krikorian
 
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant OpenCredo
 
Review how 3 real estate brands performed in Egypt
Review how 3 real estate brands performed in EgyptReview how 3 real estate brands performed in Egypt
Review how 3 real estate brands performed in EgyptRemah El Tohamy
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafAchim Nierbeck
 
Real-time systems at Twitter (Velocity 2012)
Real-time systems at Twitter (Velocity 2012)Real-time systems at Twitter (Velocity 2012)
Real-time systems at Twitter (Velocity 2012)Raffi Krikorian
 
Remal Real Estate Branding & Marketing Plan
Remal Real Estate Branding & Marketing PlanRemal Real Estate Branding & Marketing Plan
Remal Real Estate Branding & Marketing PlanManal Assaad
 
Distributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystemDistributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystemZhenzhong Xu
 
5 Creative Principles for Remarkable Presentations
5 Creative Principles for Remarkable Presentations5 Creative Principles for Remarkable Presentations
5 Creative Principles for Remarkable PresentationsMichelle Mazur
 

Viewers also liked (13)

Hacking Conway's Law
Hacking Conway's LawHacking Conway's Law
Hacking Conway's Law
 
Palm Hills - Egypt - by www.aramanstudio.com
Palm Hills - Egypt - by www.aramanstudio.comPalm Hills - Egypt - by www.aramanstudio.com
Palm Hills - Egypt - by www.aramanstudio.com
 
Future of construction industry in Egypt
Future of construction industry in EgyptFuture of construction industry in Egypt
Future of construction industry in Egypt
 
Adding the "Where" to the "When"
Adding the "Where" to the "When"Adding the "Where" to the "When"
Adding the "Where" to the "When"
 
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
Haufe #msaday - Building a Microservice Ecosystem by Daniel Bryant
 
Twitter by the Numbers
Twitter by the NumbersTwitter by the Numbers
Twitter by the Numbers
 
The Future of Check ins
The Future of Check insThe Future of Check ins
The Future of Check ins
 
Review how 3 real estate brands performed in Egypt
Review how 3 real estate brands performed in EgyptReview how 3 real estate brands performed in Egypt
Review how 3 real estate brands performed in Egypt
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
 
Real-time systems at Twitter (Velocity 2012)
Real-time systems at Twitter (Velocity 2012)Real-time systems at Twitter (Velocity 2012)
Real-time systems at Twitter (Velocity 2012)
 
Remal Real Estate Branding & Marketing Plan
Remal Real Estate Branding & Marketing PlanRemal Real Estate Branding & Marketing Plan
Remal Real Estate Branding & Marketing Plan
 
Distributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystemDistributed architecture in a cloud native microservices ecosystem
Distributed architecture in a cloud native microservices ecosystem
 
5 Creative Principles for Remarkable Presentations
5 Creative Principles for Remarkable Presentations5 Creative Principles for Remarkable Presentations
5 Creative Principles for Remarkable Presentations
 

Similar to Re-architecting on the Fly #OReillySACon

STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!kshaffar
 
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...Modern Workplace Conference Paris
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architectureScott Hsieh
 
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)Lauren Hayward Schaefer
 
Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019
Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019
Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019Becky Willis
 
Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891
Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891
Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891UXPA International
 
Simplicity in Web Application Design - UXPA2015
Simplicity in Web Application Design - UXPA2015Simplicity in Web Application Design - UXPA2015
Simplicity in Web Application Design - UXPA2015Design for Context
 
How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developerEyob Lube
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at MyplanetDaniel Zivkovic
 
DevSecOps - Colocando segurança na esteira
DevSecOps - Colocando segurança na esteiraDevSecOps - Colocando segurança na esteira
DevSecOps - Colocando segurança na esteiraDiego Gabriel Cardoso
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Svetlin Nakov
 
What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015SSW
 
DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...
DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...
DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...DevSecCon
 
Spark - Migration Story
Spark - Migration Story Spark - Migration Story
Spark - Migration Story Roman Chukh
 
Preview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsPreview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsDeveloper Force
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...Marco Cedaro
 
Vertical vs horizontal software architecture ruby conf india 2016
Vertical vs horizontal software architecture ruby conf india 2016Vertical vs horizontal software architecture ruby conf india 2016
Vertical vs horizontal software architecture ruby conf india 2016Christian Hujer
 
Maintainable Machine Learning Products
Maintainable Machine Learning ProductsMaintainable Machine Learning Products
Maintainable Machine Learning ProductsAndrew Musselman
 
Software architecting at scale, a practical walkthrough
Software architecting at scale, a practical walkthroughSoftware architecting at scale, a practical walkthrough
Software architecting at scale, a practical walkthroughSergio Fernández
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
 

Similar to Re-architecting on the Fly #OReillySACon (20)

STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!
 
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architecture
 
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
Ditch Your Desktop! Lead Your Team into Cloud Computing! (presentation slides)
 
Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019
Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019
Pittsburgh, PA Salesforce Trailblazer Community Group Global Gathering DF2019
 
Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891
Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891
Simplifyingapplicationsuxpa2015 150623181355-lva1-app6891
 
Simplicity in Web Application Design - UXPA2015
Simplicity in Web Application Design - UXPA2015Simplicity in Web Application Design - UXPA2015
Simplicity in Web Application Design - UXPA2015
 
How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developer
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at Myplanet
 
DevSecOps - Colocando segurança na esteira
DevSecOps - Colocando segurança na esteiraDevSecOps - Colocando segurança na esteira
DevSecOps - Colocando segurança na esteira
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
 
What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015What’s new in VS 2015 and ALM 2015
What’s new in VS 2015 and ALM 2015
 
DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...
DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...
DevSecCon Seattle 2019: Liquid Software as the real solution for the Sec in D...
 
Spark - Migration Story
Spark - Migration Story Spark - Migration Story
Spark - Migration Story
 
Preview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsPreview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web Components
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
Vertical vs horizontal software architecture ruby conf india 2016
Vertical vs horizontal software architecture ruby conf india 2016Vertical vs horizontal software architecture ruby conf india 2016
Vertical vs horizontal software architecture ruby conf india 2016
 
Maintainable Machine Learning Products
Maintainable Machine Learning ProductsMaintainable Machine Learning Products
Maintainable Machine Learning Products
 
Software architecting at scale, a practical walkthrough
Software architecting at scale, a practical walkthroughSoftware architecting at scale, a practical walkthrough
Software architecting at scale, a practical walkthrough
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developer
 

More from Raffi Krikorian

Twitter: Engineering for Real-Time (Stanford ACM 2011)
Twitter: Engineering for Real-Time (Stanford ACM 2011)Twitter: Engineering for Real-Time (Stanford ACM 2011)
Twitter: Engineering for Real-Time (Stanford ACM 2011)Raffi Krikorian
 
Securing Your Ecosystem (FOWA Las Vegas 2011)
Securing Your Ecosystem (FOWA Las Vegas 2011)Securing Your Ecosystem (FOWA Las Vegas 2011)
Securing Your Ecosystem (FOWA Las Vegas 2011)Raffi Krikorian
 
Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Developing for @twitterapi (Techcrunch Disrupt Hackathon)Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Developing for @twitterapi (Techcrunch Disrupt Hackathon)Raffi Krikorian
 
Twitter for CS10 @ Berkeley (Spring 2011)
Twitter for CS10 @ Berkeley (Spring 2011)Twitter for CS10 @ Berkeley (Spring 2011)
Twitter for CS10 @ Berkeley (Spring 2011)Raffi Krikorian
 
Twitter by the Numbers (Columbia University)
Twitter by the Numbers (Columbia University)Twitter by the Numbers (Columbia University)
Twitter by the Numbers (Columbia University)Raffi Krikorian
 
Twitter and the Real-Time Web
Twitter and the Real-Time WebTwitter and the Real-Time Web
Twitter and the Real-Time WebRaffi Krikorian
 
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010Raffi Krikorian
 
Developing for @twitterapi #hack4health
Developing for @twitterapi #hack4healthDeveloping for @twitterapi #hack4health
Developing for @twitterapi #hack4healthRaffi Krikorian
 
Intro to developing for @twitterapi (updated)
Intro to developing for @twitterapi (updated)Intro to developing for @twitterapi (updated)
Intro to developing for @twitterapi (updated)Raffi Krikorian
 
How to use Geolocation in your webapp @ FOWA Dublin 2010
How to use Geolocation in your webapp @ FOWA Dublin 2010How to use Geolocation in your webapp @ FOWA Dublin 2010
How to use Geolocation in your webapp @ FOWA Dublin 2010Raffi Krikorian
 
Intro to developing for @twitterapi
Intro to developing for @twitterapiIntro to developing for @twitterapi
Intro to developing for @twitterapiRaffi Krikorian
 
"What's Happening" to "What's Happening Here" @ Chirp
"What's Happening" to "What's Happening Here" @ Chirp"What's Happening" to "What's Happening Here" @ Chirp
"What's Happening" to "What's Happening Here" @ ChirpRaffi Krikorian
 
Handling Real-time Geostreams
Handling Real-time GeostreamsHandling Real-time Geostreams
Handling Real-time GeostreamsRaffi Krikorian
 

More from Raffi Krikorian (20)

Twitter: Engineering for Real-Time (Stanford ACM 2011)
Twitter: Engineering for Real-Time (Stanford ACM 2011)Twitter: Engineering for Real-Time (Stanford ACM 2011)
Twitter: Engineering for Real-Time (Stanford ACM 2011)
 
Securing Your Ecosystem (FOWA Las Vegas 2011)
Securing Your Ecosystem (FOWA Las Vegas 2011)Securing Your Ecosystem (FOWA Las Vegas 2011)
Securing Your Ecosystem (FOWA Las Vegas 2011)
 
Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Developing for @twitterapi (Techcrunch Disrupt Hackathon)Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Developing for @twitterapi (Techcrunch Disrupt Hackathon)
 
#rtgeo (Where 2.0 2011)
#rtgeo (Where 2.0 2011)#rtgeo (Where 2.0 2011)
#rtgeo (Where 2.0 2011)
 
500Startups @ Twitter
500Startups @ Twitter500Startups @ Twitter
500Startups @ Twitter
 
Twitter for CS10 @ Berkeley (Spring 2011)
Twitter for CS10 @ Berkeley (Spring 2011)Twitter for CS10 @ Berkeley (Spring 2011)
Twitter for CS10 @ Berkeley (Spring 2011)
 
Twitter by the Numbers (Columbia University)
Twitter by the Numbers (Columbia University)Twitter by the Numbers (Columbia University)
Twitter by the Numbers (Columbia University)
 
Users and Geo
Users and GeoUsers and Geo
Users and Geo
 
Twitter and the Real-Time Web
Twitter and the Real-Time WebTwitter and the Real-Time Web
Twitter and the Real-Time Web
 
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
 
Developing for @twitterapi #hack4health
Developing for @twitterapi #hack4healthDeveloping for @twitterapi #hack4health
Developing for @twitterapi #hack4health
 
Intro to developing for @twitterapi (updated)
Intro to developing for @twitterapi (updated)Intro to developing for @twitterapi (updated)
Intro to developing for @twitterapi (updated)
 
How to use Geolocation in your webapp @ FOWA Dublin 2010
How to use Geolocation in your webapp @ FOWA Dublin 2010How to use Geolocation in your webapp @ FOWA Dublin 2010
How to use Geolocation in your webapp @ FOWA Dublin 2010
 
Intro to developing for @twitterapi
Intro to developing for @twitterapiIntro to developing for @twitterapi
Intro to developing for @twitterapi
 
Twitter API Annotations
Twitter API AnnotationsTwitter API Annotations
Twitter API Annotations
 
"What's Happening" to "What's Happening Here" @ Chirp
"What's Happening" to "What's Happening Here" @ Chirp"What's Happening" to "What's Happening Here" @ Chirp
"What's Happening" to "What's Happening Here" @ Chirp
 
Energy / Tweet
Energy / TweetEnergy / Tweet
Energy / Tweet
 
Handling Real-time Geostreams
Handling Real-time GeostreamsHandling Real-time Geostreams
Handling Real-time Geostreams
 
What's happening here?
What's happening here?What's happening here?
What's happening here?
 
WattzOn @ ETech 2009
WattzOn @ ETech 2009WattzOn @ ETech 2009
WattzOn @ ETech 2009
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesSanjay Willie
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Re-architecting on the Fly #OReillySACon

  • 1. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 RE-ARCHITECTING ON THE FLY
  • 2. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 3. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 4. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 SO… MY APOLOGIES
  • 5. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 I BELIEVE IN “FULL-CONTACT” PRESENTATIONS
  • 6. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Re-architecting on the fly The decision and process behind rewriting or re-architecting a system is often plagued with a series of problems: people always underestimate the complexity, people never fully understand the customers, system requirements constantly change out from under them, and, in almost all cases, it takes much longer than anybody can predict. As part of this workshop, we’ll look at a couple of case studies of re-architecture to gleam strategies of success from them as well as common pitfalls to avoid. This workshop should arm you with a framework by which to approach your own decisions around how to manage, maintain, and evolve your own systems.
  • 7. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 @raffi Raffi Krikorian VP, Platform Engineering Twitter ,Inc. raffi@twitter.com EXPIRED
  • 8. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 2009 0050ish people
  • 9. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 2014 3000ish people
  • 10. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 2014 0450ish people
  • 11. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 12.
  • 13. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 About Tweets sent per second 5800
  • 14. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 15. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 16. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 17. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 18. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 19. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 20. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 THE EXERCISE
  • 21. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 The Rules Break up into teams of a few people Take the following case study discuss dissect ask questions Play the role of architects and also engineering leads Volunteers to present when we’re done
  • 22. STORAGE & RETRIEVAL LOGICPRESENTATIONROUTING Monorail MySQL Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 23. Twitter already had some availability issues earlier this week, leading to a complete outage of about 90 minutes on Wednesday and more fail whales popping up yesterday.
  • 24. What we didn’t anticipate was some of the complexities that have been inherent in fixing and optimizing our systems before and during the event.
  • 25. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 …and the team? We can’t ship things fast enough! ‘Velocity’ is going down! - Management This code looks like crap! - Engineering
  • 26. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Some hints as to what to do You all are not just an architects, you are engineering leaders How do you get a plan in place? How do you figure out your first step? What’s the execution of the plan look like? Then…. what? (Yes, this is vague. I’ll be floating around the room - ask me questions!)
  • 27. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 DO MY FORMER JOB
  • 28. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 LET’S TALK
  • 29. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 WHY ARE WE DOING THIS?
  • 30. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 31. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 32. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 33. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 34. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 35. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Not servicing customers Not scaling to incoming traffic, usage, users, etc. But also not matching in features that users want HipChat architected for Amazon Web Services customer demand to move it to Enterprise lacking higher level services lots smaller machines vs small number of bigger machines
  • 36. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 37. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 38. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 It’s easier to write code than it’s to read code We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by incremental renovation: tinkering, improving, planting flower beds. - Joel Spolsky
  • 39. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 It’s easier to write code than it’s to read code Unless properly tended, real world code becomes complicated over time energy goes into bug fixes every week in production means the code is gathering bandaids, & experiences Code reviews should be (partially) used to structure software for “readability”
  • 40. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Technical debt /**
 * For the brave souls who get this far: You are the chosen ones,
 * the valiant knights of programming who toil away, without rest,
 * fixing our most awful code. To you, true saviors, kings of men,
 * I say this: never gonna give you up, never gonna let you down,
 * never gonna run around and desert you. Never gonna make you cry,
 * never gonna say goodbye. Never gonna tell a lie and hurt you.
 */ http://stackoverflow.com/questions/184618/
 what-is-the-best-comment-in-source-code-you-have-ever-encountered
  • 41. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Technical debt // 
 // Dear maintainer:
 // 
 // Once you are done trying to 'optimize' this routine,
 // and have realized what a terrible mistake that was,
 // please increment the following counter as a warning
 // to the next guy:
 // 
 // total_hours_wasted_here = 42
 // http://stackoverflow.com/questions/184618/
 what-is-the-best-comment-in-source-code-you-have-ever-encountered
  • 42. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 You haven’t paid it down Technical debt (also known as design debt or code debt) is a recent metaphor referring to the eventual consequences of poor system design, software architecture or software development within a codebase. The debt can be thought of as work that needs to be done before a particular job can be considered complete or proper. If the debt is not repaid, then it will keep on accumulating interest, making it hard to implement changes later on. Unaddressed technical debt increases software entropy. - Wikipedia
  • 43. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 The causes BUSINESS PRESSURES - the business considers getting something released sooner before all of the necessary changes are complete. That code is shipped “unfinished”. LACK OF PROCESS - development is not well managed. Big, long-lived, & isolated changes are in flight & merging those changes becomes really difficult. Usually, there is a lack of test suite, which encourages quick & risky band-aids to fix bugs. ARCHITECTURE - modularity hasn’t been managed, & the software is not flexible enough to adapt to changes in business needs. As the requirements evolve, the code proves unwieldy & must be refactored in order to support future requirements. The longer that refactoring is delayed, & the more code is written to use the current form, the more debt that piles up that must be paid at the time the refactoring is finally done. LACK OF ENGINEERING MENTORSHIP - knowledge isn't shared around the organization, business efficiency suffers, or junior developers are not properly mentored. Possibly, the wrong engineers have been hired as well.
  • 44. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 More, & more, & more Time seems to dilate each change is taking longer than we think each change is turning out to be harder than we think Each change results in a cascade of new defects This causes your team to enter a vicious spiral
  • 45. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 46. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 SOME EXAMPLE STORIES WAR
  • 47. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Textmate
  • 48. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 JUNE 2012 TODAY
  • 49. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 50. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 History of Word The time is October 5, 1991 shipped award winning Mac Word 5.0 Win Word 2.0 shipped in 1991 as well with more features Business problem is emerging - WordPerfect is eating up part of the market Technical problem - Mac Word and Win Word are different codebases Proposed solution? Project Pyramid.
  • 51. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Pyramid was cancelled Microsoft decided that “taking a few steps back” for Pyramid would cause them to lose to WordPerfect New strategy, target Mac Word from the Win Word codebase Huge problems Windowing is handled fundamentally differently between the operating systems 68K Mac OS doesn’t do memory management compiled with a beta version of Visual C++ 2.0 (so beta that most optimizations had to be turned off) In the end - Mac Word 6.0 wasn’t “Mac-like”
  • 52. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Apache HTTP 1996 1997 1998 1999 2000 2001 2002 Whispers of Apache 2 Apache Week talks about filtering, & difficulty in implementation. Need multi-threading Huge rewrite planned for post 1.2 Decide same codebase for all releases in 2.0 Halt features in pre 2.0 2.0 alpha SSL in 1.3 & 2.0 2.0 beta 2.0 GA Planning in place
  • 53. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 54. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 EC2 performance is sad Customers demand exceptional performance & always-on availability experienced networking issues hanging VM instances unpredictable performance degradation (probably due to noisy neighbors) Spending more time working around these issues rather than features
  • 55. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Migrating SwiftType Nothing fundamentally wrong with the architecture, just not suitable for a zero downtime migration Need connectivity between EC2 and the new datacenter Migrate data stateless services are not a problem choose whether the backend services are replicated or deal with inter-datacenter latency build custom replication services for backends that can’t do it natively (search)
  • 56. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 What happens during a rewrite? Business stays still or business moves on Have to implement accrued business logic in a fraction of time old code is used old code is tested lots of bugs have been found and fixed The old system can’t be turned off until the new system is at 100% parity (or the company agrees to turn off the old) This will ABSOLUTELY take a lot longer than anybody thinks! BAD! BAD!
  • 57. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 What about non-code issues? You’re going to gather seriously unhappy customers external - no features! internal - things are being held up Political battles within engineering Excessive frustrations because deadlines 
 will almost certainly be missed NOBODY EVER TAKES INTO ACCOUNT THIS STUFF
  • 58. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 61. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 NEVER to do one if you can get away with it It will take longer than you think The market, product, & business will change while your development is in flight Existing customers will become frustrated YOU DON’T CONTROL THE REWRITE, 
 IT CONTROLS YOU
  • 62. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 BREAK!
  • 63. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 SO, I HAVEN’T TALKED YOU OUT OF IT YET
  • 64. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Deep philosophical question Are you better than those that came before you? If you have the same team, there is NO GUARANTEE that your team now will do better the second time through If you have a different team, there is NO GUARANTEE that your team now will do better than the last team
  • 65. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 66. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 67. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 This isn’t big, right? How good is your documentation? Do you even know all the corner cases? Systems get stronger by being in production they accumulate bug fixes, bandaids, operational knowledge how well do you know all those? can you reproduce all those?
  • 68. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 69. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 @timoreilly testing, testing. can you hear this?
  • 70. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 @timoreilly testing, testing. can you hear this?
  • 71. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 @raffi i’m trying to reach you!
  • 72. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 73. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 ALL THE THINGS TO PLAN FOR
  • 74. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Functionality Do you REALLY know what the system does? all the corner cases of the product? “make it do what it already does” is harder than you think Most programmers don’t know what to ask! doubly true if they weren’t the original designers of the system even if they are the original designers, no way they remember all the corner cases Can code serve as the spec? PROBABLY
 NOT!
  • 75. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 76. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Feature creep This is incredibly tempting, especially if feature development is halting on the old system It will potentially kill you YOU TRY NOT TO DO THIS DURING REGULAR DEVELOPMENT, SO, WHY START NOW?
  • 77. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 SIMPLICITY COMPLEXITY FLEXIBILITY
  • 78. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Flexibility breeds complexity If you try to build a system that is flexible, you’ll probably get a system that is complicated If you build a system that is simple, you may be able to build something that is flexible onto of it
  • 79. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Aside: The Unix Pipeline program1 | program2 | program3 A set of processes chained by their standard streams. The output of each process (STDOUT) feeds directly as input (STDIN) to the next one Very simple idea evolves into component based software engineering STDOUT STDIN
  • 80. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 The different stages of software IRRELEVANT “OLD SCHOOL” MAINSTREAM EARLY ADOPTER IDEA TODAY
  • 81. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Nothing works as expected 1. TECHNOLOGY TRIGGER - proof-of-concept stories & media interest trigger significant publicity. No usable products exist & commercial viability is unproven. 2. PEAK OF INFLATED EXPECTATIONS - some success & lots of failures. Few companies take action; many do not. 3. TROUGH OF DISILLUSIONMENT - experiments & implementations fail. Investments continue only if the surviving providers improve their products. 4. SLOPE OF ENLIGHTENMENT - instances of the technology’s benefits start to crystallize & become more widely understood. 2nd- & 3rd-gen products appear from providers. More pilots funded; conservative companies remain cautious. 5. PLATEAU OF PRODUCTIVITY - mainstream adoption starts to take off. The technology's broad market applicability & relevance are clearly paying off. 1 2 3 4 5
  • 82. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 83. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 The 5 stages of grief 1. ELATION - yay! we get to throw out that crappy product! we get to start it over, & do it the right way! 2. BUCKLE DOWN - wow, there is a lot of work here. 3. OH SHIT - there really is a lot of work here. We’re never going to get it done in time. 4. EXHAUSTION - we missed our deadline. Again. 5. RELIEF - we’re out the door! But… it’s crappy. We cut corners, but, we’re done. Next time, we’re totally going to do it right. http://www.jamesshore.com/Blog/How-to-Survive-a-Rewrite.html
  • 84. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 ONE LAST TRY, BECAUSE I DON’T WANT YOU TO DO THE REWRITE!
  • 85. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Ammunition against the rewrite One goal of a rewrite is usually to create a cleaner codebase remember how learning all the edge cases is hard? remember how writing code is easier than reading code? to save time, a lot of developers cut and paste code from the old system to the new system! It’s hard to create a cleaner codebase during the rewrite!
  • 86. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Can we quantify this somehow? Can we make a more data driven decision? Gives more confidence to the decision, and helps sell it better to others A rewrite is a massive investment, and its only fair to be really sure before going down the road
  • 87. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 If you don’t do anything pstarting + (vcurrent x t)
  • 88. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 If you are on a new system pstarting + (vnew x (t - trewrite))
  • 89. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 What we’re betting on pstarting + (vcurrent x t) < pstarting + (vnew x (t - trewrite)) pstarting + (vnew x (t - trewrite))
  • 90. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 What we’re betting on For some value of t where t > trewrite Variables to play with vnew = that the new system has to be faster to iterate on trewrite = that we need to min(time to write the new system) vcurrent x t < vnew x (t - trewrite)
  • 91. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 How do we estimate vnew Take the new tech for a spin Have a small team build something non-trivial This will not be a hard science gives you a sense of the extent of the software gives you a sense of the capabilities of the team Have to understand maintenance costs, scalability costs
  • 92. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 How do we estimate trewrite Given that you estimated vnew, use that to try to scope out the rewrite Given an estimate of trewrite, try to understand whether that t is too long what is the state of the product now? how much time will you lose in the business?
  • 93. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 OK, I STILL HAVEN’T TALKED YOU OUT OF THIS
  • 94. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Hold the line Product managers are going to get anxious you’ve sold them on a great vision they feel like you are taking too long and blocking them You have to manage them (or, ignore them) Do the smallest thing you can each step of the way
  • 95. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Define “done” 100% feature matching is difficult Implementing features is hard remember how hard it was to write it the first time? you’re at a different part of the software cycle Try to do things incrementally
  • 96. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 97. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 98. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Aside: The Saturn V Von Braun says “German engineering dictates that you should test each part” Worst case situation: a fireball of 1,400’ that will burn for 35s at 2500F Will we make the “end of the decade”? George Mueller, pulled rank, and pushed for an “all up test”
  • 99. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 100. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Be incremental All-up almost never works - the Saturn V is an exception Don’t be “lazy” and assume all-up is easier do an integrated approach & ready to release at every step of the way
  • 104. TFE (HTTP Proxy) Monorail Woodstar 50% Monorail 50% Woodstar
  • 105. TFE (HTTP Proxy) Monorail Woodstar 0% Monorail 100% Woodstar
  • 106. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Find the starting line If you're going with feature parity, then do the biggest bang part of the system first If you can, spend a bit of time extending your runway a bit too Drive with data, & instrument the old system to gather that data
  • 107. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Twitter API Other Photos Profile Activity Home
  • 108. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Don’t ignore data! Your implementations may change, but your underlying data will change very slowly Fake or synthetic data gives you a false sense of security Test with real data as soon as possible get real data piped through the system figure out how you are going to do reconciliations
  • 109. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Manage tech debt better Try to reduce scheduled pressure Establish a culture of design quality Start refactoring, continuous design, & other code-quality practices Partition out a portion of time to always work on technical debt
  • 110. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Shy away from vanity stuff Don’t let the sirens drag you to a “hot new language” Stay away from the trap of “we could do a better job recruiting if our stack looked like…” Do what’s right for your team and what your team can execute on
  • 111. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 112. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Prepare for mounting tension We all know that fixing bugs and firefighting is stressful imagine one team who has to do this, & another team who doesn’t have to worry about it which would you like to be on? Tension is going to build & people are going to be angry Make friends, communicate, & be transparent
  • 113. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Know the business Figure out who are all the stakeholders in the rewrite Figure out who are the decision makers & the ones who control your fate they are usually not those who complain the most they are those who have “the power” Understand all the different non- technical motivations of the company
  • 114. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Find your inner salesperson You have to sell it to the business Gather all the data cost savings feature iteration reliability performance stability Focus on the data. Don't use anecdotes, but, instead, show results of experiments.
  • 115. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Get ready for the politics You are in a precarious position You are exposed taking up engineering resources not delivering new features for the company in an “open transaction” Keep the in-flight work small and well integrated
  • 116. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Keep an eye on code quality! On repeat - getting feature parity is really hard! To keep parity, developers, inevitably, cut & paste code from a previous system! Have code quality metrics APPROVED
  • 117. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Get the team ready Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations - Conway’s Law
  • 118. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 I still haven’t talked you out of this 1. Hold the line 2. Define “done” 3. Incrementalism 4. Find the starting line 5. Don’t ignore data 6. Manage tech debt better 7. Stay away from vanity stuff 8. Prepare for mounting tension 9. Know the business 10.Get ready for politics 11.Key an eye on code quality 12.Get the team ready
  • 119. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 LET’S RECAP!
  • 120. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 121. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 122. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 123. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 124. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 125. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 126. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 The 5 stages ofgrief 1. ELATION - yay! we get to throw out that crappy product! we get to start it over, & do it the right way! 2. BUCKLE DOWN - wow, there is a lot of work here. 3. OH SHIT - there really is a lot of work here. We’re never going to get it done in time. 4. EXHAUSTION - we missed our deadline. Again. 5. RELIEF - we’re out the door! But… it’s crappy. We cut corners, but, we’re done. Next time, we’re totally going to do it right. http://www.jamesshore.com/Blog/How-to-Survive-a-Rewrite.html
  • 127. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015
  • 128. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 What we’re betting on vcurrent x t < vnew x (t - trewrite)
  • 129. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 OK, I STILL HAVEN’T TALKED YOU OUT OF THIS
  • 130. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 I still haven’t talked you out of this 1. Hold the line 2. Define “done” 3. Incrementalism 4. Find the starting line 5. Don’t ignore data 6. Manage tech debt better 7. Stay away from vanity stuff 8. Prepare for mounting tension 9. Know the business 10.Get ready for politics 11.Key an eye on code quality 12.Get the team ready
  • 131. Raffi Krikorian / raffi.krikorian@gmail.com / 9 March 2015
 Software Architecture Conference 2015 THANKS! (WHEW)