In this presentation we will look at strategies we can use to make a more nimble commerce platform that developers are excited to contribute too and customers are wow'ed by its ease of use.
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Reigniting the Volusion platform
1.
2. INTRODUCTION
• IDENTIFYING QUICK WINS
• CONTINUOUS DEPLOYMENT
• API FIRST APPROACH
• SHIFTING FROM MONOLITHIC TO
MICROSERVICES
• FEATURE CANDIDATES FOR REAL IMPACT
• GROWING THE TEAMS TO MAKE IT HAPPEN
5. TYPES OF QUICK WINS
• RESOLVE AS MANY BUGS AS POSSIBLE
• UPGRADE THE LOOK AND FEEL TO CURRENT
• TRANSPARENT CUSTOMER COMMUNICATION
• BUILD AROUND THE PLATFORM, NOT IN IT
7. BUG BASHING FIRST
• PLATFORM TEAM IN BUG BASHING MODE
• PRIORITIZING THE LOW HANGING FRUIT
• FIXING THE TOP ISSUES OUR CUSTOMERS ARE
DEALING WITH
• COMMUNICATE OUR RE-FOCUS TO THE
CUSTOMERS
8. “
”
DELETED CODE IS DEBUGGED CODE.
- JEFF SICKEL
• THIS EFFORT IS HAPPENING NOW AND WILL CONTINUE THROUGH-OUT THIS YEAR
• FOCUSING ON CODE REMOVAL, OR REFACTORING OFF EXISTING PLATFORM
9. TRANSPARENCY WITH THE CUSTOMER
• STATUS PAGE
• FEATURE REQUESTS
• OWNING UP TO OUR PAST
16. “
”
SIMPLICITY IS THE ULTIMATE FORM OF
SOPHISTICATION.
- LEONARDO DA VINCI
• ADMIN RESKIN TO BE LAUNCHED IN Q2
• NEW STOREFRONT TO BE LAUNCHED IN Q2
17.
18. START WITH CONTINUOUS DELIVERY
• UNDERSTAND ROAD BLOCKS
• WORK TO REMOVE ROAD BLOCKS
• AUTOMATE PATH TO PRODUCTION
• PERFORM PATH TO PRODUCTION MANUALLY
• TEST AUTOMATICALLY
• MEASURE AUTOMATICALLY
19. THEN CONTINUOUS DEPLOYMENT
• AUTOMATE LAST STEPS THROUGH
• AUTOMATIC TESTING – RESULTS
• AUTOMATIC MEASUREMENT – RESULTS
20. CI/CD STRATEGIES
• A / B – BLUE / GREEN – CANARY
• DARK LAUNCHING
• SLOW BLEED OVER OF TRAFFIC
• NON-DESTRUCTIVE DEPLOYMENTS
• ROLL BACK BECOMES SWAP TO LAST
• EXCEPT DB
• MEASURE ANYTHING / MEASURE EVERYTHING
• CREATE AND WATCH BASELINES
• LISTEN FOR UNACCEPTABLE DRIFT
• EXCEPTIONS, OUTAGES, RESPONSE TIMES
• DASHBOARD FOR ”ALL THE THINGS”
• PROD LIKE EVERYWHERE
21. “
”
PROGRAM TESTING CAN BE USED TO
SHOW THE PRESENCE OF BUGS, BUT
NEVER TO SHOW THEIR ABSENCE!
- EDSGER DIJKSTRA
• AS SIMPLE AS POSSIBLE, LESS COMPLEXITY IS BETTER
• PROD LIKE FROM THE START ENABLES NO SURPRISES DOWN THE ROAD
• MEASURE ANYTHING, MEASURE EVERYTHING
22.
23. DOG FOODING MAKES THE BEST API
• ENABLES CUSTOMER TO EXTEND THE PLATFORM
• DECOUPLE THE FRONT END FROM THE BACKEND
• OPEN UP MOBILE OPPORTUNITIES
• OPEN APP STORE FOR VOLUSION
• OPEN NEW MARKETS FOR VOLUSION
24. A COLLECTION OF SMALL API’S
• CAN BE WEB API
• CAN BE NODE.JS AND LAMBDA
• FRONTED BY GATEWAY
• DEPLOYS SEPARATE FROM FRONT END
• VERSIONED INDIVIDUALLY
From one big code base
To small specific
code bases
25. “
”
PLAN TO THROW ONE AWAY; YOU WILL,
ANYHOW.
- FRED BROOKS
• SMALL, PURPOSE BUILT APPS, WILL LAST LONGER
• SMALL, PURPOSE BUILT APPS, ARE EASY TO RE-WRITE
26.
27. WHAT IS A MICROSERVICE?
• IT DEPENDS!
• CAN BE A 10 LINE LAMBDA METHOD
• CAN BE A WEB API PROJECT
• ALWAYS – JUST ENOUGH, NO MORE
• AUTONOMOUS
• HIGH RATE OF CHANGE NOT NECESSARY
28. N-TIER OF THE 90’S
• A COLLECTION OF LAYERS TO SEPARATE
CROSS CUTTING RESPONSIBILITIES
• ADDING FEATURES GOES SLOWER AS
UNDERSTANDING IMPACT GETS DIFFICULT
• SMALL CHANGES REQUIRE FULL TEST
SUITE EXECUTION
29. DEATH STAR
ARCHITECTURE
• A COLLECTION OF SERVICES THAT DO
THEIR SINGLE JOB WELL
• EACH SERVICE USES THE TECH THAT BEST
SOLVES THE JOB
• WIDTH VS. DEPTH APPROACH
30. GO FASTER, MOVE THE
COMPLEXITY
• INFRASTRUCTURE COMPLEXITY IS
INITIALLY HIGHER WITH MICROSERVICES,
BUT CAN ADD FEATURES FASTER
• LOWER INITIAL INFRASTRUCTURE
FRICTION IN MONOLITH, FEATURES GET
HARDER TO ADD OVER TIME
31. “
”
PERFECTION IS ACHIEVED NOT WHEN
THERE IS NOTHING MORE TO ADD, BUT
RATHER WHEN THERE IS NOTHING MORE
TO TAKE AWAY
- ANTOINE DE SAINT-EXUPERY
• JUST ENOUGH CODE, AND NO MORE
• NO PRECONCEIVED TECHNOLOGY CHOICES MADE UP FRONT
• CAN BE 5 LINES OF CODE, CAN BE A VISUAL STUDIO “PROJECT”
32.
33. HOW TO IDENTIFY
• CAUSES INTERNAL CUSTOMERS PAIN
• CAUSES EXTERNAL CUSTOMERS PAIN
• IMPACTS STABILITY OF THE PLATFORM
• NOT PART OF OUR CORE OFFERING
• REQUIRES COMPLEX UNDERSTANDING
• RIDDLED WITH BUGS
• BUILT ON OLD, NO LONGER SUPPORTED,
TECHNOLOGY
• GET OUT OF THE HABIT OF
“NOT INVENTED HERE”
34. WE CAN BUY SOME FEATURES
• SEARCH, TAX, SHIPPING, IMAGE RESIZE, APPLICATION ACCELERATION,CDN
35. VOLUSION SEARCH
• CUSTOM BUILT ON SQL SERVER
• MORE COMPLEX THAN NEEDED
• INDEXING CAN CAUSE OUTAGES
• MISSINGFEATURES
• HARD TO SET UP
• CONFUSES CUSTOMERS
36. SEARCH AS A SERVICE
• ANOTHER COMPANY’S CORE OFFERING
• FACETED & FILTERING OUT OF THE BOX
• RE-INDEXING IN REAL TIME
• MULTI-LANGUAGE SUPPORT
• SUPPORTED BY THEM, NOT US
• PROMOTES EROSION OF OLD TECH
37. WE CAN BUILD OTHER FEATURES
• STORE FRONTS – API’S – ADMIN INTERFACE – STYLE EDITOR – PRODUCT CATALOG
38. STORE FRONTS CAN BE RE-WRITTEN
REASONS TO REFACTOR
• NEW RESPONSIVE BASE THEME
• STYLE EDITOR
• HTML RESTRUCTURE
• HTML 5
REASONS TO RE-WRITE
• MOVE OF OF ASP CLASSIC
• DECOUPLE FROM THE PLATFORM
• SEPARATE DEPLOYMENT FREQUENCY
• ONE TEAM OWNERSHIP
41. IDENTIFY TARGET:
SEARCH
• SEARCH AS A SERVICE
• ADDS FEATURES: BOOST, FILTERING,
FACETING, AUTO-INDEXING
• STABILIZES PLATFORM
• REDUCES DATA FOOT PRINT
• REDUCES INFRASTRUCTURE FOOTPRINT
42. DO THE WORK
• BUILD NEW SEARCH UI
• SYNC STORE DATA TO SEARCH SERVICE
• HOOK INTO DATA UPDATES
• HOOK INTO DATA IMPORTER
• ADD FEATURE TOGGLES
• SLOWLY ROLL STORES OVER TO NEW SEARCH
44. DO THE WORK
• STOREFRONT AS STAND ALONE APP
• BUILT FROM THE API OUT
• STRUCTURED FOR FLEXIBLE THEMING
• HEAVILY CACHEABLE (CDN)
45. THE GOAL IS TO ERODE
THE PLATFORM
WE ARE STILL AFLOAT BUT WE NEED TO
RE-PLATFORM AS QUICKLY AS WE CAN
• SMALLER AND LIGHTER COMPONENTS
• BUILD A FEELING OF OWNERSHIP
• GET IN FRONT OF OUR COMPETITION
from oil tanker
to
container ship
48. THAT LOOKS LIKE A
LOT OF WORK!
• WE’VE ALREADY STARTED:
• BUG BASHING
• ADMIN REFACTOR
• STYLE EDITOR
• CONTENT BUILDER
• SEARCH AS A SERVICE
49. WE WANT
TO GO FASTER!
• FORMALIZING THE “API TEAM”
• EXPANDING THE FRONT END TEAM
• EXPANDING THE PLATFORM TEAM
• GROWING QA
• ADDING DEVOPS
• REALIGNING PROCESSES
50. BUT WE CAN’T FORGET
• WE NEED PASSION
• SELF DRIVEN
• HIGHLY MOTIVATED
• EAGER TO SOLVE PROBLEMS
Editor's Notes
Quick wins
API first
CI / CD
Monolithic vs microservices
Feature candidates for quick wins
Growing the team
Please ask questions in real time
Start with quick wins
Target making our customers happy and trust us
* bugs
* look and feel
* user experience
* how we communicate with our customers
* build new apps over modifying existing code
900 bugs in the system
Collected over 3 years
* Raymond has been prioritizing the bugs
* fixing what we can
* stabilizing
* looking for quick wins
* looking for most reported issues
* communicating our refocus
The more code we delete the better!
Status page, outages, impact to customers
Give customer a voice to the dev team
UserVoice
reskinning is a quick win
* from once or twice every two weeks
* 20 times a day
Road blocks
Release management kept in the loop
Steps that aren’t automated
Testing requires eyes on
Add more tests
Measure automatically
Button press to production becomes very stable
Automate everything
* need auditing in jira? Automate it!
* extend the platform
* decoupled
* can do mobile better
* can open an app store
* expand into other markets (CMS)
* no more monoliths!!!
* right tech for the job
* logical API - fronted by a gateway
* different deployment story
* focus on smaller batch size
* as the app grows, the complexity grows
* slower to add features to over time
* complexity added to manage complexity
* DDD, CQRS, Event Sourcing, BUS, IOC
* its cheap to add a service
* road to production has to be solid
* manual management approach not possible
* initially Monolith is cheaper
* file > new solution > add projects > deploy
* over time adding features gets hard
* test execution times grow
* technology choices made up front
* most important feature makes all features most important
- order management, cart
- vs. product catalog, cms
With these ideas - where do we begin?
* look for pain
* our pain
* customer pain
* stability
* product purchase opportunities
* most buggy
* old tech
- kill the "not invented here" mantra
* Look for products
* great at what they do
* that feature is their core functionality
* don't re-invent for solved problems
* several meetings where search was complained about
* missing features
* hard to set up
* complex
* stability can be an issue
* we have to build the UI
* we need to import our data
* need to keep data in sync* improves store front search
* improves admin search
* removes code from us
* not everything can be outsourced though!
* storefront upgrade
* API's
* admin interface
* style editor
* product catalog* things that make us special
When we want to refactor we need a reason
* embrace real responsive html
* better user experience
* requires html restructure
Re-write also needs reasoning
* get off of asp classic / vbscript
* decouple from the mother ship
* needs to live on grow on its own
* team ownership
* low touch
* big feature gains
* adds stability
* let's us delete code
* there are touch points to upgrade
* can't just rip it out
* need to support both initially
* need a slow roll out
* need to communicate to customers
* slow roll out to customers
Rinse and repeat
* next candidate is storefront
* already updating structure
* building better responsive themes
* building new style editor
* great time to just rewrite it!
* lots of low hanging fruit
* will push the growth of our API's
* can cache the experience
* latest theming concepts up front
* make our store fronts AWESOME!
With each new thing
or old thing made better
* need to embrace getting off the existing mega platform
* and embrace smaller lego pieces
* formalizing the teams
- api
- ui
- platform
- qa
- devops
* Quality people over people now
We are hiring for the API team
Hiring for the front end team
Then the QA and devops