0% found this document useful (0 votes)
8 views

devops_u1.pdf

Thug life and electronics
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

devops_u1.pdf

Thug life and electronics
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

1. What is DevOps?

 Definition: DevOps is a set of practices, principles, and tools that


improve the collaboration between development (Dev) and IT operations
(Ops) teams. It aims to shorten the development lifecycle, increase the
frequency of deployments, and ensure the high quality of software
delivery.
 Objective: The primary goal is to create a culture of collaboration,
communication, and integration between software development and IT
operations to streamline workflows, increase automation, and enhance the
delivery process.

2. Core Principles of DevOps

DevOps is built on three key principles:

a. Automation

 What it means: Automation refers to the use of tools and scripts to


automate manual processes in software development and operations. It
helps in automating the build, test, deployment, and infrastructure
provisioning processes.
 Benefits:
o Reduces human error.
o Accelerates repetitive tasks.
o Frees up resources for more valuable work.
 Examples:
o Continuous Integration (CI): Automating the process of
integrating code changes into a shared repository and running tests.
o Continuous Deployment (CD): Automating the process of
deploying code changes to production environments.
o Infrastructure as Code (IaC): Using scripts and code (e.g.,
Terraform, Ansible, or AWS CloudFormation) to automate the
setup and management of infrastructure.

b. Continuous Improvement

 What it means: Continuous Improvement is about consistently


evaluating and enhancing processes to improve the software delivery
lifecycle. It involves constant learning, iteration, and adaptation.
 Key concepts:
o Feedback Loops: The process of getting feedback early and
frequently (e.g., from automated tests, end-users, and monitoring
systems) to identify areas for improvement.
o Kaizen: A Japanese philosophy of continuous, incremental
improvements in processes.
 Benefits:
o Allows for faster identification and resolution of issues.
o Drives a culture of learning and adaptation.
o Increases efficiency by optimizing processes over time.
 Examples:
o Retrospectives: Regular team meetings to evaluate what worked,
what didn’t, and how to improve.
o Metrics: Tracking performance metrics like deployment
frequency, mean time to recovery (MTTR), and lead time to
improve processes.

c. Collaboration

 What it means: Collaboration emphasizes the importance of seamless


communication between development teams, operations teams, and other
stakeholders (e.g., quality assurance, security).
 Benefits:
o Increases transparency and knowledge sharing.
o Breaks down silos between teams.
o Fosters a culture of teamwork and joint responsibility.
 Examples:
o Cross-functional Teams: Development, operations, and security
teams working together on the same goals with a shared
responsibility for the entire product lifecycle.
o ChatOps: Using tools like Slack, Microsoft Teams, or Jira to
integrate operations and DevOps workflows into collaborative chat
platforms, providing real-time feedback and coordination.
o Shared Goals: Teams working towards common goals like faster
release cycles, reduced downtime, or improved application
performance.

3. DevOps Practices

 Continuous Integration (CI): Developers integrate code into a shared


repository frequently, followed by automated testing to detect errors
early.
 Continuous Delivery (CD): Automating the delivery process to ensure
code can be deployed to production at any time with minimal manual
intervention.
 Infrastructure as Code (IaC): Managing and provisioning infrastructure
through code rather than manual processes. Tools like Terraform,
Ansible, and Chef help automate infrastructure setup.
 Monitoring and Logging: Continuous monitoring of applications and
infrastructure to provide insights into performance and user experience.
Logs help with troubleshooting and post-deployment analysis.
 Automated Testing: Ensuring code quality by automating unit,
integration, and functional tests so that defects can be caught early in the
development process.
 Version Control: Using tools like Git to keep track of code changes and
collaborate effectively on software development.

4. The Benefits of DevOps

 Faster Time to Market: DevOps helps deliver new features and updates
faster and more frequently by automating manual processes.
 Increased Collaboration and Communication: By fostering a culture of
collaboration, DevOps eliminates silos between teams, improving
efficiency and reducing bottlenecks.
 Improved Quality: Continuous testing, integration, and deployment
