Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016

Spark Solutions
Spark SolutionsSpark Solutions
Powered by
Me llamo Miguel
I do this
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016
My Team
“Mermaid Tucker”
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016
#OpenCommerce
mtucker@godaddy.com
@mtazva
Online Store
The Pit of Success
Why Spree?
● Easily Customizable
● Fully Featured
● Existing API
● Highly Extensible
● Great Community!
by developers
for developers
Simplifying the Experience
● Grid-based options building
● Simple customization via themes engine
● Automatic PayPal activation
● Automatic domain management
● Automatic SSL management
● Automatic label printing
● Hiding the dirty details
Magnifying the Impact
● Automatic email marketing integration
● Simple and automatic Facebook store
● One-click product reviews engine
SaaS-ification
● Multi-tenancy
● Themes engine
● Internal integrations (single sign-on, domains, others)
● GoDaddy branding
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016
We are
the 1%
Making the Sale
Get Published
Making the Sale
Get Social!
Scaling Spree - Tech Stack
● CentOS 6
● Ruby 2.2
● Ceph (internal cloud storage)
● Github / GHE
● Jenkins for CI/CD
● Puppet
● Hadoop
● StatsD and Graphite
● NewRelic
● SumoLogic
● Honeybadger
● Apache Traffic Server 5.3
● HAProxy 1.5
● Apache 2.2
● Unicorn 4.9
● Rails 4.1 [https://github.com/spree/spree/pull/7192]
● Spree 2.2
● Bootstrap 3
● React 0.14
● Delayed Job
● Memcached
● MySql 5.5
● Akamai CDN
Scaling Spree - Architecture
A10
CommonDB
API
(4)
App
(6)
MerchantDB
ATS
HAProxy
ATS
HAProxy
ATS
HAProxy
ATS
HAProxy
SSL Termination
Redundancy
Horizontal Scaling
Context-specific data
Global metadata
Job
(4)
Memcached
(4)
Scaling Spree - Performance
● 10s of thousands of unique live storefronts
● ~1.5M page views per day
● Average page response time ~2.5s
● Average server response ~300ms
● Capable of ~400rps per app server before performance degrades
● >99.99% uptime
The ActiveRecord Callbacks Problem
● Obscure business logic. Explicit => Implicit
● Often have unintended side effects
● Require deep understanding of AR internals
● Can cause a chain reaction performance nightmare
that!
The AR Callbacks Problem
Option Type Product
Taxonomy
Taxon
Option Value
1:1 1:M
1:M
1:M
Variant
1:M
1:1
parent
Variant
Product
Taxonomy
Taxon
belongs_to :option_type,touch: true
after_touch :touch_all_variants
after_touch :touch_all_products
belongs_to :product, touch: true
after_save :run_touch_callbacks
after_touch :touch_taxons after_touch :touch_parent
Yo Dawg
I heard you like ActiveRecord Callbacks
So I added a callback that will call you back
When your callback calls my callback
Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016
The AR Callbacks Problem
A Stop Gap Solution
https://github.com/godaddy/activerecord-delay_touching
ActiveRecord::Base.delay_touching do
# touch_all_the_things
end
The AR Callbacks Problem
What do we do?
Be more explicit with Service Objects
OptionValueUpdater.new(option_value).call
● Explicit, clear business logic
● No hidden side effects
● No magic to understand
● Aggregation of bulk updates
My time with Rails is up (Piotr Solnica)
http://solnic.eu/2016/05/22/my-time-with-rails-is-up.html
“People are attracted by Rails because it gives you a false sense of
simplicity, whereas what really happens is that complexity is being hidden
by convenient interfaces. [...] ActiveRecord is just one, representative
example, [...].”
All Things in Moderation
Rails has won: The Elephant in the Room (Fabio Akita)
http://www.akitaonrails.com/2016/05/23/rails-has-won-the-elephant-in-the-room
“[…] for all intents and purposes, Active Record still does much better than
average. But if you're big, you should be careful. That's all.”
Spree Wish List
Improve Order Consistency
● Do not trigger order recalculation once complete (or at least be more explicit)
○ Some operations can cause completed orders to be recalculated
● Snapshot product details on orders
○ Modifying product information is reflected in completed orders
Spree Wish List
Maintain Clear Upgrade Paths
● Semantic versioning
● Non-breaking data migrations
● Upgrades without downtime
Spree Wish List
Preview/Publish Mechanism
● Allow site changes to be staged and viewed before making live
Spree Wish List
Simplify Customization
● Better hooks for overriding flows and replacing features
○ Dependency Injection
○ Configurable Service Locators
○ Integration Hooks in Service Objects
Spree Wish List
Support Automated Integrations
● First class application marketplace
○ Engine to plugin extensions without development work
○ Oauth-based activation and requirements-based authorization
■ Generates unique, role-based api users
Spree :)
Spree Wish List
Keep on Being You!!
● Retain a helpful and collaborative community
● Share and learn from each other
mtucker@godaddy.com
At GoDaddy
we're pulling for small business.
Help us transform the global economy, one entrepreneur at a time.
@mtazva
mtucker@godaddy.com
1 of 36

