36
Commerce Bertrand Le Roy Benevolent Dictor, Co-Founder [nwazet Brett Morrison Co-Founder, Chief Innovation Officer Onestop Internet

Commerce - Orchard Harvest Amsterdam 2013

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Commerce - Orchard Harvest Amsterdam 2013

CommerceBertrand Le Roy

Benevolent Dictor, Co-Founder [nwazet

Brett MorrisonCo-Founder, Chief Innovation Officer

Onestop Internet

Page 2: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

CartCheckout & Payment

How hard can this be?Get going! Off you go!

A harder problem than your manager thinks

Page 3: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

Products: content itemsDescription, TitleReviews: comments & votesPhotos: galleriesStatic pagesSearchRelated Items

a CMS should help

Page 4: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

CartCheckout, Payment, RefundsTaxesShippingOrder ProcessingInventoryRule-based Discounts and PromotionsBundlesReviewsRelated ProductsFaceted Searchetc.

no such thing as simple commerce

Page 5: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

payment gateways are all crap

Page 6: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

except for Stripe

Page 7: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

integrated solutions are worse

The vital info according to Amazon

Page 8: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

shipping gateways are all crap

Page 9: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

except for postmaster.ioFree 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

Page 10: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

and easypost

5¢ per shipment

https://www.geteasypost.com/

Page 11: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

e-commerce sample

available modules

Page 12: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

Buy from Amazon

available modules

Page 13: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

Amazon Checkout

available modules

Page 15: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

[nwazet commerceFork it on BitBucket

available modules

Page 16: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

DEMO

[nwazet

Page 17: Commerce - Orchard Harvest Amsterdam 2013

Onestop - Outsourced E-Commerce

Page 18: Commerce - Orchard Harvest Amsterdam 2013

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

Page 19: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

Onestop Clients

Page 20: Commerce - Orchard Harvest Amsterdam 2013

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

Page 21: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

Replace .NET Forms Platform with modern architectureLooking for a CMS Framework based on MVCNeeded an extensible application platform, not just a CMSLove C#

Decided on Orchard

Page 22: Commerce - Orchard Harvest Amsterdam 2013

Onestop DEMO – johnvarvatos.com

Page 23: Commerce - Orchard Harvest Amsterdam 2013

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

Page 24: Commerce - Orchard Harvest Amsterdam 2013

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 APPROACH1. API Connection to legacy (JSON, highly cached)2. Virtual Directories

Page 25: Commerce - Orchard Harvest Amsterdam 2013

Onestop CMS Hybrid Architecture

Page 26: Commerce - Orchard Harvest Amsterdam 2013

Onestop - Connecting to legacy platform

Page 27: Commerce - Orchard Harvest Amsterdam 2013

Onestop - Virtual Directories

Page 28: Commerce - Orchard Harvest Amsterdam 2013

Onestop - Why Hybrid?

BECAUSE THIS SCREEN IS COMPLICATED!

Page 29: Commerce - Orchard Harvest Amsterdam 2013

Onestop - Rewrite Rules

Rewrite rules let us cleverly and seamlessly load the Onestop Classic platform

/checkout

Rewrites to:/spyo/store/os/checkout.aspx

Page 30: Commerce - Orchard Harvest Amsterdam 2013

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

Page 31: Commerce - Orchard Harvest Amsterdam 2013

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

Page 32: Commerce - Orchard Harvest Amsterdam 2013

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 – 500msNHibernate

.NET Runtime Cache

API Request / Response

Insert into Cache

Page 33: Commerce - Orchard Harvest Amsterdam 2013

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

Page 34: Commerce - Orchard Harvest Amsterdam 2013

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

Page 35: Commerce - Orchard Harvest Amsterdam 2013

Orchard Harvest Conference – Amsterdam 2013

• Ylan posted a job description. Go find him!• Work by the beach (picture taken in

February :)!

We’re hiring

Page 36: Commerce - Orchard Harvest Amsterdam 2013

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