CODEX

How RMM can help us build a better API

I’ve been studying REST APIs for some time, and it’s inevitable to reach many articles and recommendations about the Richardson Maturity Model (R.M.M.) developed by Leonard Richardson. It made me think why it’s important, and how we can apply its principles to make an easy-to-use (and understand) API.

After some research and working with (implementing or consuming) REST APIs that complies to the to the highest level of the RMM and others that are far from that, I have had some conclusions I’d like to share in this article.

I like the Richardson Maturity Model definition from wikipedia:

“The RMM…


API Gateway and Centralized Logs

This is the third post of my microservices series, where I talk about my impressions of this architecture style using Java with Spring Boot.

The full series of articles are listed below:

The code implemented in each article is available on GitHub in a specific branch, and the final implementation is on the main branch.

In this article we will implement an API Gateway and…


Fault tolerance and Configuration Server

This is the second post of my microservices series, where I talk about my impressions of this architecture style using Java with Spring Boot.

The full series of articles are listed below:

The code implemented in each article is available on GitHub in a specific branch, and the final implementation is on the main branch.

In this article we will implement Fault Tolerance and Configuration…


Project setup, REST communication and Service Discovery

This is the first post of my microservices series, where I talk about my impressions of this architecture style using Java with Spring Boot.

The full series of articles are listed below:

The code implemented in each article is available on GitHub in a specific branch, and the final implementation is on the main branch.

In this article we will go through the initial project setup…


A guided journey using Spring Boot

In this article it will be described the steps of building a REST API with Java, and talk about some design decisions and personal preferences. I built an API to serve as a reference, including authentication/authorization using JWT and all sort of tests.

I’ll try to put into words what I’ve been studying and applying about REST APIs, and of course, talking about each point with my personal bias.

For reference, the technologies used in the project were: Java 11, Spring Boot, Spring Web, Spring Security, Spring Data, H2 database, Json Web Token, mapstruct…


A straight reference to Kotlin Programming Language

This article is a reference guide to Kotlin programming language to be used as a quick reminder of its keys topics, especially for Java developers. Hope it helps others developers eager to learn Kotlin as well. Enjoy!

Kotlin is a concise, safe, interoperable and tool-friendly programming language developed by Jetbrains. Kotlin supports both Object Oriented Programming and Functional Programming paradigms, and it is interoperable with Java, which means that it's possible to call Java code from Kotlin.

“Hello Kotlin”

The entry point of a Kotlin application is the main function.

The classical “Hello…


Implementing a GraphQL server with Java and Spring Boot

In this article I will give a brief introduction to GraphQL concepts and describe the process of implementing a graphql server using Java and Spring Boot framework.

GraphQL is a query language for APIs that was first built and used inside Facebook in 2012. After it was released as a specification.

So it is a query language to retrieve and update data from a server, describing the data of the API through a schema that contains the types and relationships between them.

Unlike REST APIs, that identify each resource by an…


First steps implementing messages streams in Apache Kafka

Consuming messages from where, sir?

This article will give a very brief introduction to Apache Kafka, referencing its keys concepts from official documentation and then focus on implementation of a basic message flow from producer to consumer using Java programming language.


Or should I say: “Observable Pattern on steroids”

Reactive Programming is about dealing with data streams and propagation of change.

What if I told you… everything is a stream?

Reactive Systems are applications which architecture approach make them Responsive, Resilient, Elastic and Message Driven.

  • Responsive: Systems should respond in a timely manner.
  • Message Driven: Systems should use asynchronous message communication between components to ensure loose coupling.
  • Elastic: Systems should stay responsive under high load.
  • Resilient: Systems should stay responsive when some components fail.

The power of multi-threading using Java

This article describes the basics of Java Concurrency API, and how to assign work to be done asynchronously.

Why not do the work concurrently?

A thread is the smallest unit of execution that can be scheduled by the operating system, while a process is a group of associated threads that execute in the same, shared environment.

We call “system thread” the thread created by the JVM that runs in the background of the application (e.g. garbage-collector), and a “user-defined thread” those which are created by the developer.

First, we need to know that in a standard Java program, all the work we implement is done in…

Tiago Albuquerque

Software Craftsman

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store