The Future of Project Delivery: Embracing Automated Software Updates & Tests
Embracing Efficiency: How Automation is Revolutionizing Software Updates at SystemSeed
We ran a speaker session at DrupalCon 2023 in Lille titled "Automated Software Updates: How You Can Benefit," and the presenter was none other than our own Evgeniy Maslovskiy, CTO and Head of Engineering at SystemSeed.
For those who are unfamiliar with SystemSeed, we are a boutique agency renowned for delivering ambitious technical projects for governments, NGOs, charities, and academic institutions. The introduction highlighted that automated testing had revolutionized how SystemSeed delivered its projects, and I was eager to learn more.
Evgeniy began with an introduction, sharing a bit about SystemSeed's mission and its commitment to tech for good. He then shared a humorous anecdote, quoting, "There are three things you can watch forever: fire burning, water falling, and other people working." With a smile, Ev added, "Well, whoever said this clearly hasn’t experienced automated software updates; otherwise, this list would definitely have one more item."
The room chuckled, but the underlying message was clear: the power and efficiency of automated software updates are mesmerizing.
The magic of automation in action
Ev's excitement was evident as he proceeded to share a series of Slack messages, showcasing the seamless integration of automated updates within SystemSeed's workflow. The process was impressively streamlined as follows:
Notification of security update: The team receives a Slack notification whenever a security update is released.
Updates bot in action: Almost immediately, their updates bot detects the update and creates a Pull Request with the proposed code changes necessary to apply the update.
Cloning the production application: Within minutes, their infrastructure creates a clone of the production application with the updates applied, ensuring that the live environment remains unaffected during the testing phase.
Automated regression tests: The real magic happens next. The system automatically runs regression tests on the cloned environment. Once these tests are passed, a notification is sent out, confirming the success of the update in the test environment.
Merging the changes: With all checks green, the updates bot takes the final step of merging the changes to the main git branch, ensuring that the software remains updated and secure.
Beyond automated updates
Automated updates are just the tip of the iceberg. The SystemSeed team have strategically expanded our use of automation to encompass automated testing too.
Automated Testing: Ensuring Code Quality
Ev stressed the pivotal role of automated testing in maintaining code quality. He stated that "Automated testing is not just about catching bugs; it's about preventing them."
He then showcased some of the testing frameworks and tools integrated into SystemSeed's workflow, ensuring that every line of code meets the highest standards before deployment.
Our toolset for testing includes Codeception, Behat, Cypress.io and Test Cafe.
Visual regression testing has come a long way
Visual regression testing takes screenshots of the website pages before and after an update, and compares them. It’s possible to integrate this kind of tests within an automated delivery flow. N.B. You need to configure page areas that are expected to be dynamic and should not be highlighted by the tool.
Our favourite visual regression testing tool is called Diffy. It was built by a Drupal community member, Yuri Gerasimov, and it has a very good developer experience.
Ev went on to explain that automated testing requires a mindset shift, so that you trust your testing tools in the same way would a human tester.
Our rule of thumb is "if the automated tests pass, then they are safe to deploy". You don't ask for a second opinion or hire an extra QA engineer if an issue is found. Instead, you should focus on helping your tester (human or automated) to get better.
Continuous Integration and Continuous Deployment (CI/CD)
The session then transitioned into the realm of CI/CD, where Ev explained, "Continuous Integration is about preventing problems, and Continuous Deployment is about delivering solutions."
The integration of CI/CD pipelines into the development process showcased a commitment to efficiency, with the audience gaining insights into how automated pipelines ensured a smooth and rapid transition from development to production.
Tools like CircleCI, TravisCI, Jenkins and others give developers the ability to create a consistent deployment experience. Developers create script that defines how code is to be deployed to the hosting infrastructure, and the CI tool will follow these instructions to deliver their code to the right place.
Performance Monitoring and Error Tracking
Ev shared SystemSeed's proactive approach to performance monitoring and error tracking, stating, "Detecting issues before users notice is the key."
So why doesn't everyone already do this? Ev shared some common blockers:
A client doesn't come to any agency asking to have their budget spent on automated testing, however, if it's built into our DevOps process they get it anyway as a benefit of working with us!
The truth is that clients who say they don't have the budget for automation are the ones who don't have the budget for manual QA, deployments or updates either. The purpose of automation is to deliver MORE for the same budget. It is our job to explain the benefits and cost savings to our clients.
Lack of experience
If an agency hasn't got engineers who have previously written this type of automation, it can feel complex and time-consuming. Fortunately, today's tools make test writing easy and enjoyable, with a much shorter learning curve.
At SystemSee it usually takes up to a week to build a solid QA foundation to cover the core user flows with automated tests and processes when a new project begins. This short time up front means huge time savings down the line.
The Power of Automation
The beauty of this automated process is its efficiency and reliability.
Instead of manual checks and potential human errors, the system ensures that updates are applied correctly, tested rigorously, and then merged without any hitches. This not only saves time but also guarantees the security and functionality of the software.
Ev emphasized the transformative impact of automated updates on SystemSeed's project delivery. By automating routine testing and update tasks, the team can focus on innovation, problem-solving, and delivering exceptional value to our clients.
As the session concluded, it was evident that automated software updates are not just a luxury but an essential element in SystemSeed projects.
Our approach is a solid example of the potential of automation in enhancing efficiency, security, and overall project delivery. For agencies and developers, embracing such automation is not just about staying updated; it's about staying ahead. For clients, it offers peace of mind, fewer bugs, and a better use of their budgets.
- What are automated software updates?
Automated software updates involve using bots and systems to detect, apply, test, and merge software updates automatically.
- Why are automated updates crucial?
They ensure the timely application of updates, rigorous testing, and reduce the chances of human error, enhancing software security and functionality.
- How has SystemSeed benefited from automated updates?
SystemSeed has streamlined its update process, ensuring timely and error-free updates, allowing the team to focus on innovation and problem-solving.
- Are automated updates reliable?
Yes, when set up correctly and integrated with thorough testing mechanisms, they can be more reliable than manual updates.
- Can all software benefit from automated updates?
While the principles can be applied to many software types, the setup and specifics might vary based on the software's nature and complexity.