Giter VIP home page Giter VIP logo

polyglot-monorepo-playground's Introduction

polyglot-monorepo-playground

Showcase project that combines multiple services implemented in different languages and their deploy process.

Makefile is used to orchestrate build and deploy processes.

Makefile has a global deploy target and targets to build\deploy separate parts of the project.

Environment concept is used in the whole process. Generally project has dev and prod environments.

The e flag is used to run build\deploy process for specific environment, e.g.:

make deploy e=prod

If the passed environment flag differs from dev or prod, the build system assumes that this is a review environment and the concept of Review Apps is applied: the review-[env] namespace will be created and applications will be deployed there.

The deploy target uses kustimize and skaffold tools to manage k8s manifests.

CI

Project uses a Gitlab CI as an example but .gitlab-ci.yml can be easily converted to the manifest of any other CI system that supports running jobs in docker images.

Modules

Project consists of multiple modules that have there own targets for build\deploy.

ETC module

Different tools that should be build in first step since they are required for building process of other modules. In this specific project there are multiple docker images that are built and used in other modules.

Makefile command: make deploy-etc

OPS module

Services that are used globally for all environments, like monitoring, logging, alerting. They live in single separate ops namespace.

Makefile command: make deploy-ops

INFRA module

All that is not related to apps\services should be placed here. E.g. databases, queues, caches. These tools are deployed to dev\prod environments and to review apps.

Makefile command: make deploy-infra e=dev

Services modules

These are the services that actually produce some business logic of the application. The are deployed to dev\prod environments and to review apps.

JAVA

Java based services use Gradle tool to manage build process.

Makefile commands:

  • make build-java e=dev
  • make deploy-java e=dev

JS

JavaScript based services use Lerna tool to manage build process.

Makefile commands:

  • make build-js e=dev
  • make deploy-js e=dev

polyglot-monorepo-playground's People

Contributors

slamdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.