Microservices

Build an API using Quarkus from the ground up

Build an API using Quarkus from the ground up

Building a production-ready application has a ton of moving parts. Most of the time, developers create a new project using some sort of tool, like Maven archetypes, and then go from tutorial to tutorial piecing together everything that is needed for their application. This article tries to bring all the parts together and provide a single full reference to the work that needs to be done for a Quarkus application. You can find all the examples from this article on GitHub.

Continue reading Build an API using Quarkus from the ground up

Share
Building resilient event-driven architectures with Apache Kafka

Building resilient event-driven architectures with Apache Kafka

Even though cloud-native computing has been around for some time—the Cloud Native Computing Foundation was started in 2015; an eon in computer time—not every developer has experienced the, uh, “joy” of dealing with distributed systems. The old patterns of thinking and architecting systems have given way to new ideas and new problems. For example, it’s not always possible (or advisable) to connect to a database and run transactions. Databases themselves are giving way to events and Command Query Responsibility Segregation (CQRS) and eventual consistency. Two-phase commits are being replaced with queues and database sagas, while monoliths are replaced with microservices, containers, and Kubernetes. “Small and local” thinking rules the day.

Continue reading Building resilient event-driven architectures with Apache Kafka

Share
Event-driven APIs and schema governance for Apache Kafka: Get ready for Kafka Summit Europe 2021

Event-driven APIs and schema governance for Apache Kafka: Get ready for Kafka Summit Europe 2021

As a developer, I’m always excited to attend the Kafka Summit, happening this year from May 11 to 12. There are so many great sessions addressing critical challenges in the Apache Kafka ecosystem. One example is how changes to event-driven APIs are leading developers to focus on contract-first development for Kafka.

Continue reading Event-driven APIs and schema governance for Apache Kafka: Get ready for Kafka Summit Europe 2021

Share
Design event-driven integrations with Kamelets and Camel K

Design event-driven integrations with Kamelets and Camel K

The Kamelet is a concept introduced near the end of 2020 by Camel K to simplify the design of complex system integrations. If you’re familiar with the Camel ecosystem, you know that Camel offers many components for integrating existing systems. An integration’s granularity is related to its low-level components, however. With Kamelets you can reason at a higher level of abstraction than with Camel alone.

A Kamelet is a document specifying an integration flow. A Kamelet uses Camel components and enterprise integration patterns (EIPs) to describe a system’s behavior. You can reuse a Kamelet abstraction in any integration on top of a Kubernetes cluster. You can use any of Camel’s domain-specific languages (DSLs) to write a Kamelet, but the most natural choice is the YAML DSL. The YAML DSL is designed to specify input and output formats, so any integration developer knows beforehand what kind of data to expect.

A Kamelet also serves as a source or sink of events, making Kamelets the building blocks of an event-driven architecture. Later in the article, I will introduce the concept of source and sink events and how to use them in an event-driven architecture with Kamelets.

Continue reading “Design event-driven integrations with Kamelets and Camel K”

Share
Using Dekorate to generate Kubernetes manifests for Java applications

Using Dekorate to generate Kubernetes manifests for Java applications

To deploy an application on Kubernetes or Red Hat OpenShift, you first need to create objects to allow the platform to install an application from a container image. Then, you need to launch the application using a pod and expose it as a service with a static IP address. Doing all of that can be tedious, but there are ways to simplify the process.

Continue reading Using Dekorate to generate Kubernetes manifests for Java applications

Share
Integrating Spring Boot with Red Hat Integration Service Registry

Integrating Spring Boot with Red Hat Integration Service Registry

Most of the new cloud-native applications and microservices designs are based on event-driven architecture (EDA), responding to real-time information by sending and receiving information about individual events. This kind of architecture relies on asynchronous, non-blocking communication between event producers and consumers through an event streaming backbone such as Red Hat AMQ Streams running on top of Red Hat OpenShift. In scenarios where many different events are being managed, defining a governance model where each event is defined as an API is critical. That way, producers and consumers can produce and consume checked and validated events. We can use a service registry as a datastore for events defined as APIs.

From my field experience working with many clients, I’ve found the most typical architecture consists of the following components:

In this article, you will learn how to easily integrate your Spring Boot applications with Red Hat Integration Service Registry, which is based on the open source Apicurio Registry.

Continue reading “Integrating Spring Boot with Red Hat Integration Service Registry”

Share