Hexagonal Architecture – Java Starter Project

I have shared the sample code for the  Hexagonal Architecture presentation. You can find the source code  at: github.com/fabricioepa/lab-hexagon-java But I should remeber you these patterns are not exclusively related to the Java technologies and frameworks.

My professional experience using this technique

It was very simple to create a decoupled REST adapter from the core application, it should be simple to create another kind of adapter too. However, if the application domain is quite BIG or there are many ports and adapters, you will have some overhead to maintain different domains translated from the original application core domain. The PORT interface should also have a stable API definition, you should design it to support evolution without easily break compatibility with the adapters implementations for that PORT. As inital strategy to achieve that design, the project has domain events to encapsulate all input and output data for the service, enabling the application to evolute without directly break the adapter code of the API.

core/api/src/main/java/com/ticketapp/core/api/TicketService.java

/**
 * Ticket Service - Use Case API
 */
public interface TicketService {

    TicketsReadEvent list(ReadTicketsEvent event);

    TicketCreatedEvent create(CreateTicketEvent ticket);

    TicketUpdatedEvent update(UpdateTicketEvent ticket);

    TicketDeletedEvent delete(DeleteTicketEvent ticket);
}

This is one reason for this pattern has often been applied to microservices architecture, because it works nice for multiple system integrations and also for small/medium sized application domains. If the application domain starts to grow up, may be it is the time to think about design a new hexagon to it.

Feel free to bring up your ideas 😉

Hexagonal architecture

Objective

“Allow an application to equally be driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run-time devices and databases.” (Alistair Cockburn)

Summary

This approach aims to simplify the application integration and it is a powerful strategy to rapidly compose new services. The pattern has been often applied with the microservice architecture and may be the future of the SOA, bypassing the meddiation of the Enterprise Service Bus (ESB), enabling high performance and scalability.

Continuous integration practices to improve software quality

This presentation aims to introduce you to the best practices and advanced techniques for those who want to use Continuous Integration like a boss.

It can empower the cross-teams collaboration and helps to mitigate the technical debt.

Because the software quality matters to end-user, to choose the CI approach will improve the business ops.

If this was helpful to you, please give it a “like”

Quickstart for Continuous Integration

A short guide to everyone who wants to get familiar with this very important development practice.

Almost every big IT company is using Continuous Integration. If you are not aware of this practice and how it works, this is a useful presentation to help to get the basics.

More advanced concepts and techniques will be published later.

Comments are welcome 😉

RESTful Java Web Applications with Spring Boot + CQRS Pattern

I am sharing a sample project to demonstrate some cool features of the Spring Boot with Spring framework 4.0, the project is part of the workshop series at the embeddedlab.org #2015

The application is based on the CQRS pattern (Command Query Responsibility Segregation), introduced by Greg Young, decoupling the models for the Read/Write operations.

The pattern is better described by Martin Fowler in his blog (http://martinfowler.com/bliki/CQRS.html)

“The other main benefit is in handling high performance applications. CQRS allows you to separate the load from reads and writes allowing you to scale each independently…”

It means you can create lightweight data structures to read thousands of data and also have complex object structures to read detailed information for the same entity in the domain.

You can find the source code  at:

github.com/fabricioepa/lab-springboot-rest-sample

Feel free to bring up your ideas and comments

Hope you enjoy it. 😉

Introduction to MODERN WEB APPLICATIONS

Putting my wordpress back on the road…

I am going to share my short presentation series I’ve created for workshop purposes.

Hope you enjoy it, please feel free to make contact and point some interesting feedback, any comments are welcome.

Let’s get started…