Hosting environments vis-a-vis development workflows
“Fulfilling our clients’ goals and needs by delivering stable and usable software helps their business succeed.” –
This is a core concept of what we do at VIA. If the needs of a client lead us outside our standard operating practices, we adjust to the project.
We recently completed development on a website that streams coverage of an annual competition. Due to the nature of their business, the site has one month of high traffic and server demand out of the year. The rest of the year, however, sees little to no traffic. Due to the vast fluctuation in the server load for this product, it was determined our standard hosting provider, WP Engine, was not the best fit for this particular client. When the decision to use a different hosting provider was made I did not foresee this making a major difference in our development workflow. I was wrong. Very wrong.
Tailored workflows to hosting environments
As much as possible, our development workflow has been tailored around our various development environments to ensure code quality and efficiency. Our local environment mirrors our standard production environment as closely as possible. In both environments, the WP (WordPress) core is not version controlled by using a
.gitignore file. Our hosting provider maintains the WP core, ensuring it is updated to the latest version, while on development we have a grunt task that leverages wp-cli to fetch the latest WP version in our setup task. Obviously this aligns perfectly, allowing our repositories to be nice and streamlined, containing only the theme and plugins for each project.
The similarities between environments do not stop there. Database management is handled the same way and a multi-developer workflow is supported. In addition to environment similarities we have automated jobs for creating a new project, deploying to servers, syncing databases between environments, restarting web servers, adding staging environments, creating sub-domains and much more. Basically, we have an automated job for the majority of server management and project setup tasks that have to happen in order for the actual development to begin. We leverage Jenkins to make all of this possible.
Much like a concert goer does not think about all the equipment costs or rehearsal hours that go into the performance, I did not fully appreciate the refined nature of our development workflow. Nor did I grasp the increased productivity that it facilitated. The old adage of you don’t know what you’ve got until it’s gone certainly holds true.
We didn’t settle on a new hosting provider at the beginning of the project. Instead, we began development locally and then transferred the project to the new host partially through development. This caused some issues. Some of the problems we encountered while migrating the code and database were minor. Having a
.gitignore file that does not block the WP core, for instance, was a quick and easy change. Some were slightly more problematic, such as the new provider strongly urging against sessions. Other problems, like not having a visual database management tool, were a major hindrance to peak development efficiency. While converting the codebase from the requirements set by hosting platform to the other I became frustrated. It was tedious, time consuming, and did not get us any closer to a great product for our client.
Tailored tools === better products
The hosting compatibility issues were eventually worked through and solved. We even wrote a few new automated jobs so that we could more closely adhere to our standard workflow. This also will allow for a faster ramp-up time if a similar project opportunity arises in the future. After the frustrating transfer period, development went much more smoothly.
At least three things changed during the course of this project: the hosting provider, our development workflow, and my understanding and appreciation of our development and project management processes.
One thing did not change though. Despite the headaches, the hosting solution we chose fits the needs of the project and will provide a better experience for the product’s users. Which is the most important consideration.
Website Hosting: It's Not as Complicated as You Think
By: Natalie Miller on 8/22/2017
We're really satisfied by WP Engine's hosting, and if you don't know what that means, here's a basic overview.Read More »
Creating an AWS DynamoDB table from the command-line
By:Mark Biek on 7/31/2017
One of the great things about the AWS command-line tool is that you can do pretty much any AWS operation with it. For today’s example, we’re going to show you how to easily create a new DynamoDB table.Read More »