Agile only addresses the requirements through software development and doesn’t address rapid delivery of software to production systems. To address the rapid delivery to production and disconnect between development and operation teams, a new trend has emerged – software development and operations (DevOps). DevOps addresses the collaboration, and automation between software development and operation teams. Agile DevOps is an approach to agile development, continuous integration, continuous testing, and continuous delivery through the use of automated tools, and streamlined processes. Deliver incremental development continuously to production, which reduces defects, eliminates excess cycle time, provides continuous feedback and eliminates outage windows when deploying to production.
DevOps (development and operations) is an enterprise software development phrase used to mean a type of agile relationship between development and IT operations. The goal of DevOps is to change and improve the relationship by advocating better communication and collaboration between these two business units.
It is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes.
A DevOps engineer is an information technology (IT) professional who works with software developers, system operation engineer (SysOps) and other production IT staff to oversee code releases.
DevOps engineers are either developers who get interested in deployment, network operations, system administration or SysAdmin’s who have a passion for scripting and coding, and move into the development side where they can improve the planning of test and deployment.
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time.
Combining the Power of Developers and Operations It enables a new approach to managing the complexity of real world operations. The operations complexity breaks down into a few main categories:
- Infrastructure automation,
- Configuration management,
- Deployment automation,
- Log management,
- Performance management,
Below are DevOps tools :
1. Infrastructure Automation: Infrastructure automation solves the problem of having to be physically present in a data center to provision hardware and make network changes. The benefits of using cloud services is that costs scale linearly with demand and you can provision automatically as needed without having to pay for hardware up front.
Tools: Amazon Web Services , VMWare Cloud, Windows Azure, RackSpace Cloud, HP Cloud, OpenShift by Red Hat , Ubuntu Cloud, Citrix CloudPlatform, Heroku, EngineYard
2. Configuration Management : Configuration management solves the problem of having to manually install and configure packages once the hardware is in place. The benefit of using configuration automation solutions is that servers are deployed exactly the same way every time. If you need to make a change across thousands of servers you only need to make the change in one place.
Tools: Anisible, Chef , Puppet , Ansible , Salt Stack
There are other vendor-specific DevOps tools as well:
Amazon’s OpsWorks and CloudFormation , Ubuntu’s JuJu
3. Deployment Automation: Deployment automation solves the problem of deploying an application with an automated and repeatable process.
Tools: Jenkins, Fabric , Capistrano
4. Log Management: Log management solves the problem of aggregating, storing, and analyzing all logs in one place.
Tools: Splunk, SumoLogic , Loggly , LogStash
5. Performance Management: Performance management is about ensuring your network and application are performing as expected and providing intelligence when you encounter problems.
AppDynamics , Boundary, Cloudweaver
6: Monitoring: Monitoring and alerting are a crucial piece to managing operations and making sure people are notified when infrastructure and related services go down.
Tools: Nagios , Ganglia, Sensu , Icinga, Zabbix , PagerDuty
Popular DevOps Tools:
- OS: Linux
- Cloud: AWS