GitLab B. V. also reacts to the current price adjustments of the industry and, thus, increases the prices for the use of the "Free Tier of GitLab SaaS" for the first time on October 19th.
This limits the previously free "Free Tier" package of GitLab SaaS for private top-level namespace visibility to 5 users. The limit applies only to the "Free Tier" package and not to other offerings, such as public top-level namespace visibility or paid SaaS and self-managed subscriptions, as well as self-managed free tier users and community programs, including GitLab for Education, GitLab for Startups, and GitLab for Open Source. However, it affects all other users, which can mean a drastic increase in costs for affected organizations.
More specifically, the restrictions will be as follows:
Storage limit = 5 GB
Transfer limit = 10 GB per month
CI/CD limit = 400 minutes per month
User limit = 5 users per namespace
These are, at least for us as Validity Labs, very drastic restrictions, as we currently require about 28 developer seats in 2 groups, which would result in a very high cost of about 432 $ per month (5.784 $ per year) including storage.
These are costs that are not sustainable for many small companies, which is why we at Validity Labs AG looked for alternatives.
And we found them.
Of course, we don't want to deprive anyone of the knowledge about this and in the following two alternatives we show how fast and easy an alternative could look like.
How we proceeded:
In the first step, of course, we analyzed the extent to which we use and need Gitlab's offerings and the extent to which we continue to need to do so.
The current scope we need is as follows:
Our storage needs at the moment, including code + Docker image, are around 280 GB. That can be split into the code itself (15 GB) and the Docker images, which are about 265 GB.
Therefore, we would need to buy additional storage from GitLab. The price is 60 $ per 10 GB of storage for one year with the new changes. This works out to 1,680 $ per year - or 140 $ per month - that we need for 280 GB. Since the new update only allows 5 users per namespace or group, we would also need to purchase additional seats here to add all users to our two groups. Currently our requirement is 28 seats in total for both of the groups combined. Since the first 5 seats in both of the groups are already available, we would need to buy an additional 18 seats at the rate of 19 $ per user per month, this accounts to 342 $ per month. In total: 140 $ + 342 $ = 482 $ per month
Thus, the setup described above would cost us about 482 $ per month (5.784 $ per year)!
While there are a number of undeniable advantages, such as maintenance and - at least in theory - no downtime, the disadvantages still outweigh the advantages:
With the new updates comes the announcement that old repositories with too much inactivity will be deleted GitLab.
The new updates limit us to only 5 users per namespace.
Security is out of our hands.
As mentioned in the beginning, this "solution" would not only be a high financial hurdle, but also a very strong restriction. Of course, we could also opt for Gitlab's "Premium" package directly. This would cost us 19 $ per month per user, resulting in a cost of 532 $ per month (6.384 $ per year) and of course we will also need extra storage which we did not take into account here. However, this package is not of interest to us for various, internal company reasons and it’s even more expensive though.
Let's have a look at the alternatives we found
The first alternative we looked at was GCP Google Cloud Platform, where we can host a Gitlab Virtual Machine (VM) ourselves.
This brings many advantages:
Cheaper than the Gitlab SaaS.
Professional service from GCP.
No restrictions on the number of users per namespace and storage. It all depends on our own infrastructure on which we use GitLab.
Security depends on us and our needs.
Of course, there are still some disadvantages:
It is still not the cheapest option.
Maintenance costs by developers and infrastructure engineers are required.
Considering the above and our own requirements, it would cost us about 168,9 $ per month (2.026,8 $ per year) to host a VM for our Gitlab on GCP.
Let’s split it up:
The recommended system requirements for running GitLab efficiently are a system with 4 cores and 4 GB RAM. Now, we think on GCP an n2-custom-4-4096 instance type would suffice to our needs. This would cost us about 122.97 $ per month. Additionally, we would also need to configure a Persistent Storage for our VM of about 30 GB for the code which would cost us 1.38 $. Furthermore, we would need to store our Docker images on GCP's Artifact Registry which would account for an additional 39.95 $. On top of that, there would also be costs for storing backups which is 4.60 $ per month (based on price increases from October) which would put us at a cost of between 168.9 $ per month as mentioned above.
All that glitters is not Google!
However, we considered another option, which was to run a virtual machine on the Hetzner servers instead of on GCP. Hetzner Online GmbH has data centers in Germany and Finland.
This results in a lot of advantages:
Possibly the cheapest option for us.
No restrictions on the number of users per namespace and memory. This depends on our own infrastructure here, where we use GitLab.
The disadvantages are not very surprising now:
Maintenance costs by developers and infrastructure engineers or system architects.
Hetzner offers multiple Virtual Machines to rent in the cloud and a lot of them would meet our requirements due to the suggestions of Gitlab. The following three setups would come into consideration due to their hardware facilities:
CPX31 - 4 core vCPU AMD, RAM 8 GB, disk space 160 GB = 16,18 € per month.
CX41 - 4 core vCPU AMD, RAM 16 GB, disk space 160 GB = 20,71 € per month.
CPX41 - 8 core vCPU AMD, RAM 16 GB, disk space 240 GB = 29,99 € per month.
In total, the best setup here would cost us 29,99 € per month for our 28 developers and our demand for disk space. In addition, we will have to pay for storing backups and the Docker images for each setup, because similar to Option 2, we would also need to store our Docker images in GCP's Artifact Registry. This will cost us 39.95 $ month additionally for the storage and 4.60 $ per month (based on the current new price changes on GCP, beginning to October) for the backups. So in the end, we're looking at a total of an unbelievable 74,27 $ (39,95 $ + 4,6 $ + 29,72 $ - which is the current price for 29,99 €) per month.
So, what's the next step?
Due to the low costs, we therefore decided to run our GitLab instance on Hetzner. Furthermore, we decided not to go for the cheapest option mentioned above and managed to get a dedicated server for 55,68 € (this is currently 55,19 $) per month. We chose this because a dedicated server meets our requirements better than a virtual machine in the cloud. This way, we don't have to share the same infrastructure with other tenants. We bought this server at an auction from Hetzner. With it, we were able to buy a very powerful machine for a total of about 56 € per month, which allows us to run two Gitlab CI runners on the same server in addition to the Gitlab instance:
CPU: Intel Core i7-8700
Drives: 3 x 1 TB SSD
Due to the number of developers on the team and the much higher setup and maintenance overhead, we decided against a cloud-native, high-availability architecture because it would simply be too much for our needs. In addition, all components of GitLab can manage 1.000 users by default. Also, sign-ups are disabled on the GitLab instance to prevent people outside of Validity Labs AG from creating an account on our GitLab instance. Last but not least, we have enabled Google OAuth, making it easy to sign in with [email protected] email.
Since we have always had a high demand for quality, it was very important for us to perform an extensive benchmark. It is very important for us to understand how much load the architecture which we have decided can handle, as there is a great need for performance/load testing for our architecture. Therefore, we ran the GPT - GitLab Performance Tool - with some K6 tests:
Backups are performed regularly and stored in different locations. To monitor the Gitlab instance, Gitlab comes with Prometheus and Grafana by default and includes a very detailed dashboard for monitoring various metrics. However, it is also possible to integrate other monitoring solutions with support for Prometheus metrics like Netdata.
As a result, we now have our own fully local solution for Gitlab in operation for a total of 99,74 € (server and storing + backup costs).
But why are we actually writing a blog post about this now, since we are a blockchain technology company?!
Many companies will be faced with this from the 19th of October. And we have already taken the trouble to put together all these cost calculations, requirements and research. We now know what the costs will be and we also know how challenging it is to build such a solution. There are certainly companies that have a similar number of developers (or even more). Maybe they also have as many repositories as we do.
Then, at least you now know how much it will cost you to stay with Gitlab. But having your own solution also has its advantages and doesn't have to be difficult to set up at all.
We will be happy to help you with advice or even with our services, because we can help you find your own solution, tailored exactly to your needs. As you have seen, for example, the number of developers has a direct impact on the architecture of a possible self-hosting solution. This is where you can benefit from our expertise in the long term.
Just contact us and together we will find a solution for your own Gitlab environment, hosted quickly and easily.
**While we have made every attempt to ensure that the information contained in this site has been obtained from reliable sources, Validity Labs AG is not responsible for any errors or omissions, or for the results obtained from the use of this information. All information in this site is provided "as is", with no guarantee of completeness, accuracy, timeliness or of the results obtained from the use of this information.