Jenkins is a monolithic application based on a combination of a master and agents.
Jenkins master can be described as an orchestrator. It monitors sources, triggers jobs when predefined conditions are met, stores logs and artifacts, and performs a myriad of other tasks related to CI/CD orchestration. It does not run actual tasks but makes sure that they are executed.
Jenkins agent, on the other hand, does the actual work. When master triggers a job execution, the actual work is performed by an agent. We cannot scale Jenkins master. At least not in the same way as we scaled the go-demo
service. We can create multiple Jenkins masters, but they cannot share the same file systems. Since Jenkins uses files to store its state, creating multiple instances would result in completely separate applications. Since the main reasons behind scaling are fault tolerance and performance benefits, none of those goals would be accomplished by scaling Jenkins master.
If Jenkins cannot be scaled...