DevOps is a software development method that leads to the communication, collaboration and integration between software developers and information technologies (IT) professionals.
At the basis of the DevOps concept there is therefore the need to establish or strengthen the communication between two groups that are fundamental within the software development process
4. DevOps is a software development method
that leads to the communication,
collaboration and integration between
software developers and information
technologies (IT) professionals.
5. Between Dev and Ops strong contrasts can arise
due essentially to the difference in view.
Dev Ops
Need for change: Need for stability:
• Create changes
• Add or modify features
• Create stability
• Create or enhance services
7. What is the problem?
• Disconnection between the groups results in conflicts and inefficiency
• Ops are motivated to resists to the changes
• Development process is Agile
• Operations process is Static
• The change is required by the business
8. DevOps come to our rescue
DevOps is an approach to bridge the gap between
Agile software development and Operations.
(agileweboperations.com)
9. It’s what Agile is to software development
Agile Dev:
• Addresses the gap between customers requirements
and Dev+Testing teams
• Ready to responded to changes as well as accept
planning
• keep the code simple and advanced technically,
reducing the documentation to the minimum necessary
DevOps:
• Addresses the gap between Dev+Testing teams and Ops
• Automated release management
• Importance of continuous feedback between
Operations to Developers
• continually experimenting is one of the foundations of
success
10. C.A.L.M.S. model
One of the DevOps reference models is the so-called CALMS, which stands for:
• Culture
• Automation
• Lean
• Metrics
• Sharing
11. Culture
Everyone should be focused on a common goal and help others to achieve it
• Culture of shared responsibility
• Be open
• No finger pointing
• Ask questions
• Don’t say “no”
• Be proactive and involve everyone to participate in decisions
12. Automation
Everything that can be automated should be, that means to adopt the idea of programmable infrastructure.
We can automate:
• Deployments
• Testing
• Monitoring
• System configuration
13. Lean
Automating everything can overcomplicates the infrastructure. So it’s necessary to speed up, standardize
and make the activities efficient.
Look for simple and stable solutions that solve the problem, do not reinvent the wheel, if necessary reuse
knowledge and solutions previously used. Ockham rules.
14. Metrics
“If you can not measure something, you can not improve it. (Lord Williams T. Kelvin)”
• Measure everything and use data to refine the activities
• Use real time monitoring
15. Sharing
• Share your knowledge, your achievements and failures, this allows the team to grow.
• Share ideas
• Share metrics
17. DevOps in practice
2 - Develop + Test
1 - Plan
3 - Release
4 - Monitor + Lean
DEV Production
18. DevOps in practice - 1
Start project
Planning
Manage work
Dev
+
Testing
It starts with an idea and a plan…
19. DevOps in practice - 2
Unit Test
Write code
Version Control
Release
After the start the Dev Team turns the idea
into features
Build
Build Verification
20. DevOps in practice - 3
Staging environment
Integration tests
Functional tests
Monitor
+
Learn
When all tests pass the build is deployed to testing environment
21. DevOps in practice - 4
Plan next iteration
Learn and understand how users use the
app, how it reacts and quickly fix issues and
bugs
Monitor
Feedback
22. Non exhaustive list of DevOps tools,
processes, and practices
• Infrastructure as a code (IaaC)
• Continuous Integration
• Automated Testing
• Continuous Deployment
• Release Management
• App performance monitoring
• Load testing & auto-scale
23. Sum up by DevOps is not…
1. DevOps does not replace the Agile approach
2. DevOps does not mean NoOps
3. DevOps does not just mean "infrastructure as a code" or automation
4. DevOps doesn’t mean giving the root password to everyone
5. DevOps is not a job title
The first thing to start discussing is to introduce the main actors and define DevOps.In the slides that follow I will try to introduce the concept of DevOps starting from its definition and from the underlying problem that led to its creation; I will then pass through the basic DevOps model to get to its use
Fundamental actors from the beginning are Development and IT Operations. Over time, other actors have been introduced that have given rise to similar methodologies and the term Dev in DevOps has ended up coinciding with the development team rather than simply creating code.
Give an example of Dev and IT Ops
At the basis of the DevOps concept there is therefore the need to establish or strengthen the communication between two groups that are fundamental within the software development process
The problem arises from a certain distance between the two groups of Dev and of Ops, which then leads to a lack of connection that results in conflicts and inefficiency; moreover, unlike the development team, the OPS tend to avoid change as much as possible due to stability. Another fundamental point turns the fact that the process of Dev is Agile while that of Ops is Static: well then Ops does not enter in any way in the Agile methodology.Finally, the change is required by the business but this should not be seen as a fire fighting.
Collaborative mindset of Dev and Ops
In definitive DevOps represents for the development team and IT operations, what Agile represents for the development team in the creation of software starting from the requests.In this sense, while Agile takes care of bridging the gap between the customers requirements and the development team (dev and testers) thanks to a prompt response to changes and acceptance of the planning, and keeping the code simple and technically advanced in order to minimize documentation, DevOps takes care of bridging the gap between the development team and the Operations team through automation and key concepts such as continuous feedback and continuous experimentation.
The model at the base of DevOps is called CALMS and is an acronym for…
Culture assumes that everyone has a common purpose and that he must feels part of a single team, whose members are ready to discuss proactively and to help each other.
This schema represents a software lifecycle within devops.
In order to better explain and therefore understand DevOps in practice, we can imagine the two macroscopic stages of Dev, understood as code development and testing of the same, and Production, understood as the ultimate goal to which one arrives passing through the staging phase and thanks to all the automations put in place.Imagining the cycle that goes from Dev to Production as a recursive, we can find 4 distinct phases
This phase corresponds to the beginning of the project that is carried out with a planning and with the acquisition and acceptance of the requirements
We then move on to the realization of ideas through a series of predefined steps that depend on the type of project and the work methodology adopted by the team, here some of the most important
And implied that here we are not talking about QA, which provides other "paths" to get to arrive in Production, but a generic process of software development
Very important phase before re-starting a new iteration is to understand how users use our code, gathering information about the user's experience, its difficulties and suggestions for better use: not always what is correct from the point of structural and coding (or interface) is exactly what the user needs to work at best.If necessary, the bugs must also be resolved and corrected quickly.
Twitter example 140/280
What changes is the extension of the concept of "Done": what is achieved is considered completed only when the acceptance tests are passed and when the solution is in delivery.Agile typically focuses primarily on development aspects while the DevOps embraces the infrastructure aspects and creates communication;
Exactly as happened for the Cloud, the sys admin do not become "useless" but raise the bar of their skills and their activities. The goal is in fact to break down the Lead Time and improve the productivity of developers in relation to the deployment: instead of opening a ticket and waiting for Ops to worry about the deployment, going to interpret dozens of pages of documentation, these activities become a service of commodity;
Although automation is at the heart of many DevOps application patterns, the core of this approach is goal sharing, communication and continuous feedback.
DevOps promotes closer cooperation between teams and not a world where developers and sysadmin become handymen.
There is no DevOps job but only people who have in-depth knowledge of the methodologies behind DevOps and the tools required to work.
So far we have only seen the dev and ops side.
When we mix the two, some useful practices came up.
These practices can be applied to other entities, such as QA.
Next we will present to you how useful devops practices can be applied by integrating QA.