Developing the Promet Way: Part I
How often do pushes turn into nail biting, hair pulling, obscenity screaming, hours-long events? How often does one hear, “It works on my machine!” How fast can you push all the work (bug fixes, new features, etc.) to production? Theoretically, only in the time necessary to deploy the code.
More and more developers are working locally (setting up the site on their machine) and most work on some sort of development environment. According to a 2014 survey by Kevin Bridges, based on a 2012 survey by Kris Buytaert, 65.3% of developers usually develop locally and 32.7% use a development platform. 88% of developers work on a development environment. This means that work has to be deployed from the development environment(s) to production. Often, the deployment process involves a pre-release environment called staging that serves as a test of the release and is reviewed by the client for final signoff.
The Problem
Deployments are (currently) hard. Differences between environments often arise. Pushes often take hours - running into the wee hours of the mornings. Sometimes pieces of functionality go MIA and sometimes unwanted, unfinished (read: broken) pieces of functionality find their way to production and mayhem ensues.
The Gist of (Good) Deployments
Configuration needs to be put into code using the Features module (or a similar method) and the build/deploy script versioned. Versioning the build/deploy script ensures that the exact same steps happen in the exact same order on every release, no matter who is performing the deployment.
Promet’s Solution
Promet’s Lead Technology Architect, Will Milton, saw no satisfactory existing solution for Drupal development and deployment. He embarked on a journey to devise a better solution. From this mission, Will and the Promet team innovated the Promet Drupal 7 Framework.
The Promet Drupal 7 Framework pulls together several other tools and provides a starting point for developing the “Promet way”:
-
Drupal Tangler uses Composer to manage dependencies and tangles all of the pieces into the Drupal structure.
-
Drupal Libraries Installer Plugin provides a custom installer to retrieve and place libraries where Drupal wants them.
-
Drupal Settings Compile loads configuration from an arbitrary directory on a server instead of templating settings.php or versioning your database configuration.
-
Drupal Drop Ship “uses (a fork of) kw_manifests to provide a reusable deployment composed of manifests” (from the project README).
All are part of the beloved open source family and utilize existing technologies and frameworks.
Conclusion
Until now, there was no good way to quickly, painlessly, and consistently deploy Drupal sites. Promet has developed open-source tools that make use of existing technologies. These tools enable the correct modules, set environment specific configuration, and ensure that the current state matches code.
The “Promet way” drives good process and offers several advantages. First, deployments are consistent. The same actions happen on every build and deployment - whether on a developer’s workstation, development, staging, or production. Second, developers do not have to remember the steps necessary to deploy. Programming deployments eliminates human error and lowers the learning curve. Finally, good process saves time (and stress) in the long run. Though extra time is necessary upfront to implement and learn new tools, less time is spent performing deployments and addressing deployments gone awry. (Promet’s deployments have gone from taking at least hour to taking 15-30 minutes.) Quicker deployments with fewer issues lead to happier developers, managers, and clients.
Want to learn more about each tool and why it’s so cool? Be on the lookout for subsequent installments.
Like what you see and want to get started now? We’ve pulled this all together into the Promet Drupal 7 Framework - a starting point for developing the “Promet way.”
Read Part II & Part III of the series to see the full scope of Promet's Drupal Framework.