Skip to content

Simple set of applications to work on technologies.

License

Notifications You must be signed in to change notification settings

Matt-st/CoffeeShop

Repository files navigation

CoffeeShop

This is an example application that shows the usage of much of the spring framework plus some other interesting aspects and concepts on building real world applications.

Architecture diagram

CoffeeShop-Command

This is a sample application that presents rest api's that allow for Create, Update, and Delete operations. We are using the CQRS design pattern, this pattern allows us to scale the functionality of our application separately.

CoffeeShop-Query

This is a sample application that presents rest api's that allow for retrieve operations. We are using the CQRS design pattern, this pattern allows us to scale the functionality of our application separately.

CoffeeShop-EventLog

This application reads from a Kafka topic that captures the event logs from our middleware applications. Currently the event log only captures the event that occurred but in the future it will capture information about the user that triggered the event.

By storing our logs in the database then we can hook up a search tool where we can easily search for logs when we our troubleshooting application issues.

CoffeeShop-Eureka

This application is the spring-boot eureka server which allows for service discovery and registration.

CoffeeShop-Config

This application is the config server which allows the applications (cs-query, cs-command, cs-edgeservice, cs-zipkin) to get there configurations on demand and offer the ability to leverage the @refreshscope.

CoffeeShop-Edgeservice

This application is the api gateway to our backend services.

CoffeeShop-zipkin

This application is the zipkin distributed tracing system based off the google dapper paper. My rest services will be sending traces to this service.

Technologies

Thymeleaf templating Feign rest client Spring Cloud Api
Spring Discovery/Registration Service - Eureka
Spring-boot
Kafka - application communication
Cassandra - datastore for our set of applications
Zipkin Service
Hystrix
Spring Cloud Config
Swagger

Design Patterns

API Gateway
Command Query Response Segregation
Service Discovery and Registration
Fault Tolerance
Event Sourcing
Eventual Consistency Data Model
Builder Object Creational Pattern

Cassandra Database

Keyspace menuitems:
create keyspace menuitems ... with replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

create table items (id int primary key, name text, description text);

Keyspace menulogs:
create keyspace menulogs ... with replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
create table logs (id UUID PRIMARY KEY, description text, log_timestamp text);

About

Simple set of applications to work on technologies.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published