I’ve just finished coding a basic web app and uploaded it onto my vps. Up to this point, I developed everything on my local home server. Going forward I will be working with 2 or possibly even 3 people developing the app further. I dont have the funds for physically separate environments. I just want to be able to develop in one environment, test it in that environment and promote code to production. I don’t even see a need for a seperate test environment.
I would imagine their are millions of solo coders like myself, what is the general solution to this problem? Also, I know I should but I don’t use any source revision control such as GIT, is it necessary for what I’m trying to achieve?
I would recommend SVN for source control. It’s simple, easy to set up, has a good Windows client (Tortoise) if that’s what you’re using, and very easy for small development teams to use.
Have a central “dev server” that the 2 or 3 developers share, which would host the SVN repository. Development would be done and tested on local machines and committed to the dev server when ready (small features within the span of a day’s work, ideally).
The dev server can also host a small installation of TeamCity (a single project would be a free version, I think) or some form of continuous integration server. This can be easily configured to have commit-triggered builds (so build errors are detected immediately), nightly builds and deploys (for continuous integration testing purposes), etc.
The dev server itself can also host the web app. Since there are only a very small number of people accessing it and resource hogging can be verbally coordinated, it doesn’t need to be a serious machine.
Now, your question seems to imply that there may only be a single machine (lack of funds for separate environments, develop in one environment, etc.) for all of you in total. That’s fine. This can all be hosted on the local machine. But by separating out the concerns between different services (source control server, continuous integration server, target deployment server) it’ll make it easier to offload those services to other machines during any future growth.
Granted, this may all be overkill for your needs. That’s fine. Take TeamCity out of the equation and just deploy manually to the local machine and test from there. No big deal while your team is small and close enough for good open verbal communication. But definitely don’t take source control out of the equation. Just because you’re all on the same machine doesn’t mean you can’t step on each other’s toes and break the code. If nothing else, source control provides a great audit log of changes made to the code. Maybe you want to undo something you did months ago, or see what it was before that to remember how you did something, etc. Even a single developer on a single machine on a small project should absolutely employ source control.