Ever wondered how tools like Google Docs allow multiple people to edit a document simultaneously, without chaos? The answer lies in Operational Transformation (OT), an algorithm designed to handle conflicts and ensure consistency in collaborative editing. What is OT? Operational Transformation is the backbone of real-time collaboration systems. It ensures that all users see a…
Key Indicators of Poorly Defined Microservice Boundaries
Designing a microservices architecture requires thoughtful consideration and careful planning. Incorrectly defining the boundaries between services can lead to significant complications, from development headaches to scaling nightmares. Recognizing the signs of poorly defined service boundaries early can save your team time, money, and frustration. Here are the critical indicators that suggest your microservices might be…
Breaking down pod deployment in Kubernetes
Kubernetes is a powerful container orchestration platform that automates the deployment, scaling, and management of containerized applications. In this blog post, we’ll walk through the step-by-step process of deploying a pod in Kubernetes, diving into the interactions between the various components. Process Overview: 1. Pod Creation Request: The journey begins with a user or controller…
Service Templates in Microservices
Introduction In the ecosystem of microservices, establishing a common foundation(template) for all services not only promotes uniformity but also significantly enhances development efficiency and system maintainability. Spring Boot, known for its “convention over configuration” approach, provides an ideal platform for implementing such a foundation through a template configuration. This blog will explore how to create…
Tackling Technical Debt
Introduction Version control is a valuable tool that can be used to identify areas that need attention to tackle technical debt effectively. By using version control to analyze file frequency and code changes, developers can prioritize their efforts and address the most critical areas first. Analyzing File Frequency and Code Changes Using version control, developers…
Clean Architecture – Notes
There are lot of details in the book – clean architecture. The points below just capture what impacted me the most. Hope the points below would nudge you to go through the book yourself. The higher the number of dependencies on a class/module, the more legacy it becomes. Keep your business logic protected from details…
Integration Testing – Docker Maven Plugin vs TestContainers
Docker Maven Plugin vs TestContainers – Integration Testing Why do we need these? With the advent of containerization, it has become possible to test how our code would behave and interact with each other when placed across containers. One of the most common use-cases is to be able to test database interactions. Although, we will…
Kubernetes Probes
Issue – Liveness probes causing other containers to restart While migrating from mesos to kubernetes cluster we transformed the marathon configuration files to kubernetes yaml file. Upon deployment it was observed that all the containers were restarting all the time. One of the configurations was health checks. Mesos health checks were migrated to kubernetes liveness…
Mesos CPU vs Kubernetes CPU requests, limits and docker
Recently, while migrating a mesos/marathon cluster to kubernetes, it was observed that the response time on kubernetes was substantially slow when compared to that of marathon. So, what can be compared out of the two that can give further insight into the issue. In both the setups, docker was the being used to run and…
Multi-tenant Database Design
Partition ID column New tenant creation – A new row is added to table with the new value in partition/tenant Id column. Other information for this tenant is correlated(with other tables) using the partition Id. Usage – This is useful in cases where the data being inserted into the tables from multiple tenants is not…
