Message Bus Configuration Portal Testing

Dec 1, 2019 - Mar 1, 2021

Overview

This project was responsible for configuration of the high performant message bus, the main communication component between microservices of the backend for the whole company. Before we implemented our message bus solution microservices were using RabbitMQ to communicate, but it wasn't allowing the platform to scale higher than 30k DAU. It was a crucial component for the entire platform, so we had to test it thoroughly. We had more than 3.2k integration and e2e autotests running in CI in less than 15 minutes total.

System Diagram

Autotest System

My Role

  • I made a lot of improvements in reporting, some more noticeable:

    • I was responsible for infrastructure for local development and CICD.

    • Developing mocks (GRPC based, REST based, Redis based communication).

    • Writing code for emulating failures of different types of components and message bus nodes.

    • I was responsible for all autotests. They were running per commit in less than 15 minutes in Gitlab CI on isolated docker-compose environments with mocks as containers.

      • I increased autotests number from 2_400 to 3_200.

      • Refactored more than 1_500 tests to switch from HTTP REST to GRPC.

      • Moved part of Java UI tests to TS+Playwright.

    • Proposed a solution to solve an issue with Redis not being able to process the amounts of data we were sending through it.

    Side - Electron Desktop App autotests

  • Our team built a desktop app for Windows, MacOS and Linux using Electron. It was a Postman-like, BloomRPC-like app for testing services that used our internal message bus.

    • I made a testing suite to test an app using Spectron automatically.

    • Tests were running in Gitlab CI on MacOS and Linux per commit.