Skip to content

This project is a prototype for microservice on Golang with all required dependencies

License

Notifications You must be signed in to change notification settings

crabio/archaeopteryx

Repository files navigation

archaeopteryx

codecov Go Reference

This project is a prototype for microservice on Golang with all required dependencies

How to use

archaeopteryx helps you to create service with gRPC, gRPC proxy for REST API and some editional features from the box. All features can be found in the list

You can find example of project in the example folder.

Config

Service has configuration, bases on https://github.com/jinzhu/configor. Your application should reimplement config of server like:

import (
	archaeopteryx_config "github.com/iakrevetkho/archaeopteryx/pkg/config"
)

type Config struct {
	archaeopteryx_config.Config
}

Logger

Service has methods to create logger:

import (
	"github.com/sirupsen/logrus"
	archaeopteryx_config "github.com/iakrevetkho/archaeopteryx/logger"
)

func main(){
    var log *logrus.Entry
    log = logger.CreateLogger("main")
}

All messages will be formatted with component name to make easy search by this name:

Logs example

Service server interface

All custom services should implements interface service_server:

// IServiceServer - interface for services servers for archaeopteryx.
//
// All services should implements this interface
// to make possible archaeopteryx registrate services handlers in server
type IServiceServer interface {
	// RegisterGrpc - HealthServiceServer's method to registrate gRPC service server handlers
	RegisterGrpc(sr grpc.ServiceRegistrar) error
	// RegisterGrpcProxy - HealthServiceServer's method to registrate gRPC proxy service server handlers
	RegisterGrpcProxy(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error
}

Features

Install dependencies

make install

Generate protobuf & docs

make generate

Presequinces

archaeopteryx requires folder for log files. To create it run:

sudo mkdir /var/log/archaeopteryx
sudo chown $USER /var/log/archaeopteryx

Test

Unit test

For unit tests use:

make test

Lint

For lint use:

make lint

gRPC

For testing gRPC API use Kreya

Folder kreya contains Kreya project for working with the project.

Also archaeopteryx is compatible with gRPC reflection

About

This project is a prototype for microservice on Golang with all required dependencies

Resources

License

Stars

Watchers

Forks

Packages

No packages published