SlideShare a Scribd company logo
1 of 36
Powered by
Me llamo Miguel
I do this
My Team
“Mermaid Tucker”
#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
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
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

More Related Content

What's hot

The WordPress Performance Team
The WordPress Performance TeamThe WordPress Performance Team
The WordPress Performance TeamFelix Arntz
 
Polymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajaxPolymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajaxRadamantis Torres
 
Les nouveautés ASP.NET 5 avec Visual Studio 2015
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
 
Serverless with Firebase
Serverless with FirebaseServerless with Firebase
Serverless with FirebaseQvik
 
How to adopt React for moving fast startup
How to adopt React for moving fast startupHow to adopt React for moving fast startup
How to adopt React for moving fast startupSira Sujjinanont
 
Fastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + SwaggerFastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + SwaggerTony Tam
 
How to automate your BizTalk Installations and Deployments with Chef
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 ChefBizTalk360
 
Smoothing the Continuous Delivery Path - A Tale of Two Teams
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 TeamsEqual Experts
 
How we use Silverstripe CMS to deliver bilingual and accessible websites
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 websitesMichaelPritchard21
 
Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017Deepu K Sasidharan
 
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
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 Lookstalkingquickly
 
How to Build Single Page HTML5 Apps that Scale
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 ScalePhil Leggetter
 
GitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLabGitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLabFatih Acet
 
Testing your Single Page Application
Testing your Single Page ApplicationTesting your Single Page Application
Testing your Single Page ApplicationWekoslav Stefanovski
 
Introduzione a web e servizi con .net e azure
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 azuredotnetabruzzo
 
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...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...VMware Tanzu
 
Cloud Based Enterprise Apps using Everlive
Cloud Based Enterprise Apps using EverliveCloud Based Enterprise Apps using Everlive
Cloud Based Enterprise Apps using EverliveDhananjay Kumar
 
Deploying a static website on Azure for $5 / month
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 / monthTim Hermie ☁️
 
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!
Super tools to boost productivity in React dev env!Souvik Basu
 

What's hot (20)

The WordPress Performance Team
The WordPress Performance TeamThe WordPress Performance Team
The WordPress Performance Team
 
Polymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajaxPolymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajax
 
Les nouveautés ASP.NET 5 avec Visual Studio 2015
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
 
Serverless with Firebase
Serverless with FirebaseServerless with Firebase
Serverless with Firebase
 
How to adopt React for moving fast startup
How to adopt React for moving fast startupHow to adopt React for moving fast startup
How to adopt React for moving fast startup
 
Fastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + SwaggerFastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + Swagger
 
How to automate your BizTalk Installations and Deployments with Chef
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
 
Smoothing the Continuous Delivery Path - A Tale of Two Teams
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
 
How we use Silverstripe CMS to deliver bilingual and accessible websites
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
 
Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017
 
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
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
 
How to Build Single Page HTML5 Apps that Scale
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
 
GitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLabGitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLab
 
Testing your Single Page Application
Testing your Single Page ApplicationTesting your Single Page Application
Testing your Single Page Application
 
Introduzione a web e servizi con .net e azure
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
 
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...
Transporting Data at Warp Speed: How to Connect Spring Boot Apps Quickly, Pow...
 
Cloud Based Enterprise Apps using Everlive
Cloud Based Enterprise Apps using EverliveCloud Based Enterprise Apps using Everlive
Cloud Based Enterprise Apps using Everlive
 
Deploying a static website on Azure for $5 / month
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
 
Why I am hooked on the future of React
Why I am hooked on the future of ReactWhy I am hooked on the future of React
Why I am hooked on the future of React
 
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!
Super tools to boost productivity in React dev env!
 

Similar to Spree ecommerce platform technical overview and future plans

Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPRobert MacLean
 
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...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...OSCON Byrum
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGuillaume Laforge
 
What's new in App Engine and intro to App Engine for Business
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
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformDidier Girard
 
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
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 - PanoraysDemi Ben-Ari
 
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 ...
Useful tools & apps for Salesforce Admins - Salesforce Lausanne, Switzerland ...Giuseppe Cardace
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
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 2014datafundamentals
 
Rewardenv by ITG Cloud - Meet Magento India
Rewardenv by ITG Cloud - Meet Magento IndiaRewardenv by ITG Cloud - Meet Magento India
Rewardenv by ITG Cloud - Meet Magento IndiaPiyushDankhra
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007lucclaes
 
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...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Pavel Pratyush
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloudwesley chun
 
[RakutenTechConf2013] [E-2] HTML5 in Rakuten
[RakutenTechConf2013] [E-2] HTML5 in Rakuten[RakutenTechConf2013] [E-2] HTML5 in Rakuten
[RakutenTechConf2013] [E-2] HTML5 in RakutenRakuten Group, Inc.
 
Go bei der 4Com GmbH & Co. KG
Go bei der 4Com GmbH & Co. KGGo bei der 4Com GmbH & Co. KG
Go bei der 4Com GmbH & Co. KGJonas Riedel
 
Google's serverless journey: past to present
Google's serverless journey: past to presentGoogle's serverless journey: past to present
Google's serverless journey: past to presentwesley chun
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
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::SynchronyKyle Drake
 
Google Cloud Platform Update
Google Cloud Platform UpdateGoogle Cloud Platform Update
Google Cloud Platform UpdateIdo Green
 

Similar to Spree ecommerce platform technical overview and future plans (20)

Building a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCPBuilding a µservice with Kotlin, Micronaut & GCP
Building a µservice with Kotlin, Micronaut & GCP
 
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...
Using and Building Open Source in Google Corporate Engineering - Justin McWil...
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
What's new in App Engine and intro to App Engine for Business
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
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
 
Hacking for fun & profit - The Kubernetes Way - Demi Ben-Ari - Panorays
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
 
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 ...
Useful tools & apps for Salesforce Admins - Salesforce Lausanne, Switzerland ...
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
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
 
Rewardenv by ITG Cloud - Meet Magento India
Rewardenv by ITG Cloud - Meet Magento IndiaRewardenv by ITG Cloud - Meet Magento India
Rewardenv by ITG Cloud - Meet Magento India
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
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...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 
How to sell drupal 8
How to sell drupal 8How to sell drupal 8
How to sell drupal 8
 
[RakutenTechConf2013] [E-2] HTML5 in Rakuten
[RakutenTechConf2013] [E-2] HTML5 in Rakuten[RakutenTechConf2013] [E-2] HTML5 in Rakuten
[RakutenTechConf2013] [E-2] HTML5 in Rakuten
 
Go bei der 4Com GmbH & Co. KG
Go bei der 4Com GmbH & Co. KGGo bei der 4Com GmbH & Co. KG
Go bei der 4Com GmbH & Co. KG
 
Google's serverless journey: past to present
Google's serverless journey: past to presentGoogle's serverless journey: past to present
Google's serverless journey: past to present
 
Node azure
Node azureNode azure
Node azure
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
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
 
Google Cloud Platform Update
Google Cloud Platform UpdateGoogle Cloud Platform Update
Google Cloud Platform Update
 

Recently uploaded

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Spree ecommerce platform technical overview and future plans

  • 3.
  • 6.
  • 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
  • 14.
  • 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
  • 25.
  • 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