In this blog post we would like to provide a practical demonstration of the ways in which a microservices-based architecture can prepare a software product for a very large influx of new users.
About the Project and its Challenges
Our client is a reputable person within their industry. They own the startup company and actively use the advanced technologies developing digital products. However, when the client requested us for the development and testing services, the augmented reality product they were working on was the low quality due to the disparaging attitude of their previous IT provider to the product. The code was unreadable while the general product concept didn’t meet the client expectations and initial requirements. Its performance was quite slow, which worried our client the most.
At the stage when the project came to us it included four main components:
- The project API was implemented with the help of Yii2, a popular PHP framework;
- The dashboard concept was simple and intuitive and was also realized with the help of separated Yii2 elements;
- Dashboard and API of the project were united by a common database of PostgreSQL supported by the Amazon RDS;
- The application supports two major platforms, IOS and Android.
Initially, we had only to finalize several backend units, therefore after the deep analyze of the system and the further plans of the client concerning the application scaling and improvement, our responsibilities were expended.
As a client decided to begin a huge promo concerning the product enhancing and improving, our main goal was to prepare the application to the high loads provoked by thousands of users in the near future.
Solutions & Technologies
To fully explore the application capabilities, we decided to apply performance testing, which would show how many users the current configuration can sustain. As QArea has its own fully-equipped testing lab, we involved our senior level QA whose main goal was to develop the needed test scenarios to indicate the application performance and also to check the individual Dashboard elements. To optimize the testing processes we also used Jmeter — the load test functional behavior and measure performance QA tool.
Results & Further Steps
As expected, the current server configuration could not resist the projected loads. The test results you can see at the diagram below.
After the precise exploring of the application capabilities, its current state, and the client requirements, we decided to apply the further steps for the app’s performance improvement.
- We decided to change the initial application architecture. The most loaded fragments of the application will be separated into microservices in exchange to the monolith architecture;
- To develop the most optimal microservices architecture we decided to use Golang programming language, as one of the most suitable languages for our purposes;
- The Amazon RDS will be replaced by the fastest one.
Interested in what microservices can bring to your software?
To ensure the stable result of our development and testing services, we also took into account the business objectives of our client and their further plans concerning the product optimizing and improving. The above-mentioned actions were approved by our senior-level experts and the client.