Uploaded on Nov 3, 2020
At Yelowsoft, our team is highly dedicated to achieve excellence in all the work that we do. We have achieved excellence in all our works in the past by continuously reinventing ourselves. This continuous process of reinvention has now become our trademark.
All you need to know about yelowsofts new version update
All you need to know
about yelowsoft’s new
version update
At Yelowsoft, our team is highly dedicated to achieve excellence in all the
work that we do. We have achieved excellence in all our works in the past by
continuously reinventing ourselves. This continuous process of reinvention
has now become our trademark.
why did we move to the newer
version update?
The main reason for moving to the newer version update was to achieve faster speed and to make our
solution more robust and advanced. The taxi solutions have to deal with a massive amount of data on a
real-time basis. It’s because it receives, process, and sends a huge amount of data in real-time. If we talk
in technical terms then the below three processes are always taking place simultaneously.
Real-time ingestion: – Receiving data in the real-time
Real-time processing: – Processing the received data in real-time
Real-time update: – Sending the processed data in real-time
microservices architecture
In our newer version update, we have come up with microservices architecture. First, let’s understand
what Microservices are?
Microservices are tiny, independent, and loosely coupled. In this, every service is a separate codebase
that can be seamlessly managed by a small team of developers.
Developers can deploy these services independently. This enables the team to update any existing
service without redeploying or rebuilding the entire application.
The communication between services takes place via well-defined APIs. However, the details of the
internal implementation of each service are kept hidden from the other services.
Now, that we have understood microservices, let’s have a look at what are its benefits.
Smaller code base
In the case of a monolithic application, the code dependencies become too tangled. Due to which, you
need to require to touch code in a lot of places for adding a new feature. Microservices architecture
minimizes these dependencies by not sharing the data stores or codes which ultimately makes it easy to
add new features.
A mix of technology stacks
The microservices architecture helps you pick the technology which is best suited for your service. You
can also use a combination of the technology stack.
Scalability
Microservices are great when it comes to scalability as it enables you to scale services independently.
With this, you can scale subsystems that need more resources without scaling the whole application.
We used microservices architecture in our newer update because it enabled us to divide work into multiple
services such as:
The driver services will take care of the work related to the drivers.
The auth services will take care of all the authentication work.
The matching service will match the ride request by finding the best-
suited driver.
With microservices architecture in place, we were able to identify the services
which were the most occupied. Moreover, it also enabled us to enhance that
particular services which in turn made the system faster.
This was a huge bonus for us as earlier in the monolithic architecture, we had to
enhance the whole server to make enhancements in any of the particular
services.
segmentation of data as per the
use case
We segmented data as per their use case and ensured that they
are stored separately.
This separation of storage ensured that real-time operations
don’t get affected when anyone generates a report from the data.
As per the use case, we divided data into three categories:
Reporting data
We used the reporting database and ensured that all the reporting data is stored in the reporting database
itself.
Streaming data
To store streaming data we have used the streaming database as there is a continuous stream of data
that we were dealing with. We used Kafka for the streaming database which enables streaming of driver’s
location and trips.
Master data
We kept master data into the master database. We kept such data in this database which is not meant to
lose such as driver information.
switched from python to node.js
Before making the decision to move to Node.js, we compared both Python and
Node.js and found out that Node.js had more support as it was JavaScript.
Apart from this, the main advantage that Node.js had over Python was the fact that
it is asynchronous.
Asynchronous processing is a must-have for all real-time applications especially for
something like a taxi application where a massive amount of data has to be
executed in real-time.
Let’s understand what asynchronous processing is with a simple example.
CACHING LAYER
We also added a caching layer where we decided to put data which is frequently used in real-time processes like
finding the nearest driver and many other processes. This enabled us to collect the data which is used in real-time
processes directly from the caching layer thus eliminating the need to go the database.
The addition of the caching layer helped us to make our system faster for many processes as less amount of time was
consumed for retrieving data from the caching layer as compared to that of the database.
Moreover, we also ensured that every time there’s an update in the database, the caching layer should also get
updated. To ensure this we carried out several tests in numerous scenarios and finally succeed in achieving our goal.
We also ensured that our system is not totally dependent on the caching layer. In case our caching layer goes down
then the system would still be working and it would fetch all the required data from the database to the caching layer
automatically.
APP LEVEL
Lower battery consumption
Low network usage
Making the mobile application faster
www.yelowsoft.com
[email protected]
Thank
you +91 95740 78295
B/703, Siddhi Vinayak Towers,
Off S.G.Road, Makarba,
Ahmedabad-380051
Comments