In the modern world, customer requirements and market demands are changing very rapidly. To cope up with the pace of a rapidly changing environment, organizations are turning their processes and infrastructure.
First, we need to look at the resources basically involved in successful IT infrastructure.
Development resources are part of the development of software. The development team is involved in writing code for a new product, new features, security updates and bug fixes.
Operations teams are resources which are part of maintaining Production Environment. They are responsible for deploying developments and assuring uptime of production environment. Further, when any deployment occurs they are also responsible to diagnose any errors or problems that occur after new deployment.
What is the Problem with the Classic Approach?
Development teams have to wait for weeks to reflect their changes in production. It usually happens because operation teams have a fixed deployment cycle. When the Operations team deploys the development, there are chances that release fails in live environment because code was not developed with live or live like environment. If the release fails, the development cycle is repeated for bugs and hotfixes.
This also further delays testing developments in live environments. The overall impact of this is organizations were not able to deploy features quickly enough to keep with market demands.
For the development team, it also becomes difficult to maintain source code which is released and new features being developed.
The requirement for a number of items (servers and other hardware) is continuously growing because of rapidly changing market demands. Another factor is quick releases of new features by development teams. The increase in infrastructure costs organizations dearly and also becomes challenging for operations teams to manage a large number of resources. The tools operations teams were using earlier are now proving ineffective for monitoring a much large number of infrastructure items.
Other challenge for operation team is releasing new code to live environment. For releasing new items to live environment it requires little efforts to make that development items to fit into live environment. For this reason live deployments are usually scheduled once a month.
In this process both teams feels that other one is tossing their work and responsibilities to one other.
What is dev ops basically
DevOps is philosophy in which Development and Operations are working in collaboration.
Main focus is to reducing Rework and Overhead by adopting automation technologies. It also improves collaboration and productivity by automating infrastructure, automating workflows and continuously monitor IT infrastructure performance. This ultimately give both teams
As per DevOps, the workflow in software development and delivery is divided in to 8 Phases
How this is achieved
- Development team develops code in small chunks that are integrated, tested, monitored and deployed usually in hours.
- To ensure better deployment of code development and production environments are kept identical including same configurations.
- Both teams writes Configuration Management Code that describes how things should be built
- Development team uses Source control system to manage track and document all of the changes to source code and configuration.
This whole process can be understood by following
The development team uses tools such as Jenkins to build and test code continuously.
Source control tools such as GitHub, BitBucket, etc. are used to manage and document all the changes to their application code and configuration management code.
Operations team uses tools for Configuration management like Chef, Puppet and Saltstack to deploy applications across hundreds of IT resources in different locations.
Both teams use tools to monitor the environments and their applications. They also use tools for Generating, reading and analyzing system logs.
To analyze logs and generating reports and alerts, tools like New Relic are used. This allows them to know about application performance and if there are any bottlenecks.
Both teams use a common messaging platform like Slack to show progress and alert messages.
These tools make a systematic approach to develop and deploy applications and ultimately achieve DevOps goal
Hi, I am .NET Developer, Architect having more than 14 years of industrial experience.