Sim.10 Technology – Discussions on DevOps, Python and Automation

Intro to DevOps

Many organizations still approach IT in a traditional fashion. IT groups continue to operate in silos independent of each other. Business analysts take requirements Development who have little or no input. Developers take the requirements, and request application and database servers from infrastructure. This process can take months or, in larger applications, years to implement. Businesses looking for different ways to improve functionality, reduce software release cycles and add new features to stay ahead of the competition.  This is what is given popularity to DevOps.

What is DevOps?

DevOps is a methodology that brings Development and Operations into one organization or functional area. Both Development and Operations work together to achieve common goals. Unfortunately, bringing these two groups together is more complex than implementing a toolset. We have to fundamentally change the goals and methodologies of both groups. Because of this, DevOps requires executive management to drive this into the organization effectively.

Why Use DevOps?

Friction is reduced which in turn improves corporate agility with both Operations and Development working together. The business no longer needs to wait months on infrastructure, development / QA typically finds defects quicker in the development lifecycle which is much easier to not only fix, but costs the business less. As defects are discovered, the cost to the business is higher as that defect is moved from development to production. A defect found in production will cost the business more time and potentially lose of customers depending on the impact. When an organization implements DevOps correctly, defects are typically found in lower environments such as development or QA. DevOps improves business agility, reduces friction between IT organizations and provides a repeatable and automated processes.

Development

When introducing DevOps into Development organizations, the procedures for requirements docs and code releases are modified. Instead of creating one requirements doc and taking months of development effort, DevOps focuses on smaller iterations to drive faster releases. This is where implementing Continuous Integration Continuous Development (CICD) tools like Git/Subversion and Jenkins/TravisCI will have the most impact. With these tools, developers can focus on writing code instead of builds and unit testing. Application builds and testing are still important, however, these processes are automated. Providing developers with short-lived, or on-demand environments enables them to spin up an environment, test changes and then destroy the environment. This is an important step in DevOps as code moves from lower environments, such as Dev and Test, up to QA and Production automated testing occurs at every step and after every build.

Operations

Implementing DevOps into Operations changes the typical deployment methodology. Instead of having manual processes to install and configure infrastructure, most every aspect of the build is automated. Fully automated deployments reduces infrastructure build and configuration time, and the build process is easily integrated into other tools like Jenkins. All infrastructure is built and configured using Configuration Management (CM) tools like Ansible, Puppet or Chef. CM tools not only help with the initial configuration, but also will monitor all nodes to ensure the configuration does not change. If a node’s configuration does change, the CM tool will make the necessary modifications automatically.