FreshBooksSpaghetti to service oriented
In the BeginningWe head back to 2003
MySQL 4MyISAM, and latin1 for all the things.
Deploy with Dreamweaver
But the product was great, and customers
loved it.
Technical Debt Quickly Spiralled out of Control
Development Slowed
The Flying Spaghetti Monster cc by John Dill
FreshApp API
Internet
Live DBs
Rabbit MQ
Bloom
Cloud files.
Lucre
Warehouse
Nginx load balancer
eventfeeder
Repeater
warehouse scriptswebsite
Evolve
Each Customer had their own Database Tables
Unit Tests were not Reliable
XSS, SQL Injection and Then Some
Escape Hatch cc by-nc-nd Sam Whitfield
FreshApp API
Internet
Live DBs
Rabbit MQ
Domain services
Frontend services
MQ consumers.
Connect to various integrations / services
Bloom
Data storage services
Cloud files.
Lucre
Internal Tools
* Some connections have been omitted for clarity.
Warehouse DatamartReporting ETL
Redis
Masterlock
MySQL
ASM
Nginx load balancer
Payments
eventfeeder
Mail Sniper
Funneling
Tolar
Banksiphon
Notify
Repeater
Manifestio
Afliliates
accountant-leads
Supporter
Uploadr
warehouse scripts
freshbooks-ios
Mobile clients
freshbooks-android
MySQL
newman
refunder
statamic
Marketing website
multi-channel-tracker
receipts
cardspark
Evolve
How we did itand how you might be able to.
The Tandem cc by-nc-sa Alex Bikes
Build TrustWithout trust you are unlikely to get autonomy
AlignmentBetween Business and Development Leaders
AlignmentAmongst Developers
Make FriendsDevelopers + Design + Product Owners
Hire the bestThat you can find & afford
rover 200 framing line cc by-nd spencer cooper
Better, not Perfect Getting things finished counts more
Incremental ProgressDeliver value and improvements gradually
Amortize RefactoringBuild improvement costs and tests into new work.
Don’t Dig a Deeper HoleDo new projects the ‘right’ way
Build Smaller Applications
But not too small
Telescope cc by-nc Leslie Kalohi
Have a VisionKnowing where you want to end up is essential
Be AmbitiousHave big goals and small milestones
ConcentrateSpecialize in a few frameworks/libraries
Painter tools CC by-nc-nd Chap_D
Master a few ToolsAvoid the temptation of hip trends
Invest in ToolingContinuous integration, and configuration management
pay off in the long term.
You can Recover from a Spaghetti Monster
We did.
Thankshttps://joind.in/13338
!twitter - @mark_story
github - markstory