SingularityInteractive / cohesiv

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.
1 stars 0 forks source link
aws docker golang grpc kubernetes

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

Installation

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

  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

  2. Push it to your remote

    push

  3. Add commits

  4. 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