Context

When we are using MQTT for IoT communication it’s recommended to use TLS over the connections. TLS has two primary purposes: encrypting connection traffic and providing a way to verify that the peer can be trusted

In my case I use the RabbitMQ with the MQTT plugin enabled to support the MQTT protocol.

In this article, I will show how to create a docker image with RabbitMQ enabling MQTT plugin and TLS support.

Photo by John Salvino on Unsplash

Creating our own certificate

To create the certificate I found in GitHub the following repository, which supports the creating of a certificate using openssl.

Open your terminal and run the following…


Context

The idea of this post began when a junior developer friend come to me and ask: “Hey Faita, what would you suggest to me (a junior developer) focus my studies?”

Also, I completed ten years of a career in the development area, and I started thinking about what I would like to say if I could back in time and talk to myself younger. I have some important tips and advice to talk about.

Some of the tips and advice could sound a little stupid, but let’s begin.

Photo by Jason Leung on Unsplash

Stop losing time

First of all, stop losing time, your time is a precious resource…


Context

A time ago I wrote an article about how to use Quartz with Spring in clustered mode, but because of the active-passive cluster mode of Quartz, where only one node(containers, VM, put your type of infrastructure here) is responsible for handling the incoming “wake-ups” signals of Quartz, we had performance problems in our project, because only one heavy job was consuming all the node resources, resulting in a crash.

In that way, we chose to create a mixed solution using Quartz and Queues to solve this problem.

Photo by Lucian Alexe on Unsplash

The solution

Going directly to the problem, what we chose to do is very simple…


Stop creating new systems, try the tuning approach first

Context

Let’s recreate a common scenario. My friend told me: another day in the company, everyone is called to an emergency meet and the following dialog begin:

Guys, our system again is showing problems of performance and we just decided. We need a new implementation of the whole system. We already did some studies about (CHOSE A MAGICAL ARCHITECTURE TYPE HERE) and we will follow with this kind of architecture. Get ready.

Everyone was surfing the hype, we started a one-year project and when our first delivery went to production and……… again, our system had performance problems and emergency shutdowns to…


Context

Creating automatic unit tests is one of the most common tasks today in development day by day, but to create an effective unit test you should cover some specific aspects of testing. In this article, I will show you some of these aspects.

Photo by Joshua Hoehne on Unsplash

First things first

Let’s define a common scenario of business needs, a simple and very common Order Service, where our service will receive an object with the name of the client, the items of order, and the delivery address.

The ordering service must validate if the name, items, and delivery address are not empty and validate if the amount of…


Context

Some time ago, a friend came to me and asked a question: “How could I create an architecture for a GPS Game, as Pokémon GO?”.

At that moment, I started to think about millions of aspects, and my mind was blown. But when I calmed down, I started to think about how we could accommodate this kind of architecture and the result of my thoughts are here in this article.

The only fixed premise that I had in mind has: “Use the reactive paradigm. …


Part I | Part II | Part III | Part IV | Part V

Context

In our sixth and last part, of a series of articles about IoT architects, I will talk about the Gateway implementation, the integration with security server Keycloak and the reverse proxy using Nginx. At the end of the article, I will show how we can wake up our environment using Docker and docker-compose.

Disclaimer

I chose the Spring Framework to create the architecture because my main program language is Java and I have a big experience with Spring. …


Part I | Part II | Part III | Part IV | Part VI

Context

In our fifth part, of a series of articles about IoT architects, we will cover one of the most complex services in architecture, the Rule Service. For solving the problem of this service I chose to use a different architectural approach. In this specific service, I chose to use a little of DDD (domain-driven-design) with Hexagon Architecture using a high amount of test automation (unit testing — TDD), without forgetting about SOLID principles.

Disclaimer

I chose the Spring Framework to create the architecture because my main program…


What is WSL 2

The Windows Subsystem for Linux lets developers run a GNU/Linux environment — including most command-line tools, utilities, and applications — directly on Windows, unmodified, without the overhead of a traditional virtual machine or the dual-boot setup.

Install WSL2 on Windows 10

Using the following link here install the WSL 2 on your Windows 10. The Microsoft tutorial is very simple and clean.

Install X-Server on Windows 10

Now with WSL 2 installed, we can download and install VcXsrv. In my opinion, seems to the best choice for X-Server in Windows

The process of installing is very simple(next, next, and finish).

After installation, create a new desktop shortcut and use the…


TL;DR

By default, the Spring Boot library for Quartz doesn’t work correctly if you start up two instances of service in parallel. In this case, each one of the services starts the execution of the same jobs. The expected behavior is one of the instances is elected to execute the jobs, while the other ones waiting in the background, and the case of failure in the first service, another one is elected to assume the jobs.

In this article, I will show how to configure Spring Boot to use Quartz with service in parallel execution(cluster).

If you want too read about…

Rafael Faita

Software architect

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