DevOps is a software development method which is all about working together between Developers and IT Professionals. This presentation gives you an introduction to DevOps.
“A software development method that emphasizes
communication, collaboration, integration,
automation, and measurement of cooperation
between software developers and
other IT professionals”
Source is Wikipedia
DevOps – Working together
Improve technologic and process integration between development
and operations
• Have a common goal
• Working together
• Optimization of team performance
Development
Technology
Operations
Quality Assurance
DevOps
DevOps – Deployment lifecycles
Improve deployment frequency and have faster development and
deployment lifecycles
• Leads to faster time to market
• Leads to lower failure rate of new released
• Leads to shortened lead time between fixes
• Leads to faster mean time to recovery (MTTR)
DevOps - Automation
• DevOps approach aims to maximize
• predictability
• efficiency
• Security
• maintainability of operational processes
• By investing in automation and critical tool selection
• Standardize development environments
• Use release management
• More flexibility in managing and driving automation
• No or less manually work at the command line
DevOps – application-centric networking
• Success is determined by the end
user’s experience with an application
• Measuring metrics
• Application responsiveness
• Application uptime
• …
• Requires different level of
instrumentation within the supporting
infrastructure
DevOps? – Look at the A-Team
• Working together
• Strive for the same goal
• Stick together no matter what
• Share intel
• Analyze their results
• They learn from it
• They always win and nobody dies!
Plan
1 Monitor + Learn
ReleaseDevelop + Test
2
Development Production
4
3
DevOps process
Thanks to Donovan Brown for the amazing graphics!
It starts with an idea – and a plan
how to turn this idea into reality …
Manage work
Develop + Test 1
Plan
Project starts
PlanTrack progress
Thanks to Donovan Brown for the amazing graphics!
Write Code
Unit Testing
2
Build
Version Control
Build Verification
Release
Once the iteration starts, developers
turn great ideas into features …
Develop + Test
Thanks to Donovan Brown for the amazing graphics!
Cloud
Load Testing
Integration testing
environment
Automated functional
testing environment
3
Pre-production
environment
Staging
environment
Monitor + Learn
When all tests pass, the build is deployed to testing
environments for each stage in the release process
Release
Thanks to Donovan Brown for the amazing graphics!
Learn and understand how users use your app, how it reacts
and quickly fix issues and bugs
Monitor + Learn
4
Monitor
Feedback
Plan the next iteration
Thanks to Donovan Brown for the amazing graphics!
DevOps practices
• Infrastructure as Code
• Continuous integration
• Automated testing
• Application Performance Monitoring / Management
• Continuous Deployment / Delivery
• Release Management
• Configuration Management
Doing one of these practices doesn’t mean you are doing DevOps!
Source: http://www.itproguy.com/devops-practices
DevOps journey – Where to start?
Asses where you are
• Gather
information
about MTTR,
MTTD, rates of
deployment
• Microsoft’s
DevOps Self
assessment*
Challenge people
• Address people
on collaboration
between dev and
ops
• Thinks out of the
box instead of in
organization
structure and
processes like ITIL
Determine your
tools
• Choose the
practices you
need
• Define the tools
that are suited to
your case
*Microsoft’s DevOps Self Assessment: http://devopsassessment.azurewebsites.net
MTTR=Mean Time To Resolve
MTTD=Mean Time To Detect
Infrastructure as Code (IaC) – is the practice in which the techniques, processes, and tool sets used in software development are leveraged to manage the deployment and configuration of systems, applications, and middleware. A significant number of testing and deployment defects occur when developers’ environments defining the application and underlying infrastructure differ from testing and production environments. Standardizing these environment definitions, putting them under version control, and deploying and configuring the infrastructure and application automatically from the code in version control, yields immediate benefits in consistency, time savings, error rates, and auditability.
Continuous Integration (CI) – is the practice of merging all working copies of developers code with a shared mainline, producing a new build upon code check-in. Ideally CI also involves libraries of Integration or unit tests, also automatically triggered based on new code being checked into source control. Once automated Integration tests are successfully completed a known good build of the software is produced.
Automated Testing – is the practice where various tests such as load, integration, and unit tests happen automatically either after you check in code (i.e. attached to CI) or some other means to fire off one or more tests automatically against a specific build or app. Manual tests can generally add value to your software, but this could be considered “waste” in a value stream since it slows down the process of delivering value to the customers and can become a significant bottleneck when your velocity of code changes increase. An automated test adds value in the value stream by efficiently ensuring the quality of code is increased, finding defects prior to going into the customers hands.
Application Performance Monitoring/Management (APM) – is the practice of having visibility into key metrics about your application as well as alerts and logging about the health of your applications. These metrics, alerts and logging enable you to react in a timely manner to changing or business impacting conditions. In the ideal, these items are accessible via a variety of user-friendly interfaces that are easy to navigate and provide drill-downs to help facilitate taking action as well as root-cause analysis down to the line of code. While the user interfaces tend to be more targeted to Operations and business owners, having the right data requires collaboration with Development to appropriately instrument applications to deliver this data.
Continuous Deployment/Delivery (CD) – is the practice that usually comes after CI and can be implemented to push a new known good build to an environment either automatically or via automation capabilities that an authorized user can schedule.
Release Management – is the practice which provides the ability to automate deployment of new applications as well as changes to applications across managed environments. Release Management facilitates packaging these changes into known, documented releases that are deployed via workflow through pipelines of ordered release stages (Release Pipelines). The pipelines enable approvals, traceability and rollback if required. Lastly, roles, responsibilities and access levels for various artifacts and actions can also be managed through Release Management.
Configuration Management – is the practice for establishing and maintaining consistency of a product’s performance, functional and physical attributes with its requirements, design and operational information throughout its life.
MTTR=Mean Time To Resolve is a basic measure of the maintainability of repairable items. It represents the average time required to repair a failed component or device
MTTD= Mean time to detect