Recommended

Sean schofield & Richard Lister, Spree Commerce_ Fearless deployment @ Open C... by
Sean schofield & Richard Lister, Spree Commerce_ Fearless deployment @ Open C...Sean schofield & Richard Lister, Spree Commerce_ Fearless deployment @ Open C...
Sean schofield & Richard Lister, Spree Commerce_ Fearless deployment @ Open C...Spark Solutions
18.2K views36 slides
Jimmie Lindstrom, Braintree_ePayment Workshop @ Open Commerce Conference 2016 by
Jimmie Lindstrom, Braintree_ePayment Workshop @ Open Commerce Conference 2016Jimmie Lindstrom, Braintree_ePayment Workshop @ Open Commerce Conference 2016
Jimmie Lindstrom, Braintree_ePayment Workshop @ Open Commerce Conference 2016Spark Solutions
10K views20 slides
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptx by
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptxTanner Ellen - Forcelandia 2016 - Dev Stack.pptx
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptxSeedCode
2.1K views18 slides
Azure series 2 creating a cloud service - web role by
Azure series 2   creating a cloud service - web roleAzure series 2   creating a cloud service - web role
Azure series 2 creating a cloud service - web roleSaravanan Subburayal
1.8K views17 slides
Under the Hood with Headless WordPress and the Google Cloud Platform by
Under the Hood with Headless WordPress and the Google Cloud PlatformUnder the Hood with Headless WordPress and the Google Cloud Platform
Under the Hood with Headless WordPress and the Google Cloud PlatformWP Engine
379 views20 slides
Scaffolding in One Asp.Net by
Scaffolding in One Asp.NetScaffolding in One Asp.Net
Scaffolding in One Asp.NetLohith Goudagere Nagaraj
3.1K views19 slides

More Related Content

What's hot

The WordPress Performance Team by
The WordPress Performance TeamThe WordPress Performance Team
The WordPress Performance TeamFelix Arntz
562 views11 slides
Polymer, HTML includes y core-ajax by
Polymer, HTML includes y core-ajaxPolymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajaxRadamantis Torres
337 views15 slides
Les nouveautés ASP.NET 5 avec Visual Studio 2015 by
Les nouveautés ASP.NET 5 avec Visual Studio 2015Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015MSDEVMTL
562 views16 slides
Serverless with Firebase by
Serverless with FirebaseServerless with Firebase
Serverless with FirebaseQvik
119 views12 slides
How to adopt React for moving fast startup by
How to adopt React for moving fast startupHow to adopt React for moving fast startup
How to adopt React for moving fast startupSira Sujjinanont
484 views25 slides
Fastest to Mobile with Scalatra + Swagger by
Fastest to Mobile with Scalatra + SwaggerFastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + SwaggerTony Tam
2.3K views33 slides

What's hot(20)

