Continuous Delivery
Continuous Delivery

In a previous post, we have talked about how we are managing the configurations. In the light of twelve-factor apps, the configurations are externalized. By the same token, we will see how we can continuously deploy our developments to production rapidly and safely.

“Continuous Delivery is the ability to get changes of all types — including new features, configuration changes, bug fixes and experiments — into production, or into the hands of users, safely and quickly in a sustainable way.”

On the other hand, one of the main purposes of the microservice architecture is to provide atomic and rapid…

Code Quality Improvement with Sonarqube
Code Quality Improvement with Sonarqube

While our software projects evolve, they must be in good quality. Thus, we apply practices like TDD and pair programming. Besides, we can benefit from quality measurement tools like Sonarqube. Above all, in this post, we are going to check out how we can configure Spring boot 2.2.6 with Sonarqube 8.2.

Tools and Versions

Below components are used for the sample project:

Maven Plugin Details

Before starting the example, let’s learn what are these plugins for.

Sonar Maven Plugin

This plugin provides a Sonar Scanner for Maven. When we run the plugin’s goal with `sonar:sonar`, the…

Cloud-Native Configuration Management by GitOps

To begin with, one of the most critical topics of an application environment is the configurations. Moreover, every app has at least two environments: test & prod. For example, a basic application needs at least four or five configurations. When you multiply these you got 10 config params.

By the same token, for an enterprise application, you need additional test environments like stage & QA. At the same time, you’ll have at least 10 or 20 apps per development team. When we multiply these 5 (environments) * 5 (config params) * 20 (applications) -> at least 500 configuration key and…

Event-Driven Microservice Architecture

To begin with, in an event-driven microservice architecture, services communicate each-other via event messages. When business events occur, producers publish them with messages. At the same time, other services consume them through event listeners.

Thus, the main benefits of event-driven systems are asynchronous behavior and loosely coupled structures. For example, instead of requesting data when needed, apps consume them via events before the need. Therefore overall app performance increases. On the other hand, keeping coupling loose is one of the main key points of a microservice environment.

Event-Driven Architecture as a Solution

As well as you can build your systems with event-driven structures, you can…

In Trendyol Marketplace team, we needed a centralized job executor service. In detail, the need is to trigger the desired asynchronous events across microservices. In this post, you are going to read the details about the Trendyol Scheduler Service.

You can access the Github repo via this link.


Scheduler Service is a Spring Boot app with version 2.1.0.RELEASE. To begin with, for the database it uses PostgreSQL version 9.6.12. For cache and concurrency purposes, Couchbase 6.0.0 is set. Also, to be able to create job descriptions asynchronously, it provides a queueing mechanism via RabbitMQ 3.7.8.

Basic Principle of the Service

At the present time, this…

Bahadir Tasdemir

Senior Full-Stack Software Engineer —

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