Challenge
In order to fix bugs or issues, ThoughtSpot engineers firstly should reproduce them. At that time ThoughtSpot had no fast and flexible way to allocate resources for bug reproducing. One of the cases where significant upgrade was needed:
- A customer faced a bug in the old version of ThoughtSpot.
- In order to fix this particular bug, ThoughtSpot software engineers should have repeated it.
- Unfortunately, this bug reproducing was not a quick process. Due to the lack of automatization, a software engineer should have manually deployed the old version cluster back-up. It usually took a lot of engineers’ time.
According to this case solution was:
To develop an internal application, which would manage all the company’s resources. Such app was supposed to help to test any product on any platforms (virtual machine, EC2 instance, etc.) This app should have deployed necessary versions of ThoughtSpot in a pair of clicks.
Solution
We have analyzed the system’s structure, capacity, and the whole performance. After all investigations in cooperation with ThoughtSpot engineers we developed consistent steps:
- The following stack of technologies for new application was set. We decided to utilize the most appropriate in this case Golang (because some of the initial back-end code was written on it), React Native (the whole codebase was written from the scratch), PostgreSQL (for database management).
- After back-end and front-end parts were done we added several providers such as MAAS (a tool that controls and manages hardware capacities), AWS, GCP, Azure (for systems’ resources management).
- We utilized Docker-compose to deploy our new application. After deployment, the application was connected to the internal ThoughtSpot system.
- We also implemented here back-ups and migrations systems.
Business Result
As a result, now ThoughtSpot has a complete application that allows faster development, reduces the time needs of back-up deployments and manages all the company’s internal resources. This application is simple for developers and notifies them about the expiration time of their resources. Each developer now can provision own test resources isolated from others.
It makes the process of testing more convenient and secure for every software engineer.