And when they do go down, how long will they be unavailable? When this happens (and it will happen) please post here so we can say "why are you running infrastructure yourself?"
Now I’ll tell you the real problem with it: it worked great for people who were located in the U.S., but it was terrible for certain remote employees due to increased latency, and the fix for that would be to set up a complicated replication setup that puts data closer to people not near the main instance.
There’s obviously other issues, but that is one that is probably commonly overlooked that most SaaS solutions can do better on.
I currently manage an internal gitlab instance with some remote coworkers, but I haven't heard any complaints about latency. Although tbf, I feel like we've barely scratched the surface of what gitlab supports
When I moved to a new company, the GitLab instance was still up, and last I was aware, many years down the road, it is still in use. Feature-wise, we were very much satisfied, and the GitLab CI model with Docker executors worked very well for us.
Worst case is losing commits between going down and backups, but even then it'll be minimal if you set your backup to simply push to a another origin.
I pay for someone else to worry about most services, but git doesn't have to be one of them.
Very simple to set up, and as long as your data volume is not lost (which can happen, but is very rare), such a system would recover from a host failure by itself faster than most people could react to it going down. In the unlikely case that you lose the EBS volume, you'd just recover from snapshots manually.
If something like Git went down — which it never — it was a few clicks away from coming back
Working with competent people is a blast
Have we as an industry forgot how to make systems? that's pretty telling if so.
Why are people so utterly afraid of running their own systems.
If a SaaS platform goes down it's followed by "#hugops; running large systems is hard!", when someone says "Well, if it's hard, why not break it into smaller pieces and run it myself" it's met directly with "Do you think you can do better!?!".
Honestly, probably, maybe not. Why does it matter?
Those two things cannot be true simultaneously. You cannot say "running big systems is hard" and "they can run a big system better than you can run a small system".
I'm not going to fall into the trap of arguing points like the fact that if you own the data you can have your own D/R & backup strategies and the fact you can run maintenance's on your own time (hell: you can run maintenance's to migrate things around, which is more than github can do, which is not an indictment of them, just the nature of being a hosted service).
Honestly, I miss sysadmins. People who were not afraid of servers, even if they said "no" sometimes. Because, you know, being afraid of servers and hosting things is just pathetic.
When you run your own servers, not only do you need to maintain them, you are also responsible for their certification and getting them audited.
As a manager in a medium sized company, I think it is essential to identify what "needs building" and what could be bought to ensure the needs of stakeholders are met in a timely manner.
Back when I was working in eCommerce (PCI-DSS Tier 1, Cardholder data on premises) it was basically impossible to use hosted services.
As then, it is now: "Compliance" is just enough nebulous of a word to prevent critical thinking.
Sure you can build your own infrastructure but don’t pretend that’s superior. Each has its pros and cons.
The last line probably is making fun of their reaction — any person as dogmatic as the parent commenter would comment someone with their own infrastructure going down with that comment.
They can absolutely be true simultaneously. In fact, I can't name a logic system where those two statements comprise a contradiction. They are logically completely unrelated to each other.
DNS goes down for a particular dot com? BGP hijinks? Backhoe through the major fibre serving your workplace?
All of these are going to happen and will lead to downtime out of your control or the control of the SaaS provider.
Thankfully git is designed to be decentralised and developers can continue to work even if they have to use paper books as reference material and not Stack Overflow.
Compared to GitHub, how often does your Gitea instance go through code changes? How many major features have been switched on in that instance during the past year without any hiccups?
https://blog.gitea.io/2022/02/gitea-1.16.0-and-1.16.1-releas...
https://blog.gitea.io/2021/08/gitea-1.15.0-is-released/
But I'm sure Github changes a lot more. However, the question is if those changes are worth the instability. For my workflow I just want my repos to be accessible, have my source, issues, and wiki accessible, and of course my basic git operations working. If that core functionality is actually not working at times, I'd definitely consider changing the git provider.
The problem is that ultimately the downtime itself matters and not the reason, and if you don't need any of the features that GitHub offers, then the self-hosted route is a better option.
In particular, all of the new features whose addition causes instability.
New features breaking is a lot more understandable - even expected - than regressions and refactoring failures.
Here is a early version of their landing page from 2008 (the year they launched): https://web.archive.org/web/20081111061111/http://github.com...
Notice the logo says "Social code hosting" and the messaging of the page is mostly around popular repositories, collaborative features and other social elements.
We've been using exec and ssh runners when containers are not enough (for example, when you need to juggle a few VMs or build some complicated Docker image, and using docker-in-docker is not fun).
https://docs.drone.io/pipeline/exec/overview/
https://docs.drone.io/pipeline/ssh/overview/
GitHub Actions are nice… when they're actually working.
> Yes, I know, GitHub is 10⁹⁹⁹ times larger than our puny Gitea instance, and that's why they're having issues
Exactly. That is also my overall point. [0] It makes no sense to go 'all in' on GitHub and something goes down and everyone is stuck once again.
That’s frightening, we’ve been using it for multiple years now. It’s running fine and the only short downtime is every few weeks for the update.
What happened to your instance?
Tried restoring it to the older version to run through the upgrade path and the process didn't want to work. Wish I could be more specific here but I gave up on it and decided it'd just be quicker to whip up a script to recreate all the groups/projects/CICD in a new install and push repos from backups
Don't let your GitLab server get outdated and don't consider it a valid backup unless it was taken with the latest version to avoid the same
Also it wasn't relevant here but make sure you're backing up the etc files too, while that wasn't an issue for me it could easily trip you over in a worst case scenario ( https://docs.gitlab.com/charts/backup-restore/backup.html#ba... )
Not a complaint, it's just one of the hats that needs wearing sometimes, would have been easier on me if someone else was handling it though :P
We’ve been updating about as soon as an update is released for a while now, with very good results. (I’d rather have to restore a backup or a snapshot than to be running without the latest security fixes. If gitlab is down for an hour (didn’t happen in ~3 years) at least all developers have their local repo.)
No pressure, but I'm seriously considering standing one up but it would need to be production ready.
Actually not "vendoring" dependencies from github is very much not production ready in many cases.
So the big issue for any non-trivial or highly available setup is going to be how you get high availability for the local storage volume. There are tons of options with various tradeoffs and levels of complexity here--simple local disk RAID, distributed filesystems like gluster or ceph, etc. I think this is the real crux of getting a good gitea instance going.
No matter what figure out and test a good backup and recovery solution!
Thanks that's quite helpful. If we do it in prod we'll have to accept single-instance.
No k8s or anything like that. An Ubuntu LTS virtual machine on top of I don't know what hypervisor (probably Hyper-V). Gitea requires very few resources.
Data is stored in PostgreSQL 11. Probably should be upgraded at some point, but it's working fine for now.
A Drone CI instance runs on that same machine. It controls CI workers on a dozen other VMs.
Everything is in Docker containers under docker-compose for two reasons: easy upgrades, and the ability to shove all data into a single directory.
caddy for HTTPS.
Sonatype Nexus for package repositories (caching upstream npm, nuget, maven, composer, and our own internal repos). This one is pretty heavy and will probably be moved to a separate machine at some point.
Never had any issues with any of these in about three years we've been running this setup.
I was a bit facetious with the "zero downtime" statement. It has about 30 seconds of downtime per month, but it is always planned and outside of working hours deep into the night.
There's been zero seconds of unplanned downtime.
Basically you do:
$ docker-compose pull
$ docker-compose up -d
and half a minute later it is running new versions. If anything is broken (it hasn't been yet), call the sysadmin guy, and a few minutes later he restores a VM snapshot.Backups are being done on the hypervisor's level. I don't know about that much.
Rule of thumb is that 10^100 of anything doesn't fit in the observable universe.