What is a Dev Server, and why should I use it for my clients?
As many of you know, I’m a moderator on Freelancing.SE, and I’ve seen a lot of the troubles other users go through. I also constantly read stories of people just not “getting it” with their designers/developers/other contractors.
I have my full time job, and I have my side job. My knowledge keeps building, and I’d like to talk now about Development Servers.
What is a Dev Server?
Dev Servers are extra (physical or logical) servers that stay in your control while you are developing a product or project. You can use them for yourself personally, or for clients who want to see your work in progress on projects. Depending on the project, whether it’s virtual or physical, or living on the cloud, depends on your use case. In general, it answers the following questions:
For the freelancer (or company) that sells software/electronic content to their clients, what rules should be followed? How do you protect your work? How to you ensure payment is made?
I’m going to preface this by mentioning that I no longer do web design, and I never drew stuff for people. I do server and network administration, and PC support. I do host when asked, as this slips under the Network Administration side.
Whether you’re a designer, or web application creator, you need a development server. I run this site off of a Debian server out of my home. The server has multiple URLs that point to it, and Apache knows exactly where to send the visitors. It doesn’t matter that the pages are on the same physical server. A different URL goes to a different folder on my server, and they all act independently to each other.
If you have a server set up already, whether hosted elsewhere or in your home/business, you need to set up two areas: the main part you want everyone to see, and your testing/development area. The main part is for your website, it’s for YOU. Not your clients, not your friends, for YOU. This is your bread and butter.
Your testing area or development area should be accessible only via a unique URL, for the customer. It should be part of your domain, and can either be a subdomain (ie http://client123.example.com), or a folder path (ie http://www.example.com/client123), but keep it on your server / a server that you control completely. Keeping your domain name shows that it’s not the client’s property (yet), and prevents them from trying to constantly use it without paying you. It also allows the client to see how your development is going, without purchasing a new domain name for them yet.
For those who have the experience is to create a Docker container, or virtualize the server inside a Virtual Machine. Even if it’s using a free Hypervisor (such as XEN Project Hypervisor, Microsoft HyperV Server, or even Oracle VirtualBox) running on top of your server. All three of these programs are free of cost to use, so give them a try! These give the option of transferring the entire virtual server to their data center, guaranteeing that the software or web site will work just as it did for your environment. This may take a bit more time to setup initially, but it can be scripted. If you have the address space in your private LAN, assign the Network Card for the VM in a Bridged Mode. This makes port forwarding easier to setup and maintain.
What if the client doesn’t want to pay? You don’t need to release the source files! But they’ll always have the latest version available, until you take away the DNS entry or lock the folder from being accessed! You can keep it as long as you want, and even add the design to your online portfolio! Win for you, loss for the client who feels they don’t need to pay.
Another advantage of the dev server is it can be anywhere! I have WAMP running on my laptop for most of my projects, which works great anywhere I go! It’s portable in the way that I do not need Internet access to show a client the site I’m working on for them. When the site is done and the client has paid, I can copy the files for their site over, and it goes live! Always collect payment first, and put the client in charge of the domain renewal process. You can do this by putting their information in to the registrar and host.
If I host it in the cloud, it’s available anywhere, as long as I have Internet Access when I show it off. I host some sites in the cloud, simply because my cloud provider offers weekly backups for me.
Any other tips for your dev servers? Do you host them on the same box, or have you expanded to have it completely separate? What’s your experience dealing with the customers who demand you develop on their servers? Comment below.