Production

Overview

We recommend kubernetes for production installations.

Why Kubernetes for Production?

We recommend K8s, in part becuase:

  1. Provides support for rolling updates. It's easy to get the latest version and update. github actions
  2. Scale compute resources, easily scale up for ingestion or more users, and auto scale down
  3. Provides a standard security model including ingress and setup for optional http site for easy access
    And more.

K8s is a complicated system, but in general you do not need to know much about it to use it with Diffgram. Especially on Azure and GCP, you can be up and running in a few hours and there is very little maintenance required in most cases.

While there is a small hardware cost for the k8s control node, for most production installations this small cost will save a lot of human admin headache and give you a much better overall experience.

We are here to support you and with Enterprise Training Data Platform, have the optional services available including

  1. One time initial setup of your k8s cluster (planning support only or turn key)
  2. Ongoing, fully managed service of your k8s cluster(s)

Kubernetes Helm Chart

Kubernetes Helm

Kubernetes Github Action Example

github actions

Cloud or Cloud Free

Diffgram has extensive support to run on any of the major cloud providers.
However, you also can run Diffgram "Cloud Free". Any infrastructure that supports K8s can run it just as easily as cloud K8s. For storage you can select MinIO.

AWS Production Guide

AWS Guide

📘

Guide Requires Updates

https://github.com/diffgram/diffgram/issues/853

Azure Production Guide

Azure Guide

Helm

Docker Compose Production

📘

Not Recommended

This is generally not recommended but may be suitable to do a proof of concept, or for teams with 5 users or less.

If you do decide to do a production installation with docker compose a few things to consider

  1. Do use an external database & storage, like a dedicated Azure Postgres server or AWS RDS.
  2. You will have to manage upgrades more directly, including pulling images, potentially having the service be down during upgrades etc.
  3. You will have to manage scaling yourself, which may lead to undesirable performance characteristics and/or increased costs from unused resources.

While K8s is not without it's problems we do provide the helm chart which makes it fairly easy, and we also have examples of github actions that can be used to seamlessly deploy new versions.

Custom Docker

The Custom Docker option is an expert level choice for those forgoing both k8s and the provided docker compose template.

Each service is packaged as it's own docker container. In theory this means that you can flexibly choose how to deploy the containers including options other then compose, or k8s.