You are on page 1of 35

DevOps

Name: 1
Date:
Introduction 2
Every business today has software applications has their engine of operations.
Remaining more competitive demands for innovation as well as faster response to
changing business environment and maintenance of the overall quality. Therefore, to
enhance a rapid and frequent software delivery, software development teams are
progressively adopting methodologies such as Agile, with a view of meeting the market
demands so as to deliver software more frequently, and at the rapid pace demanded by
the market. It’s a challenge to build and test these applications. To get them into
production environments is also challenging. Therefore, achieving this requires DevOps,
a popular technique used to shepherd a software application throughout its design,
development and testing phases.
Introduction (…continued) 3
 What is DevOps?
DevOps is a set of practices automating the
processes between software development and IT
teams, so as to enhance more reliable and faster
processes of building, testing, releasing, etc. of a
software.
Thus, DevOps is a culture promoting
collaboration between Development and Operations
Team during the code deployment code to enhance
faster production in an automated & repeatable
manner.
'DevOps’ combines two words 'development'
and 'operations.'
Introduction (…continued) 4
 Why DevOps? [1]
- To synchronizes the timelines for both coding and operation teams
- In order to reduce time needed to test, deploy, and design a project
- To reduce human errors associated with manually deploying production code
- To get rid of the usual isolation common between development and operation
teams
- To facilitate breaking of larger code bases inti smaller ones during agile
programming
- To enhance maintainability, especially when recovering from system crashes
or functional disability
- And many more.

[1] Guru99. (2019). Retrieved 16 October 2019, from https://www.guru99.com/devops-tutorial.html


DevOps in Software Life Cycle 5
• Agile Methodology in SLC [2]
In the agile methodology of SLC, there is continuous iteration of development and
testing throughout the project’s development. The activities of developing and testing are both
concurrent. However, the agile methodology doesn’t involve the operation’s engineering/team
to speed up the practices, though it enhances agility to the project.

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from
DevOps in Software Life Cycle (…continued) 6
• Agile Methodology in SLC (…continued) [2]
Therefore, with the teams of developers and operation engineers lacking
collaboration, and resultantly slowing down the development process and releases, there
is a need to have these two teams collaborating in order to deliver the software faster.
Incorporating a DevOps approach can, therefore, be a remedy. The DevOps approach
enhances continuous delivery of the software, with less complex problems to be fixed
and resolving these problems is faster..

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps in Software Life Cycle (…continued) 7
• DevOps in SLC
The DevOps life cycle constitutes various stages such as continuous development,
continuous integration, continuous testing, continuous deployment, and continuous
monitoring. [2]

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps in Software Life Cycle (…continued) 8
- Continuous Development stage – involves the software’s ‘planning’ and ‘coding’. The
developers starts working on the software’s code. Writing the codes can be done using
any programming language, but its maintenance is done using Version Control tools like
Git, JIRA, etc.

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps in Software Life Cycle (…continued) 9
- Continuous Integration – is the focal point of the DevOps life cycle. Here, the developers
have to frequently commit changes to source code. Each commit is then built, allowing for
early detection of problems, is any. The code being built will involve compiling, reviewing,
performing unit testing, integration testing and packaging. The code that supports new
functionality is integrated continuously with the code already existing. With the continuous
software development, the updated code has to be continuously integrated so as to enhance
smooth reflection changes in the system to the end-users [2].

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps in Software Life Cycle (…continued) 10
- Continuous Testing – at this stage, the software developed is tested continuously for
bugs. Automation Testing tools such as Junit, TestNG, etc. are utilized here so as to
allow thorough testing of multiple code-based in parallel, thus ensuring functionality
flaws are checked [2].

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from
DevOps in Software Life Cycle (…continued) 11
- Continuous Monitoring – is a very crucial stage of the life cycle and involves
continuous monitoring of the application’s performance [2]. The software’s
vital information is put into records; and the information is processed so as
help in recognizing the application’s proper functionality. Furthermore, it is
at this stage that the resolving of system errors such as unreachable server,
network problems, low memory, etc. is done. This aids in maintaining
security and availability of the system’s services. Example of tools used
include Sensu, NewRelic, Nagios, and Splunk. Any major issues if found are
reported to the development team for fixing in the continuous development
stage.

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps in Software Life Cycle (…continued) 12
- Continuous Monitoring…

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps in Software Life Cycle (…continued) 13
- Continuous Deployment – at this stage, the code is deployed to the production servers,
ensuring that all the servers have correct code deployment. Configuration management and
containerization are used here [2]. The configuration Management tools like Chef and
Puppet, helps to establish and maintain consistency in performance and functional
requirements of an application. The containerization tools like Vagrant and Docker helps to
maintain consistency across application development environments.

