Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Foreo Drives Millions of Dollars of Revenue During the Holiday Seasons with Tag1’s Technical Architecture and Leadership

34 views

Published on

Like most e-commerce retailers, FOREO - a Swedish multi-national beauty brand with oral and skin care products such as the popular and iconic LUNA facial cleanser - needs to massively scale applications and infrastructure to handle mission-critical events. Black Friday, Cyber Monday, and Singles Day in China drive record sales and revenue for the company, and FOREO's systems must be ready to support the enormous spikes in traffic seen during these events.

Millions of dollars are at stake when e-commerce systems go down, or even slow down, during major sales events, and failure can have a material impact on a company's bottom line. Tag1 Consulting, world leading experts in performance and scalability, will cover the tools, techniques, and processes used to ready applications and infrastructures for massive traffic spikes and surges in payment transactions.

Viewers of this presentation will gain actionable insight on how to load test and performance tune systems through real world examples. We will also cover best practices to ensure your success during high-traffic events including advanced monitoring and risk mitigation strategies. And to help ensure your applications remain performant as they evolve, we will discuss code reviews and performance testing as part of continuous integration systems, as well as other approaches.

This talk is geared towards technical leaders charged with managing enterprise applications, but business stakeholders are encouraged to attend and will gain valuable insights. Performance tuning engineers will be on hand to answer in-depth technical questions after the talk.

A video recording of the talk based on this presentation is available: https://events.drupal.org/seattle2019/sessions/foreo-scaling-applications-mission-critical-sales

  • Be the first to comment

  • Be the first to like this

