Skip to content

This mono-repo will have multiple cloud friendly microservices written in Golang to demonstrate HTTP & GRPC capabilities with Non functional requirements

License

Notifications You must be signed in to change notification settings

Raj63/golang-microservices

Repository files navigation

golang-microservices

A sample production grade REST API application written in Golang with Invoice managment business functionalities.

  • Microservices
  • Docker Containers
  • REST Api + GRPC for internal Communication
  • Distributed logging
  • Distributed tracing
  • Monitoring (grafana + Prometheus)
  • Auth0 token-access & validation with support for Roles & scopes
  • Performance analysis(pprof + benchmark testing + autocannon)
  • Postgres database with Auto Migration and Seeding
  • Database Transaction support at service level for data integrity
  • Debugging capacity with inspector
  • Load .env files for configuration settings
  • 80% Unit testing coverage
  • Mocks (mockery)
  • Autoi generated Swagger OpenApi & Markdown Docs
  • ThunderClient requests for Testing APIs
  • Makefile for easy commands
  • Docker-Compose for local running
  • Enforcing Coding standards with https://github.com/tekwizely/pre-commit-golang

Generate Swagger documentation for the Server

  • Run command make precommit-invoices
  • Run command make precommit-portal

Test Application Server for corresponding services

  • Run command make test

Build Application Server for corresponding services

  • Run command make build

Run Application Server

  • Run command make run

Reload Application Server

  • Run command make reload

When we run above run or reload command, the db container and app container will be up and running then we can access APIs provided by the App

  • The terminal shell looks like this alt

  • The swagger documentation UI will be available at http://localhost:8080/swagger/index.html alt

  • The swagger documentation will be auto generated like this alt alt

  • The PProf will be avilable at http://localhost:8080/debug/pprof alt

  • The Inspector UI will be available at hhttp://localhost:8080/_inspector alt

  • The metrics api will be available at hhttp://localhost:8080/metrics alt

  • The Newrelic UI will look like this alt

  • The Thunder-Client dashboard will look like this alt

  • The docker state will look like this alt

  • The Coding standard will be enforeced while commiting the code to the repository alt alt

About

This mono-repo will have multiple cloud friendly microservices written in Golang to demonstrate HTTP & GRPC capabilities with Non functional requirements

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published