Distributed Transactions in Microservices with Spring Boot

When I’m talking about microservices with other people they are often asking me about approach to distributed transactions. My advice is always the same – try to completely avoid distributed transactions in your microservices architecture. It is a very complex process with a lot of moving parts that can fail. That’s why it does not fit to the nature of microservices-based systems.
Continue reading “Distributed Transactions in Microservices with Spring Boot”

Development on Kubernetes with Okteto and Spring Boot

Okteto Platform seems to be an interesting alternative to the another more popular tools that simplify development on Kubernetes. In comparison to the tools like Skaffold or Draft the idea around Octeto is to move development entirely to Kubernetes. What does it mean in practice? Let’s check it out. Continue reading “Development on Kubernetes with Okteto and Spring Boot”

Spring Boot Library for integration with Istio

In this article I’m going to present an annotation-based Spring Boot library for integration with Istio. The Spring Boot Istio library provides auto-configuration, so you don’t have to do anything more than including it to your dependencies to be able to use it. Continue reading “Spring Boot Library for integration with Istio”

Simplify development on Kubernetes with Dekorate, Skaffold and Spring Boot

Although Kubernetes is a great solution for managing containerized applications, scaling and automating deployment, a local development on it may be a painful experience. A typical workflow includes several steps like checking the functionality of the code locally, building and tagging a docker image, creating a deployment configuration and finally deploying everything on Kubernetes. In this article I’m going to show how to use some tools together to simplify that process. Continue reading “Simplify development on Kubernetes with Dekorate, Skaffold and Spring Boot”

Introduction to event-driven microservices with Spring Cloud Stream

Spring Cloud Stream framework allows to easily include well-known Spring patterns and best practices to applications while implementing event-driven microservices architecture. It uses Spring Integration project to provide connectivity to a message broker. It provides built-in support for such features like persistent publish-subscribe model, consumer grouping and partitioning. The integration with specific message broker solution is realized by binder implementations that are hidden behind middleware-neutral core. Continue reading “Introduction to event-driven microservices with Spring Cloud Stream”

Circuit breaker and retries on Kubernetes with Istio and Spring Boot

An ability to handle communication failures in an inter-service communication is an absolute necessity for every single service mesh framework. It includes handling of timeouts and HTTP error codes. In this article I’m going to show how to configure retry and circuit breaker mechanisms using Istio. The same as for the previous article about Istio Service mesh on Kubernetes with Istio and Spring Boot we will analyze a communication between two simple Spring Boot applications deployed on Kubernetes. But instead of very basic example we are going to discuss more advanced topics. Continue reading “Circuit breaker and retries on Kubernetes with Istio and Spring Boot”

Service mesh on Kubernetes with Istio and Spring Boot

Istio is currently the leading solution for building service mesh on Kubernetes. Thanks to Istio you can take control of a communication process between microservices. It also lets you to secure and observe your services. Spring Boot is still the most popular JVM framework for building microservice applications. In this article I’m going to show how to use both these tools to build applications and provide communication between them over HTTP on Kubernetes. Continue reading “Service mesh on Kubernetes with Istio and Spring Boot”