| Scale, Complexity, Job Specialization, Organizational or Business needs blah blah. Let me explain. Imagine you have a team that grows from say 4 to 40 over time. All the initial programmers, business managers etc. have left. One fine day, you get a call from the client saying "The feed has not arrived today, fix it in the next 2 hours or we are going elsewhere (or can you please please please fix it ASAP) ..." What do you do?
How do you prevent this from happening in the first place?
What procedures / software do you need to have in place to even know what went wrong etc. Now let me give examples that these tools help you handle. 1. You need to view all the jobs that run on a daily basis across 400 of your servers.
2. You want to make sure that no changes to anything in production can happen without at least 1 more programmer and 1 more business person signing off on it.
3. A job / script fails partially, how do you assess the impact and move forward (you are not even aware of the existence of this script).
4. You have a backup script / job that needs to run on demand. You want to let your support folks run it or even the business folks, without any programmer intervention (you don't want to get a call every time someone in Japan wants to run this report). Coming to CI/CD systems, some of their goals are A. Codify the knowledge into scripts / configs and do not rely in tribal knowledge.
B. Ensure that your code is always in a "buildable" state with the new changes (i.e. don't even let bad code in)
C. When a build fails, notify the programmers who introduced the bug immediately
D. Once a build is complete, send it to other systems for stress testing.
... Yeah large businesses can have very intricate and complex needs. They rely on generic and configurable software (proven and tested by other large organizations) to meet their operational needs. Also, given that you can hire people that are proficient in these tools, you can focus on the business needs rather then reinventing these tools. |
I understand that for most companies they post a job offer with Jenkins as one of keyword requirements and they are mostly done. That is probably much more important than any actual utility of the tool beyond tens or hundreds of thousands of lines of Groovy that someone has to maintain.