We love telling the story of our daily challenges and how we solved them.
Throughout 2021, we shared our experience and insights on engineering culture, architecture, scaling, mobile, frontend and backend and open source (yes, still Covid-19). All written by our very own Wix engineers.
Here’s a quick recap of our 2021’s blog posts, podcasts and meetups -
Coding with the CEO, E14
Is good enough good enough?
For years Wix engineers were building fine services, but as systems became more complex, it was taking too long to do it. The code was clean, but it took thousands of lines for each service.
It was inefficient, so Wix.com’s CEO & Co-Founder, Avishai Abrahami, decided to step in. He set up weekly, hands-on coding sessions with some of his best developers, to chart a new path.
The goal he set for Wix Engineering was that if a project took months before - it would now take days, and every program with 10,000 lines of code - would now be 100.
Listen to this unique story, its challenges and impact.
Wix Engineering Tech Interviews
We love telling stories behind the daily challenges we face and how we solve them. But we also love hearing about the insights, experiences and the lessons learned by prominent voices in the global community.
In this new series of 1-on-1 interviews, our very own Wix Engineers talk directly with some of the most inspiring minds in the tech industry. From software engineering to architecture, open source, and personal growth.
International Women in Engineering Day 2021
We wanted to celebrate the International Women in Engineering day by bringing you stories from some of the women working as engineers across Wix Engineering R&D sites around the world.
In this series of short interviews, Viktorija Sujetaite, Kate Chernikova, Nir Orman, Tal Bebchuk, Tetiana Mandziuk and Olena Zhukova share their experiences of working in Wix, best career advice and inspiration, and their views on engaging more women to pursue careers in engineering.
Onboarding through a Pandemic, E08
Onboarding during a pandemic is difficult. Hiring good people, making them feel welcome and integrating them into an organization structure is a nightmare when you can only communicate on Zoom calls and over Slack.
No need to mention how crucial onboarding is impacting any company, but onboarding was also a challenge before COVID. Two years ago, Wix developers came up with a solution - a system to eliminate the isolation, the confusion, and sluggishness of integrating new people into the company, so that those people would feel at home right away.
A Look Inside Payments by Wix
Wix helps vendors across 200 countries process billions of dollars in sales, supporting 155 currencies and close to 60 payment methods.
That’s all made possible by multiple structures and great engineering - from ensuring traceability to enabling extensibility. Not to mention quality control. In large part it’s all enabled by 3-d party integrations - where payment processors are able to easily become accessible to Wix users in their geography, and globally.
Look under the hood of the challenges the Wix Payments team tackles on the daily basis, the challenges we faced while growing rapidly, and peek into what’s to come next.
Change Data Capture at DeviantArt
DeviantArt is a vast social network with a mission to entertain, inspire and empower the artist in all of us. With 1,5 billion page views monthly, it serves more than 50 million users.
All of it is powered by tens of terabytes of production data in a number of sharded MySQL databases replicated in a source-replica topology across different availability zones. We host the Business Intelligence (BI) infrastructure (that handles hundreds of millions of BI events daily), numerous data pipelines for Artificial Intelligence (AI) and BI use cases, and a multi-cluster search and recommendation system - all in the cloud.
In his article, Ruslan Danilin shares his team's experience of implementing a Change Data Capture (CDC) project that helped make data at DeviantArt much more accessible for analytics and AI use cases.
The Art of Data Science, E15
All data science projects are composed of the algorithm (model) and the data. While data scientists are natively focused on math and models, experience is showing them that for a data science project to succeed in real life, much more than a deep understanding of math is needed.
Gilad Barkan and Noa Stanger will take us through the journey their team went on in transforming from working with a model-centric to a data-centric approach.
In this episode of the Wix Engineering Podcast: how a data science team upgraded their AI by refocusing, changing their priorities, and creating a new workflow focusing on data.
FinOps to The Rescue: When Costs, Engineering and Cloud Clash, E17
Every company, and everyone, uses the cloud. We use it because it’s easy, fast and cost effective. But, a lot of the time, we use it in a sub-optimal way. We could be doing better.
Listen to Dvir Mizrahi tell the story of FinOps - developing a smarter and better financial engineering culture.
Wix Engineering: Continue Your Learning Journey on Our Medium Publication
Did you know that the Wix engineering blog is just one of the places where you can find stories of our daily tech challenges and how we solve them, written by our own engineers?
Architecture, scaling, mobile and web development, solving robust challenges and creating highly efficient code, management - all that and much more in stories shared in our Wix Engineering Medium publication.
We put together an overview of some of the featured Medium technical articles to get you started. And, of course, you can find many, many more on our Medium account, all written by our very own Wix engineers.
- Backend Engineering -
4 Steps for Kafka Rebalance - Notes From the Field
Apache Kafka is a popular distributed event streaming platform used for data pipelines, streaming analytics, data integration, and mission-critical applications.
After working with Kafka for a while, Ariel Moskovich encountered an issue - adding a new capacity and having to balance it several times afterwards. This issue can be amplified in high-scale environments, with lots of Brokers, Topics, and throughput.
Read Ariel’s blog post, where he shares and explores our project of creating the desired balance of partitions between Brokers, while reducing the data movement and overhead in the cluster.
Storage Lifecycle: How We Cut Cost on 55% of Our Storage Without Deleting a Single File
How we cut cost on 55% of our storage without deleting a single file? We understood that NOT all files should be treated equally.
Here’s the full story, by our very own Idan yael.
Scaling Bazel External Dependencies at Wix
Third party dependency management can be a challenge even with the smallest projects. Wix's large scale codebase has "survived" migration from Maven to Bazel build system to have efficient continuous integration between all parts of our systems. Bazel raised awareness of problems that have accumulated over the years of Maven usage.
Vaidas Pilkauskas explains how Wix manages dependencies to provide efficient CI, while at the same time ensuring intuitive dependency management for many developers inside the company.
Too Much Code for Bazel Monorepo? Try Going Virtual
What happens when you can’t put all of the company code in one Git repository, but you still want to continuously integrate as if it was monorepo?
Read Or Shachar's article sharing the story of how we used Bazel existing mechanism to implement virtual mono repo builds locally and in CI.
The Race for Black Friday, E09
“Break them down yourself!“.
As we approach the holiday season and all the Black Friday shopping activities that come with it, we decided to revisit the story of how we prepare Wix’s production for the online shopping frenzy.
Every year, on the Friday after Thanksgiving, traffic to online shopping sites spikes three, four, five times over. Websites built to accommodate a certain amount of demand can easily be overwhelmed by a stampede of customers.
How, then, is it possible to avoid system breakdowns? Jonathan Ginzburg, Head of Production at Wix, has one solution: break them down yourself!
In this episode, we follow Jonathan, Shahar Zur and Fabio Furiosi as they conduct a multi-continental test of just how far they can push their system in production.
How We're Able to Increase Dev Velocity and Boost Local Development While Using Bazel
Bazel is a success story for CI at Wix. Not so much for local development - increased complexity caused a real hit to our dev velocity.
Zachi Nachshon explains how at Wix we enabled a smoother transition into the Bazel build system for our backend engineers by creating and maintaining a proprietary IntelliJ plugin, thus fostering a sane local development environment without freaking out.
Wix’s Journey Into Data Streams
In the last 5 years our asynchronous scale for both flows and events increased 30-fold. This is a story of the evolution that happened in Wix behind the scenes, as we grew and moved into event-driven and asynchronous flows.
Spoiler alert - lessons we learned will help you scale better, but will also add more complexity to your engineering day-to-day. Why? Read this article by Avi Perez.
Platformization, E12
Platformization is technical, high-level work. But that doesn’t mean any talented developer can learn it like they would, say, a programming language. In fact, this kind of work is hardly about the technical details at all.
When Dan Bar Shalom joined Wix, he became the second member of a two-man team. Together with his colleague Itai Chejanovsky, he had to organize an entire company of developers to work towards one, common goal - unifying code.
This was not so much a job for a technician, but a distinctly human endeavor. It was about listening to developers, making their lives easier, and helping them work better together.
In this episode, we’ll learn what it’s like to work in platformization. But more so than that, we’ll learn how to work with developers. Platformization may be a niche line of work, but getting people to work together is crucial to any team, and any company.
Wix Inbox Journey: 3 Approaches for Zero Downtime Database Migration
Migrate a database with +200M users with zero downtime.
We did just that and Wix’s David Vaks is here to tell the tale - sharing lessons learned while successfully implementing 3 different approaches for zero downtime database migration. Read here
How We Improved Website Performance by Evolving Our Infrastructure
The story of the performance challenges Wix faces while serving millions of sites, and the steps we have taken to improve web performance by evolving our infrastructure and leveraging industry standards - written by Alon Kochba. Read here
The Reactive Monolith - How to Move from CRUD to Event Sourcing
Chances are, at some point that big monolith that brings so much business value to your company is going to start to slow things down.
The problem with the Wix Answers' monolith was that it was designed as a classic CRUD system, running business logic synchronously when state change happened.
This article by the Wix Answers' Jonathan David is the first in a series about how we introduced event sourcing and event-driven architecture to our customer support platform in a way that allowed gradual migration, and how that provides new business value without putting existing features at risk.
6 Challenges We Faced While Building a Super CI Pipeline: Part I
We have over 2,000 microservices in production with over 400 deployments/day at Wix, and just the backend guild alone has around 450 developers and 8K builds/day.
It used to be that our builds would spend ~40 minutes in build queues during load. We managed to lower it down to just seconds using Buildkite.
Keep on reading Shay Sofer's article to learn more.
Graceful Worker Termination: How NOT To Do It
A sudden HTTP 502. Then everything just works as usual. Then another 502! Then all a-okay again. This is the story of how we found and fixed one very elusive bug in our backend code scheduler - this bug was so elusive in fact, that it was under 0.1% error rate in our system - yet it did have an effect on our users, meaning we couldn't let this one slide.
During the investigation, our engineering teams gained valuable insights into the workings of Kubernetes deletion API, pod eviction sequence, and how it interacts with NodeJS and Go runtimes.
Reading this article by Moshe Maman, we hope the lessons we learned will be helpful to teams who are looking for a custom graceful shutdown mechanism as well.
The Craft of Troubleshooting - From Art, to Science, to Automation
Spoiler alert! by bringing together all of our troubleshooting experts, mapping their common troubleshooting practices and automating them, we were able to Reduce the time to resolution of our incidents by 27% within less than year!
In this in-depth article, Wix’s Aviva Starovolsky-Peisach tells the complete story of how we did it, what challenges we faced and what lies ahead.
Building a Resilient Infrastructure to Overcome Outages at Scale: Introducing Reactive Production
Remember last week's AWS Outage? Hard to miss it, right? Our users didn't even notice it - thanks to some high-level engineering, infra design & our system handling it all automatically. Here’s how.
- Front-End Engineering -
Custom React Hook: When Software Design Meets React Hooks
So you started writing React functional components. And now you need to use React Hooks in order to hook into a component’s lifecycle or change a component’s state?
When things start getting complicated, the good idea is to write your own custom React Hooks, encapsulating an entire use case inside them. And then using them with ease across your application.
In his blog post Guy Segev shares a real use case of making our code better designed, more readable, and reusable, all by using a custom React hook.
Performance, Bundles and Headaches: Optimizing Your Code, E10
When members of his analytics team began noticing long load times in the Wix Dashboard, originally, Eyal Eizenberg wasn’t quite sure why.
When taking a closer look at the code he realized what was wrong: a progress bar, a minor, largely superficial feature that happened to be weighing down the entire app. Turns out Eyal’s problem is common to all web developers (even those who don’t realize it).
In our new podcast episode, we talked with Eyal and Addy Osmani, Engineering Manager at Google, to learn how developers optimize their code and avoid major headaches.
Moving Velo to Multiple Container Sites: The Why, The How and The Lessons Learned
The Velo by Wix framework allows our users to write backend and frontend code for their sites. A huge leap forward, fueled by growth of Wix, it introduced a multitude of new challenges.
When we started to host larger users, we had to rethink our entire approach to sites running backend user code. We rebuilt our entire infrastructure and created a scaling mechanism while taking into consideration performance, “cold start” and resiliency.
In this article, by Michael Irzh we will discuss the thinking process and the decisions that brought us to where we are today.
CI Police, E13
How do you get all the divisions, teams, employees and projects in a company to follow a company-wide requirement? You can email everyone, but good luck getting them to read it. You can talk to everybody individually, if you have unlimited free time on your hands.
Last year, Roy Sommer and his team members decided they needed a better way. So they founded CI Police.
Auto-Autocomplete: Generating Docs and Autocomplete at Scale
Making hundreds of APIs more accessible and developer-friendly *at scale*?
-- Yes, it's possible.
Velo by Wix offers hundreds of in-house software components and services, written by Wix developers from all across the company.
Our users expect updated & accurate documentation and online/offline completion service - and in "Auto-Autocomplete: Generating Docs and Autocomplete at Scale" by Kobi Nemni, we share how the Velo team automated these processes to make hundreds of APIs more accessible and developer-friendly.
8 Tips for Converting That Big Project to TypeScript
No matter the size of your project, chances are, you have been thinking about moving it to TypeScript. A super-popular superset of JavaScript, TypeScript has many benefits for teams when it comes to writing neat, comprehensible, and reusable code.
In this article by Matan Harsat, we share all the lessons we learned from migrating a project of around 50 thousand lines of JS code to TypeScript - including what we did to make it happen, what pitfalls to avoid, where to start, and how to get your entire team on board.
Dipping Your Toes in the Functional Programming Sea - Personal Post
Matan Cohen’s journey with functional programming started not too long ago. As completing the onboarding process at Wix he was recommended for a JS functional programming course.
From that moment on he keep on learning new ideas and approaches to software development.
In this short post he will share his insights and thoughts about the new and exciting world that I am discovering. Read here
Should You Build Using Internal Open Source?, E16
When we needed a company-wide toolkit, the front-end infrastructure team decided to build it openly, letting developers around the company participate in its development, similar to the way the open source works. Hundreds took up the task. Was it chaos, or a new and better way of developing software? Listen to the full story with Ran Yitzhaki.
- Mobile Engineering -
Deep Dive Into React Native - Lev Vidrak
Wix Mobile Application is built with React Native, a cross-platform framework, allowing developers to compose mobile apps using JavaScript in a declarative way. Scaling a production-grade application with such young framework without compromising on performance and dev velocity, forces us to deeply understand the internal architecture of React Native.
In this talk, Lev Vidrak starts with an overview of the React Native framework, following that, he dives into the main building blocks of the framework such as the Bridge, Native Modules, Metro Bundle and understand what really happens during runtime of our application. He focues on the architectural bottlenecks of the system and explains how the upcoming re-architecture of React Native is going to solve these problems.
How to execute Android UI tests on CI and stay alive
Maintaining our project Detox (a library for writing end-to-end tests for mobile apps) in the last couple of years has been quite a ride. With runtime optimizations introduced for iOS through brilliant companion-projects such as DetoxSync, as well as the ever-increasing maturity of Android support — paved through the wilderness, we’ve survived quite a set of challenges.
White Screen of Death — How to Handle Errors in React Native?
Since React v16, a JS error that was not caught will result in an unmounting of the whole React component tree — i.e. the user will get a white screen of death (WSOD).
Many React Native developers are familiar with these white screens. However, from the user’s point of view, getting a white screen is really frustrating, since that user has no clue why he or she is getting this screen. Let’s figure out how to fix it in Lidor Dafna’s article.
- QA -
QA Hundreds of Miles Away, E11
Yevheniia Hlovatska and Ekaterina Chernikova are part of a QA team that was working remotely long before the pandemic.
They collaborated across distances in a lot of new ways and used a lot of the new tools we all now use as part of our Covid-19 routine. They did it not because they had to, but because they found great advantage in doing so.
Listen to them tell the story of how this setup helps not just debug code of other engineers and ensure quality for millions of Wix users, but do much, much more.
QA Series: AI - An Automation Superpower & Managing QA in 40 companies
AI for software testing (AIST) is one of the latest trends in the industry. Tariq King, Chief Scientist at test.ai, will update us on the current state-of-the-art and practice in AIST, taking us on a journey to see the true strength of applying AI to test automation.
And our very own QA & Automation Guild lead Shy Frenkel will share his biggest challenges of managing QA in 40 separate teams within Wix.
- Podcast -
As said, major part of our engineering culture is to take an active part in the global developers’ community by sharing the best of our technical expertise. Be it via our open source projects, our blog and our Medium publication, our YouTube channel or our newsletter.
In 2020 we started our new podcast - Wix Engineering Podcast, by Wix Engineering, for developers and engineers.
In our podcast you can hear the stories and insights from our very own, alongside some of the most prominent voices in the tech community, as we will cover topics from architecture, scaling, mobile applications, and web development, to management, culture and much more.
You can find it on Apple Podcast, Spotify, Google Podcast, Deezer and our own Wix Engineering site.
Here our 2021's engineering podcast list:
- Newsletter -
Every month we're sending out our monthly newsletter, where we cover our engineering insights and feature in-depth articles and news from around the global tech industry. Newsletters are a great way to keep your engineering knowledge sharp, while getting these goodies directly to your inbox.
Feel free to subscribe to our newsletter and review all our latest issues here.
For more engineering updates and insights:
Join our Telegram channel
Visit us on GitHub
Subscribe to our YouTube channel