Intro Flashcards
What is Devops
A cultural amd professional movement that stresses communication, collaboration and integration between software developers and IT operations professionals while automating the process of software delivery and infraestructure changes.
It aims at establishing a culture and environment where building, testing, and releasing software, can happen rapidly, frequently, and more reliably
Keys from the definition of devops
Core messages:
Cultural
Professionalism
Communication
Collaboration
Automation
Speed and frequency
What DevOps is not
It’s not a title nor a team.
It’s not just a tool.
It’s not only culture
It can’t be reduced to just automation
It does not mean that developers can do whatever they want
What are the goals of DevOps
- Smaller, mor frequent releases
- Reduced effor and risks
- Reduced cost of product iterations and delays
- A culture of communication and collaboration
- Consistency and speed through automation
What are the improvements DevOps brings?
- time to market
- integration with the business
- Responsiveness
- Code and deployment quality
- Productivity
- Visibility
- Agility
NoOps or NewOps
While automation is the goal of NoOps, there will always be a need for human competencies and roles, like managing the operational automation, designing, implementing, and managing internal and external infraestructures and enterprise architectures.
Migratino to the cloud does not signal the end of Ops. The role of Ops is evolving as much as the role of Dev.
DevOps Values
- Culture. Relates to the people and processes aspects of DevOps and the need to improve communication and collaboration. Without the rigth cultureautomation attempts will be fruitless.
- Automation. Tools that enable automation are important aspects of DevOps.
- Lean: maximizing customer value while minimizing waste and improving flow
- Measurement: If yo can’t measure, you can’t improve.
- Sharing: Is the feedback loopback
Autoamtion is essential
Automation enables agility, consistency, speed and realiability.
Automation and Toochains help increase the speed and consistency of IT delivery.
Inconsistency in tools, frameworks, and methodologies are the enemy of broad, enterprise-wide DevOps success
DevOps stakehoders
Dev includes all the people involved in developing software products and services. Product and project managers are here.
Ops includes all the people involved in delivering and managing software products and services.all administrators are here.
DevOps improves Cadency and Velocity
Every business has become a tech business.
Customers value outcomes, not products.
Time to value is replacing time to market
Golden Circle
Simon Sinek, 2009.
Three circles: Why, How, What.
Why: Purpose, cause, belief, the reason the org exists.
How: What sets the organization apart.
What: Product and services.
Business Value of DevOps
Companies with high IT performance are twice as likely to exceed their goals.
Value is defined by the customer. IT must contribute to the business value stream
Challenges of IT in DevOps
Internal:
IT must go faster without risking quality
IT’s silo culture is constraining the value stream
Prior investments (ITSM, Agile, Automation) aren’t delivering end to end value.
Wall of Confusion
Devs want change, Ops want stability
DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity.
What does the business want?
Equilibrium between extreme focus on change, quality and extreme focus in stability
Top 5 predictors of IT performance
- Peer-reviewed change approval process.
- Version control for all production artifacts.
- Proactive monitoring.
- high-trust organizatinoal culture.
- Win-win relationship between Dev and Ops.
The Three Ways
- Flow. Understand and increase the flow of work (left to right)
- Feedback. Create short feedback loops that enable continuous improvement.
- Continuous experimentation and learning. Create a culture that fosters them.
The First Way: Flow
Increase flow by understanding and removing constraints.
Never passing a known defect downstream
Never allow local optimization to cause global degradation
Achieve profound understanding of the entire system
Theory of Constraints
A methodology for identifying the most important limiting factor that stands in the way of achieving a goal and then systematically improving that constraint unitl it is no longer the limiting factor.
Every process has at least one constraint or bottleneck that affects its ability to consistently meet its goal.
The Process will only meet the capacity of its constraints and will be only as successful as its weakest link.
Improving constraints is the fastest and most efficient way to improve the entire process or system.
Common Constraints
Development delays.
Environment creation.
Code deployment.
Test setup and run.
Security or QA assessments.
Overly tight architecture.
Product management .
Complex or bureaucratic processes.
The Second Way: Feedback
Understand and respond tot he needs of all customers, both internal and external
Shorten and amplify all feedback loops.
It stresses the importance of right to left feedback
Without feedback teams lack the information needed to continuosly improve.
Examples of feedback loops
Automated testing.
Peer review of production changes.
Monitoring/Event management data.
Dashboards.
Production logs.
Process measurements.
Post-mortems.
Shared on-call rotation.
Change, incident, problem and knowlwedge management data.
The Third Way: Continual Experimentation and Learning
Allocate time for the improvement of daily work.
Create rituals that reward tje team for taking risks.
Introduce faults into the system to increase resilience.
Plan time for safe experimentation and innovation.
Simian Army / Chaos Monkey
Simian Army was adopted by Netflix as a service that randomly terminates a production instance.
Response to attacks helps to build competencies to recover the productino environment from inevitable failures
Chaos Monkey is a service that identifies groups of systems and randomly terminates one of the systems in a group. It runs only in business hours with the intent that engineers will be alert and able to respond.
Encourage a learning culture
Create a learning culture is critical to sustain growth and innovation
Encourage daily learning and knowledge sharing
Create training and skills-based education plans
Incorporte learning into processes
Use technology to accelerate learning
Make work educatinoal through experimentation, problem solving and demonstrations
Allow and use mistakes as sources of learning
Make the results of learning visible
DevOps practices
Continuous integration
Continuous delivery and deployment
Continuous testing
Rugged DevOps
DevSecOps
ChatOps
Kanban
Continuous Integration (CI)
This practice requires developers to commit ocde into a shared repository at least daily
It also mandatesrunning production-like environments, and passing acceptance and integration tests
Each check-in is validated by an automated build and automated unit, integratin and acceptance tests.
Is dependent of consistent codng standards
Requires version control repositories and CI servers to collect, build, and test committed code together
Continuous Delivery (CD)
This methodology focuses on making sure software always is in a releasable state throughout its lifecycle.
Continuous delivery is achieved by continuously integrating the software done by the development team, building executables, and running automated tests on those executables to detect problems.
You are doing continuous delivery when:
* Your software is deployable throughout its lifecycle
* Your team prioritizes keeping the software deployable over working on new features
* Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them
* You can perform push-button deployments of any version of the software to any environment on demand
Stages of deployment pipeline
Development
Commit
Build
Test
Stage
Deploy
Production
Feedback Loop
Continunous Delivery and Testing
Continuous delivery means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment.
Continuous delivery requires that whenever anyone makes a change that causes an automated test to fail, breaking the deployment pipeline, developers stop the line and bring the system back into a deployable state.
Automated tests in production-like environments assure the code and environment oeprate as designed and are always in a deployable state
Continuous Testing
Is the process of executing automated tests as part of the deployment pipeline to obtain immediate feedback on the business risks associated with a software release candidate.
Functional: Unit tests, API, integration, system testing
Non-Funtional: Performance, security, compliance, capacity.
Testing deployment strategies
Test-driven development
Performance testing
End-to-end use-case testing
Security testing
Manual testing
Testing in production
Shifting left is about building quality into software development process.
Continuous Deployment
Is a set of practices that enable every change that passes automated tests to be automatically deployed to production
Removes the manual step in the deployment pipeline
It may result in multiple deployments per day.
Code deployed into production may be invisible to customers but features can be run and tested by internal staff.
Continuous Delivery leads to Higher IT and Business Performance
The factors that form continuous delivery lead to the following:
Less rework
Lower levels of deployment pain
Higher throughput and stability for IT
Lower change failure rates
Indentifying strongly with the organization you work for