# microservices-patterns/ftgo-application

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/microservices-patterns-ftgo-application).**

3,718 stars · 1,415 forks · Java · NOASSERTION

## Links

- GitHub: https://github.com/microservices-patterns/ftgo-application
- awesome-repositories: https://awesome-repositories.com/repository/microservices-patterns-ftgo-application.md

## Description

This project is a Java microservices reference implementation that demonstrates the application of structural design patterns for distributed systems. It consists of a suite of containerized services and infrastructure dependencies designed to showcase how to coordinate multiple independent services into a functional system.

The implementation focuses on several advanced architectural patterns, including a centralized API gateway for routing and aggregating responses, Command Query Responsibility Segregation to separate read and write operations, and event sourcing to persist the state of business entities as a sequence of immutable events. It also demonstrates the Saga pattern for coordinating distributed transactions to ensure eventual consistency across services.

The system covers a broad range of capabilities including asynchronous event-driven communication, transactional outbox messaging, and the management of domain-specific workflows for order and account lifecycles. It utilizes container orchestration for the deployment and scaling of services.

The suite is provided as a collection of Dockerized and Kubernetes-ready services to facilitate local development and cluster deployment.

## Tags

### Software Engineering & Architecture

- [Architectural Pattern Implementations](https://awesome-repositories.com/f/software-engineering-architecture/architectural-pattern-implementations.md) — Serves as a reference implementation for structural distributed system design patterns in Java. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/settings.gradle))
- [Microservice Architectures](https://awesome-repositories.com/f/software-engineering-architecture/microservice-architectures.md) — Implements a reference architecture consisting of loosely coupled, independently deployable microservices using distributed design patterns.
- [API Gateways](https://awesome-repositories.com/f/software-engineering-architecture/api-gateways.md) — Implements a centralized API gateway to route external requests and aggregate responses from multiple microservices.
- [Command Query Responsibility Segregation](https://awesome-repositories.com/f/software-engineering-architecture/command-query-responsibility-segregation.md) — Implements Command Query Responsibility Segregation to separate data modification logic from retrieval operations.
- [CQRS Patterns](https://awesome-repositories.com/f/software-engineering-architecture/cqrs-patterns.md) — Separates read and write operations into distinct models to optimize query performance and system scalability.
- [Saga Coordinators](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-coordinators/saga-coordinators.md) — Coordinates distributed transactions across services using the Saga pattern to ensure eventual consistency.
- [Distributed Transaction Patterns](https://awesome-repositories.com/f/software-engineering-architecture/distributed-transaction-patterns.md) — Manages complex business processes across multiple services using the Saga pattern to ensure eventual data consistency. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/README.adoc))
- [Event Driven Messaging](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-messaging.md) — Implements an asynchronous event-driven architecture to decouple microservices via message brokers.
- [Event Sourcing](https://awesome-repositories.com/f/software-engineering-architecture/event-sourcing.md) — Persists business entity state as a sequence of immutable events combined with CQRS for read-write separation.
- [Event Sourcing Persistence](https://awesome-repositories.com/f/software-engineering-architecture/event-sourcing-persistence.md) — Persists the state of business entities as a sequence of immutable events rather than current snapshots. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Event Sourcing](https://awesome-repositories.com/f/software-engineering-architecture/event-state-persistence/event-sourcing.md) — Persists the state of business entities as an immutable sequence of events instead of snapshots.
- [API Aggregators](https://awesome-repositories.com/f/software-engineering-architecture/api-aggregators.md) — Uses an API aggregator within the gateway to merge data from multiple microservices into single responses.
- [Asynchronous Command Processing](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-command-processing.md) — Processes domain commands asynchronously by subscribing to event streams and mapping payloads to business logic. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/ftgo-accounting-service/src/main/java/net/chrisrichardson/ftgo/accountingservice/messaging/AccountingServiceCommandHandler.java))
- [Microservice Orchestration](https://awesome-repositories.com/f/software-engineering-architecture/microservice-orchestration.md) — Orchestrates the lifecycle and communication of a distributed microservice cluster. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Service Orchestration](https://awesome-repositories.com/f/software-engineering-architecture/service-orchestration.md) — Provides a set of configuration files to coordinate and launch multiple microservices as a unified system. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/docker-compose-api-gateway-graphql.yml))
- [Data Model Decoupling](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/structural-design-paradigms/decoupled-logic-encapsulation/logic-decoupling/data-model-decoupling.md) — Separates data retrieval views from update logic to optimize query performance and reduce contention. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/README.adoc))
- [Business Logic Encapsulations](https://awesome-repositories.com/f/software-engineering-architecture/stateful-logic-encapsulation/business-logic-encapsulations.md) — Organizes domain logic into reusable encapsulates to maintain data integrity and encapsulate business rules. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Transactional Outbox Patterns](https://awesome-repositories.com/f/software-engineering-architecture/transactional-outbox-patterns.md) — Implements the transactional outbox pattern to atomically couple database updates with message publishing.

### Artificial Intelligence & ML

- [CQRS Patterns](https://awesome-repositories.com/f/artificial-intelligence-ml/ai-powered-data-assistants/read-only-database-querying/read-write-node-separations/cqrs-patterns.md) — Implements the CQRS pattern to separate read and write operations, optimizing query performance and scalability. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Interface-Level Read-Write Separations](https://awesome-repositories.com/f/artificial-intelligence-ml/ai-powered-data-assistants/read-only-database-querying/read-write-node-separations/interface-level-read-write-separations.md) — Separates read and write paths at the application layer to optimize query performance and scalability.

### Business & Productivity Software

- [Order Lifecycle Management](https://awesome-repositories.com/f/business-productivity-software/order-lifecycle-management.md) — Manages the complete end-to-end flow of orders, including approval, rejection, and state transition validation. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/ftgo-order-service/src/main/java/net/chrisrichardson/ftgo/orderservice/domain/Order.java))

### Data & Databases

- [CQRS Read Views](https://awesome-repositories.com/f/data-databases/data-access-querying/historical-data-querying-interfaces/time-travel-query-interfaces/multi-view-query-interfaces/cqrs-read-views.md) — Builds dedicated read views for complex data queries to separate them from write operations. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [API Response Optimizations](https://awesome-repositories.com/f/data-databases/api-response-optimizations.md) — Optimizes API responses by aggregating data from multiple downstream services to reduce client round-trips. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/README.adoc))
- [Transactional Message Deliveries](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/atomic-transactions/transactional-message-deliveries.md) — Ensures atomic data exchange and persistence across services using transactional messaging patterns. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Domain Aggregates](https://awesome-repositories.com/f/data-databases/object-relational-mappers/domain-models/logic-validation/domain-logic-patterns/domain-aggregates.md) — Organizes business logic into cohesive domain aggregates to maintain internal consistency and define state boundaries. ([source](https://github.com/microservices-patterns/ftgo-application#readme))

### Networking & Communication

- [Asynchronous Data Streaming](https://awesome-repositories.com/f/networking-communication/asynchronous-data-streaming.md) — Facilitates decoupled communication between microservices using asynchronous data streaming and event brokers. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/README.adoc))
- [Centralized API Gateways](https://awesome-repositories.com/f/networking-communication/centralized-api-gateways.md) — Provides a centralized API gateway that routes external requests to the appropriate internal microservices.
- [Asynchronous Message Passing](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/inter-process-communication/asynchronous-message-passing.md) — Utilizes non-blocking asynchronous message passing for decoupled communication between distributed services.
- [Decoupled Communication Services](https://awesome-repositories.com/f/networking-communication/decoupled-communication-services.md) — Exchanges data between decoupled services using distributed event streams and message brokers.
- [Gateway-Based Request Routings](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/request-routing/internal-microservice-request-routings/gateway-based-request-routings.md) — Provides a single gateway entry point for external clients to access a variety of internal microservices. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Distributed Service Communications](https://awesome-repositories.com/f/networking-communication/distributed-service-communications.md) — Manages a mix of synchronous REST calls and asynchronous messaging for distributed service communication. ([source](https://github.com/microservices-patterns/ftgo-application#readme))

### User Interface & Experience

- [Backend Domain Events](https://awesome-repositories.com/f/user-interface-experience/component-utilities/ui-frameworks/component-apis/event-communication-systems/event-emission-declarations/custom-event-emission/domain-event-emission/backend-domain-events.md) — Triggers event notifications when business entity states change to enable asynchronous communication between services. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/ftgo-order-service/src/main/java/net/chrisrichardson/ftgo/orderservice/domain/Order.java))

### Web Development

- [API Gateways](https://awesome-repositories.com/f/web-development/rest-api-backends/api-gateways.md) — Implements an API gateway as a central entry point to route and aggregate microservice data. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [RESTful Endpoints](https://awesome-repositories.com/f/web-development/restful-endpoints.md) — Implements synchronous REST endpoints to allow clients to interact with microservices via standard request-response cycles. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/README.adoc))

### DevOps & Infrastructure

- [Container Orchestration](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration.md) — Automates the deployment and lifecycle management of essential infrastructure containers like databases and message brokers. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/build.gradle))
- [Kubernetes Cluster Deployments](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/container-runtimes/runtime-configuration-interfaces/docker-socket-orchestrators/docker-target-configurators/docker-container-deployments/docker-compose-deployments/kubernetes-cluster-deployments.md) — Packages services into containers and manages their deployment and scaling using Kubernetes orchestration tools. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Containerized Service Deployment](https://awesome-repositories.com/f/devops-infrastructure/containerized-service-deployment.md) — Orchestrates the build and deployment of containerized services and backing infrastructure into a cluster. ([source](https://github.com/microservices-patterns/ftgo-application/blob/master/skaffold.yaml))
- [Kubernetes Cluster Orchestration](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-cluster-orchestration.md) — Implements automated deployment and scaling of microservices within a containerized Kubernetes cluster. ([source](https://github.com/microservices-patterns/ftgo-application#readme))
- [Microservices Orchestration](https://awesome-repositories.com/f/devops-infrastructure/microservices-orchestration.md) — Manages the lifecycle, discovery, and routing of a suite of containerized microservices within a cluster.
- [Multi-Service Container Orchestration](https://awesome-repositories.com/f/devops-infrastructure/multi-service-container-orchestration.md) — Orchestrates a suite of inter-dependent containerized services and infrastructure dependencies for a functional system.

### Part of an Awesome List

- [Microservice Reference Implementations](https://awesome-repositories.com/f/awesome-lists/devtools/microservice-reference-implementations.md) — Restaurant management system using the Saga pattern.
