DevOps
DevOps
• DevOps is the combination of cultural philosophies, practices, and
tools that increases an organization's ability to deliver applications and
services at high velocity.
• DevOps is a methodology in the software development and IT
[Link] is a set of practices, tools, and a cultural
philosophy that automate and integrate the processes between software
development and IT teams.
What Led to DevOps
• The motivations for what has become modern DevOps and several
standard DevOps practices such as automated build and test, continuous
integration, and continuous delivery originated in the Agile world,
which dates (informally) to the 1990s, and formally to 2001.
• Scrum emerged as the dominant Agile framework in the early 2000s
and it omitted the engineering practices that were part of many Agile
teams, the movement to automate operations / infrastructure functions
splintered from Agile and expanded into what has become modern
DevOps.
Dev
• Writing code for robust applications using best methods.
• Maintaining Standard and Quality of Code.
• Writing Practical unit tests and utilizing test-driven development.
• Verifying Behaviour of an Application.
Ops
• Automated provisioning and de provisioning of environments.
• Scaling UP/ Scaling Down /Scaling Out
• Managing Infrastructure using IaaC(Infrastructure as a Code) to
maintain version and visibility.
• Configuration Management , Monitoring and Measurement.
Benefits of Devops
• Faster, better product delivery
• Faster issue resolution and reduced complexity
• Greater scalability and availability
• More stable operating environments
• Better resource utilization
• Greater automation
• Greater visibility into system outcomes
• Greater innovation
Benefits of DevOps
• Early Detection of Failure
• Stable and consistent environment
• Easy Rollback
• Single-click Deployment
Tools
• SonarQube
• Android Lint
• Swift Lint
• CheckStyle
Outcome
• Priority based bugs-code issues, security vulnerabilities
• Maintainability related issues
• Quality gate results
Continuous Integration
• Continuous integration is the DevOps practise to integrate the new
feature implementation or bug fix in existing distributed version
control systems such as git that triggers code quality checks , unit test
execution and build . Continuous integration ids easy to implement
and hence for DevOps starters, it works as a solid base on which the
rest of practices can stand.
Objectives
• To fail fast and recover fasts
• Compilation and unit test execution
• Publishing test and code coverage reports on the Jenkins dashboard
• To create a package or artifact
Tools
• Jenkins
• Microsoft Azure DevOps
• Atlassian Bamboo
• TeamCity
Outcome
• Code quality reports
• Codec quality gate verification
• Unit tests reports
• Code coverage reports based on unit tests
• Package creation for distribution or deployment
Artifact Management
• An artifact repository supports the artifact lifecycle and allows you to
manage DevOps practices more efficiently by managing the version of
different artifacts . It manages packages ready for deployment for
dependencies that can be used to create packages itself.
• Objective : To manage application packages such as WAR,APK,IPA
file or Maven dependencies such as-Jar files.
Benefits
• Integration with CI server such as Jenkins or Automation tool such as
IBM Urban code Deploy helps to maintain multiple versions of files.
• Rollback is easier while using the artifact repository as multiple
versions are available.
• Integration with tools available for automation such as Jenkins ,
NPM , Docker and others.
• It serves as a shared library for artifact.
• Compliance control for all dependencies used by the team in
applications and complete control of in-house developed libraries
within an organization.
Challenges for Organization
• The learning curve is medium to difficult.
• Downtime management if the repository is not as a Service.
Tools
• Artifactory
• Nexus Repository
Outcome
• Versioned Artifact
• Shared Dependencies
Continuous Delivery
• The objective of continued delivery and continuous deployment is to
deploy an application in Dev , test , UAT , production environment in
an automated manner.
• It helps in incremental release after short spans of development or
sprint in the agile term.