Ambitious, more ambitious, the most ambitious… InboxGun case study
At SapientPro, we believe that life without challenges is wasted. Demanding tasks and trying situations make us tougher and open doors for self-development and professional growth. That’s why we are intrigued when presented with assignments which can bring the best in us as professionals and leave room for creativity and self-improvement. Here is a story just about that.
How it all began
We met Emi in the summer of 2017. He was looking for a team of developers for a new ambitious project — InboxGun. The idea was to build an Internet platform for sending professional emails designed for a mass audience using the experience of Mailchimp and introducing new ideas and solutions.
The project at first seemed to be very large. The technical task for the first stage consisted of hundreds of pages and there were about a hundred of mockups for different screens. But after analyzing all the details together with the team, we created sprints and made a clear development plan.
We had to pay special attention to planning as it was a turnkey project and all possible risks had to be taken into consideration.
After all, the project turned out to be quite compelling. Let’s have a closer look at it.
DescriptionInboxGun is a marketing platform for small businesses. It allows to send nice stylized letters, integrate e-commerce stores, ads and build up a brand.
Behind the projectThe system consists of the main server and a swarm of worker-instances, which will send emails in parallel (later we call it email-workers) so highload will be balanced and there will be a possibility to send a lot of emails in a short period. The main server includes Web API, public REST API, backend business logic (calls to DB, data management, access logic etc) and is a 1st mail worker itself. Database is hosted on it or separately on the neighbor instance. When there is a task to send a batch of emails, it will be directed to a message queue server, from which workers will take tasks, do it and report about it back, tasks will be logically-complete, DB-independent and atomized so will be easy to do in parallel. In minimal install we could use only 1 server, which is a worker itself and hosts a DB, but with a growth of highload new workers will be run and will take these tasks.
On the roadThe customer was very demanding to the frontend. Everything had to be pixel perfect. It was not a simple task because there were a lot of customized design solutions — starting from small details in the form fields and ending with animation for dropdown elements. Gradually, we found the right approach to the customer’s requirements and began to build everything exactly as the customer and designer wanted. We faced a task of constructing an infrastructure that would be ready to send 100,000 letters per hour to a scale of 1 million. For this, at the design stage, we created test servers, created 100,000 email addresses and sent real emails to them. At the same time, we measured the runtime and configured the server. In this way, we were able to test everything out rather than use synthetic testing which does not always produce reliable results. In this article, we would also like to draw attention to the editor template. It would be right to say that it was a separate large project. The template editor is a powerful tool that allows you to build a complete web page with text and graphics without any programming knowledge. It was a real challenge as email templates are a very specific niche. We had to take into account all nuances when displaying in mail clients, generate inline html/css. It was a tiring but yet rewarding experience. To illustrate this, we are leaving the customer’s feedback.