-
Notifications
You must be signed in to change notification settings - Fork 7
/
index.html
191 lines (179 loc) · 9.14 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="https://rawgit.com/hakimel/reveal.js/master/lib/css/monokai.css">
<title>
What Is DevOps?
</title>
</head>
<body>
<div id="revealDiv" class="">
<div class="slides">
<section>
<h1>
What Is DevOps?
</h1>
</section>
<section>
<h2>
Some History
</h2>
</section>
<section>
<h2>
An Accidental Name
</h2>
<p>
As development teams adopted Lean and Agile methods, they
often became capable of producing production-ready software
on a daily basis, or even more frequently. But managing
software in production environments was traditionally the
job of operations, not of the developers. And operations
viewed its job as slowing the pace of releases, because
releases meant bugs, crashes, and other problems operations
had to handle.</p>
</section>
<section>
<p>
How could this gulf between development and operations be
narrowed? Operations itself had to become Lean and Agile!
In particular, rather than hand-provisioning operations
infrastructure, operations team members had to themselves
become coders, and apply the full toolkit of Lean and Agile
methods to operations: incremental changes, automated
testing, source code control, automated builds, and so on.
One of those operations people, Patrick Debois, named a
conference DevOpsDays, and from that seed, the term
"DevOps" spread.
</p>
</section>
<section>
<h3>
Why Incremental Development?
</h3>
<ul>
<li class="fragment">
Small batches of work make testing easier.</li>
<li class="fragment">
Easier to find a bug when you have one.</li>
<li class="fragment">
Enables rapid feedback from the users on whether the software is delivering what they want.</li>
<li class="fragment">
Allows us to deliver value to the user more rapidly.</li>
<li class="fragment">
Small batches are more satisfying to the developers, their software gets used soon after they write it.</li>
</ul>
</section>
<section>
<p>
Completing and delivering small batches of work at a time is
such an important part of DevOps that we could almost say that
every other part of DevOps exists to enable frequent, reliable
delivery of small improvements to a piece of software.</p>
</section>
<section>
<h2>
Infrastructure as Code
</h2>
<p>
Infrastructure as code (IaC) as the idea that, rather
than manually provisioning servers, or setting up
hardware through a point-and-click GUI, the "server
room" should itself be managed by code. That code can
then be put under version control, tested, deployed
with automated build tools, and so on. The code also
serves as necessarily up-to-date documentation of what
the infrastructure is.
</p>
</section>
<section>
<p>The advantages of IaC can be divided into three main categories:</p>
<ul>
<li class="fragment">Cost savings</li>
<li class="fragment">Speed of deployment</li>
<li class="fragment">Lower error rates</li>
</ul>
</section>
<section>
<h2>
CI / CD
</h2>
<p>
Continuous integration (CI) and continuous delivery (CD) are a pair of practices that, when done properly, greatly aid an organization's ability to deliver software frequently and reliably to its customers. We often hear the combination of these practices referred to as "the CI/CD pipeline," and they are among the most important practices a DevOps team can implement.
</p>
</section>
<section>
<h2>
Continuous Integration
</h2>
<p>
Continuous Integration means that every developer should be pushing code to the master branch regularly, at the minimum once per day, and that then that code should be tested to ensure that it integrates with all the other code currently in the master branch. The practice of continuous integration eliminates the huge "integration" phase that typically took place in waterfall model projects. The central repository will receive your changes while automated processes can build, test, and scan the code while providing reports.
</p>
</section>
<section>
<h2>
Continuous Delivery
</h2>
<p>
Continuous delivery means taking the result of the continuous integration process and delivering it to a "place" in which it can be run. That "place" my be a test server, a staging server, or even production. If the continuous delivery phase is actually putting the new software right into production, then it also qualifies as "continuous deployment." There are many free tools to aid in CI/CD, such as Travis CI and Jenkins.
</p>
</section>
</div>
</div>
<script>
var mode = "html"
var convertBtn = document.createElement("BUTTON");
convertBtn.innerHTML = "PPT View";
convertBtn.id = "convertBtn"
convertBtn.style = "position: fixed; bottom: 60px; right: 10px; padding: 10px 14px; font-size: 14px; border-radius: 5px; background-color: #555555; color: white;"
convertBtn.addEventListener ("click", switchToPPTView)
document.body.appendChild(convertBtn);
function switchToPPTView(){
var revealCss = 'revealCss';
var script = document.createElement('script');
script.type = 'text/javascript';
script.classList.add(revealCss)
script.onload = loadScript
script.setAttribute('src', 'https://www.rawgit.com/hakimel/reveal.js/master/js/reveal.js');
document.body.appendChild(script);
var btn = document.getElementById('convertBtn')
btn.parentNode.removeChild(btn)
}
function loadScript(){
var revealCss = 'revealCss';
var revealDiv = document.getElementById("revealDiv");
revealDiv.classList.add("reveal");
var script_tag = document.createElement('script');
script_tag.classList.add(revealCss)
script_tag.text = "Reveal.initialize({ transition: 'slide', transitionSpeed: 'default', dependencies: [ { src: 'https://rawgit.com/hakimel/reveal.js/master/plugin/notes/notes.js', async: true }, { src: 'https://rawgit.com/hakimel/reveal.js/master/plugin/highlight/highlight.js', async: true }]});";
document.body.appendChild(script_tag);
var revealDiv = document.getElementById("revealDiv");
revealDiv.classList.add("reveal");
var head = document.getElementsByTagName('head')[0];
var link1 = document.createElement('link');
link1.classList.add(revealCss)
link1.rel = 'stylesheet';
link1.type = 'text/css';
link1.href = 'https://rawgit.com/hakimel/reveal.js/master/css/reset.css';
head.appendChild(link1);
var link2 = document.createElement('link');
link2.classList.add(revealCss)
link2.rel = 'stylesheet';
link2.type = 'text/css';
link2.href = 'https://rawgit.com/hakimel/reveal.js/master/css/reveal.css';
head.appendChild(link2);
var link3 = document.createElement('link');
link3.classList.add(revealCss)
link3.rel = 'stylesheet';
link3.type = 'text/css';
link3.href = 'https://rawgit.com/hakimel/reveal.js/master/css/theme/sky.css';
head.appendChild(link3);
var style = document.createElement('style')
style.innerHTML = 'p {text-align: justify !important; font-size: 38px} h1,h2,h3,h4,h5,h6 {text-transform: capitalize !important;}'
head.appendChild(style);
}
</script>
</body>
</html>