the immor(t)ality of legacy projects - dalia simons, wix - devopsdays tel aviv 2016

27
Best Practices for Maintaining Legacy Projects The Immortality of Legacy Projects Dalia Simons, Server Architect @SimonsDalia [email protected]

Upload: devopsdays-tel-aviv

Post on 08-Jan-2017

44 views

Category:

Technology


1 download

TRANSCRIPT

Best Practices for Maintaining Legacy Projects

The Immortality of Legacy Projects

Dalia Simons, Server Architect

@[email protected]

Hi.o Server code is my passion and professiono Have become (not willingly) a legacy projects

expert

MY LEGACY PROJECT

The HTML Mobile Project

Where do legacy projects come from?

01

http://memesvault.com/facepalm-meme-gif/

An Idea

For a new project

A project is not born a legacy!

Time

New Features

The projectextends and becomes profitable.

www.clipartpanda.com | www.clker.com | affordableengagement.com

A New Shiny Project

Starts gaining customers

…and Here we Are.

How did we get here?

A New Shiny Project

Starts gaining customers

…and Here we Are.

A Shift in Technology

CASE STUDY

How we moved to

Obsolete technology

Flash editor => html 5 editor

Bad-Written Projects

Projects that are:

● Not fully tested

● Not refactored

● Complicated code

● Spagetti code

● Can’t add new features / components

CASE STUDY

How we moved to

Html editor => New html editor

Customer growth drives change

CASE STUDY

How we gave up

Non functional concerns

● Load

● Scalability

● Architectural change

We decide to rewrite or deprecated

…and Here we Are.

rowdygoddess.com

● Legacy projects are kept alive (we have paying customers to support)

We are now the proud owners of a legacy project.

● If we rewrite, why not migrate?

Cheer up! You can do it smart.

02

https://www.pinterest.com/jennn1428/stick-figures/

Where to start from

worldartsme.com | http://www.istockphoto.com/illustrations/cleaning | www.freeimages.com | www.supercoloring.com

Rewrite? Refactor? Maintenance? Do Nothing?

Doing nothing is rotting

If it’s not broken, don’t fix it

It’s in production, let’s leave it there

A project is not an island

A project we interact with changes its API

A 3rd party library has an important security fix

You find a bug that requires urgent fixing

External technologies might by upgraded across the co’

https://pixabay.com/en/spacecraft-rocketship-spaceship-303592/

Maintenance (balance) is the key

http://www.istockphoto.com/vector/scales-balance-drawing-gm516375115-48738346

(costly) technical debt

(harmful) decay

Own you code

https://s-media-cache-ak0.pinimg.com/236x/5b/ae/6f/5bae6fbd9f174dcc1bbd1d9a277fd3ce.jpg

Assign an owner for each project

Rome wasn’t built in a day

http://clipartfreecollection.top/openphoto.php?img=cliparts/rome-clipart/cliparti1_rome-clipart_01.jpg

Learning a new project takes time

Keep everything under CI

#1

4 rules to stayin’ alive

● Build is always green

● Deploy to prod regularly (automatic email)

Keep up to date with dependencies

#2

4 rules to stayin’ alive

Keep everything under CI

● As long as they don’t break compatibility

● Don’t freeze dependencies (security updates, bug fixes)

● Build is always green

● Deploy to prod regularly (automatic email)

CASE STUDY

Frameworks

End-to-end services to all Server projects

● Network calls● Security Changes made

over time left some code used only by legacy projects

We isolated that code into a separate project, and found some interesting insights

Quarantine your dead code

#3

4 rules to stayin’ alive

Keep everything under CI

Keep up to date with dependencies● As long as they

don’t break compatibility

● Don’t freeze dependencies (security updates, bug fixes)

● Build is always green

● Deploy to prod regularly (automatic email)

● Don’t pollute other projects!

● Code that exists - will be used

Small steps are the key

#4

4 rules to stayin’ alive

Keep everything under CI

Keep up to date with dependencies● As long as they

don’t break compatibility

● Don’t freeze dependencies (security updates, bug fixes)

● Build is always green

● Deploy to prod regularly (automatic email)

Quarantine your dead code● Don’t pollute other

projects!

● Code that exists - will be used

● Remove deprecations

● Improve tests

● Small refactors

● Remove dead code

The boy scout rule

http://www.tocolor.pics/boy-scouts-taking-an-oath-coloring-pages/boy-scouts-taking-an-oath-coloring-pages-2/

Always keep the campground cleaner than you found it.

‘Till When?

Legacy projects are the most profitable to the company

They make money, while you spend $0 on development

EOL

Technology EOL coming up

No longer profitable

When to migrate

http://noliklechevalier.tumblr.com/post/132110537448/4-my-graffiti-boyz-bombing-spraying-art

Legacy projects are like your marriage after 10 years.

A little maintenance, done regularly, can go a long way.

This is where you are going to present your final words.This slide is not meant to have a lot of text.Thank You!Any Questions?Dalia Simons

[email protected]