The WordPress Performance Team by Felix Arntz
The WordPress Performance TeamThe WordPress Performance Team
The WordPress Performance Team
Felix Arntz562 views
Les nouveautés ASP.NET 5 avec Visual Studio 2015 by MSDEVMTL
Les nouveautés ASP.NET 5 avec Visual Studio 2015Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015
MSDEVMTL562 views
Serverless with Firebase by Qvik
Serverless with FirebaseServerless with Firebase
Serverless with Firebase
Qvik119 views
How to adopt React for moving fast startup by Sira Sujjinanont
How to adopt React for moving fast startupHow to adopt React for moving fast startup
How to adopt React for moving fast startup
Sira Sujjinanont484 views
Fastest to Mobile with Scalatra + Swagger by Tony Tam
Fastest to Mobile with Scalatra + SwaggerFastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + Swagger
Tony Tam2.3K views
How to automate your BizTalk Installations and Deployments with Chef by BizTalk360
How to automate your BizTalk Installations and Deployments with ChefHow to automate your BizTalk Installations and Deployments with Chef
How to automate your BizTalk Installations and Deployments with Chef
BizTalk3601.2K views
Smoothing the Continuous Delivery Path - A Tale of Two Teams by Equal Experts
Smoothing the Continuous Delivery Path - A Tale of Two TeamsSmoothing the Continuous Delivery Path - A Tale of Two Teams
Smoothing the Continuous Delivery Path - A Tale of Two Teams
Equal Experts311 views
How we use Silverstripe CMS to deliver bilingual and accessible websites by MichaelPritchard21
How we use Silverstripe CMS to deliver bilingual and accessible websitesHow we use Silverstripe CMS to deliver bilingual and accessible websites
How we use Silverstripe CMS to deliver bilingual and accessible websites
MichaelPritchard21167 views
Railsconf 2014 - Deploying Rails is Easier Thank It Looks by talkingquickly
Railsconf 2014 - Deploying Rails is Easier Thank It LooksRailsconf 2014 - Deploying Rails is Easier Thank It Looks
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
talkingquickly611 views
How to Build Single Page HTML5 Apps that Scale by Phil Leggetter
How to Build Single Page HTML5 Apps that ScaleHow to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that Scale
Phil Leggetter1.5K views
GitLab Frontend and VueJS at GitLab by Fatih Acet
GitLab Frontend and VueJS at GitLabGitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLab
Fatih Acet1.9K views
Introduzione a web e servizi con .net e azure by dotnetabruzzo
Introduzione a web e servizi con .net e azureIntroduzione a web e servizi con .net e azure
Introduzione a web e servizi con .net e azure
dotnetabruzzo430 views
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow... by VMware Tanzu
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
VMware Tanzu377 views
Cloud Based Enterprise Apps using Everlive by Dhananjay Kumar
Cloud Based Enterprise Apps using EverliveCloud Based Enterprise Apps using Everlive
Cloud Based Enterprise Apps using Everlive
Dhananjay Kumar1.3K views
Deploying a static website on Azure for $5 / month by Tim Hermie ☁️
Deploying a static website on Azure for $5 / monthDeploying a static website on Azure for $5 / month
Deploying a static website on Azure for $5 / month
Super tools to boost productivity in React dev env! by Souvik Basu
Super tools to boost productivity in React dev env!Super tools to boost productivity in React dev env!
Super tools to boost productivity in React dev env!
Souvik Basu296 views

Similar to Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016

Building a µservice with Kotlin, Micronaut & GCP by
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPRobert MacLean
4.8K views32 slides
Using and Building Open Source in Google Corporate Engineering - Justin McWil... by
Using and Building Open Source in Google Corporate Engineering - Justin McWil...Using and Building Open Source in Google Corporate Engineering - Justin McWil...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...OSCON Byrum
4.2K views16 slides
Rapid and Reliable Developing with HTML5 & GWT by
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
5.5K views57 slides
Google App Engine Java, Groovy and Gaelyk by
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGuillaume Laforge
45.8K views85 slides
What's new in App Engine and intro to App Engine for Business by
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessChris Schalk
406 views43 slides
GWT + Gears : The browser is the platform by
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformDidier Girard
12.8K views86 slides

Similar to Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016(20)

