DevOps-softwaredevelopementmethodology
DevOps-softwaredevelopementmethodology
net/publication/368845600
CITATION READS
1 1,837
1 author:
Velibor Božić
SEE PROFILE
All content following this page was uploaded by Velibor Božić on 28 February 2023.
Introduction
DevOps involves a set of practices and tools that enable developers to automate the
software development process, including code building, testing, deployment, and
monitoring. DevOps also involves a cultural shift that emphasizes continuous collaboration
and communication between developers and operations teams, as well as a focus on
delivering value to customers.
History
However, the roots of DevOps can be traced back to the Agile software development
movement, which emphasized collaboration and iterative development. Other important
influences include the Lean manufacturing philosophy, which emphasizes continuous
improvement and waste reduction, and the IT service management (ITSM) framework
known as ITIL (Information Technology Infrastructure Library), which provides guidelines for
managing IT services.
Over time, DevOps has evolved into a distinct discipline with its own principles,
practices, and tools, driven by a community of practitioners who continue to refine and
VELIBOR BOŽIĆ Research proposal
improve the methodology. Today, DevOps is widely used in software development and IT
operations, and has become an essential part of modern software development processes.
DevOps is based on a set of principles, practices, and tools that are designed to
improve collaboration and communication between development and operations teams,
automate the software development and deployment process, and drive continuous
improvement. Some of the key principles, practices, and tools of DevOps include:
Principles
Practices
2. Continuous Delivery (CD): The practice of automating the software release process to
enable frequent, reliable, and low-risk releases.
Tools
1. Source Control Management (SCM) tools, such as Git or SVN, to manage version
control and collaboration between developers.
2. Continuous Integration and Continuous Delivery (CI/CD) tools, such as Jenkins, Travis
CI, or CircleCI, to automate the software build, test, and deployment process.
3. Infrastructure as Code (IaC) tools, such as Ansible, Chef, or Puppet, to automate the
provisioning, configuration, and management of infrastructure.
4. Monitoring and Alerting tools, such as Nagios, New Relic, or Datadog, to track system
performance and detect issues.
By adopting these principles, practices, and tools, organizations can create a more
efficient, reliable, and scalable software development and deployment process, leading to
higher quality software and better outcomes for users and stakeholders.
VELIBOR BOŽIĆ Research proposal
The DevOps process in software development typically involves the following steps:
1. Plan: The planning stage involves defining the scope of the project, setting goals and
objectives, and determining the resources required to achieve those goals. This stage
also involves identifying potential risks and developing contingency plans to mitigate
those risks.
2. Develop: In the development stage, the actual coding and software development
takes place. This stage involves collaboration between development and operations
teams to ensure that code is optimized for deployment and operations.
3. Test: The testing stage involves evaluating the software for defects and bugs, and
ensuring that it meets the requirements and specifications defined in the planning
stage. This stage includes automated testing, manual testing, and user acceptance
testing.
4. Deploy: The deployment stage involves preparing the software for release, including
configuring and optimizing the environment for deployment, ensuring that all
dependencies are met, and automating the deployment process as much as possible.
5. Operate: The operate stage involves managing the software in production, including
monitoring performance, detecting and responding to issues, and ensuring that the
software is running smoothly and meeting user needs.
6. Monitor: The monitoring stage involves collecting data on the performance of the
software in production, analyzing that data to identify opportunities for
improvement, and making adjustments as necessary to improve the performance
and functionality of the software.
7. Iterate: The iteration stage involves repeating the process from the beginning,
incorporating feedback from users and stakeholders to continually improve the
software and the DevOps process itself.
deployment and operations, and that it meets the needs of users and stakeholders. The use
of automation, continuous testing and integration, and other DevOps practices can help
ensure that software is released quickly, efficiently, and with high quality.
There are several preconditions that an organization must meet to effectively use
DevOps. Here are some of the key preconditions:
4. Reduce costs: DevOps helps organizations reduce costs by automating many tasks
and optimizing the software development process. This reduces the need for manual
intervention and improves efficiency, which can result in cost savings.
5. Scale applications: DevOps helps organizations scale applications more easily by using
technologies like containers and microservices. This enables organizations to quickly
deploy new instances of applications and scale them up or down based on demand.
DevOps is optimal for organizations that want to improve the speed, quality, and
reliability of their software development process while promoting collaboration and
communication across the organization.
VELIBOR BOŽIĆ Research proposal
Dfferences and similarity among model driven architecture, agile programming and
DevOps
Model-driven architecture (MDA), agile programming, and DevOps are all approaches
to software development, but they differ in their focus, principles, and practices.
MDA is a software development approach that emphasizes the use of models to design and
build software systems. The goal of MDA is to increase software development productivity,
reduce development costs, and improve software quality. MDA emphasizes the use of
standards-based modeling languages and tools, such as UML, to create models that describe
the system's structure, behavior, and functionality. The models are then transformed into
code using code generation tools, which automates much of the software development
process.
While MDA, agile programming, and DevOps share some similarities, such as a focus
on collaboration and automation, they differ in their primary goals and practices. MDA is
primarily concerned with improving software development productivity and quality through
the use of models, while agile programming and DevOps are focused on delivering working
software quickly and responding to change. Agile programming emphasizes collaboration
and iterative development, while DevOps focuses on collaboration and continuous delivery.
VELIBOR BOŽIĆ Research proposal
Ultimately, the choice of which approach to use depends on the specific needs and goals of
the software development team and the organization.
While both methodologies share some similarities, they have different areas of focus
and different team structures. Agile programming is focused on iterative and incremental
development, while DevOps is focused on streamlining the software delivery process by
promoting collaboration and automation between development and operations teams.
VELIBOR BOŽIĆ Research proposal
3. Infrastructure as Code: DevOps relies heavily on Infrastructure as Code (IaC) tools like
Terraform, Ansible, or Puppet, so it's important to have skills in IaC technologies and
concepts.
Using DevOps to build an integrated hospital information system can help ensure
that the system is delivered quickly, reliably, and securely, while meeting the needs of all
VELIBOR BOŽIĆ Research proposal
stakeholders. It can also help ensure that the system is scalable and able to adapt to
changing needs and requirements over time.
Advantages
1. Faster time to market: DevOps can help organizations to release software more
quickly and efficiently by automating many of the processes involved in software
development and deployment.
4. Improved reliability and stability: DevOps can help improve the reliability and
stability of software systems by automating many of the processes involved in
deployment, monitoring, and maintenance.
5. Increased agility and flexibility: DevOps can help organizations to respond more
quickly to changing business needs and market conditions by allowing them to
release software more quickly and efficiently.
Disadvantages
1. Steep learning curve: DevOps involves many new tools, technologies, and practices,
which can be challenging for organizations that are new to the approach.
3. Complexity: DevOps can be complex, especially for organizations with large and
complex software systems. It requires careful planning and execution to ensure that
VELIBOR BOŽIĆ Research proposal
all aspects of the software development and deployment process are automated and
integrated.
4. Security risks: DevOps can increase security risks if not implemented properly. It
requires careful attention to security testing and monitoring to ensure that software
systems are secure and compliant with relevant regulations and standards.
5. Cost: Implementing DevOps can be expensive, especially for organizations that are
new to the approach. It requires investment in new tools, technologies, and training,
as well as changes to organizational structures and processes.
There are several risks associated with DevOps approach, some of them are:
Mitigation: Security should be integrated into the DevOps process from the beginning. This
includes conducting regular security testing and vulnerability assessments, implementing
security controls such as firewalls and encryption, and establishing clear security policies and
procedures.
2. Cultural resistance: DevOps requires a cultural shift that can be difficult to achieve.
Resistance to change can lead to friction between teams and a lack of buy-in for
DevOps practices.
Mitigation: Establishing clear DevOps standards and best practices can help ensure
consistency across teams. This includes defining coding and deployment standards,
establishing clear documentation and communication practices, and implementing quality
control measures such as code reviews and automated testing.
4. Tool and technology risks: DevOps involves the use of a variety of tools and
technologies, which can pose risks such as compatibility issues, system failures, and
vendor lock-in.
Mitigation: Careful planning and evaluation of tools and technologies is essential to mitigate
these risks. Organizations should evaluate tools and technologies based on factors such as
ease of use, compatibility with existing systems, and vendor support. Implementing a
strategy for tool selection and management can help ensure that tools are used effectively
and efficiently.
5. Lack of scalability: DevOps can pose scalability risks if not properly managed. As
applications and systems grow, it can become increasingly difficult to manage and
maintain DevOps processes and practices.
Mitigation: Planning for scalability from the beginning is essential to mitigate this risk. This
includes implementing a scalable infrastructure that can support growth, establishing clear
scaling policies and procedures, and ensuring that teams are trained and equipped to
manage the scaling process effectively.
Conclusion
DevOps practices and tools can help organizations to reduce time to market, improve
software quality, and increase efficiency and productivity. However, there are also risks
associated with DevOps, including security risks, cultural resistance, lack of standardization,
tool and technology risks, and lack of scalability.
VELIBOR BOŽIĆ Research proposal
To mitigate these risks, organizations should implement clear DevOps policies and
procedures, establish standards and best practices, communicate and collaborate effectively
between teams, and carefully evaluate tools and technologies to ensure they meet
organizational needs. By embracing the DevOps methodology and implementing best
practices, organizations can improve the quality and efficiency of their software
development processes, leading to better outcomes for both the organization and its users.
Literature review
1. "The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security
in Technology Organizations" by Gene Kim, Jez Humble, Patrick Debois, and John
Willis (2016).
2. "Accelerate: The Science of Lean Software and DevOps: Building and Scaling High
Performing Technology Organizations" by Nicole Forsgren PhD, Jez Humble, and
Gene Kim (2018).
4. "Site Reliability Engineering: How Google Runs Production Systems" edited by Betsy
Beyer, Chris Jones, Jennifer Petoff, and Niall Richard Murphy (2016).
6. "The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win" by
Gene Kim, Kevin Behr, and George Spafford (2013).
9. "The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with
Containerized Microservices" by Viktor Farcic (2016).
10. "Continuous Testing: with Ruby, Rails, and JavaScript" by Ben Rady and Rod Coffin
(2011).
VELIBOR BOŽIĆ Research proposal
12. "Mastering Kubernetes: Master the art of container management with Kubernetes"
by Gigi Sayfan (2017).
13. "Continuous Delivery with Docker and Jenkins: Delivering software at scale" by Rafal
Leszko (2017).
15. "Jenkins 2: Up and Running: Evolve Your Deployment Pipeline for Next Generation
Automation" by Brent Laster (2018).
16. "DevOps for Networking" by Steven Armstrong and Scott Lowe (2019).
18. "Infrastructure as Code: Managing Servers in the Cloud" by Kief Morris (2016).
19. "The DevOps 2.1 Toolkit: Docker Swarm: Building, testing, deploying, and monitoring
services inside Docker Swarm clusters" by Viktor Farcic (2017).
These references cover a wide range of topics related to DevOps, including principles,
practices, tools, automation, continuous delivery, containerization, and more. They provide
valuable insights and guidance for organizations looking to implement DevOps
methodologies and improve their software development and deployment processes.