Most people have basic needs for web hosting that can be fulfilled by basic or free web hosting companies. But as an open source software developer, I find that my needs are somewhat different than the average person’s need to just setup WordPress. Particularly, if your application is going to be a web application and be supported by a database, it’s important to have some features that don’t always come with the basic web host packages.
There are three or four approaches to take when setting up your development environment. First, it is important to consider the use of a two-tiered environment. For most projects, a two tiered (Development & Production) environment will be fine. For larger projects that may require extensive testing, it may be necessary to go to a three-tiered environment (Development, Test, Production).
In the old days, I would just run a LAMP enabled server at home (Linux, Apache, MySQL, PHP) to be my development system. This worked out pretty well for me as the sole developer. Today, if you are running your own project, there are several virtualization software packages that can make it easy for you to manage several software releases on your own system. Then you can just keep a production system on the internet.
The second way to maintain a multiple tier development platform is to have a single hosting platform, but maintain different environments in different sub-directories. This is a low-cost and easy way to manage versions. It’s just important to keep a map somewhere on the site where you can let team members know what’s going on. And you can leverage an Open Source Project Management Host to do just that.
One of the challenges that you will probably face at some point is the access and flexibility of the hosting company. Many times you will have a requirement for root level access to your server. This may be difficult or impossible with an inexpensive or free host. They tend to be pretty closed to that type of access, so you may have an issue there. Also, you may be working with modules that require certain versions of code libraries, which may present a challenge with most normal web hosts. Lastly, if you need to protect certain parts of your code, some obfuscation software packages require specific software to be installed which may be out of your web hosting providers comfort zone. That’s when it may become a good idea to have your own Virtual Private Server (VPS).
There are different levels of VPS. Web host providers usually break up an actual server into sections that they can individually rent out, and so the cost to host on a VPS is usually dependent on the amount of memory provided for your use. This needs to be matched up with the size of your development team. So the number of CPUs and memory will vary and the cost is usually proportional to the size offered. If you are running a small project, a ¼ share of a server may be fine and the least expensive to use. And you will have all of the flexibility that you need to manage your applications.
The last level of flexibility is to use unmanaged versus managed hosting. Managed hosting is what we just talked about. The hosting provider provisions the server for your use and will provide the setup of the server and will provide support for the installation, like automatic backups, etc. Unmanaged hosting gives you absolute control over you system. But at the same time, it is your responsibility to manage the server yourself. This is OK if you have system administration experience, but many developers want to focus on development, not administration.