ensure that bugs are identified early in the development lifecycle, leading
to higher-quality software.
 Greater Stability and Reliability: DevOps practices like automated
monitoring and incident management improve the reliability and uptime
of applications.
 Cost Efficiency: Automation reduces the cost associated with manual
tasks, errors, and rework.

5. Key DevOps Tools

 Version Control: Git, GitHub, GitLab, Bitbucket.


 CI/CD: Jenkins, Travis CI, CircleCI, GitLab CI/CD.
 Configuration Management: Ansible, Puppet, Chef, SaltStack.
 Containerization and Orchestration: Docker, Kubernetes, OpenShift.
 Monitoring and Logging: Prometheus, Grafana, ELK Stack
(Elasticsearch, Logstash, Kibana), Datadog.
 Cloud Providers: AWS, Azure, Google Cloud, and other IaaS, PaaS
platforms that support DevOps automation and scalability.

6. DevOps Culture and Mindset

 Shared Responsibility: Everyone involved in the software lifecycle


takes shared responsibility for the quality, security, and delivery of the
software.
 Transparency: Open communication and visibility across all teams
ensure issues are identified and resolved quickly.
 Emphasis on Automation and Monitoring: Embracing tools and
practices that enable self-healing systems, continuous feedback, and high
automation.
 Fail Fast, Learn Fast: Encouraging experimentation and learning from
failure quickly without blame, which helps teams improve continuously.

7. Challenges in Implementing DevOps

 Cultural Resistance: Shifting from traditional silos (Dev vs. Ops) to a


more integrated, collaborative culture can be difficult.
 Tool Overload: Choosing the right tools for automation, integration, and
monitoring can be overwhelming due to the sheer number of available
options.
 Security Concerns: Integrating security into DevOps (DevSecOps) is
essential, but ensuring security while maintaining speed and flexibility
can be a challenge.
 Skill Gaps: DevOps requires skills across development, IT operations,
and automation, which may require training or hiring new talent.

8. Conclusion

DevOps is a methodology designed to streamline and improve the software


development and delivery process. By focusing on automation, continuous
improvement, and collaboration, organizations can reduce manual
intervention, improve software quality, and deliver products faster. The
successful implementation of DevOps principles can lead to more agile,
efficient, and responsive organizations that are better equipped to meet the ever-
changing demands of modern software development.

What is DevOps lifecycle & how does it work?

DevOps lifecycle is a series of automated development processes or workflows


within an iterative development lifecycle. It follows a continuous approach;
hence its lifecycle is symbolized in the form of an infinity loop. This loop
depicts the collaborative and iterative approach throughout the application
lifecycle, consisting of tools and technology stacks for each stage. The left part
deals with software development and testing. And in contrast, the right side of
the infinity loop represents the deployment and operations cycle.
Let’s briefly overview how the DevOps lifecycle works at every stage.

1. Plan: In this stage, teams identify the business requirement and collect end-
user feedback. They create a project roadmap to maximize the business
value and deliver the desired product during this stage.
2. Code: The code development takes place at this stage. The development
teams use some tools and plugins like Git to streamline the development
process, which helps them avoid security flaws and lousy coding practices.
3. Build: In this stage, once developers finish their task, they commit the code
to the shared code repository using build tools like Maven and Gradle.
4. Test: Once the build is ready, it is deployed to the test environment first to
perform several types of testing like user acceptance test, security test,
integration testing, performance testing, etc., using tools like JUnit,
Selenium, etc., to ensure software quality.
5. Release: The build is ready to deploy on the production environment at this
phase. Once the build passes all tests, the operations team schedules the
releases or deploys multiple releases to production, depending on the
organizational needs.
6. Deploy: In this stage, Infrastructure-as-Code helps build the production
environment and then releases the build with the help of different tools.
7. Operate: The release is live now to use by customers. The operations team
at this stage takes care of server configuring and provisioning using tools
like Chef.
8. Monitor: In this stage, the DevOps pipeline is monitored based on data
collected from customer behavior, application performance, etc. Monitoring
the entire environment helps teams find the bottlenecks impacting the
development and operations teams’ productivity.

