Hello,
I'm putting together an IT strategy for a new software development shop and I'm looking for some advice regarding how to minimize the amount of time spent babysitting our servers. I hope that the scope is too large for this place. Feel free to redirect me to another venue if this forum is not appropriate.
So here's the deal. I'm looking for a IT strategy that would scale from 5 to about 50 developers. We've already deployed Jira and we are planning to use several of the other Atlassian tools. At some point we will probably deploy additional, non-software related services, such as a CRM application or an accounting suite. The applications we are working on do not need or generate large amounts of data so our storage requirements are limited.
Now, we are located in a high-labor costs area, and we don't want to outsource this part of our IT, mainly for confidentiality issues. Also, we don't have a full-time professional admin on board at this time so I may have overlooked glaring issues.
For now we're not planning to have any public-facing services, and we don't need to run 24/7 since all developers are in the same timezone.
So far, my idea is use virtualization to simplify the management of our services:
- Buy simple, bog-standard Dell rack servers with simple components that we can maintain ourselves (SATA drives instead of SAS for example),
- Install Ubuntu LTS on them, with encrypted partitions to host the virtual machines,
- Create a virtual machine for each service thanks to VirtualBox,
- Move the virtual machines around as needed.
I've already managed to configure JIRA, Fisheye, Confluence and Crowd on a virtual instance of Ubuntu LTS, supported on a Mac OS X host. Now, we need to move this instance to another much more powerful server, and I fully expect the move to be done in less than an hour. Given how difficult it is to install and configure the Atlassian tools, being able to simply move a virtual machine to another server if and when we need a beefier server is a major plus in my book. And thanks to snapshots and clones, it is possible to test updates and new configuration without any risks.
For backups, we have settled on a dual-prong approach:
- Crashplan PROe generate incremental backups of the data and configuration files for each virtual instance,
- Every night the virtual instances are paused and cloned.
Now, this is all well and good, but in the end, it means that instead of having to administer a couple of big servers, we have to take care of a bunch of not so big servers AND a big bunch of virtual machines. In other words, I wonder whether the benefits of virtualisation outweights the costs.
Another thing. If we were running dozens or hundreds of servers and virtual machines it would make perfect sense to invest in proper administration systems, but we're only looking a managing a couple of them. Are we stuck with having to micro-manage servers and virtual instances individually?
Any suggestions would be appreciated.
Thank you,
Kooorrg