What are we doing?
Our customer is a global retailer serving more than one million online grocery orders per week. Our team is responsible for storing and providing information about all kinds of addresses (customers, employees, external suppliers, etc.), wherever our client delivers orders – mainly the UK, but also Ireland, Czech Republic, Slovakia, Hungary. Additionally, we create a modern and intuitive address search engine.
Address finder modernization
We replaced two-step postcode-address selection with a single text input field, providing the search-as-you-type experience. Users are able to search by any meaningful parts of address: postcode, street, town or even company and building name. Matching addresses are returned as soon as the user starts to type. The result set is constantly adjusted as the user provides more details in the query. Although such change appears to be very simple from the website perspective, the underlying mechanisms introduced multiple engineering challenges. The new address finder needed to handle tens of thousands of new user registrations per day. Searching for a single address can trigger multiple requests resulting in hundreds of thousands queries to the application every day.
To solve this particular problem, we decided to base our project on the most popular text search engine – ElasticSearch. To decrease the cost of cluster maintenance and improve the resilience and availability of the solution, we used the cloud AWS ElasticSearch service.
We are proud that 75% of manually typed addresses can be reduced thanks to our solution. It translates to better accuracy and reduces the cost of delivery.
We analyze and update a huge database every day. We work in Scrum + Kanban, we do not have testers or DevOps in the team – each of us is DevOps and creates infrastructure. We have a real impact on the project and have great autonomy – the client trusts us and doesn’t impose on us the way we should do something.
Main technologies in which we work:
- Java 11
- AWS / Azure
- MongoDB / CosmosDB
Issue tracking/Scrum systems:
- Github Wiki
The biggest challenges
- High availability – if it doesn’t work, then shopping on our client’s website and registration don’t work.
- Low latency – fast server responses.
- Reliability – we cannot lose data in any way.
- Traffic handled – it is large, it is planned to be even bigger.
- Provision infrastructure – in a modern way and with best practices.
Get to know us better!
I’ve been working in the Address Team for 1,5 years. During work, I like to refactor legacy systems and improve code quality. In my free time, I enjoy cooking and watching sports.
I’ve been a Software Engineer for more than 10 years now, and this job is still fun, entertaining, and challenging for me – maybe I’m not smart enough to be able to learn everything and get bored 😉 I like hiking in the mountains in my free time, which is a common thing in VirtusLab. Besides that, I like practising foreign languages, which reminds me a lot of programming.
I am a software engineer and have been working here for less than one year. I do everything from fixing bugs to implementing new stuff for our project. Sometimes in my free time, I try to bring up my knowledge in different aspects like system design, best practices or just learn new technologies.
I started my journey with the Address almost 4 years ago as a standard Java developer. I really enjoy the fact that working here encourages you to broaden your skillset continuously. In my spare time, I’m going on bike trips. I’m also a beginner home-brewer.
I’ve been working as a Software/System Developer since 2016. Regardless of the daily challenges, I always find the motivation to succeed in my objectives by giving a shot to new IT trends. In my spare time, I love to read books about Philosophy and Art. I’m also a dedicated Basketball fan who enjoys watching NBA matches on a daily basis.