help i accidentally distributed my system
play

Help! I accidentally distributed my system! Rachel Myers, Emily - PowerPoint PPT Presentation

Help! I accidentally distributed my system! Rachel Myers, Emily Nakashima @eanakashima @rachelmyers, @eanakashima @rachelmyers, @eanakashima @rachelmyers @rachelmyers, @eanakashima @rachelmyers, @eanakashima @rachelmyers, @eanakashima


  1. Help! I accidentally distributed my system! Rachel Myers, Emily Nakashima

  2. @eanakashima @rachelmyers, @eanakashima

  3. @rachelmyers, @eanakashima

  4. @rachelmyers @rachelmyers, @eanakashima

  5. @rachelmyers, @eanakashima

  6. @rachelmyers, @eanakashima

  7. ModCloth Web App 
 User request (from NGINX & (Rails) loadbalancer) MySQL @rachelmyers, @eanakashima

  8. What even is 
 a distributed system? @rachelmyers, @eanakashima

  9. What even is a distributed system? Some 
 Node Another Node @rachelmyers, @eanakashima

  10. 
 Designing distributed systems 👓 • What are the “nouns” in my system? • What are the patterns for reading data? • What are the patterns for writing data? • Do di ff erent flows have di ff erent performance, consistency, & availability requirements? 
 @rachelmyers, @eanakashima

  11. ModCloth Web App User request (from NGINX & loadbalancer) Mobile MySQL @rachelmyers, @eanakashima

  12. ModCloth Web App User request (from NGINX & loadbalancer) Mobile MySQL Voting Service MySQL @rachelmyers, @eanakashima

  13. ModCloth Web App User request (from NGINX & loadbalancer) Mobile Identity MySQL Service MySQL Voting Service MySQL @rachelmyers, @eanakashima

  14. ModCloth Web App User request (from NGINX & loadbalancer) Mobile Identity MySQL Service MySQL Asset Voting Service Service MySQL MySQL @rachelmyers, @eanakashima

  15. ModCloth Web App Photo User request (from NGINX & Service loadbalancer) Mobile MySQL Identity MySQL Service MySQL Comment Asset Voting Service Service Service MySQL MySQL MySQL @rachelmyers, @eanakashima

  16. ModCloth Web App Photo User request (from NGINX & Service loadbalancer) Mobile MySQL Moderation Identity MySQL Service Service MySQL MySQL Comment Asset Voting Service Service Service MySQL MySQL MySQL @rachelmyers, @eanakashima

  17. ModCloth Web App Photo Checkout User request (from NGINX & Service Service loadbalancer) Mobile MySQL MySQL Moderation Identity MySQL Service Service MySQL MySQL Comment Asset Voting Service Service Service MySQL MySQL MySQL @rachelmyers, @eanakashima

  18. ModCloth Web App Photo Checkout User request (from NGINX & Service Service loadbalancer) Mobile MySQL MySQL MySQL 🔦 Moderation Identity 🗒 MySQL Service Service MySQL MySQL Comment Asset Voting Service Service Service MySQL MySQL @rachelmyers, @eanakashima

  19. ModCloth Web App Photo Checkout User request (from NGINX & Service Service loadbalancer) Mobile MySQL MySQL 😈😈😈 🤔🤔🤔 Moderation Identity MySQL Service Service MySQL MySQL Comment Asset Voting Service Service Service MySQL MySQL MySQL @rachelmyers, @eanakashima

  20. And this was intentional 😃 @rachelmyers, @eanakashima

  21. flexfits.com An accidental distributed system ⛈ @rachelmyers, @eanakashima

  22. flexfits.com @rachelmyers, @eanakashima

  23. flexfits.com Ecommerce SaaS User request @rachelmyers, @eanakashima

  24. flexfits.com Subscription Plugin SaaS Ecommerce SaaS User request @rachelmyers, @eanakashima

  25. flexfits.com Subscription Plugin SaaS Fulfillment Ecommerce SaaS SaaS User request @rachelmyers, @eanakashima

  26. flexfits.com Metrics Subscription SaaS Plugin SaaS Fulfillment Ecommerce SaaS SaaS User request @rachelmyers, @eanakashima

  27. flexfits.com @rachelmyers, @eanakashima

  28. flexfits.com 👒 👒 @rachelmyers, @eanakashima

  29. flexfits.com Metrics Subscription SaaS Plugin SaaS Fulfillment Ecommerce SaaS SaaS User request ? @rachelmyers, @eanakashima

  30. flexfits.com Metrics Subscription SaaS Plugin SaaS Fulfillment Ecommerce SaaS SaaS Orders User request Service Postgres @rachelmyers, @eanakashima

  31. flexfits.com 👓 Metrics Subscription SaaS Plugin SaaS Fulfillment Ecommerce SaaS SaaS Orders User request Service Postgres @rachelmyers, @eanakashima

  32. New requirements for buy vs build @rachelmyers, @eanakashima

  33. flexfits.com SaaS SaaS SaaS SaaS Home cooked User request on IaaS @rachelmyers, @eanakashima

  34. Buy or Build • Will it improve availability? • Will it improve recovery? • Will you have visibility or points of control? • Will you have customizability? • Will you know when your changes take e ff ect? • Can you audit changes? @rachelmyers, @eanakashima

  35. IaaS, PaaS, BaaS, & FaaS @rachelmyers, @eanakashima

  36. Cloud Infrastructure @rachelmyers, @eanakashima

  37. IaaS @rachelmyers, @eanakashima

  38. IaaS • Will it improve availability? ✅ • Will it improve recovery? ✅ • Will you have visibility or points of control? ✅ • Will you have customizability? ✅ • Will you know when your changes take e ff ect? ✅ • Can you audit changes? ✅ @rachelmyers, @eanakashima

  39. Platforms @rachelmyers, @eanakashima

  40. PaaS @rachelmyers, @eanakashima

  41. PaaS • Will it improve availability? ✅ • Will it improve recovery? 🤕 • Will you have visibility or points of control? ✅ • Will you have customizability? ✅ • Will you know when your changes take e ff ect? 🤕 • Can you audit changes? 🤕 @rachelmyers, @eanakashima

  42. Backends @rachelmyers, @eanakashima

  43. BaaS (RIP Parse) @rachelmyers, @eanakashima

  44. BaaS • Will it improve availability? ✅🤕 • Will it improve recovery? 🤕 • Will you have visibility or points of control? 🤕 • Will you have customizability? ✅ • Will you know when your changes take e ff ect? 🤕 • Can you audit changes? 🤕 @rachelmyers, @eanakashima

  45. Functions @rachelmyers, @eanakashima

  46. FaaS @rachelmyers, @eanakashima

  47. FaaS • Will it improve availability? 🤕 • Will it improve recovery? 🤕 • Will you have visibility or points of control? 🤕 • Will you have customizability? ✅ • Will you know when your changes take e ff ect? 🤕 • Can you audit changes? 🤕 @rachelmyers, @eanakashima

  48. How to choose?

  49. Backend Harder to change Faster to start Platform Infrastructure @rachelmyers, @eanakashima

  50. @rachelmyers, @eanakashima

  51. @rachelmyers, @eanakashima

  52. Surprise Distributed Systems @rachelmyers, @eanakashima

  53. Surprise distributed system: browsers @rachelmyers, @eanakashima

  54. “The browser is part of your distributed system, not just a client you support” 
 -@danielespeset @rachelmyers, @eanakashima

  55. The one where we DDOS’d ourselves @rachelmyers, @eanakashima

  56. What happened? @rachelmyers, @eanakashima

  57. // if the page is long enough to scroll if (document.body.clientHeight > window.innerHeight) { // add a scroll event listener document.addEventListener('scroll', function(e) { // if within 100px of the bottom of the page if (window.innerHeight + window.scrollY + 100 > document.body.clientHeight) fetchNextPage(); }); // else fetch another page of results immediately } else { fetchNextPage(); } @rachelmyers, @eanakashima

  58. Frontend complexity is only increasing @rachelmyers, @eanakashima

  59. Instrumentation Rule 1: Start at the edge. 
 Corollary: The edge may be further than you think. @rachelmyers, @eanakashima

  60. Secret distributed system: vendors @rachelmyers, @eanakashima

  61. LaunchDarkly @rachelmyers, @eanakashima

  62. Secret distributed system: vendors @rachelmyers, @eanakashima

  63. # instantiate the flag with a default value # falls back to default value if service is offline show_feature = ld_client.variation( "allow_traces", { :key => "user@example.com" }, false ) if show_feature # application code to show the feature else # the code to run if the feature is off @rachelmyers, @eanakashima

  64. Secret distributed system: vendors @rachelmyers, @eanakashima

  65. Instrumentation Rule 2: Wrap 3rd party calls @rachelmyers, @eanakashima

  66. Secret distributed system: vendors @rachelmyers, @eanakashima

  67. GitHub’s customer support application @rachelmyers, @eanakashima

  68. GitHub customer support tool Customer github.com Support Tool User email @rachelmyers, @eanakashima

  69. GitHub customer support tool Customer github.com Support Tool GMail User email @rachelmyers, @eanakashima

  70. GitHub customer support tool Customer github.com Support Tool SendGrid GMail MailChimp User email @rachelmyers, @eanakashima

  71. GitHub customer support tool Customer github.com Support Tool SendGrid GMail MailChimp User email @rachelmyers, @eanakashima

  72. GitHub customer support tool Customer github.com Support Tool Outbound Ingest service Kafka mail service User email @rachelmyers, @eanakashima

  73. GitHub customer support tool mail service 🔦 Customer github.com Support Tool 🗒 Outbound Ingest service Kafka User email @rachelmyers, @eanakashima

  74. GitHub customer support tool Customer github.com Support Tool SendGrid GMail MailChimp User email @rachelmyers, @eanakashima

  75. Cognitive Load @rachelmyers, @eanakashima

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend