ahmedalaahagag / microservices-CQRS-eventsourcing-resources

A collection of useful tools that would be a helping resource when building microservices with cqrs and event sourcing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About this Repository

This Repository contains a collection of tools and services that you may need when building a microservices based system with (CQRS) and (Event-Sourcing)

Quick links

What is a microservices

file

Microservices are a software development technique —a variant of the service-oriented architecture (SOA) structural style— that arranges an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. Defination from wikipedia : https://en.wikipedia.org/wiki/Microservices

Useful Readings

Tools (What to use when building a microservice)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Language

Website

Spring boot

Java

https://spring.io/projects/spring-framework

Microsoft.Net Core

c#

https://docs.microsoft.com/en-us/dotnet/core/

Grails Groovy

Java

https://grails.org/

Eclipse Vertx

Java

https://vertx.io/

Helidon

Java - Kotlin

https://helidon.io/

Fresh Squeezed Limonade

PHP

https://github.com/yesinteractive/fsl

Lumen

PHP

https://lumen.laravel.com/

MolecularJs

Javascript

https://moleculer.services/

NodeJs

Javascript

https://nodejs.org/en/

Containerization

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.

Useful Readings

Tools (What to use as a Containerization solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Docker

https://hub.docker.com/

CoreOS rkt

https://coreos.com/rkt/docs/latest/

Linuxcontainers LXC

https://linuxcontainers.org/

OpenVZ

https://openvz.org/

Containerd

https://containerd.io/

Containers Orchestration

It groups containers that make up an application into logical units for easy management and discovery. = Useful Readings

Tools (What to use as a Containers Orchestration solutions)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Kubernetes

https://kubernetes.io/

Docker Swarm

https://docs.docker.com/engine/swarm/

OpenShift

https://www.openshift.com/

Diego

https://docs.cloudfoundry.org/concepts/diego/diego-architecture.html#diagram

CoreOs Fleet

https://coreos.com/fleet/docs/latest/

Mesos Marathon

https://mesosphere.github.io/marathon/

Amazon ECS

https://aws.amazon.com/ecs/

Amazon ECR

https://aws.amazon.com/ecr/

Azure K8s Service

https://azure.microsoft.com/en-us/services/kubernetes-service/

Service Discovery

Let’s imagine that you are writing some code that invokes a service that has a REST API or Thrift API. In order to make a request, your code needs to know the network location (IP address and port) of a service instance. In a traditional application running on physical hardware, the network locations of service instances are relatively static. For example, your code can read the network locations from a configuration file that is occasionally updated.

Useful Readings

Tools (What to use as a Service Discovery solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Consul

https://www.consul.io/

Apache ZooKeeper

https://zookeeper.apache.org/

Etcd

https://github.com/etcd-io/etcd

Eeureka

https://github.com/Netflix/eureka

Smartstack

https://github.com/airbnb/smartstack-cookbook

SkyDNS

https://github.com/skynetservices/skydns

Bakerstreet

https://github.com/datawire/bakerstreet

Api Gateways

An API gateway takes all API calls from clients, then routes them to the appropriate microservice with request routing, composition, and protocol translation. Typically it handles a request by invoking multiple microservices and aggregating the results, to determine the best path. It can translate between web protocols and web‑unfriendly protocols that are used internally. = Useful Readings

Tools (What to use as a Api gateway solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Kong

https://konghq.com/kong/

Ambassador

https://www.getambassador.io/

Ocelot

https://github.com/ThreeMammals/Ocelot

Tyk

https://tyk.io/

Amazon AWS Gateway

https://aws.amazon.com/api-gateway/

Azure Application Gateway

https://docs.microsoft.com/en-us/azure/application-gateway/overview

Spring Cloud

https://spring.io/projects/spring-cloud

KrakenD

https://www.krakend.io/

Event Bus

Event driven architecture pattern is a distributed asynchronous architecture pattern to create highly scalable reactive applications. The pattern suits for on every level application stack from small to complex ones. The main idea is delivering and processing events asynchronously.

Useful Readings

Tools (What to use as a Event Bus solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Apache kafka

https://kafka.apache.org/

Rabbit MQ

https://www.rabbitmq.com/

Azure Service bus

https://azure.microsoft.com/en-us/services/service-bus/?ef_id=Cj0KCQiA1-3yBRCmARIsAN7B4H0iLfdqXdXdY-H3vw1dUbn6wscnCict2F4_RdhJXLFhbpReq-tDYaAoj1EALw_wcB%3AG%3As&OCID=AID2000076_SEM_e9PC46VT&MarinID=e9PC46VT_324582039256_azure%20service%20bus_e_c71931028028_kwd-318783172040&lnkd=Google_Azure_Brand&dclid=CNeUzvOx-ucCFQzkuwgdYF4Mdg

Amazon SQS

https://aws.amazon.com/sqs/

Google Cloud Pub/Sub

https://cloud.google.com/pubsub/docs/overview

Logging

Each service instance generates writes information about what it is doing to a log file in a standardized format. The log file contains errors, warnings, information and debug messages.

Useful Readings

Tools (What to use as a Logging solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Fluentd

https://www.fluentd.org/

Graylog

https://www.graylog.org/

Logstash

https://www.elastic.co/logstash

Bunyan

https://github.com/trentm/node-bunyan

Suro

https://github.com/Netflix/suro

CloudWatch

https://aws.amazon.com/cloudwatch

Kibana

https://www.elastic.co/kibana

Monitoring

Tools (What to use as a Monitoring solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Grafana

https://grafana.com/

Prometheus

https://prometheus.io/

cAdvisor

https://github.com/google/cadvisor

Riemann

http://riemann.io/

Spigo

https://www.spigotmc.org/resources/lagmonitor.21348/?cf_chl_jschl_tk=134eae81f7fcca7748cef25cf0b537500782b487-1583104534-0-AayA-zzcVh0KIjL08ER8ojxteMEUsHCOn9EwVTqMFcVtqWU3eUv8KUiiltEbyh2rzkIoEfVOd9C_4ha-5aKFEbfEchSbNScDZQRfRN5tY6TpQhPWV-wAvuo3b9RrJnfZFkz3dFzfMA1MWQprj2JeS0O02cnwi0cTE8YTGVogFWtmo4RRfgyDuW3CB3UVJMhM5guQJbCF5ulLl5EkGhcpmPynsyQIytizfWRnRNuLDnEgYUhwPJIXY_5Y2AV2HRlhookupXDMctySU_h83qfmiNWR6rfouzJsbiEXnjTjk7kpLbSC2i7432QRZuRv-Avgyw

Sensu

https://sensu.io/

Sysdig

https://sysdig.com/

NewRelic

https://newrelic.com/

zabbix

https://www.zabbix.com/

ntop

https://www.ntop.org/

Documentation

Api documentation

Tools (What to use as a Documentation solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Swagger

https://swagger.io/

Apiary

https://apiary.io/how-apiary-works

Slate

https://github.com/slatedocs/slate

Gelato

https://developers.gelato.com/documentation/v2/

Aglio

https://github.com/danielgtaylor/aglio

LucyBot’s DocGen

https://lucybot.com/docgen

Testing

Api documentation

Tools (What to use as a Documentation solution)

This list is not a must it’s for reference and to be can be updated anyone using a different tool

Tool

Website

Postman

https://www.postman.com/

Hoverfly

https://hoverfly.io/

Pact

https://docs.pact.io/

Gatling

https://gatling.io/

RestAssured

https://github.com/rest-assured/rest-assured

Citrus

https://citrusframework.org/

About

A collection of useful tools that would be a helping resource when building microservices with cqrs and event sourcing