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.
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.
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.
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.
This application is the spring-boot eureka server which allows for service discovery and registration.
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
.
This application is the api gateway to our backend services.
This application is the zipkin distributed tracing system based off the google dapper paper. My rest services will be sending traces to this service.
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
API Gateway
Command Query Response Segregation
Service Discovery and Registration
Fault Tolerance
Event Sourcing
Eventual Consistency Data Model
Builder Object Creational Pattern
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);