journey at wix com
play

Journey at Wix.com Aviran Mordo www.linkedin.com/in/aviran Head of - PowerPoint PPT Presentation

Microservices and DevOps Journey at Wix.com Aviran Mordo www.linkedin.com/in/aviran Head of @aviranm http://www.aviransplace.com @aviranm @aviranm Wix In Numbers Over 80M users Static storage is >2Pb of data 3 data centers + 3 clouds


  1. Microservices and DevOps Journey at Wix.com Aviran Mordo www.linkedin.com/in/aviran Head of @aviranm http://www.aviransplace.com @aviranm

  2. @aviranm

  3. Wix In Numbers Over 80M users Static storage is >2Pb of data 3 data centers + 3 clouds (Google, Amazon, Azure) 2B HTTP requests/day 1000 people work at Wix @aviranm

  4. Over 200 Microservices on Production @aviranm

  5. Microservices - What Does it Take @aviranm

  6. How to Get There? ( Wix’s journey) http://gpstrackit.com/wp-content/uploads/2013/11/VanishingPointwRoadSigns.jpg @aviranm

  7. About 5 years ago http://p1.pichost.me/i/11/1339236.jpg @aviranm

  8. The Monolithic Giant One monolithic server that handled everything Dependency between features Changes in unrelated areas caused deployment of the whole system Failure in unrelated areas will cause system wide downtime Wix Lighttpd MySQL (file serving) (Tomcat) DB @aviranm

  9. Breaking the System Apart @aviranm https://upload.wikimedia.org/wikipedia/commons/6/67/Broken_glass.jpg

  10. @aviranm

  11. Concerns and SLA Edit websites View sites, created by Wix editor Many feature request Not many product changes Lower performance requirement High performance Lower availability requirement High availability Write intensive Read intensive @aviranm

  12. Phase 1 Mono-Wix @aviranm

  13. Extract Public Service Editor service (Mono-Wix) Public service @aviranm

  14. Divide and Conquer Editor service Public service Guideline: No runtime, deployment or data dependency @aviranm

  15. Separation by Product Lifecycle Decouple architecture => Decouple teams Deployment independence Areas with frequent changes Editor service Public service @aviranm

  16. Separation by Service Level Scale independently Use different data store Optimize data per use case (Read vs Write) Run on different datacenters / clouds / zones System resiliency (degradation of service vs. downtime) Faster recovery time Editor service Public service @aviranm

  17. http://blogs.adobe.com/captivate/2011/03/training-adding-interactivity-to-elearning-courses-with-adobe-captivate-5.html/time-to-learn-clock @aviranm

  18. Service Boundary @aviranm

  19. Separation of Databases Copy data between segments Optimize data per use case (read vs. write intensive) Different data stores Copy necessary data Editor service Public service @aviranm

  20. Serialization @aviranm

  21. Serialization / Protocol Binary? JSON / XML / Text? HTTP? Editor service Public service @aviranm

  22. Serialization / Protocol - Tradeoffs Readability? Performance? Debug? Tools? Monitoring? Dependency? Editor service Public service @aviranm

  23. API Transport/Protocol @aviranm

  24. How to Expose an API REST? RPC? SOAP? Editor service Public service @aviranm

  25. Wix’s Choices REST HTTP Binary JSON-RPC HTTP Editor service Public service @aviranm

  26. API Versioning @aviranm

  27. API Versioning Maybe here API Schema /v1/v2 Backward compatibility Editor service Public service @aviranm

  28. A-Synchronous @aviranm

  29. Which Queuing System to Use Kafka? RabbitMQ? ActiveMQ? ??? Threads Editor service Public service @aviranm

  30. Service Discovery @aviranm

  31. Service Discovery Zookeeper? Consul? Etcd? Eureka? Configuration (DNS+LB) Editor service Public service @aviranm

  32. Resilience @aviranm

  33. What does the Arrow Mean? Editor service Public service @aviranm

  34. Failure Points = Network I/O Retry policy Retry only on idempotent operations Circuit breaker Be careful – you may cause downtime Throttlers Editor service Public service @aviranm

  35. Degradation of Service Feature killer (Killer feature) Fallbacks Self healing Editor service Public service @aviranm

  36. Testing @aviranm

  37. Test a Distributed System (at Wix) Unit Test Integration Test Server E2E Automation Client Editor service Public service @aviranm

  38. Distributed Logging @aviranm

  39. Build visibility into service @aviranm

  40. Ownership @aviranm

  41. Team Work Microservice is owned by a team You build it – you run it No microservice is left without a clear owner Microservice is NOT a library – it is a live production system @aviranm

  42. What is the Right Size of a Microservice? @aviranm

  43. The Size of a Microservice is the Size of the Team That is Building it. “Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” Conway, Melvin @aviranm

  44. What did you Learn from Just 2 Services ● Service boundary ● Monitoring infrastructure ● Serialization format ● Synchronous communication protocol (HTTP/Binary) ● Asynchronous (queuing infra) ● Service SLA ● API definition (REST/ RPC / Versioning) ● Data separation ● Deployment strategy ● Testing infrastructure (integration test, e2e test) ● Compatibility (backwards / forward)

  45. Continue to Extract More Microservices @aviranm

  46. Public Segment Editor Segment HTML App Public HTML HTML SEO MSM HTML API Renderer Renderer Store Editor Mostly reads Mostly writes App Public Flash Public Public API Flash SEO Market Media Editor Server (Flash) Renderer >2 Data centers 2 Data centers Private User Flash Sitemap Robots.txt TimeZone MSP Server Media Db active-active-active Renderer Renderer Renderer Db active-standby (preferably active-active) Premium Site Pref User Pref Performance < 500ms 99% Performance < 2s 99% Services Template eCom Viewer Checkout List DB Serves mostly site viewers Serves mostly site builders HTML Feed Me Dashboard Embeder eCom Cart PETRI App Uptime > 99.99 eCom Uptime > 99.9 Builder Renderer Activity HUB Contacts eCom HTML API Catalog Comments Site Store Mgr Mailer eCom Members Orders Shout-out Hotels Slicer Dist Logger Snapshoter Payment Facade Mobile Blog Account Info @aviranm

  47. When to Extract a New Microservice @aviranm

  48. Microservice or Library? I need time zone from an IP address Do I create deployment dependency? What is DevOps overhead ? Who owns it? Does it have its own development lifecycle? Does it fit the scalability / availability concerns? Can a different team develop it? @aviranm

  49. Microservice has Ops, Library is Only Computational @aviranm

  50. Which Technology Stack to Use @aviranm

  51. Free to Chose? Microservices gives the freedom to use a different technology stacks. Enables innovation @aviranm

  52. Default to the Stack You Know how to Operate. @aviranm

  53. Innovate on Non Critical Microservices and Take Full Responsibility for its Operation. @aviranm

  54. Polyglotic System? @aviranm

  55. Limit your Stack Code reuse Cross cutting concerns (session, security, auditing, testing, logging … ) Faster system evolution Development velocity @aviranm

  56. @aviranm http://wallpaperbeta.com/dogs_kiss_noses_animals_hd-wallpaper-242054/

  57. What else will you learn ● Distributed transactions ● System monitoring ● Distributed traces ● Tradeoff of a new microservice vs. extending an existing one ● Deployment strategy and dependency ● Handling cascading failures ● Team building/splitting @aviranm

  58. Summary @aviranm

  59. Microservices is the First Post DevOps Architecture @aviranm

  60. Every Microservice is a Overhead @aviranm

  61. It is all about trade-off @aviranm

  62. Microservices Guidelines & Tradeoffs Each service has its own DB schema (if one is needed) Gain - Easy to scale microservices based on service level concerns Tradeoff – system complexity, performance Only one service should write to a specific DB table(s) Gain - Decoupling architecture – faster development Tradeoff – system complexity / performance May have additional read-only services that accesses the DB Gain - Performance gain Tradeoff - coupling Services are stateless Gain - Easy to scale out (just add more servers) Tradeoff - performance / consistency @aviranm

  63. @aviranm

  64. Thank You @aviranm

  65. http://goo.gl/32xOTt Q&A Aviran Mordo www.linkedin.com/in/aviran Head of Engineering @aviranm http://www.aviransplace.com http://engineering.wix.com @WixEng @aviranm

Recommend


More recommend