Foreo Drives Millions of Dollars of Revenue During the Holiday Seasons with Tag1’s Technical Architecture and Leadership

  1. 1. Scaling Applications and Mission Critical Events
  2. 2. TO FAIL WELL, FAIL FIRST BEFORE IT MATTERS, & FAIL AGAIN BEYOND EXPECTATION.
  3. 3. WHO ARE WE Michael Meyers Managing Director Jeremy Andrews Founder & CEO ➔ CTO 1st venture backed Drupal startup ➔ CTO 1st top 100 Drupal site, #1 contributor to D7 ➔ VP @ Acquia - Dev Relations, Marketing, Products ➔ Advisor to Drupal Assoc. ➔ 15 Years with Drupal ➔ Performance, scalability & application security expert ➔ Linux firewalls and KernelTrap.org ➔ Orig. author Drupal installer, Throttle, pager logic, etc ➔ Maintain Memcache module ➔ Active Drupal contributor for 18 years
  4. 4. #2 All-time Drupal Contributor 12% of Current Top 50 Contributors Architects of Fortune 500 sites Leaders from Drupal 4 to Drupal 8 Leaders in DevOps and Automated Testing Consulted for every major Drupal platform provider
  5. 5. Tag1 wrote the book on performance and scalability Leaders from Drupal 4 to Drupal 8 Leaders in DevOps and Automated Testing Consulted for every major Drupal platform provider
  6. 6. IF TALK TIME ALLOWS Mention some other load testing clients w/ stats to establish & demonstrate world class expertise… ➔ ACLU 85x ➔ PAC12 ➔ WhiteHouse.gov ➔ Fortune Top 50 ➔ Performance book
  7. 7. AGENDA What you get in 30 minutes. ➔ Strategy, tools & technologies for load testing ➔ Best practices: an iterative approach to testing & tuning ➔ Load test and performance tuning tips and tricks ➔ How to plan for success & mitigate risk ➔ Q&A
  8. 8. Record Holiday Sales & Revenue in the US
  9. 9. 光棍节 Scaling Foreo for Global B2
  10. 10. Speed Matters It’s not just about downtime ➔ Amazon ◆ A page load slow down of just 1s could cost $1.6 billion in sales each year ➔ Google ◆ A 400ms slowdown results in 440 million abandoned sessions per month - lots of lost ad revenue ➔ Walmart ◆ For every 100 ms of improvement, incremental revenue grew 1% Source: https://medium.com/@vikigreen/impact-of-slow-page-load-time-on-website-performance-40d5c9ce568a
  11. 11. Testing Life Cycle Iterate until risk is mitigated Implement Solutions Goals & Objectives Test Strategy Test DesignResults Analysis Test Execution
  12. 12. Goals & Objectives Test Strategy Test DesignResults Analysis Test Execution Goals & Objectives Business outcomes, performance targets Build a model for business $uccess Implement Solutions
  13. 13. FOREO: 2019 Holiday Shopping Season Goals ➔ Business Goals ◆ Greatly exceed prior year’s traffic and sales metrics for maximum YoY growth ◆ Test and tune new Drupal 8 site ➔ Margin ◆ Support at least a 50% increase over projections ➔ Performance Objectives ◆ Maintain <2s page load times under peak loads
  14. 14. Goals & Objectives Test DesignResults Analysis Test Execution Test Strategy Test Strategy Scope Limitations Tooling Software & Env. Set Up Implement Solutions
  15. 15. II: Test StrategyStrategy: Scope Limitations ➔ Risk mitigation - you can’t do everything ➔ Identify and focus in on “critical paths” ➔ What aren’t you going to test? ➔ How are you going to test 3rd parties, APIs, etc. ➔ Destructive tests that create content & content removal
  16. 16. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Strategy: Picking the right tools - Locust ➔ Write tests & load plan in Python ➔ Leverage any Python library for integrations and testing ➔ Better than JMeter and other tools for creating plans and patterns ➔ Extensible flask-based UI ➔ Easy to distribute load generation
  17. 17. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Strategy: Set up Load Testing Environment ➔ Setup Locust ◆ How-to: https://tag1consulting.com/blog/distributed-load-testing-locust
  18. 18. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Strategy: Set up Load Test Target(s) ➔ Replica of Production is ideal, but not always an option ➔ Full stack & processes: CDN, reverse proxies, cron ➔ 3rd party APIs and systems ➔ Plan ahead, notify everyone (hosting platform, 3rd parties/partners, etc.) ➔ Monitor everything
  19. 19. FOREO: DevOps & Performance Testing ➔ Be proactive: really high traffic & really high stakes! ➔ Performance testing baked into to dev processes ➔ Integrated into CI/CD pipeline ➔ Auto accept/reject PRs based on performance
  20. 20. Test Design Goals & Objectives Test Strategy Test DesignResults Analysis Test Execution Test Design Load models & Create Tests Implement Solutions
  21. 21. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Test Design: Load Models ➔ Running tests independently ➔ Ratios for running tests concurrently ➔ Incremental ramp up of load
  22. 22. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Test Design: Creating Tests ➔ Check http headers, and page content, etc. ➔ Test static content as a % of total, roughly 10% after first pass ➔ Data parameterization and mapping ➔ Test your tests! ➔ Consistency is key - don’t make major changes when iterating
  23. 23. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Test Design: Creating Tests in Locust ➔ How-to: https://tag1consulting.com/blog/drupal-loadtest-locust ➔ Code your load model as a Python script ➔ Take advantage of Python libraries
  24. 24. FOREO: Creating Tests ➔ Evaluate functional paths & analytics determine critical paths ◆ View category & product pages, add to cart, complete purchase ◆ Browse (non product) pages e.g., About, FAQ, etc. ◆ Auth: Support, Register products ➔ Handle localization for translated content ◆ Accommodate variances (e.g., submit button changes)
  25. 25. Test Execution Goals & Objectives Test Strategy Test DesignResults Analysis Test Execution Test Execution Establish Baselines Scale incrementally Monitor Implement Solutions
  26. 26. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Test Execution ➔ Scale up load incrementally - don’t go too fast, too soon ➔ Work through your load models ➔ Consider the length & timing of your test runs
  27. 27. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Test Execution: Monitoring in real-time ➔ Check everything from your infra to the edge ➔ Logging and monitoring ➔ Check test output: Locust logs, http headers and page content ➔ Confirm tests are hitting all aspects of your application
  28. 28. Results Analysis & Reporting Goals & Objectives Test Strategy Test DesignResults Analysis Test Execution Result Analysis Identify improvements Triage solutions Reporting Implement Solutions
  29. 29. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Results Analysis & Triage ➔ Focus on the major bottleneck - don’t over optimize ➔ Low hanging fruit
  30. 30. Reporting Leaders from Drupal 4 to Drupal 8 Leaders in DevOps and Automated Testing Consulted for every major Drupal platform provider
  31. 31. Prioritizing Solutions Leaders from Drupal 4 to Drupal 8 Leaders in DevOps and Automated Testing Consulted for every major Drupal platform provider Phase
  32. 32. Recommendations & Code Review Checklist Leaders from Drupal 4 to Drupal 8 Leaders in DevOps and Automated Testing Consulted for every major Drupal platform provider Phase
  33. 33. Implement Solutions Triage & Patch Goals & Objectives Test Strategy Test DesignResults Analysis Test Execution Implement Solutions Eliminate Bottlenecks Low hanging fruit Incremental updates
  34. 34. II: Test Strategy ● Risk Mitigation Planning: Balancing time, money, costs, etc. ○ How are you going to test APIs, 3rd party systems, etc? ● Picking the right tools ● Set up your Load Testing Environment ● Set up your Load Test Target ● Proactive, not Reactive: make testing a part of your dev process. Implement Solutions ➔ Fix a problem, validate the solution. ➔ Do not make a lot of changes!
  35. 35. Examples Test Strategy Test DesignResults Analysis Test Execution Implement Solutions Goals & Objectives Implement Solutions Results Analysis Test Execution
  36. 36. EXAMPLE Foreo - Test Execution & Monitoring
  37. 37. EXAMPLE Foreo - Results Analysis: Opcode Cache
  38. 38. EXAMPLE Foreo - Implement Solution & Test
  39. 39. EXAMPLE Foreo - Results Analysis
  40. 40. EXAMPLE Foreo - Implement and Test
  41. 41. EXAMPLE Foreo - Analyze, Implement, Test...
  42. 42. PRO TIPS ✅ Be Proactive, not Reactive ✅ Design & execute different load models ✅ Don’t make assumption - test entire stack ✅ Don’t replicate traffic 1:1 - focus on critical paths ✅ Be methodical ✅ Don’t scale load tests too fast, too soon ✅ Don’t make lots of changes. Make a change, test. ✅ Triage - focus on the biggest bang for your buck ✅ Iterate - bottlenecks block other bottlenecks.
  43. 43. QUESTIONS?
  44. 44. Subtitle Add speaker name here Title slide Join us for contribution opportunities Friday, April 12, 2019 9:00-18:00 Room: 602 Mentored Contribution First Time Contributor Workshop General Contribution #DrupalContributions 9:00-12:00 Room: 606 9:00-18:00 Room: 6A
  45. 45. CONTACT US AT ANY TIME Michael Meyers m@tag1consulting.com +1-917-402-8263 (toll free)

×