All Projects → odrotbohm → Sos

odrotbohm / Sos

Licence: apache-2.0
Sample projects for my talk "Refactoring to a System of Systems"

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Sos

Spring Cloud Vault
Configuration Integration with HashiCorp Vault
Stars: ✭ 210 (-2.33%)
Mutual labels:  microservices, spring
Java Interview
At the beginning, it was the repository with questions from Java interviews. Currently, it's more like knowledge base with useful links.
Stars: ✭ 114 (-46.98%)
Mutual labels:  microservices, spring
Spring Cloud Sleuth
Distributed tracing for spring cloud
Stars: ✭ 1,531 (+612.09%)
Mutual labels:  microservices, spring
Okta Blog Archive
Okta Developer Blog
Stars: ✭ 74 (-65.58%)
Mutual labels:  microservices, spring
Spring Cloud Cli
Spring Cloud CLI features
Stars: ✭ 139 (-35.35%)
Mutual labels:  microservices, spring
Spring Cloud Cloudfoundry
Integration between Cloudfoundry and the Spring Cloud APIs
Stars: ✭ 83 (-61.4%)
Mutual labels:  microservices, spring
Spring Cloud Build
Common build concerns, shared plugin configuration, etc. for Spring Cloud modules
Stars: ✭ 114 (-46.98%)
Mutual labels:  microservices, spring
Micro Server
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.
Stars: ✭ 929 (+332.09%)
Mutual labels:  microservices, spring
Raptor
拍拍贷微服务rpc框架
Stars: ✭ 139 (-35.35%)
Mutual labels:  microservices, spring
Gemini
Model Driven REST framework to automatically generate CRUD APIs
Stars: ✭ 138 (-35.81%)
Mutual labels:  microservices, spring
Mini Platform
Mini-Platform致力于更简洁易用的轻量级微服务治理平台。
Stars: ✭ 45 (-79.07%)
Mutual labels:  microservices, spring
Priest
dubbo mybatis springboot base soa rest api framework with customer code generator
Stars: ✭ 160 (-25.58%)
Mutual labels:  microservices, spring
Activiti
Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It's open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the…
Stars: ✭ 8,227 (+3726.51%)
Mutual labels:  microservices, spring
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+546.05%)
Mutual labels:  microservices, spring
Brutusin Rpc
Self-describing JSON-RPC web services over HTTP, with automatic API description based on JSON-Schema
Stars: ✭ 36 (-83.26%)
Mutual labels:  microservices, spring
Spring Cloud Example
Stars: ✭ 111 (-48.37%)
Mutual labels:  microservices, spring
Spring Testing
A Spring Boot application with lots of sample tests
Stars: ✭ 569 (+164.65%)
Mutual labels:  microservices, spring
Spring Cloud Consul
Spring Cloud Consul
Stars: ✭ 703 (+226.98%)
Mutual labels:  microservices, spring
Spring Cloud Config
External configuration (server and client) for Spring Cloud
Stars: ✭ 1,740 (+709.3%)
Mutual labels:  microservices, spring
Reactive Ms Example
An educational project to learn reactive programming with Spring 5
Stars: ✭ 157 (-26.98%)
Mutual labels:  microservices, spring

Refactoring to a System of Systems

NOTE: This is currently highly work in progress. Be sure to check out every now and then for more detailed information and explanations about the individual modules.

This repository contains some sample code for my talk "Refactoring to a System of Systems" that outlines what problems developers can run into if they split up a system into multiple ones but transfer interaction patterns of typical monolithic applications as is. Slides of that talk and a recording of it will be linked here as soon as they become available.

The repository contains five different projects, each of them potentially split into multiple ones in turn. For details on the individual ones, please refer to the READMEs conatined in the individual project's root.

Context

The sample application is built around an e-commerce domain with the following Bounded Contexts:

  • Catalog - containing product master data (in our case product name and price).
  • Inventory - keeping track of the number of available items per product.
  • Order - keeping track of orders placed by customers.

Domain

The individual modules provide sketch implementations of these Bounded Context and the following interactions between them implemented:

  1. When a product is added, the inventory needs to register empty stock for that product.
  2. When an order is completed, the inventory needs to update the stock for the products ordered.

Modules

  • The Monolith - a typical monolithic Spring Boot application with the Bounded Contexts implemented in packages and the interaction being based on active invocations of Spring beans residing in a different BC.
  • The Microlith - the former approach transferred into separate systems but keeping the same interaction patter of synchronous, non-idempotent operations. The systems invoking each other via HTTP calls.
  • The Modulith - an improved version of the monolith with the Bounded Contexts interacting via Spring application events and event listeners.
  • SOS Messaging - the individual Bounded Contexts implemented as separate systems and the interaction implemented via a Kafka message broker.
  • SOS REST - the individual Bounded Contexts implemented as separate systems and the interaction implemented via the events exposed as REST resources.

Project structure

Build

The repository should build by simply running ./mvnw clean install using a recent JDK 8. Sample code uses Lombok, which means that you need a Lombok-enabled IDE in case you want to import the projects into it. For detailed instructions about how to work with the individual projects, see the individual module's READMEs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].