terlar / nix-service-monorepo

Service monorepo managed with Nix (Playground)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nix-service-monorepo

Service monorepo managed with Nix (Playground)

Research

Application

Nix

Terraform

Testing

OpenAPI

GitHub Actions

Methodology

Development

VCS

Monorepo

Guidelines

Derivations

  • Keep small and isolated

Components

  • A small isolated “deployable” unit (a datastore, a delivery mechanism, an API GW, a set of lambda functions)
  • Self-contained
  • Loose connection to other dependencies (components)
  • 12 factor app

Services

  • Built up from several different components.

DSL

Nix module system to easier extend parts

Topology

system and subsystem instead of service and component?

Cell
A group of related services in a specific region/stage.
Service
A service provides a solution for a particular need. The service itself is mostly a concept and is the sum of its components. Interaction with the service is done via one of its components.
Component
A small isolated part of a service. It could be some infrastructure serving a specific purpose or an application. This is in order to limit the scope of deployments and support incremental updates without big risk/impact, multiple components work together. Support of minimal branch deployments. Not deploying all the infrastructure, but only the pieces a developer touches.

For example:

  • A data store for an entity
  • An HTTP API for an entity
  • An event-mechanism or message delivery

A component includes configuration for which regions/stages are supported.

Stack
Deployment of a component to a specific region and stage (eu-west-1 production)
Command
A command to be executed on a stack
  • plan
  • deploy

About

Service monorepo managed with Nix (Playground)

License:MIT License


Languages

Language:Nix 90.5%Language:Go 6.7%Language:Emacs Lisp 2.8%