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, Python, NodeJS, Golang, to
less mainstream like Elixir or Swift. All these applications need to handle common
technical concerns: logging, monitoring, service discovery, tracing, internationalization, security and more.
How to provide common solutions to these requirements in such a heterogeneous setup?
In this post I’m going to explain how we originally solved this problem with common libraries
and how we are currently changing our runtime environment to make things even easier.
The story begins two years ago during an excellent TDD training given by
Szczepan Faber
and Tomek Kaczanowski
for a bunch of Allegro developers. Surprisingly, it was a trigger to revolutionize our builds at Allegro.
At Allegro, we always try to pick the right tool for the job. As a result, despite focusing on JVM for implementing our
services, we do use Python extensively for infrastructure automation and management.
Software Engineer who loves building useful tools and resilient systems. Works in one of the technical platform teams, where he’s responsible for common libraries and service discovery (Service Mesh). Conference speaker, host of Allegro Tech Podcast.