Dev / Staging / Production servers on a budget?
I like a 3-tier server setup for development:-
I want my environment to be available online so I don't want them "in my office"; I don't much fancy buying 3 machines and paying for colocation; nor do I want to rent 3x dedicated servers. The solution? Virtual Private Servers (VPS). These are virtual machines hosted on some beefy server, kinda like "shared hosting", but you have virtual machines rather than just a virtual host.
I've just had 3 VPSes setup by Rimu Hosting and can't wait to start getting everything setup "just right".
This means my "live" environment will be a crappy virtual machine (not much memory/cpu, but it should be enough); however it needn't be - I could use 2 VPSes for development and staging (cheap) and then a monster front-end server for live (or load-balanced farm); the beauty of this setup is that my cheap staging server can run exactly the same environment as the "beefy live server", just without the cost as it's on a tiny VPS.
- Development. This box is where the programmers host their development code. They can map the dev. box file system to their local machine and edit/commit 'locally'.
If you run mod_vhost_alias you have have paths like /code/richard/projects/project_name/www map to a virtualhost (eg richard.projectname.rjharrison.org) dynamically. Devs create a new project folder, do a subversion checkout and they're off. You can also run trunk/branch/tag virtual hosts. - Staging. This is the "almost live" environment, where you can perform QA and show off the build/release to the client. No one edits on this box and the only way to get code there is by doing an export / build directly from the svn repository.
Making the build automatic is pretty cool - press a button and you've got a built project on the staging machine; press another and you've deleted it and built a different revision. - Production. This is the live box/es. Again, no one should edit code on this machine. Getting code onto this machine could either be using the same process as Staging, or it could be an rsync from the staging box itself.
I want my environment to be available online so I don't want them "in my office"; I don't much fancy buying 3 machines and paying for colocation; nor do I want to rent 3x dedicated servers. The solution? Virtual Private Servers (VPS). These are virtual machines hosted on some beefy server, kinda like "shared hosting", but you have virtual machines rather than just a virtual host.
I've just had 3 VPSes setup by Rimu Hosting and can't wait to start getting everything setup "just right".
This means my "live" environment will be a crappy virtual machine (not much memory/cpu, but it should be enough); however it needn't be - I could use 2 VPSes for development and staging (cheap) and then a monster front-end server for live (or load-balanced farm); the beauty of this setup is that my cheap staging server can run exactly the same environment as the "beefy live server", just without the cost as it's on a tiny VPS.


0 Comments:
Post a Comment
<< Home