Drupal DevOps is how we’re increasing the delivery capability of our teams. It’s how we tackle issues and put forward enhanced value for our clients. We support our partners with Drupal DevOps with Team Augmentation, and we’ve found that it’s the surefire way to multiply production. We’ve included five of these ways here:
One thing that can put team productivity in the negative is constant requests for code, DB, or files that need to be updated on multiple staging servers throughout the development effort.
At Axelerant, we’re leveraging automated deployments to various staging environments with our custom in-house tool called Projspace. While Drupal DevOps itself is not only about the right application of tools, this enables end users (developers and testers in this case) to do on demand codebase updates on any provided stage, and to create even a whole new stage when required. All of this is automated, and we’ve even integrated it with our custom project management solution Curamine.
What’s an example of this being implemented?
We use a custom Linux LXCOS, which we have integrated with Linux Containers. In addition to leveraging containers, we’ve tried and tested automation scripts and hooks for getting the work done—Projspace Internals.
Since we have rolled out Projspace for our teams, we have seen team productivity increase. We’re also rolling out a new version of Projspace for our teams to use in the coming month, with more robust built-in features
DevOps is a culture rather than a specific technique or technology. It’s about delivery, completing the Agile lifecycle and ensuring that the hard work a developer executes is repeatable on a live site. Collaboration fosters a strong working relationship with the team; the distribution of the knowledge around executing the full stack allows team members to depend on one another. This forwards development by helping the team stay focused.
You can’t provide value without being on the same page: value needs to be defined and focused in on by all team members. DevOps is associated with continuous integration and continuous delivery, but there’s more to it: working with DevOps is really about resolving the conflict between Drupal developers and systems administrators.
What’s a practical way to accelerate this?
Here we follow a Twelve-Factor App which is a process or method that enables us to deliver high-quality software and IT services for running applications. We follow different tools to achieve this like Git, Jenkins, Chef, Logstash, Graphite, collectd.
Leveraging these tools with Test Driven Development (TDD) for projects, where coding is done with test cases in mind, helps prevent bugs from the beginning.
For several years now, we’ve imbued DevOps culture with the Twelve-Factor method to enable coordination between developers, operator and QA teams.
The time comes when we need to address the performance aspect of the code. There’s no proper metric for measuring code performance without using performance monitoring tools and getting the reports audited. Wherever there is slow performance, the code is refactored to make it performant
What are some tricks?
We use a combination of Xhprof, New Relic, and Xdebug among others. What we do on a request basis is give the code a full audit by an engineer for DevOps consulting, a specialist who can provide a detailed report on the code’s performance in various workflows. Drupal DevOps engineers handle configuring environments for comprehensive profiling and reporting with these different tools and audits.
We spend considerable effort to ensure we’re getting the right talent to design and develop our applications. When these projects go live, our aim is to position these team members to handle supporting the production environments. We entrust our DevOps talent with setting up these live environments to ensure that these are hardened with proper security measures.
Why should DevOps people be doing this?
Server hardening and configuration both require technical know-how, an expert’s hands are required, and improving this process after working through development requires, even more, expertise.
Members of our DevOps team know the ins and outs of server configuration, database performance optimization, and security measures for hardening. However, what marks the exceptional nature of our team is the willingness to continually improve processes. Having DevOps implement server deployments and hardening provides an additional benefit to clients—it allows them to take advantage of the continued improvement of the masters of their craft.
A common issue with teams following any development practice using any technology stack is how to ensure code quality. What DevOps personnel and processes at Axelerant do to address this is to make sure that any commit that goes into our codebase gets automatically checked.
What are some examples?
We’ve helped do this with DevOps via code linting or checking (coder / PHP-codesniffer), some automatic code fixing (php-CS-fixer), and code coverage (Drupal Code Coverage). Automated test suites are running either Behat or Selenium can test on every commit to ensure that any new check-in is productive. This CI implementation ensures that we have full confidence in our code. When it passes the stages in our CI pipeline, we can deploy shippable code.
Every company worth its salt is actively looking to infuse a DevOps culture to boost production and foster smooth operating teams. Before this, teams had to handle several silos—development, testing, operations—which makes collaborative efforts tedious and makes for an intensive management operation with several hand-offs and different levels of testing at every stage. DevOps essentially lays out a new, fluid foundation for multiplied production, and we love it.