How We Engineered Seller
It's been 4 weeks since we announced the official public launch of Seller, the Cloud eCommerce as a service platform purposely built for African small businesses. Seller makes it easy for any small business to create, own and operate their own e-commerce store without needing a developer or having specialized skills. This post looks to share some insights into the engineering and technology behind the making of version 1.
What is the product? Seller is an eCommerce as a service, cloud platform designed to solve many local and real problems faced by small businesses and retailers in Nigeria and across Africa, which has been hindering growth in the digital era. Some of such problems are digital literacy, awareness of powerful localized digital solutions and dependence on foreign products without great local support.
Seller hopes to solve these three challenges for small business owners by;
- building a simple to use digital commerce solution,
- integrating and promoting other local solutions and
- providing scalable hands-on support.
Firstly, Seller was built from the ground up. Yes, it's not a shopping framework or WordPress plugin. Seller is composed of a series of backend microservices written in Python and Nodejs, hosted serverless in Cloud Run on Google Cloud Platform. The database is not relational but rather makes use of Cloud Firestore’s Transactions to ensure ACID property. The storefront and theme customizer frontend is completely Vuejs, hand baked by one of our awesome engineers, we call #bosslady. The architecture is simple and decoupled, we have some services code-named (after local Nigerian landmarks and some of our favourite things); Olumo, Obudu, Titan, Raven, Mufasa, Zuma, Yankari, Onitsha, Tarkwa etc and each of these services call one another using Google’s PubSub and are scaled based on traffic in real-time.
Secondly, why did we build it like this? Truly we had explored a lot of solutions and iterated several times and after every iteration we discovered that we would need more time and resources to manage other people's code and library, most especially because they didn't fit into our vision of providing a long term scalable solution for the needs of African users. One of such solutions we explored because of our love for open source and Python, was Saleor. Saleor was good for a single instance store but not multi-store. At about the same time, the team behind Saleor was planning to change the business model and turn into a managed multi-store SaaS solution. We had contributed to the project but had to take a critical stance on the solution, our vision and roadmap. So we chose to take a different path by building a proprietary solution.
Looking back, we found that one of the advantages of building from the ground up, is that we could push ourselves to finding and solving nuanced problems thereby improving our engineering capacity as a team and as individuals. A simple example is the cold start problem with managed Knative solution on CloudRun, and our continuous integration with Cloud Build, which resulted in a quick solution as a reusable utility called cloudrun_warmer. Experiences like this enable developers continually improve and become world class, and as such we now have one of our software engineers recognized as a Google Developer Expert for Cloud Platform, one of only 15 such experts in Sub Saharan Africa. Another advantage is the ability to create custom integrations and partnerships with other African-focused solutions such as Termii (WhatsApp notifications), Sendbox (Local & International shipping), Paystack and Flutterwave (Established payment processors), thereby giving merchants multiple options and choices.
Finally, I want to mention that we have a lot on our roadmap, but we think releasing a v1 to help small businesses during this tough period with #COVID19, is the best thing to do at this time and thereby giving us an opportunity to get feedback from the community. We know some things are missing and we are committed to improving the platform and helping small businesses accelerate the gains of the digital economy.
If you have some thoughts or would like to join the #DigitalMercurieTeam, and help build version2, please drop us a line on Twitter @digitalmercurie and @seller_africa. For more information from our engineering team, you can subscribe to our blog here.