Skip to content

gkarlik/quark-go

Repository files navigation

quark-go Go Report Card Build Status Coverage Status GoDoc

Quark-go is a quark size (meaning very very small) toolbelt for building microservices in golang.

Important: Library requires Golang 1.8+! Work in progress! Some interfaces could be changed!

Goals

The goal of the project is to help quickly build microservices using distributed programming best practices and tools which are best in the class (choice is subjective). Common techniques and components are at disposal of a developer who should be focus more on business logic instead of tweaking and finding right tools to do the job.

Quark-go is very extensible and allows to implement custom providers for all specified features below. It is not the goal of the project to support all available tools, configurations and components on the market. Project is focused to deliver community proven best preconfigured tools and components prepared OOTB to use it in your projects. It aims to be end-to-end solution for modern, distributed applications.

If you are interesed in more "enterprise" solutions. Please see the following projects:

Features

  • Message Broker - asynchronous messaging using RabbitMQ and Apache Kafka
  • Circuit Breaker - custom implementation of Circuit Breaker pattern
  • Logging - structured service diagnostics using Logrus library
  • Metrics Collection - service metrics collection using Prometheus
  • Service Discovery - service discovery using Consul
  • Load Balancing - custom implementation of load balancing strategy
  • RPC - Remote Procedure Call client and server using gRPC library
  • Request Tracing - using opentracing and zipkin
  • Data Access Layer
  • Middlewares:
    • Authentication - middleware for HTTP JSON Web Tokens authentication
    • Rate Limiter - custom implementation of HTTP rate limiter middleware
    • Error - panic error recovery middleware
    • Logging - request logging middleware
    • Metrics - middleware for request metrics exposing
    • Security - middleware for securing request via HTTP headers
    • Tracing - request tracing middleware

Planned features

  • More security - HTTP headers, OpenID Connect, Two-factor authentication etc.
  • Searchability - Elasticsearch indexing and searching
  • Data Access Layer - patterns for accessing data (document oriented)
  • Caching - data caching patterns

Installation

$ go get -u github.com/gkarlik/quark-go

Examples

Please see repo with example and documentation.

Releases

No releases published

Packages

 
 
 

Languages