GithubHelp home page GithubHelp logo

hoannth / microservice-sandbox Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mckratt/microservice-sandbox

0.0 1.0 0.0 1.98 MB

Dockerfile 0.44% Java 87.34% Shell 0.23% Gherkin 1.14% JavaScript 0.72% TypeScript 8.96% HTML 1.11% CSS 0.06%

microservice-sandbox's Introduction

Quality Status Code coverage

Microservice Sandbox

This Sandbox use a simplified version of an Insurance Claim System.

Architecture Diagram

Those diagrams are freely inspired from the C4 model from Simon Brown.

Systems

Systems Diagram

Components

Components Diagram

Layered View of Modules

For each component the code is packaged as follow.

Layered View of Modules

Module architecture concept

Main classes involved in modules relationships.

Architecture Concept

Use Cases

  • Create a Partner in the dedicated system
  • Create a Case linked to a Partner, the Case should received a Business Number.
  • When a Case is created, a Task should appear to remind me to treat the Case.
  • Change the Business ID of a Partner (the change should cascade to the Claim domain).
  • Interrogate the Claim system and show a Case with all the information of the related partner.
  • Once the Case closed, the related Task should closed too (event).
  • When I change the birth date of a partner with a Case, a Task should appear to force me to treat this case again.

NFRs

  • Every call should be tracked with a CorrelationID.
  • Every sent event could be send again, replayable.
  • All system should be idempotent (multiple identical messages delivery).
  • All error should be formatted in a way every microservices understand it.

Technological show cases

  • Synchronous call with circuit breaker.
  • Long business transaction through multiple microservices enduring failure (Sagas).
  • Synchronous call with retry.
  • Communication with messages (Choreography/Broker).
  • Communication with messages (Polling).

TODO's

  • Make a todo list ;-)
  • Implement VO's for insured and PNummer
  • Add TravisCI configuration
  • Add SonarQube analysis to the build
  • Add Spring-Boot Application to Case to run it and test via rest interface
  • Create docker-compose file to run Case and its DB inside containers
  • Implement Business Number provider
  • Make Business Service running in a container
  • Fix build travis
  • Create Partner service
  • Create a Person frontend with Angular, Jest tested and CDC test with pact
  • Add frontend build to the maven build of person
  • Make all the docker image deploy to DockerHub
  • Refactor all the docker compose yaml files to use Dockerhub images
  • Update Spring-Boot version for all project
  • Add error to Rest API test and have a standard to propagate this error
  • Add pact test in infra-data-rest for BusinessNumber endpoint
  • Add an endpoint in BNS to return PNumber format id
  • Add birth date in person api signature
  • Add partner info (only birthdate, other info should be read each time) to Case microservice and enable update threw messaging
  • Add Sonar analysis of person-frontend typescript the report on SonarCloud
  • Create screens for person : search, list and create and corresponding Rest API
  • Secure the creation of a partner behind a role and protect the endpoint
  • Make person Service running in a container
  • Add partner info (Name, Forename, BirthDate)
  • Refactor Case architecture to the Person one
  • Create the claim link service
  • Create polling service
  • Create a base module (commons?) gathering all the interfaces and base classes
  • Add call context for all rest calls
  • Add Call context for all logging
  • Add a message broker (Kafka)
  • Put in place the calls tracking system (Jhipster console)
  • Finish messaging implementation (including Call Context)
  • Create the task service (link with messages)
  • Make the partner changes cascade to Case
  • Make the documentation with Structurizr
  • Implement ArchUnit Test
  • Prevent Business Number Service to create twice the same partner id

Things to explore

  • Service discovery with Spring Cloud Eureka
  • Call tracking with :
    • Zipkin
    • Istio
    • Jhipster console
  • Security with Spring Security
    • JWT
  • Use Kubernetes to deploy all the components
    • Use Secret in Kubernetes
    • Use Helm ?
  • Use Flyway and Liquibase to migrate database
  • Use different types of database corresponding to the needs of the microservice
  • Migrate to Kotlin
  • Migrate to Spring-Boot 2
    • Use Async Webflux
  • Testing
    • Pact
    • HoverFly or Wiremock
  • Monitor
    • Metrics
    • JHispter Console
  • Deployment
    • Use DockerHub to deploy Container
    • Use Minikub in local to Deploy
    • Jenkins pipeline as Code
  • Use Hibernate Search in Partner to find partner by name or forename

Open Points

  • Should we use Factory as in case or domain service as in person to create domain object ? !!SRP!!

microservice-sandbox's People

Contributors

mckratt avatar

Watchers

Hoan Nguyen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.