freshbooks spaghetti to soa

44
FreshBooks Spaghetti to service oriented

Upload: markstory

Post on 22-Aug-2015

669 views

Category:

Software


0 download

TRANSCRIPT

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 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

Challenges

Each Customer had their own Database Tables

Unit Tests were not Reliable

XSS, SQL Injection and Then Some

Code Stew

Escape Hatch cc by-nc-nd Sam Whitfield

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.

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.

In Closing,

You can Recover from a Spaghetti Monster

We did.

Thankshttps://joind.in/13338

!twitter - @mark_story

github - markstory