Myself, Jody Hamilton, and John Kaeser recently lead the "DevOps for Drupal" training at Drupalcon Seattle 2019. We had a sold-out training, as well as two American Sign Language (ASL) interpreters for attendees with hearing impairments. As far as I know, it was our first time running a Drupal training with ASL interpreters, so it was a great learning experience for our team to provide Drupal knowledge to a more diverse and inclusive audience. It was also a great segway into the resounding message of the 2019 Driesnote by Dries Buytaert the next morning about Diversity and Inclusion in the Drupal community at large.
I'm going to provide you with a quick rundown of some of the DevOps tools we covered in our DrupalCon Seattle training. If you'd like to learn more about each of these tools, I'll be leading a session called "DevOps for Drupal and Other Web Applications" at Drupaldelphia 2019 on May 10th, 2019, so make sure to register for a ticket!
Local Development Tools
Getting a local development environment setup is key to being able to develop Drupal sites in an isolated environment. Your local development environment should be configured to be as close to your production environment as possible to ensure there are no surprises when you go to deploy to production.
Here are a few local development tools we use at Zivtech:
Many command line tools are available to enhance your development workflow when building and maintaining Drupal websites. We have identified a few crucial CLI tools here at Zivtech including, Bash Scripting, Cron, Git, Drush, and Composer.
Continuous Integration Tools
Continuous Integration tools are a great way to automate repetitive tasks, run automated tests, and even deploy code between development environments. At Zivtech we use continuous integration tools like Jenkins, CircleCI, Travis CI, and Probo.CI.
Server Provisioning Tools
Managing server configurations in code ensures that changes to server configurations are tracked in version control history. There is a growing list of server provisioning tools available to enhance your ability to maintain your server infrastructure across your organization for hosting Drupal websites and other web applications. This list includes tools such as Puppet, Ansible, Chef, and CFEngine.
Server Monitoring Tools
Server monitoring is crucial to ensure that your organization’s infrastructure is online as much as possible. We use a combination of open source and commercial tools to set up logging, alerts, and even graphing for our infrastructure at Zivtech when needed.
We use a handful of logging tools like Papertrail, Logstash, Kibana, and Loggly that help enhance our server monitoring capabilities at Zivtech. Most of these logging tools are able to hand off log data to alert tools and/or graphing tools to complete the server monitoring stack.
Alert tools like Sensu, RabbitMQ, and Uchiwa can be configured specifically for each server or individual services on servers in your infrastructure to provide helpful warnings and critical alerts when configurable thresholds are met.
Graphing tools may be overkill for some server infrastructures, but when applicable they provide a helpful overview and visual representation of data for log data and/or alerts for your infrastructure. We have used Graphite, InfluxDB, and Grafana for visualizing our logs and alerts.
There is a growing list of testing tools available for Drupal developers to enhance your development workflow and provide higher quality work for your clients. There are a few main categories that we broke these tools down into for our training.
Code Testing Tools
Testing code as you develop helps reduce human errors and adhere to coding standards. A handful of tools we use at Zivtech to test our code before code review and deployment include, SimpleTest, PHPUnit, Behat, and Lint.
Performance Testing Tools
Performance is now a factor used in search engine results like Google to determine their search engine rankings. Luckily there are some great performance testing tools available today to test and optimize your site at several levels including PHP performance testing tools, website performance testing tools, and web server performance testing tools.
PHP Performance Testing Tools
PHP performance can be a huge bottleneck for sites that have not been optimized properly for resource usage, or sites that have poorly written code. We have used NewRelic and Blackfire at Zivtech to identify PHP performance bottlenecks and speed up Drupal websites and other PHP applications.
Website Performance Testing Tools
Now that we have the server and PHP tuned for top performance, we should take a look at how the site is actually loading. There are most likely other performance optimizations that can be done to speed up page load times. Tools like Google PageSpeed Insights, Google Lighthouse, Pingdom, WebPageTest, and GTmetrix test website performance and optimize them for speed after the server and PHP configurations have been optimized.
Web Server Performance Testing Tools
Server performance can make or break a website. There are a few server performance testing tools ApacheBench, Siege, wrk, httpload, and JMeter that will provide helpful information to identify and resolve server performance bottlenecks.
Visual Regression Testing Tools
Outside of testing code, there are a growing number of tools available for Drupal developers and themers to identify when changes to code affect the visual look of a site. We have used a few of the following visual regression testing tools at Zivtech, but we keep finding new tools all the time.
Accessibility Testing Tools
Website accessibility is a fairly new, but crucial component for many organizations and institutions running websites. A growing list of available command line tools and SaaS tools are available to help test your Drupal websites or other web applications for web accessibility compliance. We are starting to use Tenon, WAVE WEBAIM API, Dinolytics, AChecker, The A11y Machine, and Google Lighthouse on most projects here at Zivtech to ensure our clients’ sites are accessible.
Sandbox Testing Tools
The Drupal community is always coming up with awesome new tools to enhance productivity and Drupal web development. Several sandbox testing tools have been developed coming from the Drupal community in the past several years, as well as integrated sandbox testing environments that are available for some specialized Drupal hosting services. We have used Pantheon Multidev, Platform.sh, OpenDevShop, and Tugboat for projects at Zivtech. We even developed our own tool, Probo.CI as a sandbox testing tool for Feature Branch based development.
Working backups are an extremely crucial component of a successful DevOps strategy. There are a handful of open source tools available like AutoMSQLBackup, Rsync, Git, and Duplicity that automate backups for Drupal websites including the database and files. Many of the hosting platforms available today include some sort of way to provide automated backups for the server, database, or even the Drupal files.
If you are not prepared with the proper tools, deployment can be a time-consuming process each time you want to deploy code to a different development environment. We strive to ensure that deployment is a process that goes off without a hitch and no manual changes need to be made during deployment. The less manual changes that need to be made during the deployment process the fewer chances there are for human errors during the deployment. We use Jenkins, CircleCI, Hook Update N Functions, and Drupal 8 Configuration Management to help deploy code for Drupal websites.
Last, but not least, we need to cover security. Security is a growing concern for user accounts, websites and servers as more data is being stored online. There have been many major website security breaches over the last few years that could have definitely been avoided with a more robust set of security tools and a better overall security strategy. We use several of the following security tools at Zivtech to harden the security across our organization and infrastructure.
Password Management Tools
Password management tools like LastPass and KeePass provide a secure way to store and share passwords throughout your organization. Some tools are available online while others can be used just locally to achieve password security nirvana.
Server Security Tools
Robust server security is crucial to protect your server from attacks, hacks, and malicious users. We use IPTables, SSH Key Authentication, and Fail2ban to harden our server security throughout our infrastructure.
Drupal Security Tools
The Drupal community takes website security seriously. There are several Drupal security tools and Drupal security resources available for Drupal developers to help maintain a secure Drupal website. We follow Drupal security best practices at Zivtech by referencing Drupal Security Announcements, Password Policy Module, and Drush Security Audit to ensure that our Drupal websites are as secure as possible.
As you can probably see, there are a ton of DevOps tools available for Drupal and beyond to help improve your development workflow, automate tasks, test all the things, and stay secure while building, developing, and maintaining Drupal websites.
While all of these tools might not be applicable to your organization many will help speed up development and provide a higher quality of work for your clients. If you find yourself in Philly in a few weeks, be sure to come out to Drupaldelphia on May 10th, 2019 and see my session, "DevOps for Drupal and Other Web Applications, if you are looking to learn more about any of these tools!