Avoid circular dependency in microservices
A very common anti pattern that you might come across when you build a microservices architecture is known as Circular Reference (CR). While recursive codes in a normal object oriented programming can...
View ArticleCode duplication dilemma in Microservices
Splitting a service in multi (micro)services, is very common that, at least some code is duplicated among a different services. A Dao object, a servlet filter or an utility class can be consumed by...
View ArticleDon’t move too slow, Java’s race to the future
A little journey through Java versions release by exploring some features introduced and where the community is going with an unprecedented pace! Don’t worry, it needs less effort than you think to...
View ArticleSpring Boot – Default memory size
How much is the Initial and Max Heap size when Spring Boot runs a Java application? Spring makes a good job, so we could skip this knowledge and move to something more interesting however, it’s better...
View ArticleJava Stream and anyMatch, allMatch, noneMatch with Arrays
Java Stream package makes available, since version 8, great methods to work on collections. Before the introduction of Labda expressions, we get used to write foreach code instruction to loop a...
View ArticleBe a good citizens by not mutating input parameter
Mutating input parameters inside a function is a very frequent bad practice, and dangerous because it’s made without awareness of the consequence, especially in multithread application. To understand...
View ArticleWhen Jenkins meets an Artifact Repository – JFrog and Nexus OSS
Building a proficiency CI/CD pipeline means including a step where storing and versioning packages produced by your solutions. This is a node that, sooner or later, you find useful including during the...
View ArticleWhen Jenkins meets an Artifact Repository – JFrog and Nexus OSS – Part 2
Continuing from the first part of this journey through the Artifact Repository, I’m going to develop a Jenkins pipeline to Upload an artifact to Nexus OSS in a Continuous Delivery/Deployment process....
View ArticleCheck the application metrics, the truth is in there
Application metrics tell us how’s going on our application and alert developers before something bad is going to happen. Yet, to get and understand them we need some tools, or a series of tools, to...
View ArticleContinuous Delivery to Kubernetes with Jenkins Agent
It’s out of the question the fact Microservices find a perfect marriage with Continuous Delivery (CD) pipeline. The pros of using such methodology are already known in monolithics and, in...
View ArticleContinuous Delivery to Kubernetes without Jenkins Agent
How can Jenkins deploy a container into Kubernetes cluster? One answer might be “Using an agent inside the cluster”. Is there any different choice from this one? In this article I’m going to explain...
View ArticleTesting FrontEnd with Selenium and BrowserStack
A good testing suite cannot be completed without an end-to-end test where the user interface is engaged in user acceptable test (UAT) or something similar. Unluckily, testing an User Interface (UI)...
View ArticleGet used with Podman, the next container generation
Red Hat has been rolling out its plan to replace Docker with Podman as container tool since 2018. Podman is a very interesting tool which resembles Docker both in concept and in command line. Yet, it’s...
View ArticleSpring Cloud Gateway inside Kubernetes
One of the first things you learn when you approached microservices architecture is not a good idea to make all services visible to external client. Thus, you need something, as a Gateway, to put...
View ArticleGraphQL, when less is more
GraphQL has improved the Rest Api’s capability to exchange data between different systems. Client is able to ask only the data it requires, avoiding useless data and improving the performance by saving...
View ArticleScale Up Jenkins with slave nodes
Scaling Jenkins in your organization based on jobs running is quite a common activity. The more projects follow the CI/CD approach, the more Jenkins needs resources to keep up the number of Jobs and...
View ArticlePull and Push Metrics inside Grafana
Application monitoring is always a vital activity. Unfortunately, it’s not an easy task and, frequently, logs are not enough to work out problems as load average, run out of resources, and even...
View Articleirate() vs rate() – What’re they telling you?
Prometheus makes available great functions for data aggregation by timeline. Among these functions, I focused my analysis on irate() and rate() which give us similar outcomes but they work in different...
View ArticleGrafana – it’s not only a metrics matter
Metrics are useful, they tell you how your application is going, but they might not be enough when you came across an issue. Applications produce logs, and you need to dig into them to find out what...
View ArticleRabbitMQ Exchange types – Put them into practice
Event Driven Architecture is a growing solution in a lot of projects where Event-Driven pattern is adopted. RabbitMQ makes available a message broker to get communication between different components...
View Article