-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
Gin
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
-
opentracing-javascript
Discontinued OpenTracing API for Javascript (both Node and browser). 🛑 This library is DEPRECATED! https://github.com/opentracing/specification/issues/163
-
validator
:100:Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving
-
go-simple-mail
Golang package for send email. Support keep alive connection, TLS and SSL. Easy for bulk SMTP.
-
Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
For quering data our microservice has GetByID and Search handlers. Full source code and list of all used tools you can find here 👨💻 :) I hope this article is usefully and helpfully, I'll be happy to receive any feedbacks or questions :)
At the start of application we load yaml config using viper, initialize all that we need and run application:
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
For REST http i used echo, another good popular choice on my opinion is gin, and swag for generate RESTful API documentation. Create email handler accept requests, start tracing span, validate input using validator and call usecase method:
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
For REST http i used echo, another good popular choice on my opinion is gin, and swag for generate RESTful API documentation. Create email handler accept requests, start tracing span, validate input using validator and call usecase method:
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
For REST http i used echo, another good popular choice on my opinion is gin, and swag for generate RESTful API documentation. Create email handler accept requests, start tracing span, validate input using validator and call usecase method:
MailHog is good solution for email testing, and for go smtp client here used go-simple-mail.
processCreateEmail handling create email events, it's start tracing span, increase metrics counters, then unmarshal message data, and call usecase create method, if it fails, we retry for 3 times using retry-go, if it still fails, we check is the current message redelivered and if redelivery count > maxRedeliveryCount(it's up to your business logic, here is 3 times limit), handling error cases can be very different and depends on your service business logic, in this example used Dead Letter Queue approach.
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go