As a DevOps Engineer I have to consider whether to use a hosted or self-hosted Jenkins for many projects. The questions I consider vary and the answers are not always straightforward. With each new project I use pragmatism around decisions in this area. In this post I wanted to take you through the process of asking these questions.
Jenkins has always been my go-to CICD platform. It strikes a balance between long-term strategy and short-term execution. Whether hosted or self-hosted Jenkins isn’t right for everyone and this is not a post about that. In this post I want to focus on what questions to ask to make deciding between hosted and self-hosted Jenkins more straight forward.
Is the dev team in a region with good access to a hosted Jenkins service provider?
Remote development teams may have issues accessing a hosted Jenkins service. This will be problematic for the development team as the service will be slow and unusable. No one wants to wait 15 minute for pipelines to run and files to copy between various remote sources. Software developers must have excellent connectivity to the Jenkins service. We experienced this first hand when supporting a development team in mainland China. Poor connectivity to our services in Europe caused so much wasted time. After listening to complaints we setup a Jenkins service for the team in mainland China. If you have a similar constraint, I recommend self-hosting closer to the development team. The benefits out-weigh the costs.
Do we have the right skills in the team to setup and manage Jenkins?
This one is important because setting up Jenkins requires some specific technical capabilities. Skills with linux hosting, systems administration, infrastructure security and automation are essential. We don’t recommend setting up or maintaining Jenkins without this expertise. The risks are too great and failure is not an option. The costs of wasted time, bottlenecks, failed releases and unhappy developers are high.
What does having the skills mean though ? In my world it means I have a team of people that can perform similar technical capabilities. This ensures my team won’t be dependent on one or two people for maintenance and support. It also means I won’t have to be concerned about what happens when my Jenkins guy leaves.
To conclude, if we had the right skills in the team and it was large enough so we didn’t have to depend on one or two people I would consider a self-hosted Jenkins. However we would select a Hosted Jenkins if we didn’t have a big enough technical reason for self-hosting.
Do we have the time to manage Jenkins?
We usually always have the skill, but we do not assume we will always self-host. It takes what seems like an age to setup the tooling and as a result we look at how much time we have. Selecting a hosted Jenkins service will credit us with at least 4 weeks for one or two engineers. In that time we can focus on high-value work, we can help the development teams with more of their startup tasks. We can even be more involved with planning new ‘ways of working’. The value of that 4 weeks is the the difference between getting the job done and making many compromises.
Does time spent on infrastructure setup and maintenance correlates with technical debt? The issue for me is when working on a project I want each man-day to be high value. That is I get concerned when a project diverts effort away from where it is needed. Is the value derived from Jenkins based on the uptime or hosting?
To conclude the project defines how much time is enough time. Self-host if your project has enough time and your team has the skill and a need to self-host. Use a hosted Jenkins service if you save time and can focus on more valuable tasks.
Do we want to do strategic work or maintain Jenkins?
When you run a team balancing strategic work with maintenance work is difficult. Strategic work is making progress. Strategic work is the Jenkins pipelines, the test and infrastructure automation. It is everything you do on top of Jenkins. Maintenance on the other-hand is monotonous. It interrupts strategic work and it is a constant distraction. With Jenkins you have to be ready to perform security and plugin updates. This means when you least expect it you might have to drop any strategic work. Its frustrating and difficult to manage. If strategic work is more important, then a hosted Jenkins service is the best choice.
Do we need complete control over the Jenkins service?
Businesses with regulatory requirements will have concerns about security, data protection and governance. In cases around regulatory requirements we would recommend self-hosting. At Servana we’ve made our hosted Jenkins service bespoke on purpose. As a MSP we know all our customers are different and so we do not make any assumptions. We expect our customers to request updates and changes. To conclude if you need full control of the hosting for the Jenkins service choose to self-host Jenkins. Otherwise there is a small compromise with a hosted Jenkins service.
What if the Hosted Jenkins service is too slow?
It gets tricky because all kinds of issues can make a hosted Jenkins service slow. Tasks like downloading dependencies, using insufficient specifications for the Jenkins agents when building. Compiling languages like C, C++ or Java can be resource intensive. All these symptoms of slowness would be exactly the same if you self-hosted. The differences would be the support you get to help resolve these issues. If you self-hosted the onus would be on you to resolve the issues which would increase the setup time. We find that optimisation is a never-ending task. It is worthwhile and if you are self-hosting we do recommend you perform all kinds of optimisations. With a hosted Jenkins service you enjoy all the optimisations we’ve made. If you have a new challenge we will work with you to resolve it.
We want a no-frills hosted Jenkins service?
By no-frills I mean ‘just Jenkins’ none of the extras a provider like us provides. You have many good options for no-frills Jenkins hosting. We recommend looking at the marketplaces for the following service providers.
- Amazon Web Services
- Google Compute Platform
- Azure Cloud Platfrom
They provide automated installers so you will be online fast. There are no guarantees. The responsibility for the final configuration, security setup and ongoing operational reliability is yours.
Do we need more than Jenkins?
Our Hosted Jenkins services contain many upgrades that add value to the Jenkins service. We provide security features like secrets management, inexpensive artifact storage and dependency caching. We also offer identity management and single sign on. These added features are a small part of how we want to differentiate. We also provide monitoring and support during business.
To conclude, there are differences between our hosted Jenkins service and self-hosting Jenkins. We are always adding new new features, to ensure we help our customers succeed. If you are interested why not get in touch.