forked from Edu-DCP-May20/Training-Documents
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDevOps_Intro_Class_Notes.txt
440 lines (285 loc) · 11.5 KB
/
DevOps_Intro_Class_Notes.txt
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
DCP - 20th May 2024
7AM-9AM IST - WeekDays!
**********************
Day 1 - 20th May 2024
**********************
Introduction to DevOps!
What is DevOps ?
Software Development ??
Software Application ??
- Destop Applications --> Billing System
- Web Applications --> Web Service
- Mobile Applications --> Mobile Apps
- System Applications
--> Operating System
--> Middleware products
- Embedded Applications --> Chip level programming!
SDLC Process : Software Development Life Cycle!
- Destop Applications --> Billing System -- supermarket.
- Billing system :
- Functions - stock maintainence
- Payment
- Billing
- User Interface Design
- Requirement Analysis
- Design Document
- Coding/Development
- Testing
- Implementation/Release
- Monitor/Maintain
Waterfall Model :
- Linear in fashion
- Follows top down-approach
- Billing system : - 12 Months
- Functions/Modules - stock maintainence
- Payment - cash
- card payment
- Billing
- User Interface Design
Core-Project :
- Requirement Analysis
- Design Document
- Coding/Development
- Testing
- Implementation/Release
- Monitor/Maintain
Enhancement-Project :
- Requirement Analysis
- Design Document
- Coding/Development
- Testing
- Implementation/Release
- Monitor/Maintain
AGILE Methodologies ::
Functions/Modules/Iteration
- Functions - stock maintainence
- Payment
- Billing
- User Interface Design
- New feature1
Iteration1 : stock maintainence Developer1
- Requirement Analysis
- Diign Document
- Coding/Development
- Testing
- Promote for further testing & Implementation
Iteration2 : Payment Developer2
- Requirement Analysis
- Design Document
- Coding/Development
- Testing
- Promote for further testing & Implementation
Iteration-nth : New Feature
- Requirement Analysis
- Design Document
- Coding/Development
- Testing
- Promote for further testing & Implementation
- Using AGILE Methodologies, we can achieve :
- Continuous Development
- Continuous Integration
- Continuous Testing
- Continuous Delivery
# It is a approach to release the products to production Environment.
# This approach expects manual Approvals/intervension for production release
# Might leads to some downtime
We cannot achieve
- Continuous Deployment
# It is a approach to release the products to production Environment.
# This approach will never expects manual Approvals for production release
# Here, without any downtime we can make the production deployments
Write a program:
Calculator Application:
functions - sum/sub/div/mul
DevOps :
- DevOps is a software development strategy, it helps promote the collaboration between the Teams like Development Team and Operations Team to achieve Continuous Development, Continuous Integration, Continuous Testing, Continuous Delivery, Continuous Deployment and Continuous Monitoring in more automation fashion.
How to Implement DevOps ????
1. Teams involved in SDLC ?
DevOps Team :
- Infra-Structure Management Team
20 Developers
- Workstation
- Development Tools
- security patch updates
- Application Development Team
- Testing Team
- Release Management Team
- Production Support Team
- Production Monitoring Team
- Security Team
Role of DevOps Team is not to replace anyone, but we are here to help them to automate their process in order to speed up their deliverables and improve the productivity.
2. Environments :
Non-Prod Environments Production Environment
Dev Environment
Build Environment
Test Environment
QA(Quality Assurance) Testing
UAT(User Acceptance Testing) Testing =====> Prod Servers
3. DevOps Stages:
- Continuous Development:
- It is a capability of Application Team to continuous to develop the codes and ensure developer productivity.
Role of Developer :
Coding & App Development
Create Source Code --> java
Build the Code
--> Process of compiling the source code and create artifacts(Binaries - *.war/*.jar/*.exec/*.dll)
Unit Testing
Promote the Changes to Higher Environment(Testing)
Notify the Testing Team thru Emails
Using DevOps Approach :
Create Source Code
Save the Source Code in a Source Code Repository(github)
Using DevOps Tools :
Automate :
Build the Code
--> Process of compiling the source code and create artifacts(Binaries - *.war/*.jar/*.exec/*.dll)
Unit Testing
Promote the Changes to Higher Environment(Testing)
Notify the Testing Team thru Emails
DevOps Tools ::
Eclipse Based IDE - Integrated Development Environment, Visual Studio Code, Visual Studio, Pycharm...
Build Tools - Maven
Unit Testing Tools - Junit
- Continuous Integration
- It is a capability of Application Team to continuously integrate their changes to further testing without impacting others' changes.
Automate :
Build the Code
--> Process of compiling the source code and create artifacts(Binaries - *.war/*.jar/*.exec/*.dll)
Unit Testing
Promote the Changes to Higher Environment(Testing)
Notify the Testing Team thru Emails
- Tools :
IDE, Maven, Junit, Docker, Ansible, Jenkins - CI Pipeline
- Continuous Testing
- Testing Team can using the artifacts to perform application testing - Test Automation
- Tools :
- Jenkins, Junit, TestNG, Selenium
- Continuous Delivery / Deployment
- Both are used to perform Production Release.
- Continuous Delivery
# It is a approach to release the products to production Environment.
# This approach expects manual Approvals/intervension for production release
# Might leads to some downtime
- Continuous Deployment
# It is a approach to release the products to production Environment.
# This approach will never expects manual Approvals for production release
# Here, without any downtime we can make the production deployments
- Tools :
Jenkins, Ansible, Docker, Kubernetes,
- Continuous Monitoring :
- This to Monitor the Target Environments:
- Infra-Structure Monitoring
Tools : Prometheus/Grafana/Dynatrace/Splunk
CPU/Memory utilization
- Application Monitor
Tools : App Dynamics/ Datadog
- Infra-Structure Management Team
- Responsible for Provisioning and Configuring the Infra-Structure.
Create the servers - Terraform
Configure the Servers - Ansible
Next :
DevOps LifeCycle
Version Control System using GIT
**********************
Day 2 - 21st May 2024
**********************
DevOps LifeCycle !
DevOps Stages !
Environments ::
Non-Prod Environments Production Environment
Dev Environment
Build Environment
Test Environment
QA(Quality Assurance) Testing
UAT(User Acceptance Testing) Testing =====> pre-prod/Staging =====> Prod Servers
Types of Application Architecture ::
Continuous Developement :::
Monolith Application Architecture :
- These are tightly coupled Applications
- All its dependencies are tightly coupled, which cannot be splited easily for continuous deployments.
Micro-Service Based Application Architecture
- These are loosly coupled application
- Each and every function of this application is considered as Micro-service.
- This allow to independly create and deploy to prod without any manual intervension.
- This help to achieve Continuous Deployments.
- Continuous Delivery
# It is a approach to release the products to production Environment.
# This approach expects manual Approvals/intervension for production release
# Might leads to some downtime
Eg.:
Online Banking Core - Services
bug fix / new feature --> production release.
Downtime --> Production Release Window -- > 4 - 6 hrs
Manual Approvals from all stake holders
banking_app_V1.0 --> LIVE
banking_app_V2.0
- Fix the issue within rel. window
- Revert
- Continuous Deployment
# It is a approach to release the products to production Environment.
# This approach will never expects manual Approvals for production release
# Here, without any downtime we can make the production deployments
Eg.:
Facebook/amazon.com/netflix
amazon :::
sign-up - F/B/A - 3 - tier application - developer1 -> code,unit test,promote to qa/uat,deployed to prod
sign-in - F/B/A - 3 - tier application - developer2 -> code,unit test,promote to qa/uat,deployed to prod
search - F/B/A - 3 - tier application - developer3 -> code,unit test,promote to qa/uat,deployed to prod
add to cart
place order
payment
confirm order
track
DevOps LifeCycle ::
Source Code
Commit the Source to Source_Code repository(github/gitlab/az repo)
CI/CD Pipeline -- Created using DevOps Tools like Jenkins /gitlab-ci/az-pipeline/aws code pipeline/bamboo
SCM_Checkout
Application Build
Perform Unit Test --> 25 test cases -- 100% - 80%
Code Quality Analysis
Promote the Changes to QA
Perform QA Testing
Promote the Changes to UAT
Perform UAT Testing
Promote the Changes to PROD
Perform PROD Testing
Monitor the Infra-Structure and Applications running in PROD Environment
Shift Left Approach ->
- DevOps is a software development strategy, it helps promote the collaboration between the Teams like Development Team and Operations Team to achieve Continuous Development, Continuous Integration, Continuous Testing, Continuous Delivery, Continuous Deployment and Continuous Monitoring in more automation fashion.
DevOps : People/Process/Tools
DevOps Tools :
Open-Source DevOps Tools :
git/jenkins/Docker/Ansible/Kubernetes/Terraform/Prometheus/Grafana
Managed Services :
AWS AWS Code Commit/ code Pipeline / Code Build / Code Deploy
Azure Azure DevOps Services - Azure Repo / Az Pipeline / Az Test / Az Artifacts
GCP
Detailed DevOps Assessment
- Identify the scope for automation
- 270+
waterfall, Agile, DevOps, DevSecOps, gitOps, AIOps, SRE, MLOps,....
DevOps Asso. --> Sr. DevOps Asso.
DEngg --> Sr. DEngg.
DLead --> Sr. DLead
DA - Sr. DA
DevOps Consultant
How to do?
git/jenkins/Docker/Ansible/Kubernetes/Terraform/Prometheus/Grafana
Programming Language
Scripting Language :
shell/groovy/yaml/Python
**********************
Day 2 - 21st May 2024
**********************
Version Control System Using GIT ::
Source Code Repository(github)
Github -- Open-Source Remote Source_Code Management Tool.
Repository :
- Collection of Folders & Files
www.github.com
github
az Repo
bitbucket
aws code commit
gitlab