Jan 26 2017
Caching is a good and well-known technique used to increase application performance and decrease overall system load.
Usually small or medium data sets, which are often read and rarely changed, are considered as a good candidate for
caching. In this article we focus on determining optimal cache size based on big data techniques.
Dec 29 2016
Understanding data model is sufficient to design good database schema in RDBMS (relational
database management system). Having this knowledge you are able to construct normalized tables, add appropriate
constraints and finally create indexes to speed up queries.
In the world of NoSQL there are no simple solutions, rules and answers. That’s why we can only talk about
patterns, tips and hints. MongoDB is not an exception. Besides the comprehension of stored data, deep
understanding of an access pattern, how data is searched, inserted and updated by an application is needed.
Dec 19 2016
At Allegro we are faced with a technical challenge: how to recognize whether a given image
(a product thumbnail) shows just a product itself. One of the things that we would like to detect is when the product
is surrounded by a frame. In this post we would like to present our approach for detecting a frame in the image.
Nov 28 2016
Are you developing a service and planning to make it publicly available? Do you want developers of mobile applications to get integrated
with your API fast and painless? Do you care how stable and predictable mobile applications using your service are?
Oct 24 2016
We’re all familiar with
TDD, or at least write unit tests for our software,
but unit tests won’t check application state after complex UI interactions.
If you want to make sure that an application behaves correctly when users interact with it,
then you need to write UI tests.
Oct 17 2016
In July we attended the scientific conference SIGIR 2016 held in Pisa, Italy. SIGIR is an annual conference
related to new advances in Information Retrieval. The shortcut is for
Special Interest Group on Information Retrieval.
This is an annual conference with the highest ranking at
Microsoft Academic Research in Information Retrieval field
field and the 16th in the ranking in the whole Computer Science field.
Sep 30 2016
In everyday work programmers are facing various problems. We would like to focus on two of them: big systems
with non-blocking API and specific business needs that can be solved using Expression Language. Hold tight!
Sep 23 2016
High performance and availability are always hard to achieve,
and microservice architecture is no exception.
In the microservices world, every user request sent to a frontend application triggers a cascade
of remote calls.
The frontend application calls API facades, API facades ask backend services,
backend services communicate with databases and even more backend services.
Statistics work against you. Latencies add up but failure probabilities combine
by multiplication.
The more services are engaged in a flow, the more threats for performance and availability.
Sep 21 2016
This article is a part of CQK Top 10 series.
Sep 21 2016
This article is a part of CQK Top 10 series.
Sep 21 2016
This article is a part of CQK Top 10 series.
Sep 16 2016
Code reviews play an important role in how we develop software at Allegro. All code we developers write is reviewed
by our peers. If you apply for a job with us, we may ask you to review a sample piece of code during your interview. A code review done
right carries a lot of value, but if done wrong it can become a waste of time. In this article I will describe what I think makes a good
code review, how reviews have evolved over time at the teams I worked with and what you can do in order to make code reviews worthwhile.
Sep 2 2016
At Allegro we want to be sure that our software works as designed. That’s why tests are so important to us.
In several projects we are using Elasticsearch. In order to
make writing integration tests that uses Elasticsearch easier, we’ve created a little tool called
embedded-elasticsearch. It sets up Elasticsearch
instance that you need for your tests (including installation of plugins) and gives you full control of it.
Aug 9 2016
This article tells a story of chasing an iOS bug – a bug hidden so deep that it
required many different skills and debugging on different levels to identify it.
I think every native mobile app developer (not only an iOS developer) will find
this text interesting. Non-mobile developers may find it an intriguing read as
well.
Jun 20 2016
Kotlin may seem like a new kid on the block — itʼs been officially released only in February.
Its history however dates a few years back
and itʼs mature and stable enough to be used for developing solid reliable applications.
Therefore at Allegro we decided to give it a chance — we built our new
shiny server-side system using Kotlin as its primary language and we do not regret it.
Apr 28 2016
In this post I will introduce to you a recently released version of a well known library for consuming RESTful services — Retrofit2.
Even though it is mainly targeted at Android platform it works very well on the “server” Java. Its lightness and low garbage generation
overhead make it an interesting option if one does not like existing solutions (like Jersey Client,
or Spring’s RestTemplate). I will also
show how to configure it properly and fully utilize its great RxJava compatibility.
Mar 30 2016
Recently our team has been tasked to write a very fast cache service. The goal was pretty clear but possible to achieve in many ways.
Finally we decided to try something new and implement the service in Go.
We have described how we did it and what values come from that.
Mar 22 2016
In the beginning I would like to stress that this is not yet another article about Minimum Viable Product (MVP)
mechanics. For theory and examples of its use in practice, please refer to the great article by Andrzej Winnicki. What made me share my thoughts on MVP is what
I consider a prerequisite to start working with this method. Moreover, I also recognised this prerequisite as the
biggest obstacle which is stopping many enthusiasts from fully understanding it.
Mar 21 2016
Curiosity drives progress. There are already tens of presentations about Spotify on the Internet
but we wanted to see how the work looks like there with our own eyes. Here are some thoughts after
our visit to Spotify’s headquarters.
Mar 14 2016
This is a story about how professional approach to coding can save you a lot of troubles. It is a story about passion for coding and how
it makes our products great. It is a story about carrying out an IT project by one of Allegro scrum teams as a fine example supported by
a set of case studies. Read it to inspire yourself how some of the issues can be dealt with.
Mar 12 2016
Microservices
are now the mainstream approach for scalable systems architecture.
There is little controversy when we are talking about designing backend services.
Well-behaved backend microservice should cover one
BoundedContext
and communicate over the REST API.
Things get complicated when we need to
use microservices as building blocks for a frontend solution.
How to build a consistent website or a mobile app
using tens or sometimes hundreds of microservices?
Mar 2 2016
If you always search for ways to increase code quality and would like to encourage everyone in your
project to keep high test code coverage all the time, then Codecov may be another
step in your journey.
Feb 16 2016
Some books on IT topics become outdated right after they are published while others stand the test of time.
One of the latter is The Pragmatic Programmer. From Journeyman to Master by
Andrew Hunt and David Thomas.
Feb 8 2016
Moving Allegro’s services and infrastructure from its main Data Center (DC) was considered
a huge endeavour fraught with high risk from the very start. This particular Data Center, known as DC2, was situated in Poznań, Poland.
It was our first genuine Data Center and back in 2007, when we moved in there, it was the state—of—the—art DC in Poland.
For a couple of years our infrastructure was growing along with the company and the number of devices grew up to 2,000 filling 90
rack cabinets in 2014. DC was used by Allegro core sites such as allegro.pl, aukro.ua
and aukro.cz as well as other Naspers-owned Polish operations like: payu.pl,
olx.pl, ceneo.pl, otomoto.pl, otodom.pl.
To make the story simpler, Allegro synonym is used to name them all.
Jan 8 2016
Microservices architecture has been given a lot of attention in recent years.
You can find many articles defining what it is and explaining the difference
between microservices and monolithic applications. Unfortunately, the dark side
of the solution is rarely mentioned — such as its level of complexity and how difficult it is to
design it correctly.
Nevertheless, I would like to talk about my experience with microservices
architecture. I hope that this article will help you avoid the mistakes I made
and save time.