Our Client is a global grocery and general merchandise retailer that is constantly innovating and disrupting the shopping experience, whether online or in-store.
The end product is a smooth buying experience, but it requires strong technological fundamentals and the capacity to acquire and process data, provide actionable insights, and rapidly introduce innovations at scale. The underlying technical solution must be able to process thousands of transactions per second and support the delivery of 1,000,000,000+ items annually to support the constantly growing customer base.
We have set up an Identity Kafka cluster on AWS in order to store events generated during the user login. The first use case for this will be device recognition: we will identify whether a user has already logged in with a particular device or not. We are planning to analyze these events and calculate many different risk factors (related to the user’s history, geolocation, etc), and identify malicious behaviour and attacks.
We have developed the current version of the Address microservice, which serves addresses obtained from a UK data provider as well as customer-provided ones. This solved the issue of not being able to deliver to unknown addresses. We are now in the process of migrating to an international version; this will enable integration with even more services and become a central hub for managing addresses.
To support the benefits management of Client’s employees, we have built an event-driven microservice-based system. It is based on an internally developed reactive event sourcing library and event bus with strong consistency, reliability and non-blocking processing in mind. The whole solution is powered by the well-known PostgreSQL database, RxJava, Vert.x toolkit, and asynchronous access. The overall idea strictly follows CQRS and DDD principles; concepts such as SAGA make it easy to manage, for example, Discount Entitlement orchestration.
Our teams are actively involved in the design and development of several areas of this e-commerce system platform using an asynchronous, non-blocking, event-driven architecture. We have managed to quickly incubate highly skilled, autonomous, motivated teams that in the long term will develop different part of Client’s system.
Tomasz, Head of the Project