Is it wrong to install DB Server on CI Server?

It's amazing what views on this

We have a CI server running some integration tests on a DB server and ok ... it just seems wrong to set up a DB server on a CI server to host this

Additional information to answer the comment: Why is this needed? This part of the tests checks db schema creation and migration and uses some techniques on top of that.

What CI system are you using? Team City, but I don't think this is a relevant TBH question

Are you concerned about performance if you decouple the CI from the database server? not really, I understand that splitting will make the tests slower, which is a bad idea.

I would like to hear the opinion of other developers on this issue.

+2


source to share


5 answers


If this database only exists to run integration tests from a CI build, then that's not too bad for me. If, however, a few months after it starts being recycled for other media and used by other clients, then it might be worth rethinking it.

To be honest, this doesn't sound like something that can be answered objectively. Many other factors come into play - licensing, machine specification, availability of other servers, level of virtuelization usage, support policy where you work, etc.



If it works without a hitch, then what to worry about?

+3


source


Ideally, you would have all of your "systems" (database, CI, datastore, web server, prestage, etc.) on separate servers, since you have the advantages of isolation, performance, and good separation of concerns.



However, if you are limited to physical machines, there is nothing inherently wrong with the two being on the same server. You just need to make sure you know how they interact, and you make sure none of them are overloading resources.

+1


source


I don't necessarily think its a bad idea that both have the same server, although it depends a lot on your circumstances.

As mentioned, using it on separate servers is ideal and makes troubleshooting problems easier.

Why do you need a CI server to run on a DB server? Are you experiencing tests closely related to this in some way?

Have you considered virtualization? I use http://www.virtualbox.org/ for free and does a great job. You can get the benefits mentioned above without additional hardware costs.

It will also allow you to have an easy backup / restore process if the hardware fails, which is likely to happen just before you want to test before release :-)

NTN

Ralph

+1


source


I'm not sure I'm following what you are testing.

I would certainly not have a development support server on a CI server only , because then you cannot stress test it without affecting the server. So, if you're talking about adding another development DB server just to run this test during CI processes (and why it even needs to be on the CI server), then you're adding more control, administration and backup.

0


source


You can create a database locally for each assembly. For one of our collections, we actually have sql scripts that will create databases, tables and data from scratch (importing CSV files). We run our integration tests with this database locally.

I think one of the tenets of Continuous Integration is that you can take any virgin machine and start a build with one click.

0


source







All Articles