table of contents - gallery.technet.microsoft.com · management tools. • part 2: principles of...
TRANSCRIPT
2
TABLE OF CONTENTS
ABOUT THE AUTHOR ....................................................................................................... 3
Preface ................................................................................................................................... 4
Introduction to DevOps ................................................................................................... 6
Introduction ................................................................................................................................. 6
Part 1: What is DevOps ............................................................................................................. 6
Part 2: Principles of DevOps ................................................................................................... 7
Part 3: Why DevOps Exist ........................................................................................................ 7
Conclusion ..................................................................................................................................... 8
Interaction between people, process and product ................................................ 9
Introduction ................................................................................................................................. 9
The Three Stage Conversation – People, Process, Products .................................... 10
People: ................................................................................................................................................... 10
Process: ................................................................................................................................................. 10
Products: ............................................................................................................................................... 11
Conclusion .................................................................................................................................. 11
Structure of DevOps ........................................................................................................12
Introduction .............................................................................................................................. 12
Part 1: DevOps Frame ............................................................................................................ 12
Part 2: DevOps Practices ....................................................................................................... 13
Conclusion .................................................................................................................................. 14
3
ABOUT THE AUTHOR
Mohamed Radwan is a Visual Studio ALM MVP and DevOps practice lead;
he focuses on providing solutions for the various roles involved in
software development and delivery through Agile Methodologies and
utilization of Microsoft Visual Studio ALM/DevOps Tools & Technologies.
Mohamed excels in software practices and automation with 15+ years of
professional experience spanning the different stages and phases of
Software Development Lifecycle. He has helped various customers across
the world in the UK, Denmark, USA, Egypt, Oman, KSA, Kuwait, and Libya,
amongst others.
Mohamed specialized in Agile Methodologies, and is a frequent speaker at
many national and regional technology events and user groups for various
countries, such as: Campus Days in Denmark, Copenhagen user group,
Open Days in Egypt, KSA, Kuwait, and Oman. He has authored several
frameworks and extensions including DevMagicFake and TestingConf
Utilities, as well as many technical articles & guides. He is the founder of
the TFSEG and co-founder of the MEAALM Community.
Mohamed also holds a number of Microsoft certifications including MCT,
MCPD, MCITP in EPM, MCTS (7), MCSD, MCAD, and CIW.
4
PREFACE
This guide will help you to understand the fundamentals of DevOps, which
is grouping different older and newer concepts into a movement that is
aiming to have a strong automation of all development steps and to deliver
high quality products in shorter development cycles, with frequent
deployment and closely aligned with business objectives.
DevOps is a firm connection between Development and IT Operations,
bringing the teams on the same page in order to achieve better
collaboration, faster releases, higher trust and better management of
unexpected work.
This guide will explain in later chapters the importance of high
collaboration between the teams and cross functionality. This close
collaboration between development and operations is enabling teams to
build, test and release software faster, with rapid delivery circles and with
higher reliability and stability. Of course, this doesn’t mean that developers
need to transform themselves into being the best operations staff, which is
common misconception of the DevOps. It means that the development is
pairing with the operations in the whole development lifecycle, in order to
have full insight in every aspect of the development cycle and to be able to
respond on issues quickly. In this way, the development team will be
participating also in running their product which will help them to solve
any issues better and quicker. And it’s not only about solving the issues or
the bugs, it’s also about continuous improvement. Besides this key factor,
the close collaboration between the teams is building higher trust and
mutual respect.
First chapter of this guide will explain more in depth about basic principles
of DevOps and why DevOps actually exists. In the second chapter the guide
will explain more about interaction between people, process and the
product which is the heart of the DevOps methodology, as DevOps isn’t a
job or responsibility of one person, it’s about sharing the responsivity and
understanding that everyone is responsible for delivering high quality
product to the customer or end user.
Next or the third chapter of this guide will focus more on the practices,
which helps the organizations to deliver faster and more reliable products
5
to their customers. Practices such as Continuous Integration and Delivery
are based on high automation in order to improve the quality, to reduce the
validation time of releases and to find bugs in quicker time.
Other practices, such as usage of Micro services and Infrastructure as a code
are reducing the dependencies and increasing the possibilities for quicker
deployments.
6
INTRODUCTION TO DEVOPS
Introduction
DevOps is about improving the collaboration between the traditionally
soiled development and operations functions. DevOps is all about trust,
communication and merging of two different disciplines inside IT. On one
side, we have developers and on the other side we have operations. DevOps
is an extension of Agile software development principles – allowing us to
build, deploy and change our software with accelerated delivery cycle
times.
Part 1: What is DevOps
Traditional Development and Operations teams worked in a way that
Development team created a solution for production and when it was
finished they handed over to Operations team. Operations team then
started with preparation to implement the project in the production
environment and manually changed the configuration files and other data
in order to comply for deployment. This caused a lot of duplication and
issues which were very hard to resolve due to different files and
environments.
7
DevOps is a software development method that stresses communication,
collaboration and integration between software developers and
information technology (IT) professionals thereby:
• Enable rapid evolution of products and services
• Lower the risk, enhance quality across portfolio, and reduce costs
DevOps integration targets product delivery, quality testing, feature
development and maintenance releases in order to improve reliability and
security and faster development and deployment cycles. The adoption of
DevOps is being motivated by following factors:
• Use of Agile and other development operations;
• Requirement for an expanded rate of production releases from
application and business stakeholders.
• Extensive possibility of visualized and cloud infrastructure from
internal and external providers.
• Enlarged usage of data center automation and configuration
management tools.
•
Part 2: Principles of DevOps
One of the commonly cited DevOps principle is “Infrastructure as a code”.
Another major principle is also to get the fast feedback throughout every
phase of the software lifecycle. Feedback helps to achieve the higher quality
of code and to reduce as much as possible bugs in the production. Moreover,
the DevOps practices helps to gather data to identify, diagnose, and resolve
issues quickly.
• Develop and test in an environment similar to production
• Frequent Build deployment
• Continuous validation of operation quality
• Strengthen feedback loops
Part 3: Why DevOps Exist
There is a gap between Developers and Operations team. With the
implementation of DevOps:
8
• Close collaboration between Developers and Operations to
Developers work with to understand the impact of code changes.
• Developers work is done in environment which is very close to
production environment.
• Developers are focused on metrics required by Ops team.
• More transparency for Operations on infrastructure needs.
• Higher level of automation on deployment.
• The pipeline of Dev – Test – Prod is closely monitored for each
deployment with immediate feedback.
• Better collaboration and communication.
Conclusion
DevOps is helping businesses in a tremendous way. Its bridging the gap
between Developer’s ‘need for change’ and Operations ‘resist to change’
and thus create a smooth path for continuous development and continuous
integration. You might also be interested in taking DevOps Self-Assessment.
You can visit Microsoft’s website and gauge your readiness in the 7 key
DevOps practice areas.
9
INTERACTION BETWEEN PEOPLE, PROCESS AND PRODUCT
Introduction
Just to summarize once again, DevOps is a methodology interacting
between Development and Operations. It is all about improving the joint
effort between functions of Development and Operations. The DevOps
methodology in a software world is often also referred as a methodology
that overcomes the gap between Agile software development and
operations, as it enables a fluent process for Continuous Development and
Continuous Integration.
It’s also very important to highlight that usage of DevOps methodology
reduces the stress in communication, helps to improve the communication
between teams, collaboration between all participants and integration
between developers and operations teams.
In delivering valuable software to customers, too often development and
operations are in conflict with each other. When Development implement
the changes, such as new features, bugs or fixes, they want to quickly roll
out this changes to production. But once when software is already
delivered, the operations departments wants to avoid to make the changes
on the software. Here is where DevOps help to overcome the gap between
both teams.
10
Initially, there was ‘Agile Development’, when agility aspect was applied to
operations it became ‘Agile Administration’, thus DevOps was formed. Here
is a must-read article by Visual Studio Magazine – Taking DevOps to the
next level: It’s all about continuous delivery.
In this section, I’m going to describe a bit deeper view about Three
important stages of Conversation, which are People, Process and Products.
The Three Stage Conversation – People, Process, Products
DevOps is the correlation of people, process, and products to enable
continuous delivery of value to end users. The outcomes are tightly
connected to ability for frequent releases and at the same time to keep the
same level of quality.
People:
Thinking of DevOps at a really high level, it’s first all about people. DevOps
business, everybody that is involved, that needs to deliver value to the
business is working very tightly together on a common goal of adding value
to the customer. The latest study by Gartner, which involved 367 IT and
leading companies, from which 113 companies were using DevOps, showed
that people issue is the biggest concern in the share of interviewed
participants. This study also revealed that the share of process and IT issues
is on less lower level, than people issue. So we can think that having highly
motivated people with good collaboration between teams is very
important.
Process:
Next – DevOps is about process because even if you have those people that
are good working together but then you have got business process in a way
that is really blocking innovation, for instance long chain advisory boards
before they can do something or they are restricted to doing things in a
certain way that really impedes that kind of innovation. The process of
designing, building and testing software should be well presented to each
individual team member, to make every team member aware of all parts of
the development process. The implementation of DevOps process into
company is a hard work, as it completely changes the company’s structure
as a whole.
11
That’s part of a bigger picture of DevOps. Enabling efficient flow of people
working together and not having processes get in the way but having
processes and practices that help enable that value deliver to your
customers.
Products:
DevOps is not a tool or product. You can’t buy the DevOps, as DevOps is not
a software, tool, process, company or person, it’s a methodology used
especially by IT professionals. But there are products, tools and services
that really help enable different DevOps practices and different teams can
use to make things easier. From very high level those tools are Microsoft
Azure, which is offering a lot of different products and services, such as
Microsoft Azure Stack and Microsoft Azure. Besides Microsoft Azure there
are also other products related to DevOps practices, such as Visual Studio
Team Services (VSTS) and Team Foundation Server (TFS).
Conclusion
So, DevOps is working like a mediator between Development and
Operations and is helping businesses in a tremendous way that need
continuous change to thrive in the competitive market. DevOps is not a
software, tool, person or process, it’s way much more than that. It is a
philosophy, which is changing the work practices in IT in the way which
requires tight collaboration between everyone involved to enable
continuous delivery to the end users.
12
STRUCTURE OF DEVOPS
Introduction
DevOps is a methodology that refers to anything that settles the interaction
between development and operations. Development needs as much
changes as possible to grow and to meet the needs of the changing time
while for Operations change is the enemy. Operations require stability and
strongly resist change that is a need for Development.
Part 1: DevOps Frame
DevOps is a strategy intended to bring perfection in software delivery
lifecycle by aligning development and Operations teams around the
business goals. As per Microsoft’s standard level definitions DevOps Level
100 is introductory and overview material. It covers topic concepts,
functions, features, and benefits. DevOps Level 200 is intermediate
material. Assumes 100-level knowledge and provides specific details about
the topic. DevOps Level 300 is advanced material. Assumes 200-level
knowledge, in-depth understanding of features in a real-world
environment, and strong coding skills. Provides a detailed technical
overview of a subset of product/technology features, covering architecture,
performance, migration, deployment, and development.
13
Part 2: DevOps Practices
There are many fundamental DevOps practices. Few of them are listed
below:
Infrastructure as Code (IaC) is the practice in which the techniques,
processes, and tool sets used in software development are leveraged to
manage the deployment and configuration of systems, applications, and
middleware. Most of the testing and deployment defects occur when
developer’s environments differ from testing and production
environments. Putting these environments under version control yields
immediate benefits in consistency, time savings, error rates, and
auditability.
Under Continuous Integration (CI) practice, the working copies of all the
developers code are combined with a shared mainline.
Automated Testing – is the practice where various tests such as load,
functional, integration, and unit tests happen automatically either after you
check in code (i.e. attached to CI) or some other means to fire off one or
more tests automatically against a specific build or app.
Release management is a practice intended to oversee the development,
testing, deployment and support of software releases.
Configuration Management is the practice for establishing and maintaining
consistency of a product’s performance with its requirements, design and
operational information throughout its life.
14
Conclusion
DevOps is all about better delivery practices, automation, removing
bottlenecks and is Agile at Organization level. DevOps is not a tool. It cannot
be built or achieved in a day or a month. It is a path – a roadmap that needs
to be followed.