Upload
markstory
View
742
Download
1
Embed Size (px)
Citation preview
FreshBooksSpaghetti to service oriented
In the BeginningWe head back to 2003
PHP4
MySQL 4MyISAM, and latin1 for all the things.
Deploy with Dreamweaver
But the product was great, and customers
loved it.
Technical Debt had 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
Challenges
Code Stew
Copy Pasta
Every Customer had their own Database Tables
Unit Tests were not Reliable
XSS, SQL Injection and Then Some
3 years later…
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.
Collective Effort
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
Super Tech
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…
Painter tools CC by-nc-nd Chap_D
Solid Tools
Master a few ToolsAvoid the temptation of hip trends
Invest in ToolingContinuous integration, and configuration management
pay off in the long term.
Have a VisionKnowing where you want to end up is essential
Be AmbitiousHave big goals and small milestones
ConcentrateSpecialize in a few frameworks/libraries
In Closing,
You can defeatthe Monster
We did.
Thankshttps://joind.in/15740
twitter - @mark_story github - markstory