When faced with the task of creating a solution that would help take control of road transport, we knew that first, we had to move it to the cloud. Why was the cloud-native approach the best for a marketplace building project with an international expansion plan? Let’s find out what advantages AWS Cloud gave us and what difficulties we had to face so that Prilo could finally set off on a safe way.
Prilo. What is a modern marketplace?
Do you need to take a car from A to B? Or maybe you have facilities that enable the transport of cars, and you want to list your offer? Prilo is a space for drivers, principals and customers, where they can freely determine all the necessary details of the order and conclude a contract. The platform improves the car transport process, supporting the exchange of documents, enabling quick communication between users and allowing you to track transport on an ongoing basis thanks to a mobile application for drivers.
This modern car transport exchange was commissioned by our client, the Polish company Adampol. We created the project from scratch, thanks to which we had the opportunity to start work at the stage of product discovery and formulation of needs. As a result, we faced the challenge of creating a specific marketplace that would enable, among others:
- Placing orders;
- Making offers;
- Concluding contracts.
And as part of the execution of orders:
- Determining the details of transport;
- Exchange of documents;
- Communication between the parties;
- Truck Tracking.
It is worth noting that Prilo was never intended to be a typical back-office solution. Thanks to the Kreatik team’s involvement in the project, the platform has been refined in terms of UX/UI, and also dressed in attractive graphics. It is a marketplace created with the comfort and needs of users in mind, which from the developer’s perspective, has translated into the selection of tools needed to implement the project.
Why the cloud, exactly?
In the first phase of the project, Kreatik took the client to the workshop. Together, they went through the discovery phase, which included defining the target group and discovering its real needs. Thanks to this, we knew what functionalities the platform must contain and in which direction it would develop. It provided us with the comfort of work and allowed for a fully conscious choice of tools. It was also important that our client – Adampol – remains part of the international company Hyundai Glovis. Hyundai works according to strictly defined standards and thus imposes solutions to some extent. In the end, we faced a choice: on-premise software with cloud elements or a total cloud infrastructure?
Fortunately, at that stage, we already knew the portal’s assumptions and plans to expand into foreign markets well. Considering the possibilities of the cloud (especially since Hyundai standards pointed us directly towards AWS Cloud solutions), we realized that in this respect it would be a better choice than the on-premise option. The extensive infrastructure of AWS favours international projects – the cloud is available from anywhere in the world, as long as the Internet is there. In addition, you do not need any complicated equipment to connect because it is on the operator’s side. The driver on the road will easily connect to the application via the phone, without delays and problems with data transmission.
The only thing we couldn’t predict at that moment was the amount of traffic that Prilo would generate in the future. And since we didn’t want the client to pay only for the readiness to launch, the answer was obvious. All we had to do was decide how deep we wanted to go into the cloud.
First steps with AWS Cloud
As is well known, the AWS Cloud infrastructure provides a multitude of services. It’s easy to get over-excited about this, so our priority was to choose the best solutions for the project. Thanks to our previous experience with other projects, we were certain that we wanted to use development tools and CI/CD in the cloud. Ultimately, we quickly decided that we would use AWS wherever it would simplify the work on the project. As a result, we moved most of the tasks related to management, scaling and configuration to the cloud. Fortunately, due to the standards of work with Hyundai, we did not have to be afraid of a vendor lock, and we could confidently use the AWS Cloud capabilities.
Prilo is a public portal, therefore the CQRS implementation pattern was important from the architectural perspective. We knew that there would be more readings than records because Internet users would visit the platform and click through its offer. An additional challenge was the fact that the site had three user interfaces planned. We wanted to present something else to end-users, something else to administrators, and something entirely different to drivers. And while the first two interfaces were designed as SPA in Angular, the third one required, not so much a Single-Page application, but a full-size mobile application written in Flutter (and available on Google Play).
Cloud in search of savings
While working on the project, all the time we had the thought in mind that the use of the portal must be comfortable and maintenance cost-effective. We were looking for tools that would best reflect the business logic, and in the end, we decided to combine AWS Elastic Container + Fargate and AWS Lambda. Lambda is a very cheap, flexible and easy to integrate solution, but it is characterised by the so-called cold-start. A virtual machine needs a short time to start the service, therefore not all application functionality is suitable for such handling. However, we decided that in the case of side functions (such as automatic e-mail sending), a few seconds delay will not make any difference to users, and will generate real savings for the entire project.
On the other hand, AWS Elastic Container + Fargate is also a flexible solution, heading towards the serverless approach, which greatly facilitated and accelerated our work. Among other things, because it also includes ready-made tools (e.g., healtheck, autoscalling, blue-green deployment). Perhaps handling everything manually would seemingly be cheaper, but the time we would have to spend on it would quickly exceed the budget that went to AWS Cloud.
The cloud and security
Prilo is a typical example of a microservice architecture. For the safety of our client, we have divided the entire domain into subdomains and, consequently, into websites, so that the most important operations are kept in one place and communication between websites is kept to a minimum. The services react to each other asynchronously, and if communication is really necessary, it is done synchronously via the REST API.
AWS once again helped us in asynchronous communication, thanks to the combination of SNS and SQS tools. This had a positive effect on efficiency – even with a very heavy load, the marketplace works efficiently, and the customer does not have to reckon with downtime.
Do the cloud and the marketplace fit together?
From the perspective of the work done and the initial results, we can safely say that microservices architecture, applied in a cloud-native approach, fits very well with the needs of such a solution as a publicly available marketplace. The AWS cloud provides many ready-made components, significantly shortening its creation time and improving its efficiency and security.