The main focus of our company is software development. To simplify the perception of information, we will divide this definition into components.
In order for the project to be functional, to be able to perform calculations online, to make an order using a basket, to provide the ability to perform transactions on monetary settlements, to store user data, to ensure the security of this data, to synchronize the work of tens and tens of thousands of people at the same time and to have a high level performance - it is necessary to develop a complex and scalable architecture called the Back End of the project.
To organize a common architecture, code written in one of the programming languages is used. Airkod uses PHP, C ++ and Java, Zend Framework, Laravel, Node.js, which works consistently and smoothly with traffic from hundreds of thousands to several million monthly users for Medium Business, Large Business and Enterprise customers.
To create and support architectures of this level, a general experience in the field of an average of 8 years is required.
Several examples of organizing services within complex projects.
Synchronization and precise distribution of tasks for a staff of couriers of 200+ people at the same time for online food delivery service.
We faced several technical challenges for the successful implementation of the system.
Development of a mobile application for accepting and processing orders:
- creating an application for Android phones using the iOnic language, which is used to develop applications. This application was installed on the mobile phones of the company's couriers. From the courier's point of view, this is the interface that stores the history of previous orders and accepts new orders.
First of all, all orders coming from the site and the client application go to 1C. 1C assigns each order the “new order” status and adds it to the pool to the rest of the company's orders. In parallel, 1C sends to all couriers with the “ready to accept order” status an application for the delivery of a pool of new orders to the specified area.
A free courier indicates readiness in the application and goes to the point of issue of the order.
Courier's current location, time tracking.
We are all used to seeing the current location of a taxi or courier on an online map, to receive accurate information on the remaining delivery time.
1. The current location of the courier. The GPS signal transmits data on the current coordinates of the courier through the WHOIS server. We transfer the received data to the user's site in the form of a geolocation mark on the map. If the courier does not have the ability to receive GPS, then we use the information from the base stations of the mobile communication to approximate the location using triangulation.
2. Time tracking. Estimation and analysis of the remaining delivery time is carried out by analyzing the average speed over the last n-minutes (we adjust the length of the intervals ourselves, having made changes in the code written by us in advance). If the average speed for n-minutes is 30 km / h, then the application estimates the length of the remaining route, for example, 10 km, and estimates the remaining time using the formula 10 km / 30 km / h = 0.33 h or about 20 minutes. We send the received data to the user on the site or application. In some cases, we can add additional variables to the analysis of the remaining time: traffic jams, the average speed of individual sections of the city or an entire street, the effect of weather conditions.
On the server side, a backup (data backup) has been configured in case the system stops working for any reason. In this case, backup will automatically resume its work on the current server or use the backup server and use the latest up-to-date copy of the entire project, which is created once every 24 hours.
To protect against possible software attacks of the project (ddos, etc.), we recommend using the Cloudflare service, which has received worldwide recognition as one of the most secure systems.
TECHNOLOGIES WE USE FOR SOFTWARE DEVELOPMENT PROCESS
PHP is a popular general-purpose scripting language that is especially suited to web development. Fa
Laravel is a web application framework with expressive, elegant syntax.
Node.js is a platform for building fast and scalable network applications. Node.js uses an event-dri
Angular is a platform for building mobile and desktop web applications
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displa
React is a library for building composable user interfaces, it supports and encourages the creation
MySQL is an Oracle-backed open source relational database management system (RDBMS) based on Structu
MongoDB is a cross-platform document-oriented database program. Classified as a NoSQL database progr
Redis (Remote Dictionary Server) is an in-memory data structure project implementing a distributed,