[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16 October 2019, from

https://medium.com/edureka/devops-lifecycle-8412a213a654
DevOps Practices 14
The following are primary DevOps practices identified: [3]
 Infrastructure Automation – involves creating your own systems, OS configurations, and
app deployments as code.
 Continuous Delivery – involves building, testing, and deployment of the apps in a fast and
automated manner.
 Site Reliability Engineering – involves operating the systems; orchestrating and
monitoring, and ensuring that the designs are operable.
 Release Management – where we manage, plan, schedule and control the a software build
via different environments and stages; including tests and deployment for the software
releases. The whole process involves determining what, how and when the releases are
made.

[3] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Practices (…continued) 15
Primary DevOps practices (…continued) :
 Configuration Management – involves managing configurations for all the application’s
environments. It’s typical to perform the configuration management by using scripts which
can be version controlled. During the configuration management, a configuration drift can
be noted. The configuration drift entails a process where servers that runs in infrastructure
becomes different over a ration drift of time as a result of human-induced changes. This
can be solved by frequently rebuilding machine instances as well as utilizing automated
configuration tools which can be made to run at regular intervals so as to ensure that the
machines are kept synchronizing [3].
 Application Performance Monitoring – involves monitoring and managing the software
applications’ performances and availability. The monitoring types are: performance,
availability, usage, and customer monitoring [3].

[3] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Practices (…continued) 16
Primary DevOps practices (…continued):
 Continuous Integration –where the system developers integrates code at the early
stages of development so as to improve their productivity, identify issues and bugs at
early stages, and enhance faster delivery of software updates. It is during this process
that there is execution of unit testing as the build progresses [3].
 Infrastructure as Code – Involves treating the infrastructure as code, whereby the
deployment knowledge, management of configurations and provisioning are tasked to
the developers, rather than confining it to the system administrators [3].

[3] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Practices (…continued) 17
Primary DevOps practices (…continued) :
 Continuous Deployment – ensures that the software can be release at any time,
reliably.
 Test automation –involves executing tests repeatedly against the code base and its
environment for deployment. It is a part of updating the continuous delivery
pipeline [3]. The testing types include: load and performance, regression, user
interface (UI), functional, integration, unit testing, etc.

[3] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Practices (…continued) 18
Primary DevOps practices (…continued) :

[4] Radwan, M. (2019). Retrieved 16 October 2019, from https://mohamedradwan.com/2016/09/28/what-is-devops/


DevOps Tools 19
The following are the major categories of
DevOps tool: [5]
• Version Control Tools
They track the versions of the software
as they are released, automatically or manually.
This implies that the tools are used to number
the versions, furthermore track the configuration
and environmental dependencies presently
applicable (e.g. the version, brand, and type of
the database); the OS details; as well as the type
of virtual or physical or server needed
Examples: CVS, SVN, GIT, Mercurial, Bazaar.

[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Tools (…continued) 20
• Build and Deploy Tools
Are used for automating the
software’s building and deployment
throughout the DevOps process, including
continuous integration and continuous
development.
Examples: Jenkins, ElecricFlow, Microsoft
Visual Studio, Octopus Deploy, IBM
UrbanCode, DeployBot, Gradle, Bamboo,
CircleCl, Codar, BuildBot.

[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Tools (…continued) 21
• Functional and Non-Functional
Testing Tools
They are used to provide for
automated testing, and other DevOps’
best practices. The tools has to ensure
that there are services for integrated
security, performance, and unit testing;
with their core objective being end-to-
end automation.
Examples: Loadster, Webserver Stress
Tool, vPerformer, Forecast.

[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Tools (…continued) 22
• Provisioning and Change Management
Tools
They provision the platforms needed
for deploying the software, and additionally
for monitoring and logging any changes that
occurs to the software, data and
configurations. They are used for ensuring
that the system is stabilized regardless of
anything occurring.
Examples: CFEngine, Puppet, Chef,
Ansible, SaltStack, Docker, PowerShell
DSC.

[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Tools (…continued) 23
• Automation Tools
Are useful in automating all the testing processes, as well as configuring them in
order to achieve speed and agility. The tools can be further classified as:
- Infrastructure automation – e.g. amazon web services (AWS)
- Monitoring – e.g. Nagios
- Log management – e.g. Splunk
- Performance management – e.g. App Dynamic
- Deployment management – e.g. Jenkins
- Configuration management – e.g. Chef

[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
DevOps Tools (…continued) 24
DevOps Tools…

[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from https://techbeacon.com/devops/7-steps-choosing-right-devops-

tools
Air-Carpooler Development and Deployment 25
 Tool Chosen: CFEngine – a provisioning and change management tool.
CFEngine is an open source configuration management tool
providing automation configuration for huge computer systems, inclusive of
the unified mobile devices, embedded network devices, users, systems,
servers, and more. It has a dramatically smaller memory footprint, and runs
faster and has far fewer dependencies. Additionally, it is secure, stable and
scalable [6]. This could be very prolific during the development and
deployment of the Air-Carpooler project.
 Installation:

[6] CFEngine. (2019). CFEngine - Automate large-scale, complex and mission critical IT infrastructure with CFEngine. Retrieved 16 October 2019, from

https://cfengine.com/
Air-Carpooler Development and Deployment (…
continued) 26
 Installation:
 General requirements include [6]
• Host memory – around 256 MB
• Host disk – its could have its own partition of, say, 500 MB partition
for /var/cfengine
• A working network connection, with firewall
• No additional software required – since it bundles all critical
dependencies into the package

[6] CFEngine. (2019). CFEngine - Automate large-scale, complex and mission critical IT infrastructure with CFEngine. Retrieved 16 October 2019, from

https://cfengine.com/
Air-Carpooler Development and Deployment (…
continued) 27
 Operating system support: platforms and versions:

[6] CFEngine. (2019). CFEngine - Automate large-scale, complex and mission critical IT infrastructure with CFEngine. Retrieved 16 October 2019, from
Air-Carpooler Development and Deployment (…
continued) 28
 General installation:

[6] CFEngine. (2019). CFEngine - Automate large-scale, complex and mission critical IT infrastructure with CFEngine. Retrieved 16 October 2019, from
Air-Carpooler Development and Deployment (…
continued) 29
 Application of the tool’s utility to the development and deployment of the Air-Carpooler
project:
The CFEngine will be expected to efficiently integrate the project’s mobile devices,
embedded network devices, users, systems, and servers, among others. The DevOps-
oriented tool will facilitate system memory’s efficiency since it only required less than 1
Gigabyte of memory footprint/space to operate. Since the tool has already pre-packaged
critical dependencies, there will be no worry for additional software programs.
With its fewer dependencies, automating the Air-Carpooler with the CFEngine will
be more beneficial in terms of speed, security, stability, and scalability [6].

[6] CFEngine. (2019). CFEngine - Automate large-scale, complex and mission critical IT infrastructure with CFEngine. Retrieved 16 October 2019, from

https://cfengine.com/
Challenges Associated with the Adoption Of DevOps In
Software Teams/Organizations 30
There are a number of challenges that software organizations/teams face when they are
seeking to adopt the DevOps:
o Overcoming the development (Dev) versus operation (Ops) mentality.
Some developers tend to have an old DevOps cliché where they toss code over
an imaginary wall to operations and their priority differences. While the team of
developers tries to innovate and undertake changes as quickly as possible, operations
team are trying hit 100% levels of maintenance service. As a matter of truth, their goals
ae typically countering each other, thus have to ensure that there s proper alignment of
these goals and priorities. By having integrating these two teams the costs and delays
led by their handovers are significantly overcame.

[7] Manly, A. (2019). Challenges to DevOps Adoption and How to Overcome Them. Retrieved 16 October 2019, from https://www.contino.io/insights/5-challenges-to-

devops-adoption-and-how-to-overcome-them
Challenges Associated with the Adoption Of DevOps In
Software Teams/Organizations (…continued) 31
o Resistance to change.
Some organization’s stakeholders
and members considers the movements
towards adopting DevOps as a revolution,
thus, seems to be scary. The DevOps culture
is slow and gradual and needs to be
embraced and get accustomed to. On
realizing the different ways that the DevOps
is contributing to the development process,
the sense of unfamiliarity can be eased and
every team in the organization can embrace
and incorporate it.

[7] Manly, A. (2019). Challenges to DevOps Adoption and How to Overcome Them. Retrieved 16 October 2019, from https://www.contino.io/insights/5-challenges-to-

devops-adoption-and-how-to-overcome-them
Challenges Associated with the Adoption Of DevOps In
Software Teams/Organizations (…continued) 32
o Dev and Ops toolset clashes
The problems is realized when there is
existence of separate metrics and toolsets among
the developers and operations teams. Some
teams might not be willing to part with their
legacy tools; tools which might be inferior in
terms of technology and be having compatibility
issues that could be slowing down the entire
infrastructure. Therefore, set of teams have to
understand and agree on sensible tools for
integration in order to unify their metrics, utilize
and have better monitoring.

[7] Manly, A. (2019). Challenges to DevOps Adoption and How to Overcome Them. Retrieved 16 October 2019, from https://www.contino.io/insights/5-challenges-to-

devops-adoption-and-how-to-overcome-them
Challenges Associated with the Adoption Of DevOps In
Software Teams/Organizations (…continued) 33
o Moving from legacy infrastructure to
microservices.
To replace or modify older, monolithic
applications with newer microservices architecture
necessary for opening up the floodgates to faster
developments and quicker innovations is
problematic for organizations which have utilized it
for a long time. Dwelling on these legacy
infrastructure can frustrate the competitiveness of
such organizations with problem of stability or lack
of necessary support. To facilitate the
innovativeness, infrastructure-as-code can be
coupled with microservices as a way of enhancing
future’s continuous innovation.
[7] Manly, A. (2019). Challenges to DevOps Adoption and How to Overcome Them. Retrieved 16 October 2019, from https://www.contino.io/insights/5-challenges-to-
Challenges Associated with the Adoption Of DevOps In
Software Teams/Organizations (…continued) 34
o Too much focus on tools
Where a lot of focus is directed
toward new flashy tools ,thought to provide
solution to every problem, in expense
training staff to use the tools. The focus
should be made more on the team not the
tools because they are the most important
factors especially when implementing the
transitions to the DevOps. They should,
therefore, be trained on security
requirements; as well as ensuring that the
tools are integrated to the infrastructure well.

[7] Manly, A. (2019). Challenges to DevOps Adoption and How to Overcome Them. Retrieved 16 October 2019, from https://www.contino.io/insights/5-challenges-to-

devops-adoption-and-how-to-overcome-them
References 35
[1] Guru99. (2019). Retrieved 16 October 2019, from https://www.guru99.com/devops-tutorial.html
[2] Kulshrestha, S. (2019). DevOps Life cycle - Explore About Each Phase in DevOps Life cycle. Retrieved 16
October 2019, from https://medium.com/edureka/devops-lifecycle-8412a213a654
[3] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from
https://techbeacon.com/devops/7-steps-choosing-right-devops-tools
[4] Radwan, M. (2019). Retrieved 16 October 2019, from https://mohamedradwan.com/2016/09/28/what-is-
devops/
[5] Linthicum, D. (2019). DevOps tools best practices: A 7-step guide. Retrieved 16 October 2019, from
https://techbeacon.com/devops/7-steps-choosing-right-devops-tools
[6] CFEngine. (2019). CFEngine - Automate large-scale, complex and mission critical IT infrastructure with
CFEngine. Retrieved 16 October 2019, from https://cfengine.com/
[7] Manly, A. (2019). Challenges to DevOps Adoption and How to Overcome Them. Retrieved 16 October 2019,
from https://www.contino.io/insights/5-challenges-to-devops-adoption-and-how-to-overcome-them

You might also like