Wix is a great example of a scalable modern hybrid-cloud and multi-cloud architecture for web based applications. Wix provides you an easy way to set up your own site without being a web developer expert. They serve 54+ million websites (and growing by 1 million each month), with 700M requests per day and some 800+TB data served.
On a recent session Wix shared some of their experience architecting their system. Their experience shows the process they went through from single-server monolithic application to a distributed cloud-based and service-oriented architecture. It is a great practical lesson. it contains important principles for architecting at massive scale such as:
- No DB transactions. XA TX will kill your scalability.
- Denormalized data model. make the data accessible locally to avoid remote calls or distributed transactions.
- Immutable data. This pattern has become a common approach for scalable architecture, and is nowadays built into scalable programming languages such as Scala.
- Hybrid-cloud and Multi-cloud infrastructure. Your data center can crash. Amazon cloud can also experience major outages. If you want to offer strict levels of resilience and assurance while keeping very strict SLA (under 100ms in Wix case), you need to use a hybrid model of data centers and multiple cloud vendors (AWS and GCE in Wix case).
- No caching for long-tail services (yes, NO caching). instead, a multi-layered architecture with public service, archive service, CDN, static grid, etc. to cascade requests as needed.
- Good balance between server-side logic and client-side rendering to maintain SLA on critical path.
It’s also fascinating to see the learning process Wix team underwent, and the pragmatic approach of analyzing the real bottlenecks and critical paths and focusing on optimizing them. I highly recommend reading what Wix shared with the community (and thanks Wix for sharing with us!)
Follow Dotan on Twitter!