DevOps-1: Introduction to DevOps
DevOps-1: Introduction to DevOps - Outline
- 1.1. DevOps Overview
- 1.2. Traditional Software Development Approach: Waterfall Model
- 1.3. Traditional Software Development Approach: Agile Model
- 1.4. Relationship Between Agile and DevOps
- 1.5. Principles of DevOps
- 1.6. DevOps Lifecycle
- 1.7. Categories of DevOps Tools
- 1.8. Benefits of DevOps
- 1.9. DevSecOps
- 1.10. DevOps on Cloud
- 1.11. Quick Recap
1.1. DevOps Overview
DevOps is a set of practice that aims to provide superior quality software quickly by integrating the processes between the development and the operation teams.
- DevOps is an agile relationship between development and IT operations.
- DevOps is the abbreviation for Development and Operations.
- Development includes Plan, Create, Verify and Package
- Operations include Release, Configure and Monitor.
DevOps aims at:
- Shortens development life cycle
- Provides features and fixes
- Provides regular updates
1.2. Traditional Software Development Approach: Waterfall Model
The traditional software development approaches are comprised of a sequence of activities.
Software Development Life Cycle (SDLC) two approach are,
- Waterfall Model
- Agile Model
The waterfall model is a traditional software development model that uses a linear and sequential approach of software development.
- Easy to use
- Cost Effective
- Time saving
- Easy testing
- Suitable for small project
- Managerial control
- Risky and uncertain
- Not suitable for complex project
- Final product available only at the end
- Not suitable for project with changing requirement
- Difficult to make changes in the testing phase
1.3. Traditional Software Development Approach: Agile Model
Agile model focuses on process adaptability and customer satisfaction by rapid delivery of the working software product.
- Dynamic response to requirements
- Cost effective
- Superior quality product
- Direct communication between stakeholders
- Best suits for large and long-term project
- Minimum resource requirement
- Poor documentation
- Difficult to estimate time and effort for complex project
- Risky due to the ever-evolving characteristics
- Difficult to predict to expected result when requirements are unclear
1.4. Relationship Between Agile and DevOps
Some relationship between agile and DevOps are below,
- Satisfy customer through early and continuous delivery of valuable software
- Stokehold and developers must work together throughout the project
- Deliver working software frequency with a preference for shorter timescale.
Benefits of using Agile with DevOps are,
- Replace non-human steps using automation tools
- Improve collaboration between the teams
- Automate to create a potentially shippable increment
1.5. Principles of DevOps
The DevOps Agile Skill Association (DASA) defines certain principles for DevOps. It’s has following principle,
- Customer centric action: Companies must constantly innovate and invest in good and services that would delight customers to the greatest extent possible
- Create with the end in mind: The principle focuses on identifying customers true needs and working towards creating products and services that address those demands.
- End-to-end responsibility: The term End-to-end refers that the team is responsible for the quality and quantity of services it provides to its clients.
- Cross functional autonomous teams: The teams must be completely self-contained throughout the product lifecycle.
- Continuous Improvement: It enhances the products and services offered to customers.
- Automate everything you can: Automation is associated with the goal of redefining how the team delivers its services.
1.6. DevOps Lifecycle
The DevOps is based on five phases as follows,
- Continuous Development: It’s manifests planning and coding. The scope of the project is determined during the planning and developers build the code. There are no DevOps tools are not required for planning.
- Continuous Testing: It is the phase in which the application in rigorously tested for bugs.
- Automation test tools such as TestNG, Junit, Selenium.
- TestNG-generate reports and Selenium-implements the automation testing.
- Docker containers simulate the test environment in the continuous testing.
- Jenkins assist in conducting automation of the test procedure.
- Continuous Integration: It is an essential phase of DevOps, which deals with software development. Frequent changes are made to the source code. It is associate by following,
- Unit Testing
- Integration Testing
- Code Review
- Code Packaging
- Continuous Deployment: The existing code is continuously and seamlessly put together with the new code, which leads to continues development of software. New code is continuously deployed and configuration tools are required to manage it effetely. Some of the tools are below,
- Docker:Containerization play a pivotal role in the deployment process.
- Continuous Monitoring: It’s including all operational aspects, where critical information about the software use in recorded and analyzed to derive analytics. Some of the popular tools are available for continuous monitoring are,
1.7. Categories of DevOps Tools
Each phase of DevOps life cycle has its own set of tools that help in performing specific function. For DevOps tools we can categories as follows,
- Source Code Management (SCM):SCM tracks a running history of changes to a code base, and helps resolve conflicts when merging updates from multiple contributors. Most popular SCM tools are Git and GitHub. Other SCM options are Mercurial, Subversion, GitLab, SVN and CVS.
- Software Build:Some of the popular build automation tools preferred by most major organizations are, Gradle, Maven. Other options are HashiCorp Packer, Apache Ant and Gulp.
- Testing:Testing validates that the products are production-grade and can be delivered to consumers. Popular testing tools are Selenium, Junit, Appium.
- Integration:The popular tools used for integration are Jenkins, Bamboo.
- CMT and Deployment:Continuous deployment is one of the crucial stages of the DevOps. Popular deployment tools are Terraform, AWS CodeDeploy, Codeship, Ansible, Chef, Puppet.
- Monitoring: onitoring applications help in ensuring the product’s correct functioning, detecting anomalies and negating their effects before they bother the consumers. Popular monitoring tools are Nagios, splunk.
- Containerization:Containerization is a form of operating system virtualization in which application run in an isolated user space called containers. Popular Containerization tools are Docker, Docker Swam and Kubernetes.
1.8. Benefits of DevOps
The benefits of adopting the DevOps methodology by an organization,
- Assured Rapid Deployment: Updates and improvements that happen faster and more frequently will not only please your customers but will also benefit your company.
- Balanced Working Environment: DevOps improves the working environment and brings stability in the workspace and strengthens productivity.
- Drastic Improvement over Quality: Product quality enhances due to the impact of coordination between development and operations teams, as well as timely gathering of user input.
- Repetitive Task is automated: DevOps has a range of benefits because it facilitates quick problem discovery, correction and automation.
- Proactive Growth of the Business: DevOps has made it feasible to attain scalability by improving the overall productivity of the business to stay ahead of the competition on a global scale.
- Continuous Delivery: All teams are responsible for ensuring stability and adding new features to deliver the software uninterrupted.
- Minimal Cost of Production: DevOps helps the team minimize cost for administration and production by keeping both maintenance and new updates together.
- Higher Productivity: It allows communication among team members, allowing them to concentrate more on their areas of expertise, removing barriers and encouraging collaboration.
DevOps encourages collaborations throughout the app development and deployment process. Software development with DevOps will pose a significant delay is delivery due to security problems. DevSecOps emerged from DevOps to integrate the management of security throughout the development process.
DevSecOps is an integration of security practices in the DevOps methodology. Its collaboration between developers and security teams resulted in the development of a Security as Code culture. Benefits of DevSecOps are,
- Rapid, cost-effective software delivery: Both time and cost can be reduced by minimizing the repetitive process of addressing security issue after delivery.
- Repeatable and adaptive process: Repeatable and adaptive process are applied constantly across the environment, changing adaptive requirements to dynamic ones.
- Improved, proactive security: The cybersecurity process in involved in the development cycle.
- Accelerated security vulnerability patching: This restricts the threats during the development cycle.
- Automation compatible with modern development: Automation can be adopted in cybersecurity testing.
1.10. DevOps on Cloud
The benefits to using DevOps with cloud projects are also becoming better defined. They include application development speed-to-delivery to meet the needs of the business units faster, user demands that quickly fold back into the software, and lower costs for development, testing, deployment, and operations.
The cloud service is categorized into 3 categories,
- Infrastructure as a Service (laaS): laaS is an instant computing infrastructure service that provides virtualized computing resource over the internet.
- Platform as a Service (PaaS): PaaS is method where user is allowed to build, test, debug, deploy, host and update their application in the same environment.
- Software as a Service (SaaS): SaaS is a method of delivering application as a service, so that users are free from complex software and hardware management.
DevOps and cloud infrastructure helps in the software development life cycle. It can be divided into 3 phases, such as
- Build: The cloud provides seamless access to build advanced application.
- Test: The cloud is cost-effective and the scope of production can be developed quickly for conducting the tests.
- Run: The cloud provides high speed in developing operational environment that are scalable, flexible and efficient of resource.
1.11. Quick Recap
DevOps is a set of practices and tools designed to shorten the lifecycle of a software development process between development and operations team.
DevOps approach consists of five phases,
- Continuous Development
- Continuous Testing
- Continuous Integration
- Continuous Deployment
- Continuous Monitoring
The important tools used in each phase,