Book Image

Designing Hexagonal Architecture with Java - Second Edition

By : Davi Vieira
Book Image

Designing Hexagonal Architecture with Java - Second Edition

By: Davi Vieira

Overview of this book

We live in a fast-evolving world with new technologies emerging every day, where enterprises are constantly changing in an unending quest to be more profitable. So, the question arises — how to develop software capable of handling a high level of unpredictability. With this question in mind, this book explores how the hexagonal architecture can help build robust, change-tolerable, maintainable, and cloud-native applications that can meet the needs of enterprises seeking to increase their profits while dealing with uncertainties. This book starts by uncovering the secrets of the hexagonal architecture’s building blocks, such as entities, use cases, ports, and adapters. You’ll learn how to assemble business code in the domain hexagon, create features with ports and use cases in the application hexagon, and make your software compatible with different technologies by employing adapters in the framework hexagon. In this new edition, you’ll learn about the differences between a hexagonal and layered architecture and how to apply SOLID principles while developing a hexagonal system based on a real-world scenario. Finally, you’ll get to grips with using Quarkus to turn your hexagonal application into a cloud-native system. By the end of this book, you’ll be able to develop robust, flexible, and maintainable systems that will stand the test of time.
Table of Contents (24 chapters)
1
Part 1: Architecture Fundamentals
7
Part 2: Using Hexagons to Create a Solid Foundation
12
Part 3: Becoming Cloud-Native
18
Part 4: Hexagonal Architecture and Beyond

Why Hexagonal Architecture?

Software that’s not well organized and lacks sound software architecture principles may work just fine but develop technical debt over time. As new features are added, the software may become more complex to maintain because there is no common ground to guide code changes. Based on that problem, this chapter explains how hexagonal architecture helps to build software prepared to accommodate changes from unexpected requirements and, by doing so, allows us to increase software maintainability and keep technical debt under control.

We tackle the technical debt problem that arises when shortcuts are taken to overcome the difficulty of introducing changes caused by an inflexible software architecture. We will see how hexagonal architecture helps us improve maintainability by providing the principles to decouple the business logic (code that should purely represent a business problem) from the technology code (code that integrates the system with different technologies such as databases, messaging queues, and external APIs to support the business logic).

I have seen systems developed with business logic closely related to the technology code. Some of those systems would rarely change, so the coupling between business logic and technology code would never be a problem. However, significant refactorings would be necessary for other systems where the requirements would change often and substantially. That was because the business logic was so tightly coupled with the technology code that rewriting the business logic was the only plausible solution.

Using hexagonal architecture may help you to save time and effort due to the software rewrites caused by such scenarios where requirements change often and significantly.

In this chapter, we will cover the following topics:

  • Reviewing software architecture
  • Understanding hexagonal architecture

By the end of this chapter, you will have learned about the main concepts of hexagonal architecture: entities, use cases, ports, and adapters. Also, you’ll know the basic techniques to start applying hexagonal principles in your projects.