Skip to content

A multi-tier, microservice architecture monorepo built to supplement Gloo's monolith with services useful to third-party clients, without modifying Gloo's core codebase.

Notifications You must be signed in to change notification settings

SingularityInteractive/cohesiv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cohesiv

Cohesiv is a multi-tier, microservice architecture monorepo built to supplement Gloo's monolith with services useful to third-party clients, without modifying Gloo's core codebase.

This is intended to be a cloud-native application, deployed to AWS to showcase the best practices in application deployment, utilizing a modern stack including Docker, Kubernetes, GRPC, Golang, and Node.

Table of Contents

Dependencies

  • npm i -g yarn
  • yarn global add tslint typescript
  • Add to ~/.bash_profile, ~/.bashrc, etc. (your shell startup script): export GOPATH=$HOME/go

Installation

  • Clone into $GOPATH/src/github.com/SingularityInteractive/cohesiv
  • $ brew install dep
  • dep ensure
  • yarn

Note: This project must exist in your GOPATH to use vscode language features like intellisense. The path above works with a default Golang setup

Usage

To build all Go and Typescript services, then docker-compose, run: sh up.sh

Updating GRPC Spec

  • Learn about GRPC
  • Grab the protoc binary from here, and put it in your $PATH
  • Modify cohesiv/cohesiv.proto, and update existing code if necessary.
  • To compile new Go interfaces or Typescript definitions from the proto spec, run:
  sh gen-protos.sh

or

  # Go types and interfaces
  protoc -I cohesiv/ cohesiv/cohesiv.proto --go_out=plugins=grpc:cohesiv
  # TS defintitions and modules
  ./node_modules/.bin/rxjs-grpc -o cohesiv/cohesiv.ts cohesiv/*.proto

Support

Please open an issue for feature tracking or support.

Contributing

  1. Branch off develop, adding issue number in the branch name

branch

  1. Push it to your remote

push

  1. Add commits
  2. Open a pull request into develop with the issue number in the title eg closes #42

open a pull request

  1. To release to our staging environment, merge develop into staging, which will trigger a ci deployment.
  2. To release to production, merge staging into master.

Deploying

The following steps will walk you through on how to prepare requirements, deploy and run this application.

Note: If you see any issues with the steps below, please open an issue.

  1. Requirements
  2. Set up service credentials
  3. Set up a Kubernetes cluster on AWS using KOPS
  4. Set up storage
  5. Set up continuous deployment on CircleCI

About

A multi-tier, microservice architecture monorepo built to supplement Gloo's monolith with services useful to third-party clients, without modifying Gloo's core codebase.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •