So we are trying to transmute our old application platform into a cloud-native platform. We looked at Pulumi for standing up our infrastructure using our favorite programming language. However, where are we going to store the actual code for our application and infrastructure?
Using Git, but which Git?
By now, everyone should know that git is the source code management (SCM) of choice in today’s world. It’s open source and amazing when we are talking about version control. However, most of us don’t want to host our own git repositories. I mean, you can, but a home grown solution can be painful.
Now I know that most people will think GitHub when it comes to managed git repos. It makes sense, after all, they reported 100M repositories back in 2018. However, as I have mentioned before, I am a fan of the underdog.
While GitHub is a favorite of mine (you can even see my repos here), it isn’t my preferred git SCM. For one, GitHub isn’t open source. We all know my feelings about open source technology. I am 100% in favor of it. That’s not to say that I won’t use closed source technology, but if there is an open source alternative that does what I need, I will go the OSS route. That’s not to say that GitHub is bad. If it works for your organization, go for it. However, they do appear to have fallen out of favor recently with the open source community as seen in this blog post from the Software Freedom Conservancy.
GitLab, the Open Source DevOps platform.
GitLab is a bit of an underdog but it is also amazing! For one, it is open source, they even have the FOSS version without the proprietary components and encourage community contributions. However, it’s more than just a place to store code.
GitLab also does GitOps well. What are GitOps? I often see it as the next evolution of DevOps. It takes all of the best practices of DevOps but uses git as the source of truth. GitLab, as a SCM, can handle code, merge requests, and continuous integration. When it comes to deployment, GitLab has a Runner feature that can handle you CI/CD functionality. Having a built in CI/CD pipeline can be a game changer.
While there are many great CI/CD pipelines out there, I like GitLab’s due to the open source nature of the product and that it comes with a lot of orchestration features built-in, not relying heavily on third-party plugins to perform CI/CD tasks. I do wish that they would integrate Tekton more into it but judging from this issue, it looks like it’s a work in progress.
I should also mention that they are a public company. Not just public in the sense of being on the NYSE (though they are) but they also have a public issue tracker and their OKRs are public. They also integrate well with Pulumi so that helps with the Cloud Alchemy methodology.
Now are there downsides? Sure. For one, it isn’t as popular as GitHub so you may not see as many integrations out there. It also lacks the backing of a large corporation like GitHub has from Microsoft so there is room for the argument that maybe they don’t develop as fast.
I also find it interesting that despite it’s open source nature, it isn’t more embraced by the open source community. I suspect that could change in the future with some recent CoPilot controversies. I know that I personally have to mirror many of my repos onto GitHub just to ensure that it will get seen.
Now you might be saying “this is fine and dandy Jay but what about the code? Are you gonna show me how to use it?”. The answer is “of course!” I have been backlogged lately but I will be sharing everything in this new GitLab group dedicated to Cloud Alchemy. I hope to have an update by August 2022 so stay tuned!