Introduction To DevOps Flashcards
DevOps adoption
- People - Alignment of teams
- Process - Alignment of process, Measurement & optimization
- Technology - Alignment of capabilities, Tool stack & implementation
Technology challenges
- Lack of automation in the software development life cycle, hence loss of quality due to error prone repeatability of steps
- Defects generated due to inconsistent environments for testing and deployment
- Delays in testing due to infrastructure unavailability
- Brittle point-to-point integration between modules
DevOps is…
A set of capabilities, across the IT Value Stream (PLAN – BUILD – RUN) which enhances throughput, quality and business value
Minimum Dev Capabilities
- Version Control
- Static/Dynamic Code Quality Analysis
- Build Automation
- Baseline in Artifact Repository
- Continuous Integration
Minimum Test Capabilities
Functional/Acceptance test
Minimum Infrastructure Capabilities
- Database deployment
- CD Automation
- Release Management
Minimum Ops Capabilities
- Incident Management Tools
- Monitoring and Dashboard
Good to have Business Capabilities
- Acceptance Testing
- Rapid Prototyping
Good to have Dev Capabilities
- Code coverage
- Code review
- Unit testing
Good to have Test Capabilities
- Test and Defect Management
- Test Data Management
- Service Virtualization
- Performance Testing
- Security Testing
Good to have Infrastructure Capabilities
- Infrastructure Layer
- Environment Management
- Containerization
Good to have Ops Capabilities
Support Analytics
Policies/Procedure/Methods Business
- Agile
- Big Room Planning
- Lean
Policies/Procedure/Methods Dev
- Agile
- Feature Toggle
- Incremental Design
- Micro Services
Policies/Procedure/Methods Testing
Progressive Test Automation
Policies/Procedure/Methods Infrastructure
- On demand/cloud based Infra
- Infra-as-code
- Just enough Infra
Policies/Procedure/Methods Ops
- Predictive Monitoring
- Self Healing
Agile
Time boxed, iterative approach to software delivery that builds software incrementally from start of the project, instead of trying to deliver it all at once near the end.
Big room planning
Brings all the stakeholders who are responsible for delivery of software (business, dev, test, program management teams) together in a single room for about two days
Lean
State of a project achieved by collaboration, by ‘shifting left’ operational concerns early in the development lifecycle, by eliminating waste, rework and over-production i.e. using Lean Principles in DevOps
Feature Toggle
Releasing features to a selected cohort to get their responses prior to release to entire user base
Incremental Design
Based on SOLID principles
SOLID
- Single responsibility principle
- Open closed principle
- Liskov substitution principle
- Interface segregation principle
- Dependency inversion principle
Micro services
An architectural style to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms.
Microservices Components
- Client-side user interface
- Database Server side application
Client-side user interface
Manages the views and the user interface of the application
Database
Stores the data in a relational database
Server side application
Handles HTTP requests and executes the domain logic, extracts and updates data from/to the database and provide the HTML views
Single responsibility principle
A class should have only one reason to change
Open closed principle
Software entities should be open for extension, but closed for modification
Liskov substitution principle
Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it
Interface segregation principle
Clients should not be forced to depend upon interfaces that they do not use
Dependency inversion principle
High-level modules should not depend on low-level modules. Both should depend on abstractions.
Continuous Integration Pipeline
A software development practice adopted as part of extreme programming.
Version source code -> Code Quality Analysis -> Unit Testing -> Code Coverage -> Create Executable -> Baseline the Executable
Progressive Automation
One of the automation methods where the test modules are tested in various stages of software development. Test code is written simultaneously with the development code.
Continuous and automated testing
Involves using automated testing tools which can execute tests, provide outcomes of the tests in the form of reports and can be run repeatedly.
Service Virtualization
Helps in simulating application dependencies and begin testing earlier.
On-demand infrastructure
A model where computing resources are made available to the user as needed.