GitLab & Cloud Providers
General
GitLab has many components that lend themselves very nicely to many public cloud offerings. In this section, we will discuss in more detail the specific cloud offerings from Amazon AWS Though the concepts for both may apply to other public cloud and even private cloud providers such as Google's GCP, Microsoft Azure, Red Hat OpenShift, IBM Private Cloud, Pivotal Cloud Foundry and other offerings.
Database and Caching layers
Many cloud providers offer the ability to use their tooling for databases and caching - Postgres and Redis in the case of GitLab. These will allow you to easily create a scalable, highly available layer for each of these tiers for GitLab.
File system high availability
Git itself is very I/O intensive when it comes to using the underlying file system. As such, some cloud provided file systems that offer replication do not provide the throughput required for git. We continue to work with these providers and work towards Gitaly HA out of the box, but until then it is still necessary for you to create a method for a highly available file system for the git repositories to be stored on.
Object storage
Most cloud providers provide a type of object storage solution for artifacts and other objects. GitLab can utilize any S3-compatible object storage infrastructure to store many of the items outside of the git repositories themselves. Items such as uploads, build artifacts, container images, backups, and other things can be stored in object storage rather than on disk. This can reduce the overall need for disk space and replication of those items by off-loading them to cloud-native object stores.
Load balancing and multiple availability zones
Also native to most cloud providers are ways to provide traffic load balancing and/or shaping to 1-to-n application servers. Once you have a solution for making the database, file storage and caching layers highly available and connectable to multiple application servers, these tools can help to distribute the load of incoming requests.
Amazon AWS
GitLab on AWS can leverage many of the services that are already configurable with High Availability. These services have a lot of flexibility and are able to adapt to most companies, best of all is the ability to automate both vertical and horizontal scaling.
Architecture Overview
Components
- EC2: GitLab will deployed on shared hardware (EC2).
- EBS: We will also use an EBS volume to store the Git data. S
- S3: We will use S3 to store backups, artifacts, LFS objects, etc.
- ELB: An Elastic Load Balancer will be used to route requests to the GitLab instance. See the Amazon ELB pricing.
- RDS: An Amazon Relational Database Service using PostgreSQL will be used to provide a High Availability database configuration.
- ElastiCache: An in-memory cache environment will be used to provide a High Availability Redis configuration.
For more information and a walkthrough of the actual installation, see https://docs.gitlab.com/ee/install/aws/.
Google GCP
GitLab's own large instance of GitLab - gitlab.com
- runs on Google's cloud - Google Cloud Platform. To learn more see Installing GitLab on GKE
Next
You can close this issue now