Following up on our recent project management tips post, today we're going to explore what some have termed the developer's holy grail, known as continuous deployment, continuous delivery or continuous integration. As the widespread adoption of the Internet accelerated, the demand for shorter and shorter turnaround times between planned featuresets and new releases also increased dramatically, and PHP development was no exception. This is what first sparked the Agile development style as a solution, and has lead to a number of successors since then, eventually culminating in the currently popular system we know as continuous deployment.
Essential what CD/CI means is that new features are rapidly and automatically integrated into your main codebase at a much higher frequency than traditional development styles, sometimes even as frequently as multiple times per day. For a PHP-based application in a highly competitive field, the advantages of constantly being on the cutting edge are obvious, but there are some basic requirements and some potentially dangerous pitfalls to be considered before diving into a CD/CI strategy.
First of all, the main idea behind continuous deployment is speed - which essentially means the automation of as much as possible. Automation is crucial, because wasting 16 dev-hours to push out a day's worth of development is hardly continuous. Proper automation begins with implementing software to handle revision control and integration of new elements, the most popular of which currently is Git (which works perfectly with Github, of course). Testing of new features should be as automated as possible, while being completely thorough - without being sure that your new code is flawless, there's no point in releasing it into the wild, as you'll just be hurting your project. This is the step that causes many developers to throw up their hands in disgust, as it optimally relies on clean, focused and disciplined coding and extensively customised test scripts. Last but not least, the final build process should be automated, allowing you to push new versions out the door with an absolute minimum of fuss. Cruise Control and Buildbot are two of the more popular examples of build software, but there are a large selection available.
While that may seem simple on screen, the successful implementation of these strategies can take months to accomplish - but if done correctly, the benefits are incredible. Your PHP application won't be ON the cutting edge, it will BE the cutting edge.