Learn the pros and cons of each CI/CD environment in this video.
- [Instructor] Let's discuss a few of the benefits and drawbacks to using tools from each of the CI/CD tool categories. Hosting your own CI/CD tools gives you the most flexibility in comparison to any other option. You can specify the entire technology stack, including the software, the hardware, and the network. You also have more control over any data that flows into or out of the tool. You won't have to worry as much about unexpected data leaks or potentially harmful exposures. That flexibility and peace of mind comes at a price though. Since you own the entire technology stack, you also have to maintain it. This can be difficult if you don't have the time or the inclination to install and administer a full blown CI/CD system along with your normal duties. You'll also be bounded by the skill of the infrastructure you have on hand. If all of a sudden, you need to increase the throughput of your pipelines, you'll be limited to the capacity of your existing system. Also, getting started with self-hosted tools can be intimidating for the uninitiated, causing difficulties with bringing resources online. Software as a Service options, on the other hand, do their best to make it super easy to get started. All the heavy lifting of maintaining the tool is abstracted away and all you need to do is worry about coding your application. There are also plenty of free or reasonably priced SaaS CI/CD services available. And maybe it's just me, but I love the fact that the SaaS CI/CD tools create triggers from your repo automatically. For me, that's just one less thing to think about. SaaS tools might be free or have low fees to start, but they can become expensive over time. As your team or rate of development increases you can see large bills from the CI/CD service provider. And lastly, there may security concerns when running your data through a system that could be maybe even on the other side of the world. Honestly, security vulnerabilities have the potential to pop up in all of these systems, so just assume that's the case for the other categories, as well. If you're using a Cloud Service Provider's CI tool, you'll be more likely to use their other services, as well. With easy integration, it just makes sense to keep everything under the same roof. And along with the additional resources, Cloud Service Providers may offer better control over who's viewing your projects and more. Using identity and access management, you'll be able to control who can push code to your repos and start appointments, for example. Cloud Service Providers also have unlimited resources. Well, maybe not totally unlimited, but certainly more than the average person. On the flip side, some may argue that hosting builds on Cloud Service Providers leads to vendor lock-in. That could be the case, but considering how every CI/CD system has a different configuration format or some other nuance, choosing any one provider will lead to different levels of vendor lock-in, no matter who you choose. When it comes to CI/CD, Code Repositories have the unique position of having your code and the CI/CD tool all in one place. You might also be able to create custom docker containers to run your build and there are plenty of free or low fee options to get started. One downside though is that CI/CD services based in Code Repositories can get expensive, when used at larger scales.
- Key considerations in picking your stack
- The landscape of CI/CD tools
- Self-hosted options such as Jenkins and Bamboo
- SaaS tools such as Travis CI
- Using AWS CodePipeline and CodeBuild
- Tools for code repositories