DevOps lifecycle phases: the 7Cs of DevOps lifecycle

As we mentioned earlier, everything is continuous in DevOps – from planning


to monitoring. So let’s break down the entire lifecycle into seven phases where
continuity is at its core. Any phase in the lifecycle can iterate throughout the
projects multiple times until it’s finished.
1. Continuous development
This phase plays a pivotal role in delineating the vision for the entire software
development cycle. It primarily focuses on project planning and coding. During
this phase, project requirements are gathered and discussed with stakeholders.
Moreover, the product backlog is also maintained based on customer feedback
which is broken down into smaller releases and milestones for continuous
software development.
Once the team agrees upon the business needs, the development team starts
coding for the desired requirements. It’s a continuous process where developers
are required to code whenever any changes occur in the project requirement or
in case of any performance issues.
Nordstrom, for instance, embraced DevOps to minimize the time consumed in
developing, testing, and releasing the updates. Nordstrom is an American luxury
department store chain in the U.S. and Canada. The company was following the
waterfall model while rewriting its consumer-facing in-store application and
thus faced issues and several negative feedbacks from customers when the app
launched. So, the company decided to break down the silos.
As a result, they migrated to continuous planning and development with a single
backlog of work that helped the organization enhance its app’s build quality and
throughput. Not only that, but the company also succeeded in reducing the bugs
and increased the number of product releases, from twice a year to monthly.
Tools Used: There are no specific tools for planning, but the development team
requires some tools for code maintenance. GitLab, GIT, TFS, SVN, Mercurial,
Jira, BitBucket, Confluence, and Subversion are a few tools used for version
control. Many companies prefer agile practices for collaboration and use Scrum,
Lean, and Kanban. Among all those tools, GIT and Jira are the most popular
ones used for complex projects and the outstanding collaboration between teams
while developing.
2. Continuous integration
Continuous integration is the most crucial phase in the entire DevOps lifecycle.
In this phase, updated code or add-on functionalities and features are
developed and integrated into existing code. Furthermore, bugs are detected and
identified in the code during this phase at every step through unit testing, and
then the source code is modified accordingly. This step makes integration a
continuous approach where code is tested at every commit. Moreover, the tests
needed are also planned in this phase.
Let’s take the example of Docusign, which developed e-signature technology
back in 2003. It helps its clients automate the process of preparing, signing, and
managing agreements. Their development teams used to follow Agile
methodology for years to collect customer feedback and make small and quick
releases. But, they lacked collaboration between the development and
operations team, which led them to many failures.
Moreover, their business was solely based on the transaction of signatures and
approvals. So, the biggest challenge for their business was continuous
integration and delivery. A single mistake could cause a serious problem and
ruin the entire operation process. Hence, the organization decided to move to
DevOps. DocuSign implemented a tool – mock for their internal API to speed
up the product development and delivery. This tool helped the organization in
integrating critical functionalities such as incident management. This tool also
makes the testing with simulation simple.
Tools Used: Jenkin, Bamboo, GitLab CI, Buddy, TeamCity, Travis,
and CircleCI are a few DevOps tools used to make the project workflow smooth
and more productive. For example, Jenkin (open-source tool) is used widely to
automate builds and tests. CircleCI and Buddy, on the other hand, are
commercial tools. Well, whatever tools you select for continuous integration,
pick the one that can fit your business and project requirements.
3. Continuous testing
Some teams carry out the continuous testing phase before the integration occurs,
while others do it after the integration. Quality analysts continuously test the
software for bugs and issues during this stage using Docker containers. In case
of a bug or an error, the code is sent back to the integration phase for
modification. Automation testing also reduces the time and effort to deliver
quality results. Teams use tools like Selenium at this stage. Moreover,
continuous testing enhances the test evaluation report and minimizes the
provisioning and maintenance cost of the test environments.
Tools Used: JUnit, Selenium, TestNG, and TestSigma are a few DevOps tools
for continuous testing. Selenium is the most popular open-source automation
testing tool that supports multiple platforms and browsers. TestSigma, on the
other hand, is a unified AI-driven test automation platform that eliminates the
technical complexity of test automation through artificial intelligence.
4. Continuous deployment
This phase is the crucial and most active one in the DevOps lifecycle, where
final code is deployed on production servers. The continuous deployment
includes configuration management to make the deployment of code on servers
accurate and smooth. Development teams release the code to servers and
schedule the updates for servers, keeping the configurations consistent
throughout the production process. Containerization tools also help in the
deployment process by providing consistency across development, testing,
production, and staging environments. This practice made the continuous
delivery of new features in production possible.
For example, Adobe embraced the DevOps culture to release small software
updates continuously. It manages and automates its deployments
using CloudMunch’s end-to-end DevOps platform. This DevOps platform lets
Adobe’s developers see how one Adobe product’s changes can affect others.
And thus, it helped the company in the quick delivery of software with better
product management.
Tools Used: Ansible, Puppet, and Chef are the configuration management tools
that make the deployment process smooth and consistent throughout the
production process. Docker and Vagrant are another DevOps tool used widely
for handling the scalability of the continuous deployment process. Apart from
this, Spinnaker is an open-source continuous delivery platform for releasing the
software changes, while ArgoCD is another open-source tool for Kubernetes
native CI/CD.
5. Continuous feedback
Continuous feedback came into existence to analyze and improve the
application code. During this phase, customer behavior is evaluated regularly on
each release to improve future releases and deployments. Businesses can either
opt for a structural or unstructured approach to gather feedback. In the structural
approach, feedback is collected through surveys and questionnaires. In contrast,
the feedback is received through social media platforms in an unstructured
approach. Overall, this phase is quintessential in making continuous delivery
possible to introduce a better version of the application.
One of the best examples of continuous feedback is Tangerine bank. It’s a
Canadian bank that embraced continuous feedback to enhance its customers’
mobile experience. After opting for continuous feedback, this Canadian bank
collected a considerable amount of valuable feedback within a few weeks,
which helped the bank reach the cause of the problem quickly. Furthermore, this
has helped them improve the application as per their customers’ needs. This is
how Tangerine bank managed to repurpose the resources and money on other
crucial things excellently after adopting DevOps.
Tools Used: Pendo is a product analytics tool used to collect customer reviews
and insights. Qentelli’s TED is another tool used primarily for tracking the
entire DevOps process to gather actionable insights for bugs and flaws.
6. Continuous monitoring
During this phase, the application’s functionality and features are monitored
continuously to detect system errors such as low memory, non-reachable
server, etc. This process helps the IT team quickly identify issues related to app
performance and the root cause behind it. If IT teams find any critical issue, the
application goes through the entire DevOps cycle again to find the solution.
However, the security issues can be detected and resolved automatically during
this phase.
Tools Used: Nagios, Kibana, Splunk, PagerDuty, ELK Stack, New Relic, and
Sensu are a few DevOps tools used to make the continuous monitoring process
fast and straightforward.
7. Continuous operations
The last phase in the DevOps lifecycle is crucial for reducing the planned
downtime, such as scheduled maintenance. Generally, developers are required
to take the server offline to make the updates, which increases the downtime
and might even cost a significant loss to the company. Eventually, continuous
operation automates the process of launching the app and its updates. It uses
container management systems like Kubernetes and Docker to eliminate
downtime. These container management tools help simplify the process of
building, testing, and deploying the application on multiple environments. The
key objective of this phase is to boost the application’s uptime to ensure
uninterrupted services. Through continuous operations, developers save
time that can be used to accelerate the application’s time-to-market.
Tools Used: Kubernetes and Docker Swarm are the container orchestration
tools used for the high availability of the application and to make the
deployment faster.

You might also like