Building a µservice with Kotlin, Micronaut & GCP by Robert MacLean
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCP
Robert MacLean4.8K views
Using and Building Open Source in Google Corporate Engineering - Justin McWil... by OSCON Byrum
Using and Building Open Source in Google Corporate Engineering - Justin McWil...Using and Building Open Source in Google Corporate Engineering - Justin McWil...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...
OSCON Byrum4.2K views
Google App Engine Java, Groovy and Gaelyk by Guillaume Laforge
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
Guillaume Laforge45.8K views
What's new in App Engine and intro to App Engine for Business by Chris Schalk
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for Business
Chris Schalk406 views
GWT + Gears : The browser is the platform by Didier Girard
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
Didier Girard12.8K views
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays by Demi Ben-Ari
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - PanoraysHacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
Demi Ben-Ari181 views
Useful tools & apps for Salesforce Admins - Salesforce Lausanne, Switzerland ... by Giuseppe Cardace
Useful tools & apps for Salesforce Admins - Salesforce Lausanne, Switzerland ...Useful tools & apps for Salesforce Admins - Salesforce Lausanne, Switzerland ...
Useful tools & apps for Salesforce Admins - Salesforce Lausanne, Switzerland ...
Giuseppe Cardace213 views
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014 by datafundamentals
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
datafundamentals942 views
Google Dev Day2007 by lucclaes
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
lucclaes642 views
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros... by Pavel Pratyush
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Pavel Pratyush257 views
Introduction to serverless computing on Google Cloud by wesley chun
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
wesley chun76 views
Go bei der 4Com GmbH & Co. KG by Jonas Riedel
Go bei der 4Com GmbH & Co. KGGo bei der 4Com GmbH & Co. KG
Go bei der 4Com GmbH & Co. KG
Jonas Riedel120 views
Google's serverless journey: past to present by wesley chun
Google's serverless journey: past to presentGoogle's serverless journey: past to present
Google's serverless journey: past to present
wesley chun189 views
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony by Kyle Drake
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Kyle Drake9.7K views
Google Cloud Platform Update by Ido Green
Google Cloud Platform UpdateGoogle Cloud Platform Update
Google Cloud Platform Update
Ido Green5.6K views
Introduction to Google Web Toolkit by Didier Girard
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web Toolkit
Didier Girard1.9K views

Recently uploaded

NTGapps NTG LowCode Platform by
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform Mustafa Kuğu
287 views30 slides
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...ShapeBlue
114 views12 slides
State of the Union - Rohit Yadav - Apache CloudStack by
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStackShapeBlue
218 views53 slides
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...ShapeBlue
128 views20 slides
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
75 views23 slides
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericShapeBlue
58 views9 slides

Recently uploaded(20)

NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu287 views
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue114 views
State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue218 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue128 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue75 views
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue58 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue172 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue105 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue81 views
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava... by ShapeBlue
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
ShapeBlue74 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash103 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue113 views
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue86 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue93 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10110 views
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE67 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson142 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue154 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...

Michael Tucker, GoDaddy_How GoDaddy used Spree to build their Online Store product @ Open Commerce Conference 2016

  • 8. Online Store The Pit of Success
  • 9. Why Spree? ● Easily Customizable ● Fully Featured ● Existing API ● Highly Extensible ● Great Community!
  • 11. Simplifying the Experience ● Grid-based options building ● Simple customization via themes engine ● Automatic PayPal activation ● Automatic domain management ● Automatic SSL management ● Automatic label printing ● Hiding the dirty details
  • 12. Magnifying the Impact ● Automatic email marketing integration ● Simple and automatic Facebook store ● One-click product reviews engine
  • 13. SaaS-ification ● Multi-tenancy ● Themes engine ● Internal integrations (single sign-on, domains, others) ● GoDaddy branding
  • 16. Making the Sale Get Published
  • 18. Scaling Spree - Tech Stack ● CentOS 6 ● Ruby 2.2 ● Ceph (internal cloud storage) ● Github / GHE ● Jenkins for CI/CD ● Puppet ● Hadoop ● StatsD and Graphite ● NewRelic ● SumoLogic ● Honeybadger ● Apache Traffic Server 5.3 ● HAProxy 1.5 ● Apache 2.2 ● Unicorn 4.9 ● Rails 4.1 [https://github.com/spree/spree/pull/7192] ● Spree 2.2 ● Bootstrap 3 ● React 0.14 ● Delayed Job ● Memcached ● MySql 5.5 ● Akamai CDN
  • 19. Scaling Spree - Architecture A10 CommonDB API (4) App (6) MerchantDB ATS HAProxy ATS HAProxy ATS HAProxy ATS HAProxy SSL Termination Redundancy Horizontal Scaling Context-specific data Global metadata Job (4) Memcached (4)
  • 20. Scaling Spree - Performance ● 10s of thousands of unique live storefronts ● ~1.5M page views per day ● Average page response time ~2.5s ● Average server response ~300ms ● Capable of ~400rps per app server before performance degrades ● >99.99% uptime
  • 21. The ActiveRecord Callbacks Problem ● Obscure business logic. Explicit => Implicit ● Often have unintended side effects ● Require deep understanding of AR internals ● Can cause a chain reaction performance nightmare
  • 22. that!
  • 23. The AR Callbacks Problem Option Type Product Taxonomy Taxon Option Value 1:1 1:M 1:M 1:M Variant 1:M 1:1 parent Variant Product Taxonomy Taxon belongs_to :option_type,touch: true after_touch :touch_all_variants after_touch :touch_all_products belongs_to :product, touch: true after_save :run_touch_callbacks after_touch :touch_taxons after_touch :touch_parent
  • 24. Yo Dawg I heard you like ActiveRecord Callbacks So I added a callback that will call you back When your callback calls my callback
  • 26. The AR Callbacks Problem A Stop Gap Solution https://github.com/godaddy/activerecord-delay_touching ActiveRecord::Base.delay_touching do # touch_all_the_things end
  • 27. The AR Callbacks Problem What do we do? Be more explicit with Service Objects OptionValueUpdater.new(option_value).call ● Explicit, clear business logic ● No hidden side effects ● No magic to understand ● Aggregation of bulk updates
  • 28. My time with Rails is up (Piotr Solnica) http://solnic.eu/2016/05/22/my-time-with-rails-is-up.html “People are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient interfaces. [...] ActiveRecord is just one, representative example, [...].” All Things in Moderation Rails has won: The Elephant in the Room (Fabio Akita) http://www.akitaonrails.com/2016/05/23/rails-has-won-the-elephant-in-the-room “[…] for all intents and purposes, Active Record still does much better than average. But if you're big, you should be careful. That's all.”
  • 29. Spree Wish List Improve Order Consistency ● Do not trigger order recalculation once complete (or at least be more explicit) ○ Some operations can cause completed orders to be recalculated ● Snapshot product details on orders ○ Modifying product information is reflected in completed orders
  • 30. Spree Wish List Maintain Clear Upgrade Paths ● Semantic versioning ● Non-breaking data migrations ● Upgrades without downtime
  • 31. Spree Wish List Preview/Publish Mechanism ● Allow site changes to be staged and viewed before making live
  • 32. Spree Wish List Simplify Customization ● Better hooks for overriding flows and replacing features ○ Dependency Injection ○ Configurable Service Locators ○ Integration Hooks in Service Objects
  • 33. Spree Wish List Support Automated Integrations ● First class application marketplace ○ Engine to plugin extensions without development work ○ Oauth-based activation and requirements-based authorization ■ Generates unique, role-based api users Spree :)
  • 34. Spree Wish List Keep on Being You!! ● Retain a helpful and collaborative community ● Share and learn from each other
  • 35. mtucker@godaddy.com At GoDaddy we're pulling for small business. Help us transform the global economy, one entrepreneur at a time.

