Jenkins on the same virtual machine as the critical application, is this reasonable?

I want to use Jenkins to automate tasks that belong to a web application running on tomcat on the same server.

As the application is very important, is it advisable to install Jenkins on the same virtual machine? On one virtual machine 2 JVMs will work, there may be a problem in terms of memory, processor, stability, etc.

Should I take care of something specific, or would it be better to install Jenkins on another virtual server?

+1
source share
1 answer

As the application is very important, is it advisable to install Jenkins on the same virtual machine?

No, this is not wise. If you are already in a virtualized environment, create a new virtual machine for Jenkins (but at least separate it, for example, run your product and Jenkins in two different docker containers). Why is this not reasonable other than performance? Your tests can even crash a virtual machine if you're out of luck. Or they can eat your resources (file locks, network ports, etc.). Or Jenkins might overwrite your productive code if you did not configure it correctly (for example, it is deployed to the same folder where your prod is located).

On one virtual machine 2 JVMs will work, there may be a problem in terms of memory, processor, stability, etc.

Of course, this will be a performance problem, but not because of the two JVMs, but because of the tests themselves (if you have a larger project with a lot of tests, which most likely gives performance).

Should I take care of something specific, or would it be better to install Jenkins on another virtual server?

Just run it in another virtual machine; another physical computer is even better (if you are in a hosted environment such as AWS, then ignore the last point).

Edit: adding important information β€œit will just replace cron”

Yes, in this case everything should be fine. Jenkins himself does not use too many resources (otherwise, he will not be used for the build / scheduler server ) and problems for the additional JVM: I have seen many production environments where there are dozens of JVMs running in parallel. It all comes down to an individual scenario: what do these production things do? (Heavy I / O? Heavy networking? Just listening to what the REST resource sometimes serves? Directly collect randomness from the air?) And again: what are your specifications for the virtual machine and the equipment it runs on ... this is a very complex question that depends on:

  • software / service

  • OS (yes, it matters, whether it's Ubuntu, RedHat, SUSE, etc.)

  • virtual machine parameters (how many VCPUs does it have?) How many VRAM? Is it KVM based or VMWare, something else?)

  • hardware underneath (how insidious is this? What are your over / underprovisioning ratios? Does your network find a load?)

This is a question when all departments (Infra, DevOps, SE, etc.) must work together.

+1
source

Source: https://habr.com/ru/post/943532/


All Articles