CONTRIBUTED BY GEOVANNY ALVARENGA, STAFF DEVOPS ENGINEER, BLACKBOARD
At Blackboard, we offer a range of digital learning environments and learning management tools for students and teachers at every academic level—from kindergarten to postgraduate studies. Like many other companies in the SaaS space, we have relied on Jenkins to automate our CI/CD pipeline for years. But as our company and our product portfolio grew through in-house development and acquisitions, we found ourselves overwhelmed.
To accelerate and standardize the development of our various products, we decided to consolidate their building blocks. We built a library of shared resources so our coders didn’t always have to start from scratch. These go-forward projects became the basis of our new CI/CD pipeline. They would have been impossible using the standard, standalone implementation of Jenkins, which is designed for smaller players and is not scalable to a company our size.
As we struggled with these limitations, containerized development tools like Docker and Kubernetes reached maturity, promising improved workflows and faster development cycles. We needed to shift our DevOps environment to these new technologies, but we also needed a better way to automate our new CI/CD pipeline.
We found it in Jenkins X, a branch of the original Jenkins platform that leverages Kubernetes’ cloud-based tools to speed development times without forcing our engineers to learn the complexities of this containerized platform.
We needed to walk away from our standalone implementations of Jenkins for two reasons. The first was its over-complexity. In the past, we had a full-time team that set up Jenkins servers, created user accounts, installed configuration tools like Puppet and Chef, spun up virtual machines, and built CI/CD pipelines. It took months to go from an idea to that first “Hello, world” app.
The second reason was bloat. Among other things, every implementation of Jenkins had separate role-based access control settings. Our servers were also using different versions of plug-ins—or different plug-ins entirely—to automate various project pipelines. There was no template to guide what a Jenkins box should look like. We often found ourselves reconfiguring our servers so they played well with each other.
KUBERNETES MADE EASY
Jenkins X not only addresses these limitations, but also provides a way to dive right into Kubernetes without having to learn its intricacies. It comes with a robust set of tools that automate the creation of CI/CD pipelines, the management of environments, and the promotion of new application versions. Jenkins X also automates pull requests, spinning up preview environments, and generating comments on the fly.
Setting up Jenkins X is a snap. Install the binaries on your system and then run a jx script to create a new Kubernetes cluster with Jenkins X automatically installed. This ease of use eliminates the need for a dedicated Kubernetes administration team and reduces layers of complexity while setting up a DevOps environment.
Instead of allocating time, expertise, and financial resources to the setup process, Jenkins X frees us to focus our efforts on coding. Let’s face it: no one wants to be in the business of being Kubernetes administrators. We’d rather invest in activities that generate products and profits.
Jenkins X is also cloud-agnostic, which frees us to create new clusters on the service of our choice. We can pivot from on-prem or off, create test beds, isolation chambers, virtualization clusters, and blackout environments at will.
We can also install the Jenkins X software stack on top of existing clusters and use the same CI/CD automation tools to streamline the DevOps environment setup process and align older projects with current best practices using the latest management tools.
Jenkins X has empowered us to transition many of our engineers from setup and support roles to accelerating release cycles. Instead of manually spinning up clusters or writing batch scripts to replace strings in configuration files, these team members are now part of the actual development process.
Everything is repeatable in Jenkins X. It brings the set-and-forget mindset to containerized DevOps environments. This is of tremendous value to enterprise-level companies like Blackboard that are using Kubernetes to reduce the operational overhead of the cluster management process.
LEVERAGING OPEN SOURCE AND COMMERCIAL TOOLS
Funny enough, Jenkins X is a bit of a misnomer. It’s only 5% Jenkins and 95% tools and utilities that enhance the platform. Its chief architect is James Strachan of CloudBees, and it is designed to offer a guided approach to CI/CD pipeline management. Unlike the standalone version, Jenkins X leverages open source tools like Helm, Draft, Monocular, ChartMuseum, Nexus, and Docker Registry to automate the creation of development environments for cloud-based applications.
Earlier this year, we met with James, and he helped us implement Terraform to update and deploy our AWS Lambda pipelines. But he is not our only partner. The entire CloudBees Jenkins X team is at our disposal to help us improve our CI/CD pipeline.
For example, CloudBees showed us how to use YAML to eliminate weeks of manual scripting, thus accelerating project handoffs from one team to another. CloudBees also helped us upgrade our internal communications to SSL.
We are also primarily an AWS Shop, and Jenkins X is typically a GKE first platform. CloudBees’ team explained how to move effortlessly between the Google Cloud and Amazon Web Services so we can become cloud-agnostic.
FASTER DEPLOYMENTS, EASIER BUG FIXES, AND IMPROVED COMMUNICATIONS
As a result of working with Jenkins X and CloudBees, Blackboard’s capability to deploy is faster and easier, and we now have a technology roadmap we can adhere to. By automating the creation of our CI/CD pipelines, we know we can plan to start working on a new project in two months and we’ll be ready because we don’t have to reinvent the wheel to set everything up.
Our development teams are talking to each other, and knowledge gaps are a thing of the past. Everyone starts with the same setup and the same set of tools. Our workflows, our codebases, and our release cycles are far more consistent. We have fewer surprises to slow us down.
Blackboard’s developers are no longer banging their heads against the wall chasing bug fixes. Instead of spending weeks trying to figure out a problem, we can find a regression issue in a matter of minutes. That’s the real power of repeatability.
We are also very active on CloudBees’ Jenkins X development and user project Slack channels. It is one of the many benefits of using a tool that harnesses the knowledge of a commercial vendor and the open-source community. Sometimes, the answer is as simple as learning that tomorrow’s release of Jenkins X will fix an issue that is causing us problems.
STABILITY, CONSISTENCY, AND REPEATABILITY DRIVE INNOVATION
Jenkins X may seem like a magic bullet, but you can’t just drop it on top of your existing CI/CD pipeline and run with it. You need to get aligned with best practices before you can start thinking about making the switch. You have to step back and figure out what you’re doing and what you want to do. It’s not just a matter of porting your Windows Server DevOps environment to Jenkins X and expecting it to work.
I can honestly say that Jenkins X is transforming the DevOps culture at Blackboard. We can launch a new project within days instead of months. We can roll out releases and bug fixes faster than ever before, and we have moved engineers away from repetitive setup and support roles to creative development roles, thus improving productivity and employee satisfaction.
Our customers benefit from more frequent updates, improved support, and an ever-expanding portfolio of products. Jenkins X provides stability, consistency, and repeatability behind the scenes, thus driving the innovation that educational users demand. If your team is hoping to make strides like this, it might be time to look at Jenkins X.