Maintainable documentation
Problems with keeping the documentation up-to-date are one of the reasons why we – programmers – don’t like writing it. At the same time, we don’t like when it is missing. However, this doesn’t have to be the case. I have always strived to document my projects and avoid “tribal knowledge” problems. Here, I would […]
Creating batches with Project Reactor
Imagine an event processing service that consumes application events from a queue. It works well until one day, when it starts lagging. Events are processed with large delays, and the queues fill up. What happens? Most likely we experience a sudden spike of events and our service is not able to catch up. In this […]
Architecture Decision Records: 3 keys to success
Software architecture is an art of decision making. As the project grows over time, we need to correct and change our past choices. However, their consequences can be still seen many months later. Architecture Decision Records (ADR-s) help us recording and managing technical decisions. In recent years, I introduced ADR-s in two projects, and watched […]
Anatomy of master nodes in Elasticsearch
Elasticsearch is a search engine written in Java, based on Apache Lucene library. As a distributed system, it creates certain challenges for reliability and availability of our data. But what actually happens if we misconfigure our cluster and how to make it safe? In this article, we will take a deeper look of how master […]