Lightweight Kotlin Microservices with Javalin

Lightweight Kotlin Microservices with Javalin

There is a lot happening in the JVM space when it comes to microservices development. You have Spring Cloud thriving, Microprofile entering the stage, Vert.x letting you get reactive and Dropwizard being actively developed. What if you want something really simple though? And maybe with some Kotlin? For that you have Javalin! Introducing Javalin Javalin is a micro-framework for building simple REST APIs for Java and Kotlin. It comes with embedded Jetty server and is very easy to use. ...

March 22, 2018 · 5 min · Bartosz Jedrzejewski
CQRS - a simple explanation

CQRS - a simple explanation

Command Query Responsibility Segregation (CQRS) is a pattern that causes quite a lot of confusion. With the popularity of microservices and the event-based programming model, it is important to know what CQRS is. In this article, I will provide you with a simple explanation. To understand CQRS it is important to get some basic terms and concepts right. The first that often appears next to CQRS is CRUD. What is CRUD? CRUD stands for Create, Read, Update and Delete. When you think about this, this is what most basic software systems do. You have some records, you may want to read some records, update them, create or delete. ...

March 11, 2018 · 4 min · Bartosz Jedrzejewski
How to learn Spring Cloud - the practical way

How to learn Spring Cloud - the practical way

I have recently spoken at a meetup about Practical Choreography with Spring Cloud Stream. It was a great event where I was asked many questions after the talk. One question got me thinking: *“What book about Spring Cloud do you recommend?”*which as it turns out boils down to “How do you learn Spring Cloud?”. I heard that question posed a few times before in different ways. Here, I will give you my answer on what I think is the best way of learning Spring Cloud. ...

March 6, 2018 · 7 min · Bartosz Jedrzejewski
Introducing JSON-B with Spring Boot 2.0

Introducing JSON-B with Spring Boot 2.0

JSON Binding (JSON-B) is the new Java EE specification for converting JSON messages to Java Objects and back. JSON is used everywhere and so far we had two main ways of dealing with JSON conversion in Java- using either Jackson or GSON. With the introduction of JSON-B, we have a standard way of handling this conversion. In this article, we will see how Spring Boot 2.0 supports JSON-B, how easy it is to use it and how does it compare with the other options. ...

March 4, 2018 · 6 min · Bartosz Jedrzejewski
Building services requires building teams

Building services requires building teams

When talking about microservices (or agile development), the idea of self-managed, independent teams often comes up. What is not emphasized enough is how vital this idea is to the successful adoption of such highly decoupled architecture. In this article, I will share my experiences about working with independent teams and being part of them. Most successful projects that I was either part of, or had a pleasure of working with had one thing in common. They were delivered by either one or a multiple of high-performing, self-managed, independent teams. You may say: every sizable project nowadays is delivered by a team! I disagree, most medium and large projects are delivered by groups of people, but in many cases, I would not call them teams. In my opinion, it takes more than grouping a few people together and slapping a name on them to make a team… ...

February 20, 2018 · 9 min · Bartosz Jedrzejewski
Practical Choreography with Spring Cloud - Presentation

Practical Choreography with Spring Cloud - Presentation

On the 15th February 2018 I had a pleasure to speak at The JVM Roundabout Meetup in London. My topic was “Practical Choreography with Spring Cloud”. The idea behind the talk was to give practical advice on introducing choreography into microservices architecture. The emphasis is on practical. Choreography can be intimidating, especially for those not familiar with the pattern. Since I am a big advocate of Spring Cloud and I think it is a great framework for newcomers and experts alike, I demonstrate how it can be used to make that adoption easier. ...

February 20, 2018 · 1 min · Bartosz Jedrzejewski
Getting Started with Spring Cloud Data Flow

Getting Started with Spring Cloud Data Flow

In this article, I will show you how you can get started with Spring Cloud Data Flow. Spring Cloud Data Flow is an amazing platform for building data integration and processing pipelines. It has a very user-friendly graphical dashboard where you can define your streams, making your work with data an absolute pleasure. The goal of this article is to have you learn to build some simple data pipelines by the time you are finished reading. Before we get started there are a few system requirements: ...

February 18, 2018 · 7 min · Bartosz Jedrzejewski
Application of GRASP to Microservices

Application of GRASP to Microservices

GRASP stands for General responsibility assignment software patterns. You might have heard of it before, or you might not. Either way, you might not have thought about how these principles can potentially help when deciding your responsibilities assignments in a microservices architecture. Craig Larman in his book Applying UML and Patterns said that the “desert island skill”, the most important skill to have in Object Oriented Analysis/Design would be: *“to skillfully assign responsibilities to software objects”.*I think there is some truth to this when thinking about the most important microservices skill as well. Lets look at GRASP through the prism of microservices. ...

February 13, 2018 · 9 min · Bartosz Jedrzejewski
Common Technical Debt in Microservices

Common Technical Debt in Microservices

Working for a consultancy I have the opportunity to talk to large number of software developers across multiple different projects. That gives me an opportunity to see what works and what common problems different organizations are facing. In this article I will show the most common mistakes in microservices that cause technical debt. I suggest what you could be doing instead. Microservices development can be difficult. Given how new the pattern is, it is no surprise that mistakes are made. The great thing about mistakes is that they are also learning opportunities. It is great when you can learn from your mistakes, but it is even better when you can learn from the mistakes of others! ...

February 11, 2018 · 8 min · Bartosz Jedrzejewski
Tracing messages in Choreography with Sleuth and Zipkin

Tracing messages in Choreography with Sleuth and Zipkin

One of the challenges in building distributed system is having a good visibility of what is happening inside them. This challenge is only magnified when dealing with choreography- microservices, loosely coupled, communicating via messaging. In this article you will see how Sleuth and Zipkin help to solve that problem. One of the most important requirements for production ready microservices is being able to correlate logs. What does that mean? Having some sort of id, that will link logs from different services together. Of course you don’t want to link everything- you want to focus on a single request/process that is happening in the system. This was often done with MDC (Mapped Diagnostic Context) in slf4j. There is nothing wrong in using these technologies directly, but here I want to show you something better… ...

February 9, 2018 · 8 min · Bartosz Jedrzejewski