I'm a developer for many years, but don't have tons of experience in ops, so apology if this is a newbe question.
In my company we run a web service written in Java mainly based on a Tomcat web server. We have two datacenters with about 10 hosts each. Hosts are of several types: Dababase, Tomcats, some offline java processes, memcached servers. All hosts are Linux CentOS
Up until now, when releasing a new version to production we've been using a set of inhouse shell script that copy jars/wars and restart the tomcats.
The company has gotten bigger so it has become more and more difficult operating all this and taking code from development, through QA, staging and to production. A typical release many times involves human errors that cost us precious uptime. Sometimes we need to revert to last known good and this isn't easy to say the least...
We're looking for a tool, a framework, a solution that would provide the following:
- Supports the given list of technology (java, tomcat, linux etc)
- Provides easy deployment through different stages, including QA and production
- Provides configuration management. E.g. setting server properties (what's the connection URL of each host etc), server.xml or context configuration etc
- Monitoring. If we can get monitoring in the same package, that'll be nice. If not, then yet another tool we can use to monitor our servers.
- Preferably, open source with tons of documentation ;)
Can anyone share their experience? Suggest a few tools?