PRICE COMPARISON AND PERSONAL OFFERS PLATFORM

Customer’s mission is to provide an excellent shopping experience. The customer establishes a transparent and seamless interaction between buyers and sellers to create the best deal for both parties.

The Price Comparison and Personal Offers platform instantly provides an overview of all shops and their offers for a product that a customer is looking for. Personalized offers can be made just-in-time taking into account a customer’s profile and market data.

About the Project

The *instinctools Company was involved in a price comparison project with a unique capability to make personal offers to customers based on their profile and current market conditions. The Price Comparison platform aggregates offers from all shops, and shows them to the customer using a browser add-on and mobile application while the user is looking for the product.

The Personal Offers platform allows shops to offer personalized deals using a rule engine, taking into account a customer’s profile and competitor’s offers. This allows shops to implement a loyalty program and compete for best offer in terms of price, delivery terms or additional value.

The whole process takes a split second. Therefore, the best deals are presented to a customer while he is looking into a product and is ready to buy it right away.

Challenges

  • Redesign and refactor existing system, going from a monolith application to micro-services architecture to support growing number of offers and impressions.
  • Monitor and orchestrate micro-services to provide high availability and low latency service to customers.
  • Implement online and offline deal making process, reliable tracking transactions and accounting commissions.
  • Support existing system functionality lacking original developers’ knowledge.

Solution

We delivered online and offline deal-making process by collecting requirements, designing a new system, planning a change to the existing product and successfully integrating it together. The existing functionality has been maintained throughout the process. It was covered with automatic tests and redesigned to support a growing number of requests.

To support operations, we implemented monitoring of backend services while providing reliable tracking of transactions and making user’s behavioral data available for data analytics.

We have done major refactoring to unify approaches used throughout the micro-services, which lowered costs for operations and maintenance.

We also have:

  • fixed existing security issues and implemented best practices to protect the business from common security threats, which was confirmed by penetration testing done by an independent contractor;
  • implemented event tracking for behavioral analytics;
  • managed cloud resources and implemented automation which reduced operating costs;
  • set up DevOps practices and implemented continuous integration and delivery;
  • redesigned a system to enable horizontal scaling.

Key features

The client has obtained the desired functionality in time to run partnership programs with online and offline shops. The delivered platform was cloud-ready and modular, allowing the scaling of hot spots and handling business growth and peak load.

The benefits of the delivered platform are:

DF747ED2-B872-4ABB-94DC-FA6F3295BBF1Created with sketchtool.

Ability to handle increasing traffic

19FD1F2C-AC5E-4073-8CCA-E11326A11D20Created with sketchtool.

Monitoring the system in a real-time mode

F60D17DE-9E8F-4699-9235-DCFBDAB31DC2Created with sketchtool.

Gathering of customer behavioral data for analytics purposes

7949F724-56D7-4DC2-B8F7-B5B6FF2724B9Created with sketchtool.

Integration with third-party analytics products

371DF85D-B426-4D99-BE05-56669621BD9BCreated with sketchtool.

Vendor-free deployment to cloud, no lock-in to AWS

C9DDA3FD-9C0C-46D9-8B0E-5B463170E61BCreated with sketchtool.

Performing the expected functions fast and accurately

The client was pleased with our fulfillment of the requirements and the recommendations of the affiliate partners. We are currently continuing to maintain the stable operation of the platform.

Technologies

JavaScript was chosen as a common language for the platform. The existing system used a mixture of CoffeeScript and pre-ES5 code. We used Babel to bring the expressiveness of ECMAScript 2016 to every service.

The system was deployed to Amazon EC2 using Terraform, Ansible and Docker, with core components independent from AWS platform offerings. The delivered solution is not locked to AWS.

MongoDB, Elasticsearch and Redis were used as operational data storages.

Continuous integration and delivery were implemented around Git repositories using the Gitflow model. The integrated setup of Jenkins, Docker, Slack and GitHub Status API was used to implement DevOps practices.

Prometheus and Graphana were used to build a backbone for backend monitoring. Sentry was used on both the frontend and backend to catch runtime errors from all environments.

Node.js and React were chosen as two pillars to establish a common ground and allow, among other things, server-side rendering and code reuse between web application, browser add-ons and mobile application created in React Native.

Amazon Kinesis, Redshift and S3 were used to build analytics platform open to third-party analytics products, e.g. Tableau and Amazon Quicksight.

An increasing number of offers and data crunching tasks were gracefully handled by a scalable pool of workers getting jobs from the RabbitMQ queue.

npm was used for public and private package registry. The combination of semantic versioning, GitHub Releases and private npm registry allowed the sharing of knowledge inside a distributed team.

NodeJs
Github
React Native
RabbitMQ
npm
Elasticsearch
Redis
Prometheus
Grafana
Sentry
Docker
Babel
Webpack
Ansible
Jenkins
Terraform
MongoDB
Amazon Web Services

Do you have a similar project idea?

Anna Vasilevskaya
Anna Vasilevskaya Account Executive

Get in touch

Drop us a line about your project at contact@instinctools.com or via the contact form below, and we will contact you soon.