This document discusses Onestop, an outsourced e-commerce company that provides full-service e-commerce solutions including shipping, warehousing, photography, customer service, online marketing, and software platforms to over 35 clients. Onestop has transitioned to using Orchard as their application platform to replace their legacy .NET forms platform. They discuss challenges of deployment, performance, caching, and running a multi-node, multi-data center architecture on Orchard.
2. Orchard Harvest Conference – Amsterdam 2013
Cart
Checkout & Payment
How hard can this be?
Get going! Off you go!
A harder problem than your manager thinks
3. Orchard Harvest Conference – Amsterdam 2013
Products: content items
Description, Title
Reviews: comments & votes
Photos: galleries
Static pages
Search
Related Items
a CMS should help
4. Orchard Harvest Conference – Amsterdam 2013
Cart
Checkout, Payment, Refunds
Taxes
Shipping
Order Processing
Inventory
Rule-based Discounts and Promotions
Bundles
Reviews
Related Products
Faceted Search
etc.
no such thing as simple commerce
9. Orchard Harvest Conference – Amsterdam 2013
except for postmaster.io
Free under 30 shipments / month
$9.95 for 30-100 shipments a month
$29.95 for 100-500 shipments a month
$49.95 for 500-1000 shipments a month
18. Orchard Harvest Conference – Amsterdam 2013
• Started in 2003 – 2 guys literally in a
garage
• First year, $2M revenue
• 10 years later, 200 employees, 4 offices
worldwide, 100,000 sq ft Headquarters in
Southern California
• 35+ Clients
• Full Service e-commerce: Shipping,
Warehousing, Photography, Customer
Service, On-Line Marketing, Software
Platform
Onestop History
20. Onestop e-commerce goals
• On-Board Customers Faster
• Provide a self-service portal (dashboard) for
commonly updated elements
• Build an extensible and maintainable codebase
• Provide a consistent user experience cross-
browser and cross-device (tablet/mobile)
• Fault-tolerant multi-node, multi-data center
deployment
21. Orchard Harvest Conference – Amsterdam 2013
Replace .NET Forms Platform with modern architecture
Looking for a CMS Framework based on MVC
Needed an extensible application platform, not just a CMS
Love C#
Decided on Orchard
23. Orchard Harvest Conference – Amsterdam 2013
• Fork of 1.6 from Codeplex, we patch our repo
only for critical bug & security updates
• We fork all modules we use
• Custom recipe for provisioning
• Move to 1.7 shortly in our internal 1.x branch
• Usually prop at night, draining load balancers
• Combination of BitBucket, Bamboo,
MSDeploy transforms, Virtual directories for
~/Media, Robocopy
• * Opportunity for Orchard Community to
make some improvements in this area.
Deployment - Live, production, always on clients
24. Onestop 2 Techniques for Phased Approach
Not possible to rewrite entire codebase on new
technologies quick enough
Off-Line Metaphor: Tearing down a house vs.
remodeling – BOTH are a lot of work
2-LEVEL HYBRID APPROACH
1. API Connection to legacy (JSON, highly cached)
2. Virtual Directories
28. Onestop - Why Hybrid?
BECAUSE THIS SCREEN IS COMPLICATED!
29. Onestop - Rewrite Rules
Rewrite rules let us cleverly and seamlessly load
the Onestop Classic platform
/checkout
Rewrites to:
/spyo/store/os/checkout.aspx
30. Orchard Harvest Conference – Amsterdam 2013
• Sub 100ms page load times when loaded
from the “edge”
• Challenging to build pages that are
dynamic and fully output-cacheable
Performance Levels
31. Orchard Harvest Conference – Amsterdam 2013
• Caching – many, many layers of cache
“Cache” is the 3rd most used word used in our offices
after “Coffee” and “Frenchman”.
– Output Cache – Contrib.Cache, Contrib.Cache.Memcached
– Data Cache – Orchard.Caching, Orchard.Caching.Memcached
– NHibernate over Memcached
– CDN (Akamai)
– Cache Headers
• Log4net cross nodes
• Instance variables within App Pool
• UGC – Media Folder, DFS
• * Opportunity for Orchard Community to make some
improvements in this area.
Multi-Node Challenges
32. Orchard Harvest Conference – Amsterdam 2013
Caching & Classic Topology
CMS Application
CMS Database Store Database
Internet Firewall 12 Web Server NodesCDN
Classic
4 API Server Nodes 4 Cache Server Nodes
.NET Runtime Cache
Is Item in Cache? Yes
Load Balancer
CMS Routing And Rendering Engine
Modules
No
Get it
50ms – 500ms
NHibernate
.NET Runtime Cache
API Request / Response
Insert into Cache
33. Orchard Harvest Conference – Amsterdam 2013
• Database 2-way Replication across
physical data centers– Needs a re-work
• Memcached nodes per data center
Multi-Data Center Challenges
34. Orchard Harvest Conference – Amsterdam 2013
• 24+ Custom Modules
• 55+ Custom Features
• Team of 6 Dedicated Engineers & Growing
• Betting our company future for the next
generation of clients on Orchard as an
application platform
• 4 Sites live now, 8 by end of 2013
• 25+ Sites live by end of 2014
Embracing Orchard
35. Orchard Harvest Conference – Amsterdam 2013
• Ylan posted a job description. Go find him!
• Work by the beach (picture taken in February :)!
We’re hiring
36. Orchard Harvest Conference – Amsterdam 2013
• Very interested in discussing some of
Onestop’s challenges with others in the
community with similar requirements
• Questions???
Q & A
Editor's Notes
The API are overly complicated, taking all possible cases and exposing them. There was a business opportunity for a really integrated platform that internalizes the complexities and offers a no-fuss checkout button, which has been taken on by Stripe and a few others.
Stripe is simple, developer-friendly, and doesn’t do too much or too little.
This is just the first screen, the "vital Info". There are 5 other tabs, including a "More Details". Vital info includes "minimum throw distance". I have no idea what that is, but it's vital. By choosing one of those, you are committing to making all of your sales with that partner. It may be a good idea in some cases. Openbeam for example lets them do all their procurement.