Distribution tech stack

This document lists the technologies used by the Distribution team, what they are used for, and best practices for each within Distribution.

Also see internal infrasturcture and tools for specific infrastructure and tools.

Go

Use cases: Services and applications

Best practices:

Typescript

Use cases: Complex automation and scripting

Best practices:

  • We use Deno as our Typescript runtime instead of Node
    • Typescript is not a core part of our expertise, so Deno takes care of tooling and formatting
  • Adhere to deno fmt, add a CI workflow that validates the result of deno fmt --check
  • Avoid using third-party dependencies (try to stick to the standard library)
  • Scripts should be executable (chmod +x) and have some variation of #!/usr/bin/env deno run as the sha-bang

Bash

Use cases: Simple automation and scripting

Best practices:

Terraform

Use cases: Infrastructure provisioning

Best practices:

Kubernetes

Use cases: Deploying services

Dhall

Use cases: Providing configuration for our deployment types (work in progress).