ยง Engineering Process

24 May 2022 | Anton Kril Tweet

Dev Environments

  1. Local development environment SHOULD be as close as possible to the production environment
  2. Every service MUST be containerized. Dockerfile should be stored in the service repository

Repositories

  1. Every service SHOULD live in a separate repository
  2. Every repository MUST have a README.md describing
    • Code purpose
    • Usage examples
    • Configuration options
    • For repositories containing services - installation steps
  3. Every repository containing a service should have Dockerfile recreating the production environment for the service
  4. Libraries should only be extracted to separate repositories if they are used by more than one service. Sidecar services should be preferred to shared libraries.

Migrations

  1. Every significant refactoring that requires a whole-system migration MUST start with a design document shared with the team.
  2. Every code migration should start by adding a rule/lint that forces all new code to be written in a new way

Artifacts

  1. Vision document describes the desired state of the system. It includes
    • the goal of the system
    • intended customers and their needs
    • supported scenarios
    • non-functional requirements
  2. Strategy document describes how the vision should be implemented