@mattjmorrison
Some rights reserved by Robert Crum
No Technical Debt
No Legacy Code
Chance to Learn from Your Mistakes
Chance to Choose
Some rights reserved by Lauren Tucker Photography
Not as Simple as Watering
Some rights reserved by p-a-t-r-i-c-k
Caveat - Rails Engines & Django Apps - Use These
* MS DOS 1.0 was 4k Lines of Assembly in 1980
Wikipedia: Expansion or redevelopment of (brownfields) may be complicated by environmental contaminations.
The Monolith is a Contaminated Environment
coders anonymous
An Entire System
Make Smaller Pieces
If You Do Not Have One Giant Code Base You Will Not Have One Giant Rewrite
Iterate
Let’s Take a Look at Some Examples
A Thing in the Cloud that You Can Use
Boo, Brown Field
- or -
Yay, Green Field
Easy with a Monolith
Not So Easy with Multiple Servers
Green Field, Baby!
Again, Easy with a Monolith
And Again, Not So Easy with Multiple Servers
Remember that Unnecessary Coupling Thing?
Green Field, Baby!
New Project New Code Base New Database New Web System with an API Remove Customer Management from the Monolith, Add API Calls Migrate Existing Customer Data to New Database
It Sounds Daunting, But the More You Do It
A Portable Bundle of Code
Just By Trying to Name Your Open Source Library You May Find That It Already Exists
Translates a Timestamp into:
A Vertical Slice of a System
Green Field, Baby!
Extracting is more of a Refactoring than it is a Rewriting
Also, since it is a Refactoring…
* With Tests, of Course!
I Have Tried This, It Does Not Work
Legacy Application Does Some Calculations
We Want to Leverage That from the Web
We Do Not Want Possible Inconsistencies
Legacy Application Has Some Data
We Want that Data to be Pushed in Real Time to the Web
Code that Sits Between
(In Order of Importance)
Source Control
Tests
Environment Isolation
Automated
Currently at
Web Services, Libraries, Applications and Other Small Systems