Part 1 in a 3 part series
Customers are constantly changing their requirements and seeking new and more powerful solutions. Service providers are being pushed to look at their own operations and improve their development cycle to meet these changing requirements.
There are several development lifecycle models such as waterfall, iterative, agile, etc., and the appropriateness of each depends both on the company’s culture and the project. But nowadays, the success of a project depends not only on the choice of a development model and its suggested practices, activities, and deliveries, but also on how the organization executes on the model. The challenges associated with customer needs and a competitive business market argue for a more communicative, flexible and automated operation.
DevOps can be the answer. DevOps is a set of IT practices that stress collaboration and communication between software developers and IT professionals, while at the same time automating the process of software delivery. For better collaboration and communication, DevOps aims at establishing a culture and environment for faster development and testing, and enables more frequent and more reliable software releases. Companies that incorporate DevOps practices into their operations get more done through continuous software delivery, less complexity, and faster resolution of problems.
Consider an example of a fictitious solution provider that does not implement DevOps with two development teams working on two separated modules of a common networking/security application. The organization has a typical organization structure with architects, developers, testers, managers, etc., working in a custom software development lifecycle process supported by common tools and manual processes. There is an integration team responsible for integrating the modules developed by the two teams and a test team responsible for installing a package candidate in different environments in order to execute tests. We can imagine the problems that can arise in this environment.
Each developer has his or her own task estimates to finish development and push the code to a source repository. Sometimes, internal communications does not flow and specific dependencies are not raised or notified. Once the code is pushed, the integration team merges the modules and builds the application in a local machine. Afterwards, a release package and its installation instructions are passed on to the test team who will install it in different environments to manually execute their test plan to verify functionality, security, and performance. Problems will be documented and prioritized.
This is the first in three blog posts on DevOps. The next two posts cover the possible problems and consequences, and how we can achieve better results for companies.
By Fabio V.