Impact of data model on MongoDB database size
So I was tuning one of our services in order to speed up some MongoDB queries. Incidentally, my attention was caught by the size of one of the collections that contains archived objects and therefore...
View ArticleSpeeding up warm builds in Xcode
Programmers who have ever developed software for Apple platforms in the early days of Swift language might remember ridiculous times it took to compile the whole project. For large and complicated...
View ArticleSpeeding up iOS builds with Bazel
When we developed our Allegro iOS app adding new features and with more people contributing to the codebase, we noticed that build times began to grow. In order to have precise metrics, we started to...
View ArticleBig data marketing. The story of how technology behind Allegro marketing works.
Marketing is a very important department in every company. In case of Allegro, marketing is especially difficult because you have so many products to promote. In this post we will tell the story of a...
View ArticleTesting React applications with Jest and Enzyme
JavaScript Frameworks play an important role in creating modern web applications. They provide developers with a variety of proven and well-tested solutions for creating efficient and scalable...
View ArticleBigFlow — a Python framework for data processing on GCP
We are excited to announce that we have just released BigFlow 1.0 as open source. It’s a Python framework for big data processing on the Google Cloud Platform.Two years ago, when we started to move...
View ArticleSureness, or how many tests do we need?
Imagine that you were charged with finishing a task started by your colleague. He or she implemented it just before leaving for a vacation. Now it is your job to finish and release it.Example: To make...
View ArticleRetrieving application state
Most applications need to be able to persist and retrieve their state to be fully functional. In my previous post I compared methods for persisting application state. In this post I will compare the...
View ArticleThe power of kata
Every day, many developers of enterprise systems have to face complex problems for which incorrect solutions often end with a loss of enormous amounts of money. That’s why they constantly learn new...
View ArticleUsing ESLint to improve your app’s performance
Let me start with a story. Once upon a time I stumbled upon an excellent article by Philip Walton where he describes how expensive script evaluations could (and should!) be deferred until the browser...
View ArticleCommon code approach: from rich libraries to rich environment
We run over 800 microservices in our on-premise and public clouds. They are developed by hundreds of engineers in various technologies: from the most popular Java and Kotlin, through Scala, Clojure,...
View ArticlePersisting application state
An application can be defined as a set of use cases. It often happens that use case A requires a previously executed use case B for its execution. In such situation, it should be ensured that use case...
View ArticleHexagonal Architecture by example - a hands-on introduction
When you go through articles related to Hexagonal Architecture (HA) you usually search for practical examples. HA isn’t simple, that’s why most trivial examples make readers even more confused, though...
View ArticleMigrating to Service Mesh
This year Allegro.pl turns 21. The company, while serving millions of Poles in their online shopping, has taken part in many technological advances. Breaking the monolith, utilising public cloud...
View ArticleThe problem of immutability in Java
As a developer interested in both web technologies and game development I always found myself disagreeing with a large part of articles about using a particular technology to solve some problems. While...
View ArticleMachine Learning + Agile Manifesto = ?
This post was published on April 1st, 2020, and should not be taken too seriously.Another sprint, another retrospective. You use new formulas, you gather insights, you vote and you have action points....
View ArticleUnderstanding accessibility
The group that you could help is huge. The Polish Association of the Blind reports that there are more than 3 million people in Poland with visual impairment and 42 thousand with complete blindness...
View ArticleUsing dotnet new templates to streamline microservices development
You may not know this, but there is a part of Allegro codebase which we started developing in C# due to some special requirements. This implies new programming opportunities and challenges — one of...
View ArticleMaking Webflux code readable with Kotlin coroutines
Recently, our crucial microservice delivering listing data switched to Spring WebFlux. A non-blocking approach gave us the possibility to reduce the number of server worker threads compared to Spring...
View ArticleHow to manage Spring Boot services configuration on GCP
Configuration management is one of the key challenges you have to face when you decide to build an application as a distributed system based on microservices deployed to the Cloud. There are multiple...
View Article