Orion

module
v0.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 23, 2022 License: Apache-2.0

README

Orion Build Status Go Report Card codecov GoDoc

Orion is a small lightweight framework written around grpc/protobuf with the aim to shorten time to build microservices at Carousell.

It is derived from 'Framework' a small microservices framework written and used inside https://carousell.com, It comes with a number of sensible defaults such as zipkin tracing, hystrix, live reload of configuration, etc.

Getting Started

Follow the guide at https://github.com/carousell/Orion/blob/master/orion/README.md

Setup Instructions

Orion is written in golang, please follow instructions on https://golang.org/doc/install to install, or you can also run

brew install golang

or

sudo dnf install golang

Make sure you are on go 1.9 or later add the following lines to your ~/.profile

export GOPATH="$HOME/code/go"
export GOBIN="$GOPATH/bin"
export PATH="$GOBIN:$PATH"
export PATH="$HOME/.gotools:$PATH"

source your ~/.profile

source ~/.profile

then create the code dir

mkdir -p $GOPATH

we use govendor to vendor package in Orion, install it by running

go get -u github.com/kardianos/govendor

another helpful tool to check for unupdated packages is Go-Package-Store, install it by running

go get -u github.com/shurcooL/Go-Package-Store/cmd/Go-Package-Store

now clone this repo

mkdir -p $GOPATH/src/github.com/carousell/
git clone git@github.com:carousell/Orion.git $GOPATH/src/github.com/carousell/Orion

You need the following tools to better develop for go

go get -u golang.org/x/lint/golint

now you can build the package by using make build

gRPC

for gRPC, you need to follow the following steps

get gRPC codebase

go get -u google.golang.org/grpc

install protobuf

brew install protobuf

install the protoc plugin for go

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

install the protoc plugin for orion

go get -u github.com/carousell/Orion/protoc-gen-orion

Project Status

Orion is in use at production at Carousell and powers multiple (100+) services serving thousands of requests per second, we ensure all updates are backward compatible unless it involves a major bug or security issue.

License

This code is available under the following https://github.com/carousell/Orion/blob/master/LICENSE

Directories

Path Synopsis
Lets create a minimal service with Orion
Lets create a minimal service with Orion
echo/echo_proto
Package echo_proto is a generated protocol buffer package.
Package echo_proto is a generated protocol buffer package.
echo/service
Package service must implement the generated proto's server interface
Package service must implement the generated proto's server interface
simple/simple_proto
Package simple_proto is a generated protocol buffer package.
Package simple_proto is a generated protocol buffer package.
stringsvc/stringproto
Package stringproto is a generated protocol buffer package.
Package stringproto is a generated protocol buffer package.
stringsvc2/stringproto
Package stringproto is a generated protocol buffer package.
Package stringproto is a generated protocol buffer package.
Package orion is a small lightweight framework written around grpc with the aim to shorten time to build microservices
Package orion is a small lightweight framework written around grpc with the aim to shorten time to build microservices
helpers
package helpers contains helper that services can use
package helpers contains helper that services can use
httptripper
Package httptripper provides an implementation of http.RoundTripper that provides retries, popluates opentracing span info and hystrix circuit breaker.
Package httptripper provides an implementation of http.RoundTripper that provides retries, popluates opentracing span info and hystrix circuit breaker.
httptripper/retry
Package retry provides an implementation for retrying http requests with multiple wait strategies
Package retry provides an implementation for retrying http requests with multiple wait strategies
httptripper/strategy
Package strategy provides strategies for use with retry
Package strategy provides strategies for use with retry
log
Package log provides a minimal interface for structured logging in services.
Package log provides a minimal interface for structured logging in services.
log/loggers
Package loggers provides loggers implementation for log package
Package loggers provides loggers implementation for log package
log/loggers/gokit
Package gokit provides BaseLogger implementation for go-kit/log
Package gokit provides BaseLogger implementation for go-kit/log
log/loggers/logrus
Package logrus provides a BaseLogger implementation for logrus
Package logrus provides a BaseLogger implementation for logrus
log/loggers/stdlog
Package stdlog provides a BaseLogger implementation for golang "log" package
Package stdlog provides a BaseLogger implementation for golang "log" package
log/wrap
Package wrap provides multiple wrap functions to wrap log implementation of other log packages
Package wrap provides multiple wrap functions to wrap log implementation of other log packages
pubsub/message_queue/mocks
Code generated by mockery v1.0.0.
Code generated by mockery v1.0.0.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL