DevOps for Testing – How we accelerated projects using automation and virtualization
“This code works fine on my computer, but not on the live server!”, programmers often complain to IT system administrators. This happens when the environments in these servers do not match. As a result, projects often get delayed.
To avoid compatibility issues, development and production server software has to be identical. DevOps aims to achieve this using configuration management and automated deployment.
With our DevOps service plan, Bobcares helps businesses deliver projects on time. We automate the DevOps cycle for fast deployment of application code on the servers. We help to create and maintain a uniform configuration for different server environments.
Recently a business owner came to us for assistance to reduce project delays. His company provided testing and bug fixing services for WordPress websites. The projects were hosted on shared servers. This led to a lot of time being wasted in setting up the environments for each project. “I find it hard to meet deadlines”, he said. “And I have no time to focus on my business”.
Implementation of DevOps solution
To being with, we tried to figure out how to resolve the bottle-necks. Every time a project came, they had to manually setup the environment. This was because each project required a unique WordPress install with different configuration and plugins. For example, an online promotion website required SEO tools, while a photography site needed image hosting tools. Setting up and maintaining these custom environments was time-consuming.
To reduce project turn-around time, we decided to implement a solution to automate these tasks. We built a custom DevOps plan for the customer’s testing services using server virtualization technology. Here is how we did it.
1. Virtualization framework to enable fast provisioning
As part of our plan, server virtualization was chosen in place of current shared server setup. Virtualization enabled fast creation of server instances called Virtual Machines (aka VMs). Development and testing environments could be setup on these VMs.
We chose Proxmox VE to setup virtualization as it has a web interface to easily create and manage VMs. And its open-source too. Yay! In Proxmox, we used KVMs (Kernel-based Virtual Machines) to create VMs, as it supported both Linux and Windows images.
2. Automating deployment of testing environments
WordPress installs varied in each project. This required custom environment to be created for each case. We configured a custom VM template with CentOS 7 and server software such as Apache/Nginx, PHP, SQL server etc. Additional feature-sets for each project, such as SEO plugins, image libraries, Ad tools etc., were installed. The VM was optimized for security and performance. We then setup testing tools such as Selenium, JMeter and an IDE such as Eclipse in the VMs for speeding up automated testing.
Once the VMs were fully configured, templates were created to build similar server instances in future. We designed VM templates with different feature sets for each testing project. We then used these templates to quickly create virtual instances in a few clicks. When each project got over, these VMs were destroyed to free up the resources.
3. Automation of testing services
We automated common time-consuming tasks such as:
- Creation of testing environment in VM for each WordPress website.
- Deployment of customer’s website in the VM.
- Automated testing with tools – JMeter for performance testing, XSS-Me and SQL Inject-Me tools for security testing, SEO tools for responsiveness testing, etc.
- Notification to developers when bugs are detected.
- Creation of development environment for the developers to help in bug-fixing.
- Delivery of bug-free code to end user after retest.
Here is a glimpse of our DevOps design:
This scalable solution helped customer reduce turn-around time for testing services. Automated provisioning with our script spared customer from the overhead of setting up environments. This enabled him to provide seamless testing services and deliver projects on time.