Linux -
Linux, which was developed by Linus Torvalds in 1991 is an Operating System that manages the communication between software & hardware.
Components
Bootloader - A software to manage the booting process of a computer. ( booting - making computer ready )
Kernel - Core of the system that manages CPU, memory & peripheral devices.
Init system - A subsystem that bootstraps the user space & is charged with controlling daemons.
Daemons - Background services. It manages many parts of your system such as logging information, watching for devices inserted / removed, managing user login.
Graphical server - Subsystem to display graphics on monitor. It renders images & shapes on monitor.
Desktop environment - Users interact with it.
Applications - We can download apps from app-store.
-The Importance of Linux in Devops is that Faster development happens with Linux, its Open source so its free, its Flexible & Scalable
Agile Model
It focuses on Process adaptability & customer satisfaction by rapid delivery of the working software product.
Advantages & Disadvantages
Advantages are Dynamic response to requirements, Cost effective, superior quality product, Direct communication between stakeholders, Best suited for large & long term products, Minimum resource requirement.
Disadvantages are Difficult to estimate time & effort for complex projects, Risky due to ever evolving characteristics, Difficult to predict the expected results when requirements are unclear.
Benefits of using Agile with Devops
We can replace non-human steps with automation tools, Improve collaboration between the teams, Create a automated deployment process that moves code from the repository to testing & deployment with as little human intervention as possible.
Devops Principles -
Customer Centric action - Companies must constantly innovate & invest in goods & services that would delight customers to the greatest extent possible.
Create with End product in mind - It focuses on identifying customers true needs & creating products & services that address those demands.
End to End responsibility - It means that the quality & quantity of services it provides to its clients.
Cross Functional Autonomous Teams - Team must be completely self contained throughout the product lifecycle.
Continuous Improvement - It enhances the products & services offered to customers.
Automate everything you can - Automate the manual tasks & everything possible to save time.
Devops on cloud -
SaaS, PaaS, IaaS
SaaS is a method of delivering applications as a service so that users are free from complex software & hardware management.
PaaS is a method where users are allowed to build, test, debug, deploy, host & update their applications in the same enivronment.
IaaS is an instant computing infrastructure service that provides virtualized computing resources over the internet.
3 Phases
Build - Cloud provides seamless access to build advanced applications.
Test - Cloud services are cost-effective, & the scope of production can be developed quickly for conducting the tests.
Run - Cloud provides high speed in developing operational environments that are scalable, flexible, & efficient of resources.
Version Control System
It allows users to keep track of the changes in software development projects & enables them to collaborate on those projects.
Types of VCS -
Local Version Control System - It maintains track of files within the local system.
Centralized Version Control System - It uses a central server to store all the files, & all the changes in the files are also tracked under the centralized server.
Distributed Version Control System - It moves from the client - server approach of the Centralized VCS to a peer - to - peer approach.
Git
Distributed VCS which makes easier to track changes to files. It allows multiple developers to work together & supports non-linear development. Its a software that runs locally. A Git repository contains all the project files & the entire revision history.
- Github provides a web-based git repository hosting service which provides a web interface to upload files.
CI / CD
Continuous Integration (CI) is a development practice in which all development work is integrated as early as possible. For that commits should be made at regular intervals, and when a code commit occurs a build should be triggered.
List of tasks in CI are generating & analyzing reports, Developing & compiling, Performing functional test & labelling code, Performing unit tests, Preproduction deployment, Database Integration.
Advantages of CI are it monitors the health of your code coverage metrics, reduces technical debts & maintenance cost, Publicly visible code metrics, Automated end - to - end acceptance tests, Reducing risk by providing faster feedback, Simplifies & accelerates delivery, Automates deployment process.
Continuous deployment (CD) deploys all the changes in the source code to production automatically without explicit approval from a developer. Its a software release strategy in which each code commit that passes automatic testing is automatically sent to production.
- Advantages of CD are Faster return of product, & Faster feedback from end users.
Jenkins
It executes a series of actions to achieve the Continuous Integration & Continuous delivery of software projects. Its written in java.
Testing
Automation testing process
Determine the scope of automation - The specific area of your application software that will be automated. Scope can be assessed by features, larger data involvement, identical functionalities, technical feasibility of application software.
Test automation tool selection - The project's specifications are evaluated using the scope of Automation to select appropriate tools.
Test planning, design and development
Testing execution
Test automation management - Checking if newly added things are working properly or not.
Popular automation testing tools are Ranorex, Testim, Lambdatest, Selenium.
Configuration Management
It is a system engineering method that ensures a product's characteristics remain consistent during its life cycle. A Configuration management application identifies, Defines, Tracks organization's configuration items by creating & managing record for those items, these records can be accessed from a central repository by other service manager applications.
- Configuration management tools allows modifications & deployments to be faster, repeatable, scalable, predictable.
Popular Configuration management tools are Salt-Stack, Ansible ( Python based tool, considered as agentless), Chef, Puppet.
Continuous Monitoring
Its the ability to detect risk, compliance, & security issues in an operational environment.