Production should use "production" build artifacts
One of the build team's core goals for 2017 is to provide production quality methods for deploying GitLab in a cloud native way. One of the largest cloud deployments of GitLab in the cloud is actually ourselves, with GitLab.com.
While we should ensure that our deployment methods are extremely easy to use and get started with, they should also be flexible enough to be able to scale up to GitLab.com scale. This means our customers can be assured our standard supported build tools can scale as high as they need, and production will be able to utilize production deployment assets instead of inventing their own.
To ensure this is possible, our production GitLab.com service should utilize the same deployment methods we recommend to customers. If it doesn't work for GitLab.com, we should strongly consider whether we are doing something wrong.
Some of the existing projects we want to accomplish in 2017 to enable this:
- Provide a container per service (https://gitlab.com/charts/charts.gitlab.io/issues/14)
- Postgres HA https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1807
What else do we need to consider to allow this to happen?
- I imagine one of the challenges is that we are not leveraging a scheduler in production. This means while we strongly recommend using Kubernetes to our customers, we are not following this model for GitLab.com.
- This means we depend on other tools to provide these missing features, like Consul or Terraform.
- Our logging and security stack, I believe based on ELK, is not something we typically provision for customers.