Book Image

Building Microservices with Micronaut®

By : Nirmal Singh, Zack Dawood
Book Image

Building Microservices with Micronaut®

By: Nirmal Singh, Zack Dawood

Overview of this book

The open source Micronaut® framework is a JVM-based toolkit designed to create microservices quickly and easily. This book will help full-stack and Java developers build modular, high-performing, and reactive microservice-based apps using the Micronaut framework. You'll start by building microservices and learning about the core components, such as ahead-of-time compilation, reflection-less dependency injection, and reactive baked-in HTTP clients and servers. Next, you will work on a real-time microservice application and learn how to integrate Micronaut projects with different kinds of relational and non-relational databases. You'll also learn how to employ different security mechanisms to safeguard your microservices and integrate microservices using event-driven architecture in the Apache Kafka ecosystem. As you advance, you'll get to grips with automated testing and popular testing tools. The book will help you understand how you can easily handle microservice concerns in Micronaut projects, such as service discovery, API documentation, distributed configuration management, fallbacks, and circuit breakers. Finally, you'll explore the deployment and maintenance aspects of microservices and get up to speed with the Internet of Things (IoT) using the Framework. By the end of this book, you'll be able to build, test, deploy, and maintain your own microservice apps using the framework.
Table of Contents (20 chapters)
Section 1: Core Concepts and Basics
Section 2: Microservices Development
Section 3: Microservices Testing
Section 4: Microservices Deployment
Section 5: Microservices Maintenance
Section 6: IoT with Micronaut and Closure

Distributed tracing in Micronaut microservices

Distributed tracing is the capability of the system to track and observe the execution flow of a request in distributed systems by collecting data as the request furthers from one service component to another. This trace data compiles metrics such as the time taken at each service along with end-to-end execution flow. Time metrics can help to zero down performance issues such as which service component is a bottleneck to the execution flow and why.

A trace is a Gantt chart-like data structure that stores the trace information in spans. Each span will keep a trace for the execution flow in a particular service component. Furthermore, a span can have a reference to parent span and child spans. Refer to the following figure:

Figure 9.5 – Distributed tracing

In the preceding diagram, we can see the traces/spans for loading the foo page on the user interface app. It first calls Service A to get the foo object...