/transactionApp

Transaction App is a simple microservice application aims to show how modern distributed application can be builded and deployed.

Primary LanguageGo

Transaction App

Transaction App is a simple microservice application aims to show how modern distributed application can be builded and deployed. It is written on Go programming language. It demonstrate how to build microservice that exposes its operation over over all three major transports: GRPC, REST API, Messaging System (NATS). It also shows how to do logging and distributed tracing to external systems and expose application metrics for external monitoring.

Transaction App can be deployed on a single docker host or on a Kubernetes cluster. See Deploy section.

Transaction App is a simple application. From user interface you can only run one or batch of new jobs. Application desided on which worker the new job should be runned. The more jobs started the slower they are performed. Application shows you progress of each jobs and displays information of already completed jobs.

Transaction App Overview Diagram

Technology stack

Programming Languages:

  • GO for the apiserver, repository and worker components.
  • React for building user interface.

Programming toolkit:

  • go-kit for building a microservice architecture.
  • gorm ORM library for making interaction with a database.
  • GRPC a high-performance, open-source universal RPC framework. Interaction between all microservice.
  • protobuf Google's data interchange format.
  • REST API Interaction between ui and apiserver components. Request: http. Response: json.
  • OpenTracing instrumentation for connecting to a distributed tracing system.

Third party software components:

  • MySQL the world know relational database.
  • NATS a high performance messaging system.
  • Prometheus monitoring system for gathering application, docker and operation systems metrics .
  • Grafana for visualisation metrics from Prometheus.
  • ELK for gathering docker and operation systems logs. ELK stack: Filebeat -> Logstash -> ElasticSearch -> Kibana.
  • Jaeger for gather, store and analyse trace from application.

Deploy

There are three options for deploying Transaction App

Entrypoints

  • http:<<ip_address>>:80 Transaction App's user interface
  • http:<<ip_address>>:9090 Prometheus
  • http:<<ip_address>>:3000 Grafana
  • http:<<ip_address>>:5601 Kibana
  • http:<<ip_address>>:3000 Jaeger

Components specification

ui

ui

apiserver

appserver

repository

repository

worker

worker

Donations

If you want to support this project, please consider donating: