130 likes | 152 Views
<br>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.
E N D
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 Thank you hello@yelowsoft.com +91 95740 78295 B/703, Siddhi Vinayak Towers, Off S.G.Road, Makarba, Ahmedabad-380051