Categorygithub.com/go-orion/orion
module
0.0.0-20190220103131-045890faf5e6
Repository: https://github.com/go-orion/orion.git
Documentation: pkg.go.dev

# README

Orion Build Status Go Report Card 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/go-orion/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/go-orion/
git clone [email protected]:go-orion/Orion.git $GOPATH/src/github.com/go-orion/Orion

You need the following tools to better develop for go

go get -u github.com/golang/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/go-orion/Orion/protoc-gen-orion

Project Status

Orion is in use at production at Carousell and powers multiple (40+) 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/go-orion/Orion/blob/master/LICENSE

# Packages

Lets create a minimal service with Orion API Interface Your service starts with the API interface, In orion we define all API interfaces as a protobuf file (stringsvc/stringproto/stringproto.proto) syntax = "proto3"; package stringproto; service StringService{ rpc Upper (UpperRequest) returns (UpperResponse){ } rpc Count (CountRequest) returns (CountResponse) { } } message UpperRequest { string msg = 1; } message UpperResponse { string msg = 1; } message CountRequest{ string msg = 1; } message CountResponse{ int64 count = 1; } Above protobuf file describes a service called "StringService" and defines the endpoints "Upper" and "Count", As we can see all our API Contracts are clearly laid out and makes it easy for other services to integrate with our service Generating Service Code we can execute protoc -I .
No description provided by the author
No description provided by the author
protoc-gen-orion is a plugin for the Google protocol buffer compiler to generate Orion Go code.
No description provided by the author