Editor's Notes

  1. You probably don’t know godaddy More than domains and flashy commercials Small business advocate Shift the world to small business advantage
  2. My Team
  3. My team thinks this is me.
  4. This is how I often perceive myself.
  5. The truth is, this is what I probably most often look like at work.
  6. Online Store has a single goal: simplicity Setup and sell with no technology or ecommerce skills
  7. We surveyed many OS projects and chose spree for our future
  8. DISCLAIMER: covering Spree 2.0 - 2.2 Out of the box, there were some challenges in fulfilling simplicity goals
  9. Removed most of Spree and reintroduced with care Hid the “dirty details”
  10. Provide tools to strengthen the power of the individual
  11. Necessary evils of a Service-based platform
  12. First challenge: GET LIVE Our median publish rate is 25 hours
  13. Social, mixed with discounts, is THE differentiator Facebook likes and instagram, as well as telling story on Reddit (hug of death, 10x)
  14. Quick look at our stack. NOTABLE: Spree 2.2 on Rails 4.1 PR for this, you will need to upgrade your extensions Happy to discuss anything in this stack
  15. Build for full horizontal scalability High volume SSL termination Multi-tenancy: sharding by account
  16. Rails and Spree CAN scale Uptime is HUGELY important
  17. Performance problems: AR Callbacks
  18. See what others have to say
  19. Demo: focus on TOUCH operations only
  20. Run through the delay_touch example. Shows that a set of 500 products can generate over 7k update statements by simply touching a single option value Wrapping in delay_touch reduces this to 6; the number of discrete models involved in the relational tree
  21. Library is freely available on GD public github This is a temporary solution!
  22. Service objects can handle the previously noted issues
  23. Great, timely discussion in the community!
  24. Order calculation and snapshot issues
  25. Backward Compatibility Uptime!!
  26. BIG/COMPLEX Ask: Staged changes to store
  27. First class, well designed customization hooks
  28. Third party ecosystem
  29. Retain the community that brought us here!!
  30. WE ARE HIRING - please connect with me