YouTube2Text

Azure DevOps Full Course in 8 Hours [2025] | Azure DevOps Tutorial For Beginners | Edureka Live — Transcript

by edureka! · 89,532 words · 13,415 segments · language en · Watch on YouTube

Full transcript

  1. 0:08Hello everyone and welcome to the Azure
  2. 0:10DevOps full course. In today's
  3. 0:12fast-paced development world, Azure
  4. 0:14DevOps is a purple suit of tools that
  5. 0:17helps team plan, develop, test, and
  6. 0:20deliver software efficiently. This
  7. 0:22course is designed to give you a
  8. 0:23complete understanding of DevOps
  9. 0:25practices using Microsoft Azure. You
  10. 0:28will learn how to manage code with Git,
  11. 0:30set up CI/CD pipelines, automate
  12. 0:32deployments, track work with Azure
  13. 0:34boards, manage test plans, and use
  14. 0:37artifacts efficiently. We will also dive
  15. 0:39into Azure repositories, pipelines, and
  16. 0:42integrate tools with Docker and
  17. 0:44Kubernetes. Whether you're a developer,
  18. 0:46tester or IT professional, this course
  19. 0:49equips you with the practical skills
  20. 0:50needed to implement DevOps on the Azure
  21. 0:53platform and prepare for roles like
  22. 0:55Azure DevOps engineer or pass
  23. 0:57certification exams like AZ 400. So
  24. 1:00before we begin, please like, share and
  25. 1:02subscribe to Edureka's YouTube channel
  26. 1:04and hit the bell icon to stay updated on
  27. 1:06the latest content from Edureka. Also
  28. 1:09check out Edureka's Microsoft Azure
  29. 1:11DevOps certification course designed by
  30. 1:13experts to meet current industry
  31. 1:15standards. This comprehensive training
  32. 1:17prepares you for the Microsoft certified
  33. 1:19DevOps engineer expert certification.
  34. 1:22You will gain hands-on skills in
  35. 1:23designing and implementing DevOps
  36. 1:25strategies including collaboration,
  37. 1:27source control, security, compliance,
  38. 1:30continuous integration, continuous
  39. 1:32delivery and monitoring. So check out
  40. 1:34the course link given in the description
  41. 1:36box below. Now let's get started with
  42. 1:38our first topic that is what is Azure.
  43. 1:42>> Let's get started with the video. Let's
  44. 1:44kick things off by talking about why
  45. 1:47businesses and everybody for that matter
  46. 1:49need cloud computing. Here's an example.
  47. 1:52Meet John who is an entrepreneur who has
  48. 1:55a brilliant idea for an app which solves
  49. 1:57a problem and has a great user
  50. 1:59experience. So what does John need? John
  51. 2:02will need developers to build his app.
  52. 2:05But other than that in terms of
  53. 2:07infrastructure he will need servers then
  54. 2:10he will need storage devices a dedicated
  55. 2:13network security systems and of course
  56. 2:16he will need a dedicated IT operations
  57. 2:18team to monitor the whole infrastructure
  58. 2:21and make sure everything is working
  59. 2:22properly. John figured that there would
  60. 2:25be four major problems with this setup.
  61. 2:27And what are those? Let's take a look.
  62. 2:29So the first problem is that owning his
  63. 2:32own infrastructure would require a huge
  64. 2:34amount of money and because of a huge
  65. 2:37investment in setup of the
  66. 2:38infrastructure this would also greatly
  67. 2:41increase the risk if the app fails.
  68. 2:44Second problem is that he noticed that
  69. 2:46the infrastructure would take too long
  70. 2:48to set up as he would have to buy all
  71. 2:50the components required for his
  72. 2:51infrastructure. Then hire IT technicians
  73. 2:54to install all the components and
  74. 2:56connect everything up so that everything
  75. 2:59is talking to each other and working
  76. 3:00nicely. So that means more money and
  77. 3:03more time. Next, he realized that even
  78. 3:06after the expensive setup of the
  79. 3:07infrastructure, he would have to hire a
  80. 3:09team of IT operations to work around the
  81. 3:12clock for the upkeep of the
  82. 3:14infrastructure. This would include
  83. 3:16things like resolving issues with the
  84. 3:18hardware or software, replacing broken
  85. 3:20pieces of the infrastructure so he would
  86. 3:22need to have spare parts on hand,
  87. 3:24switching to backup servers if the
  88. 3:26server goes down, preventative
  89. 3:28maintenance and so on means more money
  90. 3:31and more headaches when the issues crop
  91. 3:34up. Another problem has to do with the
  92. 3:36inability of the infrastructure to
  93. 3:38scale. So what if the traffic on the
  94. 3:40servers increases or decreases abruptly?
  95. 3:43Well, if the traffic increases, he will
  96. 3:45have to scale the infrastructure to meet
  97. 3:47that demand, which means expanding the
  98. 3:49infrastructure. So, buying more
  99. 3:51components, probably renting more office
  100. 3:53spaces, hiring more IT staff to monitor
  101. 3:56the expanded infrastructure, and so on.
  102. 3:59But what if there's a sudden drop in the
  103. 4:01demand? All of this extra infrastructure
  104. 4:03and resources will sit idle. What about
  105. 4:06the extra people he hired? He will have
  106. 4:08to let them go. Well, it's terrible, but
  107. 4:11he may have to. Well, now let me tell
  108. 4:13you John was smart. He did not opt for
  109. 4:15this setup. He opted for cloud computing
  110. 4:18because he was studying up on cloud
  111. 4:20computing and he found that all big and
  112. 4:22small companies that are at the top in
  113. 4:24their domains are using cloud computing.
  114. 4:26And this research into cloud computing
  115. 4:28was a real eye opener as he found that
  116. 4:31all these issues that he would face with
  117. 4:33the infrastructure that we just talked
  118. 4:35about could be solved by using the
  119. 4:37cloud. So obviously he opted for cloud.
  120. 4:40This is because there was almost no
  121. 4:43initial setup cost required and it could
  122. 4:45be done in a few minutes or hours by
  123. 4:47using a single computer and he wouldn't
  124. 4:50need a dedicated team to take care of
  125. 4:51the physical machines because that is
  126. 4:54taken care of by the cloud provider. And
  127. 4:58finally to John's relief, infrastructure
  128. 5:00in the cloud scales automatically as the
  129. 5:03demand changes. Isn't that freaking
  130. 5:05amazing? So why don't we find out more
  131. 5:08about cloud computing in this next
  132. 5:10section. What is cloud computing? Cloud
  133. 5:13computing is the delivery of the
  134. 5:14computing services like servers,
  135. 5:17storage, databases, networking,
  136. 5:19software, analytics, intelligence and so
  137. 5:22on over the internet which we call
  138. 5:25colloally the cloud. Okay. So let's
  139. 5:28understand that John takes a computer
  140. 5:31that is connected to the internet. Then
  141. 5:33he accesses the resources on cloud
  142. 5:35platform. So these resources that John
  143. 5:38needs are running on physical machines
  144. 5:41in the data center that are owned by
  145. 5:42cloud providers. So like I said before,
  146. 5:45all John needs is a computer that is
  147. 5:47connected to the internet and the
  148. 5:49remainder of the infrastructure is
  149. 5:50actually provided by the cloud provider
  150. 5:53and he can access the resources that he
  151. 5:55needs from the data center using the
  152. 5:58cloud platform. So how does this work?
  153. 6:01Well, first John goes to the cloud
  154. 6:03provider whichever one he likes the
  155. 6:05most. Amazon web services, Microsoft
  156. 6:08Azure, Google Cloud, these are the top
  157. 6:11cloud providers. So after going to the
  158. 6:13cloud provers website, he signs up for
  159. 6:16an account and then he signs up for the
  160. 6:18services as per his requirements and
  161. 6:20configures the resources that he will
  162. 6:22need for the app to run on. And the
  163. 6:25amazing thing is that he only pays for
  164. 6:27the services that he uses and for the
  165. 6:30amount of time that the services were up
  166. 6:32for. Isn't that amazing? Of course it
  167. 6:35is. So let's now talk about what is
  168. 6:37Azure. Azure is a cloud platform that is
  169. 6:40provided by the company Microsoft from
  170. 6:43which you can rent your resources and
  171. 6:45services. So you can grab a computer
  172. 6:47that is connected to internet then go to
  173. 6:50Azure portal on your web browser and
  174. 6:52then access the resources that you need
  175. 6:54by signing up with Microsoft Azure. So
  176. 6:57now it's time to find out which cloud
  177. 6:59platform did John choose. It's kind of a
  178. 7:01no-brainer, but here's what John says.
  179. 7:04The developers of my app and I we all
  180. 7:07use Windows OS and other Microsoft
  181. 7:10products. So we wanted a cloud service
  182. 7:12that is best compatible with them. Can
  183. 7:15you guess which one this is? Of course
  184. 7:17it is Microsoft Azure because it is most
  185. 7:20compatible with the Microsoft products.
  186. 7:22So before we talk about the services,
  187. 7:24why don't we find out some of the
  188. 7:25interesting things about Azure. Just
  189. 7:27like every other cloud platform, Azure
  190. 7:30provides five distinct type of services.
  191. 7:34infrastructure as a service, platform as
  192. 7:36a service, software as a service,
  193. 7:39container as a service, and functions as
  194. 7:41a service. Apart from that, Azure has 22
  195. 7:44main categories of products which we
  196. 7:46will take a look at later on. Next,
  197. 7:49Azure is operating globally in 60 plus
  198. 7:51regions and provides its services to 140
  199. 7:55countries and counting. So, just like
  200. 7:58the major cloud platforms, Azure
  201. 8:00provides pay as you go plans and free
  202. 8:02plan. So there are actually no upfront
  203. 8:05fees for signing up with Azure and you
  204. 8:07can pay as you go and only pay for the
  205. 8:09time your services are running and just
  206. 8:12like every other cloud platform, Azure
  207. 8:14provides free basic plan which is
  208. 8:15surprisingly good and it is valid for 12
  209. 8:18months. So you can tinker around and see
  210. 8:22if you like it. Okay, so what about the
  211. 8:24languages that are supported on
  212. 8:25Microsoft Azure? They are C, F, Java,
  213. 8:29TypeScript and Python. Now let's move on
  214. 8:32to the next section where we discussed
  215. 8:34the services offered on Azure. So in the
  216. 8:37previous section you probably remember
  217. 8:38that I mentioned that Azure has 22
  218. 8:41categories of products. But what I did
  219. 8:43not mention is that it has over 600
  220. 8:46services. So obviously we are not going
  221. 8:48to be able to have enough time to
  222. 8:50discuss all 600 services. So here's your
  223. 8:53homework. Go to Azure's website and
  224. 8:55check out each of these categories and
  225. 8:57read up on them. If you have any
  226. 8:59questions, come back to this video and
  227. 9:01comment down in the section and we will
  228. 9:03be more than happy to answer any of
  229. 9:05those for you. So, I hope that you got a
  230. 9:08picture of all the categories of
  231. 9:09services provided by Microsoft Azure.
  232. 9:12So, let's now go back to John. John
  233. 9:14needed three services. They were
  234. 9:16compute, networking, and storage. So,
  235. 9:19let's take a look at each one of these
  236. 9:22in a little bit of a detail and then
  237. 9:23move on. So the first product that he's
  238. 9:26going to need to build his
  239. 9:27infrastructure in the cloud is compute.
  240. 9:29He can use this to deploy and manage
  241. 9:32virtual machines, containers, and batch
  242. 9:34jobs as well as support remote
  243. 9:37application access. Compute resources
  244. 9:39created within the cloud can be
  245. 9:41configured with either public IP
  246. 9:43addresses or private IP addresses
  247. 9:46depending on whether the resource needs
  248. 9:48to be accessible to the outside world.
  249. 9:50So some of the services that are offered
  250. 9:52within compute product are virtual
  251. 9:54machine, containers, kubernetes service,
  252. 9:57cloud services, mobile apps. Let's move
  253. 10:00on to talk about the next which is
  254. 10:02networking. So after setting up the
  255. 10:04virtual machines using the compute
  256. 10:06product, he will require networking in
  257. 10:09order to connect those virtual machines
  258. 10:10up so they can talk to each other and
  259. 10:13form a network. So this product gives
  260. 10:15you the ability to set up virtual
  261. 10:17networks, dedicated connections and
  262. 10:20gateways and it also gives you services
  263. 10:23for traffic management and diagnosis,
  264. 10:26load balancing, DNS hosting and network
  265. 10:30protection against some of the attacks
  266. 10:32like DDoS.
  267. 10:34Next one that John needs is storage
  268. 10:36obviously for his virtual machines so
  269. 10:39that they can store customer data and
  270. 10:41use backup storage for all of the
  271. 10:44infrastructure. So there are various
  272. 10:46services that are offered within storage
  273. 10:48like Azure disc storage, blob storage,
  274. 10:51Azure backup, Q storage and many more.
  275. 10:55This category of services provides
  276. 10:57scalable cloud storage for structured
  277. 11:00and unstructured data. It also supports
  278. 11:03big data projects, persistent storage
  279. 11:06and archival storage. Similarly, there
  280. 11:09are 19 more categories that provide
  281. 11:11services that can cater to all needs of
  282. 11:14any organization or company, which
  283. 11:16brings us to our next section, which is
  284. 11:19companies using Azure. Let's see which
  285. 11:21companies use Azure. So, hundreds of big
  286. 11:24companies use Azure, but these are the
  287. 11:27ones that I picked for you guys because
  288. 11:29each one of these use Azure for a
  289. 11:31different purpose. So, let's check that
  290. 11:34out. eBay has been using Azure for app
  291. 11:37development and hosting since 2010,
  292. 11:39which is the same year Microsoft
  293. 11:41announced Azure to the world. Boeing
  294. 11:44mainly uses Azure for its data analytics
  295. 11:47services for things like crew planning,
  296. 11:50maintenance optimization, fuel
  297. 11:52optimization, and crew training by
  298. 11:54building predictive models on the
  299. 11:57platform. BMW uses Azure's Internet of
  300. 12:01Things to make manufacturing process
  301. 12:04within their factories more efficient by
  302. 12:06connecting all different machines,
  303. 12:08sensors, and other devices. On the other
  304. 12:11hand, Samsung has used Azure for its
  305. 12:14smart TV infrastructure. The entire
  306. 12:17smart TV infrastructure is actually on
  307. 12:19the Azure platform. By choosing Azure,
  308. 12:22Samsung was able to achieve a
  309. 12:24significant reduction in costs and
  310. 12:26increased capacity in order to meet its
  311. 12:29rapidly growing customer base.
  312. 12:37Now let us understand what is Azure
  313. 12:39certification. Azure certification is a
  314. 12:42level of Microsoft cloud expertise that
  315. 12:44an individual obtains by passing one or
  316. 12:47more certification exams. Microsoft
  317. 12:49Azour certification validates an
  318. 12:51individual cloud expertise and skills.
  319. 12:54Now let us move on to our next topic and
  320. 12:56see some of the benefits of Azure
  321. 12:57certification.
  322. 12:59With an Azure certification, you
  323. 13:01validate your cloud skills in your
  324. 13:02selected domain. You will earn the
  325. 13:04credibility and your present or your
  326. 13:06future employee will know for sure that
  327. 13:08you have worked on Azure and have the
  328. 13:10skill as you mentioned. The next
  329. 13:12advantage is you'll have higher salary
  330. 13:14packages. Business wire has estimated
  331. 13:16that Azure course certification have
  332. 13:19raised their wages by 20 to 40%.
  333. 13:22bayscale.com also announced that based
  334. 13:24on the position and job description
  335. 13:26those credited by Microsoft Azure could
  336. 13:28get a salary of $128,000
  337. 13:31peranom with the Azure certification you
  338. 13:34can pursue a wide range of career
  339. 13:36options you can become a cloud architect
  340. 13:38a developer or solution architect or
  341. 13:41even AI engineer there are many options
  342. 13:43and in addition to this the
  343. 13:45certification enables you to work with
  344. 13:47different industry at different
  345. 13:48locations
  346. 13:50the next advantage would be it provides
  347. 13:52a proof of commitment. To get an Azour
  348. 13:55certification, you should be able to
  349. 13:56commit yourself to it. You would have to
  350. 13:59sign up for a course, study and then
  351. 14:01only pass the exam. That would imply
  352. 14:03that you can commit your time and
  353. 14:05resources towards achieving your goal
  354. 14:07and that you're dedicated to improving
  355. 14:08your career objectives in the long term.
  356. 14:11These were some of the benefits of Azure
  357. 14:13certification. Now, let us move on to
  358. 14:15our next topic and see what are the
  359. 14:16types of Azure certification.
  360. 14:19First we'll take a look at different
  361. 14:20Azure certification based on job roles.
  362. 14:23So first we have developer certification
  363. 14:25who designs build and test cloud
  364. 14:27solutions. Second a system administrator
  365. 14:30who implements monitors and maintains
  366. 14:32Microsoft solution. Third is solution
  367. 14:34architect who expertise in compute
  368. 14:37network storage and security. Fourth we
  369. 14:39have the data engineer who designs and
  370. 14:41implement the management monitoring
  371. 14:43security and privacy of data using the
  372. 14:45full stack of data services. Fifth is
  373. 14:48data scientist who applies machine
  374. 14:50learning techniques to train, evaluate
  375. 14:52and deploy models that solve business
  376. 14:54problems. And then sixth we have the AI
  377. 14:57engineer who use cognitive services,
  378. 14:59machine learning and knowledge mining to
  379. 15:01architect and implement Microsoft AI
  380. 15:03solutions. On seventh we have DevOps
  381. 15:06engineer who combines people, process
  382. 15:08and technologies to continuously deliver
  383. 15:11valuable products and services to his
  384. 15:12company. ETH is a security engineer who
  385. 15:15implements security control and thread
  386. 15:17protection. He also manages identity and
  387. 15:20access and protects data application and
  388. 15:22networks. And last we have the
  389. 15:24functional consultant who leverages
  390. 15:26Microsoft Dynamics 365 and Microsoft
  391. 15:29Power Platform to anticipate and plan
  392. 15:31for customer needs. Microsoft Azure
  393. 15:34certification have four level of
  394. 15:36certification. First is the fundamental
  395. 15:38level. Second is the associate level.
  396. 15:41Third is expert and we have specialtity.
  397. 15:44Now specialtity certification is a
  398. 15:46certification based on a particular
  399. 15:47domain. Now let us move on to our next
  400. 15:50topic and see some of the major job role
  401. 15:52based certification. Now before we get
  402. 15:54into any major role-based certification,
  403. 15:56I would like to talk about a fundamental
  404. 15:58certification which is Microsoft
  405. 16:00certified Azure fundamentals or a900.
  406. 16:04Now this certification is intended for
  407. 16:06candidates who are just beginning to
  408. 16:08work with cloud-based solution and
  409. 16:09services or who are new to Azure
  410. 16:11platform. This certification will
  411. 16:13provide an opportunity to prove your
  412. 16:15knowledge of cloud concepts, Azure
  413. 16:17services, Azure workloads, security and
  414. 16:19privacy in Azure as well as Azure
  415. 16:21pricing and support. Candidate who take
  416. 16:24the certification should be familiar
  417. 16:25with general technology concepts
  418. 16:27including concepts of networking,
  419. 16:29storage, compute, application support
  420. 16:32and application development. The AZ900
  421. 16:35certification is a fundamental
  422. 16:37certification which can be used to
  423. 16:38prepare for any other Azure role-based
  424. 16:40or specialtity certification but it is
  425. 16:43not a prerequisites for any of them. Now
  426. 16:46let us see some of the major role-based
  427. 16:47Azure certification. We have the Azure
  428. 16:50administrator associate or A 104.
  429. 16:53Candidates for the Azure administrator
  430. 16:55associate certification should have
  431. 16:57subject matter expertise in
  432. 16:59implementing, managing and monitoring an
  433. 17:01organization's Microsoft Azure
  434. 17:03environment. The responsibility include
  435. 17:06implementing, managing and monitoring
  436. 17:08the identity, governance, storage,
  437. 17:11compute and virtual network in a cloud
  438. 17:13environment. They also have to monitor
  439. 17:15and adjust resources wherever and
  440. 17:16whenever needed. They often serve as a
  441. 17:19part of larger team dedicated to
  442. 17:21implementing an organization's cloud
  443. 17:22infrastructure. For this certification,
  444. 17:25a candidate should have at least 6
  445. 17:27months of hands-on experience
  446. 17:28administrating Azure. Along with that,
  447. 17:30they should also have strong
  448. 17:31understanding of core Azure services,
  449. 17:34Azure workloads, security and
  450. 17:35governance. The next certification is
  451. 17:38Azure Developer Associate or A24.
  452. 17:42Candidates for the Azure Developer
  453. 17:43Associate Certification should have
  454. 17:45subject matter expertise in designing,
  455. 17:48building, testing and maintaining cloud
  456. 17:50application and services on Microsoft
  457. 17:52Azure. The responsibilities include
  458. 17:54participating in all phases of cloud
  459. 17:56development from requirements definition
  460. 17:58and design to development, deployment
  461. 18:01and maintenance to performance tuning
  462. 18:03and monitoring. Azure developers should
  463. 18:05participate with cloud solution
  464. 18:07architect, cloud administrator and
  465. 18:09clients to implement solutions. A
  466. 18:11candidate appearing for this
  467. 18:12certification should have at least one
  468. 18:14or two years professional development
  469. 18:16experience and experience with Microsoft
  470. 18:18Azure. Next, we have an expert level
  471. 18:21certification which is Azure solutions
  472. 18:23architect expert or a3 or 3.4.
  473. 18:27Candidates for the Azure solution
  474. 18:28architect expert certification should
  475. 18:31have subject matter expertise in
  476. 18:32designing and implementing solution that
  477. 18:34run on Microsoft Azure which would
  478. 18:36include aspects like compute, network,
  479. 18:39storage and security. The
  480. 18:41responsibilities include advising
  481. 18:42stakeholders and also translating
  482. 18:45business requirements into secure,
  483. 18:47scalable and reliable cloud solutions.
  484. 18:49They should partner with cloud
  485. 18:51administrator, cloud DBAs and clients to
  486. 18:53implement solutions. A candidate
  487. 18:56appearing for the certification should
  488. 18:57have advanced experience and knowledge
  489. 18:59of IT operation and also know how
  490. 19:01decision in each area affects an overall
  491. 19:04solution.
  492. 19:05These were some of the major role-based
  493. 19:07certification. Now let us move on to our
  494. 19:09next topic and see an overview of the
  495. 19:11exam guide. First we have the exam
  496. 19:14format or question types. Microsoft
  497. 19:17continuously introduces innovative
  498. 19:19testing technologies and question types.
  499. 19:21Your exam might contain questions like
  500. 19:23multiple choices, repeated answer
  501. 19:25choices, short answers, mark review,
  502. 19:28drag and drop labs and so on. The time
  503. 19:31limit for different examination is for
  504. 19:34associate and expert job ro exams you
  505. 19:36have 130 minutes to complete it. For job
  506. 19:39ro fundamental exams you have 60 minutes
  507. 19:41to complete it. For associate and expert
  508. 19:44job ro exam that contains lab you have
  509. 19:46150 minutes to complete it. Now talking
  510. 19:48about the cost for the exam for the
  511. 19:50fundamental exam it would cost you $99.
  512. 19:54For the associate and the expert level
  513. 19:56exams, the cost is $165
  514. 19:59and you can write the certification
  515. 20:01exams in either English, Chinese, Korean
  516. 20:03or Japanese. Now the fundamental
  517. 20:05certification can also be written in
  518. 20:07Spanish, German or French. Now let us
  519. 20:10move on to a last and important topic
  520. 20:12which is how can you prepare for the
  521. 20:13certification.
  522. 20:15First start with the basics. So if
  523. 20:17you're not 100% sure which certification
  524. 20:20to start with, I would recommend you to
  525. 20:22start small by taking the A900 Azure
  526. 20:25fundamental certification exam. This
  527. 20:27will help you understand how Microsoft
  528. 20:29exam work but not being too deep into
  529. 20:31technologies. And after you have
  530. 20:33experienced taking the Microsoft exam,
  531. 20:35this will help you understand how
  532. 20:37Microsoft exam work while not being too
  533. 20:39deep into the technology. Having
  534. 20:41experience taking the Microsoft exam, it
  535. 20:43will also help you focus on the actual
  536. 20:45topic and not on the testing process.
  537. 20:48The next step is to understand the exam
  538. 20:50content. The first thing to do after you
  539. 20:52decide which exam you're going to write
  540. 20:54is to see what you're asked during the
  541. 20:56exam. Every Microsoft exam page has the
  542. 20:59skill measured in the exam. This list is
  543. 21:02very accurate and helps you focus and
  544. 21:04study the right content. The page will
  545. 21:06also have some training and courses to
  546. 21:07prepare for the exam. You should also
  547. 21:10understand the different question types
  548. 21:11asked in the exam which will help you in
  549. 21:13the certification. The next step is to
  550. 21:16take hands-on learning courses on
  551. 21:18Microsoft Learn for free. Microsoft
  552. 21:20Learn is a free learning platform for a
  553. 21:22lot of different Microsoft technologies.
  554. 21:25It provides you with various learning
  555. 21:26paths depending on your job roles or the
  556. 21:28skills you're looking for. Most of the
  557. 21:31learning paths gives you hands-on
  558. 21:32learning opportunity so that you can
  559. 21:34develop practical skills through
  560. 21:35interactive training. The next and the
  561. 21:38most important step is hands-on
  562. 21:40experience. The best way to learn and
  563. 21:42pass the Microsoft Azure exams is by
  564. 21:44having real hands-on experience working
  565. 21:46with the technology. While Microsoft
  566. 21:48learn gives you some free hands-on
  567. 21:50learning modules, there is also Azure
  568. 21:52free account. The Azure free account
  569. 21:54will provide you with 12 months of free
  570. 21:56Azure services. So you can work on
  571. 21:58various Azure services for free. Now the
  572. 22:01next step which will help you prepare
  573. 22:02for the certification is reading the
  574. 22:04Microsoft documentation.
  575. 22:06It will help you understand the topic
  576. 22:07better which might appear in the exam.
  577. 22:09As I've mentioned before, read the
  578. 22:11skills measured on the exam page. Look
  579. 22:14up for the specific Microsoft
  580. 22:15documentation pages and read through
  581. 22:17them and then try them out in the
  582. 22:19tutorials. You can also refer some books
  583. 22:22for Microsoft press. You can find
  584. 22:24Microsoft Azure documentation and
  585. 22:26Microsoft press in Microsoft Azure
  586. 22:28certification official page. After this
  587. 22:31step, you can also take up a practice
  588. 22:33exam. Some of the Azure certification
  589. 22:35have practice examination along with it
  590. 22:38which is very similar to the actual
  591. 22:39certification examination.
  592. 22:48Now let us understand what you'll get
  593. 22:50after you sign up for Azure free
  594. 22:52account. So basically you get many
  595. 22:54things for one year which includes $200
  596. 22:58credits for first 30 days, popular
  597. 23:00services free for 12 months, more than
  598. 23:0340 other services which are free all the
  599. 23:06time and 750 hours of virtual machines
  600. 23:09which includes Windows and Linux and you
  601. 23:12can create up to 250GB SQL database.
  602. 23:16Apart from this, you can get other
  603. 23:18services like free dev test labs, free
  604. 23:21load balancers, free batch jobs, free
  605. 23:24SQL server, etera.
  606. 23:28Now we'll see how to create an Azure
  607. 23:30free account. For this, you require a
  608. 23:33phone number, a credit card, a GitHub or
  609. 23:36a Microsoft account to create your Azure
  610. 23:38free account. The best way is you can
  611. 23:41create a Hotmail or Outlook email ID.
  612. 23:45then you can use the same email ID and
  613. 23:47password to sign up for the Azure free
  614. 23:50account. So firstly you need to sign in
  615. 23:52to the Microsoft account using your
  616. 23:55outlook outmail or any ID and after that
  617. 23:59you need to follow the couple of steps
  618. 24:01that is you need to first fill out about
  619. 24:04you and then you'll go through a
  620. 24:06verification by phone and then you go
  621. 24:09through the verification by card and
  622. 24:12finally you sign up. In the first step
  623. 24:15that is about you. Here you fill up your
  624. 24:18basic details that is first name, last
  625. 24:20name, email id and phone number. Then
  626. 24:23followed by next step that is identity
  627. 24:25verification by phone. So here you give
  628. 24:28your phone number and you will receive
  629. 24:30an OTP and you need to just like type
  630. 24:34your one type password and just verify
  631. 24:36your phone number. So once you verified
  632. 24:39you move on to the next step that is
  633. 24:41identity verification by card. Here you
  634. 24:44fill up your all credit card details
  635. 24:47followed by card hold number then credit
  636. 24:49card number it's expiry and CV and your
  637. 24:53address. Once all it is done then they
  638. 24:56charge you around 2 rupees just for your
  639. 24:59verification. They charge you 2 rupees
  640. 25:01and it is deducted. Once it is deducted
  641. 25:04you move to the next step that is like
  642. 25:06accepting the agreements. So you need to
  643. 25:09just stick all the agreements and
  644. 25:11finally you sign up. So once all this
  645. 25:14process is done then you are ready to
  646. 25:16start with Azure. So this is how you
  647. 25:19create your Azure free account. It's
  648. 25:22very simple and super easy. So now let
  649. 25:25us know how to create an Azure free
  650. 25:27account without a credit card. So can we
  651. 25:30do this? So the answer is yes. Yes you
  652. 25:34can. You can create an Azure free
  653. 25:36account without a credit card. But for
  654. 25:39this you need to have an a school
  655. 25:41account or a required school email id.
  656. 25:45So you basically log in as a student. In
  657. 25:48this case, if you log in through a
  658. 25:50student account, so you will receive
  659. 25:52only 100 credit points and you also get
  660. 25:55various other services like 750 Windows
  661. 25:59virtual machine and you can create up to
  662. 26:02250GB SQL database and um you also get
  663. 26:06machine learning free workspaces, SQL
  664. 26:09server developer edition that is also
  665. 26:11for free and lots of AI and machine
  666. 26:15learning features. This is how you
  667. 26:17create your Azure free account without a
  668. 26:20credit card. Now let's move on to the
  669. 26:23next topic that is can we delete a
  670. 26:26credit card. So many of us had a doubt
  671. 26:29that can we actually delete our credit
  672. 26:32card. So here in this picture you could
  673. 26:36see that I have a payment method and
  674. 26:39here the delete option is disabled. So
  675. 26:42why is this so? In this case, you cannot
  676. 26:44delete a credit card as it is there is
  677. 26:47only one payment method option. If you
  678. 26:49really want to delete a credit card
  679. 26:51detail, then you need to add one more
  680. 26:53payment method. So you can click onto
  681. 26:56this add icon and you can add your new
  682. 27:00payment method. Once the payment method
  683. 27:03is added, then your delete option gets
  684. 27:06enabled. Then after that you get the
  685. 27:08access to delete any one of your credit
  686. 27:11card details. So this is how you delete
  687. 27:14a credit card detail.
  688. 27:16Next, how to cancel subscription.
  689. 27:19So it is very easy to cancel the Azure
  690. 27:22subscription. So for this you just need
  691. 27:25to go to cost management section. There
  692. 27:28you get go to subscription option. Once
  693. 27:31you click on to the go to subscription
  694. 27:33you get all the details of your current
  695. 27:35subscription. So and you can also find
  696. 27:38the cancel subscription option there. So
  697. 27:41once you click on to the cancel
  698. 27:43subscription they will ask you the type
  699. 27:46of subscription name and you need to
  700. 27:48provide a reason why are you canceling
  701. 27:51the subscription. So you just give the
  702. 27:54reason prescribed reason of your own and
  703. 27:57then just click on cancel subscription.
  704. 28:00So once you click on to the cancel
  705. 28:02subscription they will ask you the type
  706. 28:04of subscription and the reason why you
  707. 28:06want to cancel the subscription.
  708. 28:09So you can give your details accordingly
  709. 28:12and click on cancel subscription.
  710. 28:14So this is how you can cancel your Azure
  711. 28:17subscription.
  712. 28:25So let us just go ahead and take a look
  713. 28:27at what this Azure portal does. Before I
  714. 28:29start about Azure portal, I would like
  715. 28:31to inform you that we would be opening
  716. 28:33Azour's portal and then we'd be
  717. 28:35understanding what this portal is, what
  718. 28:37are the services it helps you with and
  719. 28:38how it actually relates or combines all
  720. 28:41the stuff that cloud has to offer to
  721. 28:42you. So to do that, let me just quickly
  722. 28:45switch into the console part and we can
  723. 28:47just get started with the remaining part
  724. 28:49as well. So guys, what I've done is I've
  725. 28:51gone ahead and I've switched into
  726. 28:53Microsoft Azure portal. So for people
  727. 28:55again who are completely new to cloud
  728. 28:57computing, they might ask as in what is
  729. 28:58this Azure portal and how do I get to
  730. 29:00this portal. So this is what the link
  731. 29:03is. It is portal.azour.com.
  732. 29:06If you are completely new person to this
  733. 29:08particular page or this website, you
  734. 29:11would be required to sign in and create
  735. 29:12an account. Now as you can see, I
  736. 29:14already have an account here. It is a
  737. 29:16fresh account. The reason I've chosen a
  738. 29:18fresh account is I wanted this dashboard
  739. 29:20to be clean so that we could go through
  740. 29:22certain pointers. However, there are
  741. 29:24certain applications that are running
  742. 29:26which would help us to understand
  743. 29:28certain pointers which otherwise you
  744. 29:29wouldn't have. So this is a perfect
  745. 29:31account for me. Apart from that, if you
  746. 29:33need to have this account, as I've
  747. 29:34already mentioned, you would have to go
  748. 29:36ahead and create a particular account.
  749. 29:38How do you do that? You visit this link
  750. 29:40that is portal.azure.com.
  751. 29:43Once you do that, it would ask you to
  752. 29:45sign in and put in certain details. So
  753. 29:47when you do sign in or sign up, you
  754. 29:49would have to enter certain details like
  755. 29:50your email ID, contact details and why
  756. 29:53do you want to use this account. One
  757. 29:55pointer you need to consider is
  758. 29:56Microsoft Azure would ask you to enter
  759. 29:58your credit or debit card details. Now
  760. 30:01do not worry they do not charge you
  761. 30:02unnecessarily. What happens is this is a
  762. 30:05free tier account where Microsoft Azure
  763. 30:07would give you certain credit limit
  764. 30:09maybe 12,000 15,000 something like that.
  765. 30:11I do not remember the exact number but
  766. 30:13it is somewhere around 10 to 15,000 in
  767. 30:14that range 10 to 15,000 Indian rupees
  768. 30:17because I am based in India right now so
  769. 30:19I'm talking about Indian rupees when you
  770. 30:21talk about $10 I think it is somewhere
  771. 30:23around $200 so based on where your
  772. 30:26account exists in that local currency
  773. 30:28you'd be given certain amount which you
  774. 30:30can spend for 1 month and use all these
  775. 30:32services for free so yes you have
  776. 30:35sufficient time to explore all the
  777. 30:37resources what Microsoft Azure does is
  778. 30:39it asks you to enter your credit card or
  779. 30:41debit card details that is once you
  780. 30:43exceed these limits you might be charged
  781. 30:46because all these services have a
  782. 30:47certain cap on that. Don't mistake it
  783. 30:49for the fact that you'd be charged
  784. 30:51because these limits are fairly high and
  785. 30:53probably you won't be charged in any way
  786. 30:55but still you would be wanting to get
  787. 30:57through the documentation as in how much
  788. 30:59would you be charged but before that I
  789. 31:01would suggest that you actually go ahead
  790. 31:02and enter in all these details create an
  791. 31:04account and once you have an account
  792. 31:05probably you can go through the pricing
  793. 31:07models as well to avoid getting build in
  794. 31:09case if you actually go ahead and exceed
  795. 31:11these limits which is very less likely
  796. 31:13to happen. So that being said, we have
  797. 31:15an account. If you do create an account
  798. 31:17and sign in, this is what your interface
  799. 31:19would look like. And this is something
  800. 31:21we call it as the Microsoft Azure
  801. 31:23portal. So let us try to understand what
  802. 31:25does this portal has to offer. What are
  803. 31:27the components that are there? Now as
  804. 31:29you can see on the screen on your left
  805. 31:31hand side, you have all the services
  806. 31:33that are listed. Now these are the most
  807. 31:35commonly used services. When I say
  808. 31:37services, most of them are domains as in
  809. 31:39these domains have more services under
  810. 31:41them. So domains and the services that
  811. 31:44you can see here on this part there is
  812. 31:45an option called as create a resource
  813. 31:47using which you can actually create
  814. 31:48these resources as well. Then you have
  815. 31:51this dashboard. It is blue in color for
  816. 31:53now. Let me see whether the color
  817. 31:55changes. Yep, as you can see the color
  818. 31:57has changed. So if you double click on
  819. 31:59this dashboard the color would change.
  820. 32:01So you can probably customize it to meet
  821. 32:03the needs. For now let me just stick to
  822. 32:05the standard version which is this. So
  823. 32:08you have the freedom of changing the
  824. 32:09color and all the stuff that happens the
  825. 32:12applications you launch. You can
  826. 32:14actually go ahead and have a picture of
  827. 32:15these things on your dashboard. How do
  828. 32:18you do that? Probably you can choose
  829. 32:20first of all which dashboard do you want
  830. 32:21to use. If you have multiple dashboards
  831. 32:23you can do that. As you can see this is
  832. 32:25one dashboard which has certain things
  833. 32:27pinned here. You can unpin those things
  834. 32:29and you can pin in all your applications
  835. 32:31to this dashboard. You can click on
  836. 32:33those applications and you have an
  837. 32:34option of pinning them to the dashboard.
  838. 32:36Next thing that you can do here is when
  839. 32:38you actually launch an application there
  840. 32:40is this notification panel where you
  841. 32:42would be notified as in what has
  842. 32:44happened if you've launched an instance
  843. 32:45maybe and you want your virtual machine
  844. 32:47or your application that is running on
  845. 32:49top of it to be on your dashboard. Here
  846. 32:51you'd be given an option do you want to
  847. 32:52pin it to the dashboard and you can say
  848. 32:54yes and immediately it gets pinned on
  849. 32:56the dashboard. Now what benefit does
  850. 32:58this particular thing serve? I mean what
  851. 33:00would I get if I actually go ahead and
  852. 33:01pin it here? The thing is based on your
  853. 33:04business model I mean this is a fairly
  854. 33:05simple demo. So we do not have too many
  855. 33:07applications that we are talking about
  856. 33:09but as your business grows probably you
  857. 33:11might be dealing with a number of
  858. 33:12servers a number of applications. So you
  859. 33:15might want particular information which
  860. 33:16is readily accessible to you. So you can
  861. 33:18probably pin those things on your
  862. 33:20dashboard. You get stats on those
  863. 33:22dashboards. If there are certain
  864. 33:23insights you can actually have a plug-in
  865. 33:25for analytics which gives you reports
  866. 33:28and all those things. It readily
  867. 33:30integrates with PowerBI which is a very
  868. 33:32powerful data visualization tool using
  869. 33:34which you can actually have all the
  870. 33:36insights that you need. So yes, this is
  871. 33:38what the dashboard is. You have all the
  872. 33:39options here. You can create a new
  873. 33:40dashboard. You can upload files,
  874. 33:42download files. You can edit it, share
  875. 33:44the stuff that is there on your
  876. 33:45dashboard. You can probably maximize the
  877. 33:47screen size as well. Clone certain
  878. 33:49dashboards and delete it here and here.
  879. 33:51So when you talk about dashboards, you
  880. 33:53have all the features. Now this is your
  881. 33:55cloud shell guys. So what does a cloud
  882. 33:57shell do basically? So when I say a
  883. 34:00cloud shell, as I've already mentioned,
  884. 34:02you have your portal using which you can
  885. 34:03launch applications and you can do all
  886. 34:05the stuff right away. But at times you
  887. 34:07might be required to use command prompt.
  888. 34:09You might be required to hardcode
  889. 34:10certain things. And how do you do that?
  890. 34:13You click on cloud shell where you can
  891. 34:14use it through the command prompt medium
  892. 34:16as well. Cloud shell is the command
  893. 34:18prompt which is provided by Microsoft
  894. 34:20Azure. Apart from that you have settings
  895. 34:23where you can actually go ahead and
  896. 34:24modify the settings. As you can see this
  897. 34:26is the theme. You can change the theme
  898. 34:27here as well if you want. Some other
  899. 34:29features which you do want to explore.
  900. 34:31You can just go ahead and explore all
  901. 34:32the settings. Delete certain settings.
  902. 34:34Private dashboards as well. That boils
  903. 34:36down to your requirement. If you are
  904. 34:38unable to figure certain things on
  905. 34:40yourself or on your own, you want to
  906. 34:42actually go ahead and check in what the
  907. 34:43support has to offer to you as well.
  908. 34:45Feedback. You can submit feedback
  909. 34:47whether you're happy or not. And this is
  910. 34:49your account. If you click on this link
  911. 34:51whether changing your passwords and
  912. 34:52stuff like that all those things would
  913. 34:54be taken care of here. So guys yeah this
  914. 34:56is pretty much the dashboard. I mean you
  915. 34:58can click on these services and you can
  916. 34:59just explore those services. If you have
  917. 35:01a particular requirement you can type it
  918. 35:03here. Say if I type Azure bot service if
  919. 35:06there is something or any service that
  920. 35:08is related to this any documents as well
  921. 35:11that would be popping up here and you
  922. 35:12can actually go ahead and direct or
  923. 35:14redirect yourself to those services from
  924. 35:16this mode as well. So, yep. This is
  925. 35:19pretty much the interface, guys. The
  926. 35:20portal which I wanted you people to see,
  927. 35:23but let's not keep it this basic for
  928. 35:25now. What I'm going to do is I'm going
  929. 35:27to go ahead and create something. So, if
  930. 35:29I click on this create option, it gives
  931. 35:31me an option of the stuff. I mean, I can
  932. 35:34choose say for example for now it says
  933. 35:36Windows Server VM, which means that it
  934. 35:39would launch a virtual machine guys
  935. 35:40which is Windows Server 2016 VM. Now let
  936. 35:44me tell you what a VM is for people who
  937. 35:46are completely new. This might be basic
  938. 35:48for people who have some experience of
  939. 35:50cloud computing and they might wonder as
  940. 35:52in why am I talking about these small
  941. 35:54little things but probably we have
  942. 35:55people around who are completely new. So
  943. 35:57for them I might get into the details of
  944. 35:59certain basic topics as well. So when
  945. 36:01you talk about a virtual machine what we
  946. 36:03do is suppose I am running a particular
  947. 36:05application and it is supported by a
  948. 36:07particular operating system say Windows
  949. 36:09in this case. So I want my architecture
  950. 36:12to support that particular operating
  951. 36:14system. Right? But when you talk about
  952. 36:16larger applications, you might not
  953. 36:17always work on a particular environment.
  954. 36:19Your environment might change. So what
  955. 36:22cloud computing does is it readily lets
  956. 36:24you launch these virtual machines that
  957. 36:26can deal with different environments.
  958. 36:28And yet all these virtual machines can
  959. 36:30be under one network and they can stay
  960. 36:32connected under one VPC or one virtual
  961. 36:34network basically. So yes, you can run
  962. 36:37multiple environments. You can have
  963. 36:38multiple applications running on
  964. 36:39different platforms and stuff like that.
  965. 36:41So this is one service that lets you do
  966. 36:43that. That is virtual machines offered
  967. 36:46by Microsoft Azure. And you have
  968. 36:48something called as web app which lets
  969. 36:49you launch web applications. It is more
  970. 36:52platform as a service kind of an
  971. 36:53application. So what is a platform as a
  972. 36:57service application? Here a complete
  973. 36:59platform is provided to you by a vendor.
  974. 37:01You just enter in certain details and it
  975. 37:03does everything for you. It launches
  976. 37:05virtual machines. I talked about having
  977. 37:07different environments, right? So when
  978. 37:09you click on a virtual machine and
  979. 37:11create one using Microsoft Azure, you
  980. 37:13have to specify details like the
  981. 37:15security group, IM users, what network
  982. 37:18it lies under and then you have to go
  983. 37:20ahead and manually install softwares,
  984. 37:22run your applications on top of it. But
  985. 37:24when you use something as platform as a
  986. 37:27service, what it does is it launches all
  987. 37:29this platform already. So your VM
  988. 37:32basically which I talked about is your
  989. 37:34infrastructure as a service where just
  990. 37:35the infrastructure is given to you and
  991. 37:37on top of it you do everything but in
  992. 37:39pass your vendor does everything for
  993. 37:42you. They launch this instance in the
  994. 37:44background. All the services that I
  995. 37:46mentioned as in assigning security
  996. 37:47groups security IM users assigning it in
  997. 37:51network all these things are taken care
  998. 37:52by your vendor. Even the platform that
  999. 37:54you choose that is set up by your
  1000. 37:56vendor. All you do is you just put in
  1001. 37:58your data there. So this is platform as
  1002. 38:01a service. So when you talk about
  1003. 38:02Microsoft Azure your web apps basically
  1004. 38:04when you create a web app it is a pass
  1005. 38:06service. All you have to do is just go
  1006. 38:08ahead and enter a name say sample
  1007. 38:12app for me. You have to select the
  1008. 38:14subscription for now it is the company's
  1009. 38:16account that I'm using. It would create
  1010. 38:18a resource group on its own as you can
  1011. 38:20see and then all I have to say is
  1012. 38:22create. So it has selected an operating
  1013. 38:24system whether it wants to use a code or
  1014. 38:27a docker image it is up to it right. So
  1015. 38:29it would take care of everything that is
  1016. 38:30happening here guys. My application
  1017. 38:33would be launched right away. As you can
  1018. 38:35see I have been notified already that
  1019. 38:37the deployment is in progress. It might
  1020. 38:39take maybe half a minute or minute and a
  1021. 38:42half maybe for this deployment to
  1022. 38:44complete. I mean all the processes that
  1023. 38:46I talked about those are happening in
  1024. 38:48the background right now. And once those
  1025. 38:50process complete I can actually go ahead
  1026. 38:52and launch my application. So this would
  1027. 38:54be a very basic application guys and as
  1028. 38:57I've already mentioned when you have a
  1029. 38:58dashboard it would ask you do you want
  1030. 39:00to pin your application to the dashboard
  1031. 39:02and if I say yes it would pin it there
  1032. 39:04directly. Let's hope that it happens
  1033. 39:06quicker. See it says pin to the
  1034. 39:08dashboard. I would say yes. And there
  1035. 39:10you go it has been pinned to the
  1036. 39:12dashboard. I can delete it unpin it and
  1037. 39:14do whatever I want to. I can click on it
  1038. 39:16and the application would open for me.
  1039. 39:19So this is what the interface does. It
  1040. 39:20gives me certain options guys. I can
  1041. 39:22check in the activity log what all has
  1042. 39:24happened in this application. If I click
  1043. 39:26on this icon it would give me the
  1044. 39:28information the operations. See this is
  1045. 39:31the operation name that is right sides.
  1046. 39:33So it has return a site
  1047. 39:36access controls who gets to control this
  1048. 39:38application in particular. If you need a
  1049. 39:40quick start guide you can come here.
  1050. 39:41Deployment slots you can take a look at
  1051. 39:43that as well. Application settings you
  1052. 39:45can click on this and you'd be getting
  1053. 39:47all the settings. If you want to make a
  1054. 39:49change to that you can do that as well.
  1055. 39:51the version, what application are you
  1056. 39:53using and stuff like that. Configuration
  1057. 39:55preview, click on this, certain other
  1058. 39:57details would be given. So what
  1059. 39:59framework are you using and stuff like
  1060. 40:00that authentication process guys if you
  1061. 40:03click on this icon
  1062. 40:05it would give me details about that as
  1063. 40:07well. So if I scroll down I come here I
  1064. 40:09have quite a few other things which I
  1065. 40:11can actually look at. So if you are
  1066. 40:12interested in these things you can just
  1067. 40:14come here and explore as in what is
  1068. 40:16happening here. So this is pretty much
  1069. 40:18it. I mean the application has been
  1070. 40:20launched. So if you take a look at it,
  1071. 40:21it would give you details. What is the
  1072. 40:23resource group that you're using? What
  1073. 40:24is the URL? Where is it located? It is
  1074. 40:26located in central US guys. So see I'm
  1075. 40:28based in India right now and I've
  1076. 40:30launched an application at a data center
  1077. 40:32based in USA. So that is what you can
  1078. 40:34do. And if you click on this link, it
  1079. 40:36would tell you that your application is
  1080. 40:38up and ready. So yes, a simple
  1081. 40:40application has been created. So this
  1082. 40:43interface that is Microsoft Azour's
  1083. 40:46portal is fairly easy to use, fairly
  1084. 40:48nice to use and there are quite a few
  1085. 40:50things which you can do. I've talked
  1086. 40:52about certain basic things only there
  1087. 40:54are quite a few things that you can
  1088. 40:55explore. I would suggest that you do go
  1089. 40:57ahead and explore all these resources.
  1090. 40:59As you can see that this has been done.
  1091. 41:01If you want to take a look at some of
  1092. 41:03the services here, you can actually go
  1093. 41:05ahead and say all services and it would
  1094. 41:07give you details about all the services,
  1095. 41:09all the resources. Yes, you click here
  1096. 41:11and you have all the resources that are
  1097. 41:13available to you. You can actually go
  1098. 41:15ahead and modify your search as well.
  1099. 41:16You can decide which resource group you
  1100. 41:18want to view your data into. For now, I
  1101. 41:21have these many resource groups that are
  1102. 41:23there which are running because this is
  1103. 41:25an account that belongs to someone else.
  1104. 41:27So, this is my resource group. I can
  1105. 41:29actually go ahead and select which
  1106. 41:31resource groups I want to use to
  1107. 41:33shortlist this data. Here's the
  1108. 41:35information about all the resources. You
  1109. 41:36can modify them, delete them, work on
  1110. 41:38those and do all the stuff that is
  1111. 41:40required. If you go back to the
  1112. 41:42dashboard, you would be taken here. If
  1113. 41:44you open, you have all the other
  1114. 41:45information again. Diagnosis,
  1115. 41:47application insights. You can install
  1116. 41:48certain plugins that give you all these
  1117. 41:50insights as well. For now, one more
  1118. 41:53thing that you need to know is if there
  1119. 41:54are certain applications that might
  1120. 41:56charge you on the longer run, you'd want
  1121. 41:57to get rid of those resources. Once your
  1122. 41:59usage is done, you can just go ahead and
  1123. 42:01delete those resources as well. Type the
  1124. 42:04name of the app. It says it is sample
  1125. 42:06app for me if I'm not wrong.
  1126. 42:08There you go. You can just go ahead and
  1127. 42:10delete this application and it will
  1128. 42:12delete that application for you guys.
  1129. 42:14It's very simple guys. The application
  1130. 42:15has been deleted as well.
  1131. 42:24What is DevOps?
  1132. 42:26DevOps is basically a combination of two
  1133. 42:28words development and operations. So
  1134. 42:31what do we get when we combine these
  1135. 42:33two? Simply speaking, DevOps is a
  1136. 42:36culture that implements technology in
  1137. 42:38order to promote collaboration between
  1138. 42:40development and operations team to
  1139. 42:42deploy code to production faster in an
  1140. 42:46automated and repeatable way. The goal
  1141. 42:48of DevOps is to increase an
  1142. 42:50organization's speed when it comes to
  1143. 42:52delivering applications and services.
  1144. 42:55Many companies have successfully
  1145. 42:57implemented DevOps to enhance their user
  1146. 42:59experience. Let's take for example
  1147. 43:02Facebook's mobile app which is updated
  1148. 43:04every 2 weeks effectively telling users
  1149. 43:07you can have what you want and you can
  1150. 43:09have it now. Ever wondered how Facebook
  1151. 43:12is able to do this so smoothly? It's the
  1152. 43:14DevOps philosophy that helps Facebook
  1153. 43:17ensure that its apps aren't outdated and
  1154. 43:19that its users get the best experience.
  1155. 43:22Facebook accomplishes this through a
  1156. 43:24code ownership model that makes its
  1157. 43:26developers responsible. That includes
  1158. 43:29testing and supporting through
  1159. 43:31production and delivery for each kernel
  1160. 43:33of code they write and update. It's
  1161. 43:36through policies like this that Facebook
  1162. 43:38has developed a DevOps culture and has
  1163. 43:41successfully accelerated its development
  1164. 43:43life cycle. Industries have started to
  1165. 43:45gear up for the digital transformation
  1166. 43:47by shifting their needs to weeks and
  1167. 43:49months instead of years while
  1168. 43:51maintaining high quality. As a result,
  1169. 43:54we will soon see that DevOps engineers
  1170. 43:57have more access and control of the end
  1171. 43:59user than any other person in the
  1172. 44:01enterprise. So, what are you waiting
  1173. 44:03for? Don't be in the sidelines when that
  1174. 44:05happens. Do master your skills, enroll
  1175. 44:08in Edurea's DevOps certification
  1176. 44:10program, and become a leader. Until next
  1177. 44:12time, happy learning.
  1178. 44:25Why do we need DevOps? The birth of
  1179. 44:28DevOps occurred when there were some
  1180. 44:29drawbacks with the existing software
  1181. 44:31development models for application
  1182. 44:33development. The first model we'll be
  1183. 44:36addressing today is the waterfall model.
  1184. 44:38So the waterfall model is a model of
  1185. 44:40software development which is pretty
  1186. 44:42straightforward and linear. So this
  1187. 44:44model follows a top down approach as you
  1188. 44:46can see in the image. It has various
  1189. 44:48phases starting with requirements
  1190. 44:50gathering and analysis. So the first
  1191. 44:52phase is where you get the requirements
  1192. 44:54from the client for developing an
  1193. 44:56application. So after this you try to
  1194. 44:58analyze these requirements that you've
  1195. 45:00acquired. Next comes the design phase
  1196. 45:03where you prepare a blueprint of the
  1197. 45:04software. So in this phase you think
  1198. 45:07about how the software is actually going
  1199. 45:09to look like. Once the design is ready
  1200. 45:11you proceed further with the
  1201. 45:12implementation phase where you begin
  1202. 45:14with the coding for the application. So
  1203. 45:17here the team of developers work
  1204. 45:19together on various components of the
  1205. 45:21application and once the application is
  1206. 45:23developed it is tested in the
  1207. 45:25verification phase that is the fourth
  1208. 45:27phase. Here there are various tests
  1209. 45:29conducted on the application such as
  1210. 45:31unit testing, integration testing,
  1211. 45:33performance testing etc. After all of
  1212. 45:36these tests on the applications are
  1213. 45:38done, it is finally deployed on the
  1214. 45:40production servers. At last that is the
  1215. 45:42fifth phase is the maintenance phase. So
  1216. 45:45in this phase the application is
  1217. 45:47monitored for performance. So any issues
  1218. 45:49related to the performance of the
  1219. 45:51application are resolved in this phase.
  1220. 45:54But unfortunately this model that is the
  1221. 45:56waterfall model has some major
  1222. 45:58drawbacks. So the first drawback is
  1223. 46:00gathering and documenting your
  1224. 46:01requirements each step of the way can be
  1225. 46:04extremely time consuming. Not to also
  1226. 46:06mention difficult. It is hard to assume
  1227. 46:09things about your product so early into
  1228. 46:11the project and because of the same
  1229. 46:13reason your assumptions might be flawed
  1230. 46:16and different from what the customer
  1231. 46:17expects. The second drawback is that now
  1232. 46:20if the above case is true your customers
  1233. 46:23are basically dissatisfied with your
  1234. 46:25delivered product. Adding changes to the
  1235. 46:28product can be expensive and most of all
  1236. 46:30difficult to implement. So the third
  1237. 46:32drawback is that in general the risk is
  1238. 46:35extremely high with the waterfall
  1239. 46:36approach because the scope for mistakes
  1240. 46:38is extremely high. If things go wrong,
  1241. 46:41fixing them can be hard as you have to
  1242. 46:43go a couple of steps back. The next
  1243. 46:46model is the agile model. So agile is an
  1244. 46:49iterative based software development
  1245. 46:51approach where the software project is
  1246. 46:53broken down into various iterations or
  1247. 46:55sprints. So every iteration has phases
  1248. 46:58like the waterfall model such as
  1249. 47:00requirements gathering, design,
  1250. 47:01development, testing and maintenance.
  1251. 47:03You can see each of these iteration in
  1252. 47:05the image. So each of this iteration
  1253. 47:07generally lasts for about 2 to 8 weeks.
  1254. 47:10So the difference between agile and
  1255. 47:12waterfall model is that you release the
  1256. 47:14application with some high priority
  1257. 47:16features in the first iteration. After
  1258. 47:19its release, the end users or the
  1259. 47:20customers can give you feedback about
  1260. 47:22the performance of the application. So
  1261. 47:24the necessary changes are made to the
  1262. 47:26application along with some new features
  1263. 47:29and once these features are added to
  1264. 47:31this application, it is again released
  1265. 47:33which is in the second iteration. This
  1266. 47:35procedure is repeated until the desired
  1267. 47:37software quality is finally achieved.
  1268. 47:39Now in spite of being used often the
  1269. 47:42agile method has a few disadvantages.
  1270. 47:45The first one is that for the approach
  1271. 47:47to work all the members of the team must
  1272. 47:49be completely dedicated to the project.
  1273. 47:51That is everyone must be involved
  1274. 47:53equally. If you want the whole team to
  1275. 47:55learn and do better on the next run and
  1276. 47:58this is mainly because agile focuses on
  1277. 48:00quick delivery there might be an issue
  1278. 48:02with hitting deadline. The second
  1279. 48:04drawback is that the approach may seem
  1280. 48:05extremely simple but it is hard to
  1281. 48:07execute. So it requires commitment and
  1282. 48:10for everyone to be on the same page
  1283. 48:12ideally in the same physical space. The
  1284. 48:15third drawback is that documentation can
  1285. 48:17sometimes be ignored. Because agile
  1286. 48:20methodology focuses on working software
  1287. 48:22over comprehensive documentation, things
  1288. 48:25might sometimes get lost through each
  1289. 48:26stage and iteration. As a result, the
  1290. 48:29final product can feel different from
  1291. 48:31what it was first planned. So these are
  1292. 48:33the few drawbacks that the agile model
  1293. 48:35or the agile methodology gives us. So in
  1294. 48:38delivering valuable software to
  1295. 48:40customers, development and operation
  1296. 48:42teams are always in conflict with each
  1297. 48:44other. While development wants to
  1298. 48:46deliver its changes to customers
  1299. 48:48quickly, operations want stability,
  1300. 48:51which means not changing the production
  1301. 48:52systems too often. So the gap between
  1302. 48:55the development and operations team
  1303. 48:57occurs on three different levels. The
  1304. 48:59first one is the incentives gap. This is
  1305. 49:02because of different goals of
  1306. 49:03development and operations. The second
  1307. 49:06one is the process gap which is the
  1308. 49:08result from different approaches of
  1309. 49:09development and operations and how to
  1310. 49:12manage changes bring them to production
  1311. 49:14and maintain them there. The third one
  1312. 49:16is the tools gap which results from the
  1313. 49:18fact that development and operations
  1314. 49:19often use their own tools to do their
  1315. 49:21own work and this is resulting from the
  1316. 49:24fact that development and operations
  1317. 49:26often use their own tools to do their
  1318. 49:28work. As a result from all of these
  1319. 49:30reasons, development and operations
  1320. 49:32often act like silos as there are two
  1321. 49:35distinct teams. So the conflict between
  1322. 49:37development and operations is because of
  1323. 49:39two reasons. The first one is need for
  1324. 49:42change. This is because development
  1325. 49:44results in change. That is they're
  1326. 49:46always working on new features, bug
  1327. 49:47fixes, etc. It wants the change to
  1328. 49:50quickly roll out to production. And the
  1329. 49:52second one is fear of change. Once the
  1330. 49:55software is finally delivered, the
  1331. 49:57operations department avoids making
  1332. 49:59changes to the software to ensure
  1333. 50:00stability. This is the major conflict
  1334. 50:03between both of these teams. So this is
  1335. 50:05where DevOps comes into picture. DevOps
  1336. 50:07links software development to
  1337. 50:09operations. I hope that is clear. That
  1338. 50:12is DevOps bridges the gap between agile
  1339. 50:14software development and operations
  1340. 50:16experiences. It is important to know
  1341. 50:19that DevOps is a set of principles to
  1342. 50:21break down silos. Specifically DevOps is
  1343. 50:24all about culture, automation,
  1344. 50:27measurement and sharing. So the first
  1345. 50:29one is culture. So in culture, people
  1346. 50:32and processes comes first. If you don't
  1347. 50:35have a culture, all automation attempts
  1348. 50:37will be fruitless. The relationship is
  1349. 50:39important in culture because its
  1350. 50:41functions include engage early, engage
  1351. 50:43often, destroy silos, be open to
  1352. 50:46options, and stop blaming. And the
  1353. 50:48second one is automation. So once you
  1354. 50:50understand your culture you can simply
  1355. 50:52start with automation right now you can
  1356. 50:54finalize various tools to achieve
  1357. 50:56automation for DevOps that is tools for
  1358. 50:59release management provisioning
  1359. 51:01configuration management systems
  1360. 51:03integration monitoring and control and
  1361. 51:06orchestration becomes extremely
  1362. 51:07important pieces for DevOps. The third
  1363. 51:10is measurement. So if you cannot measure
  1364. 51:13you cannot improve. Makes sense right? A
  1365. 51:15successful DevOps implementation will
  1366. 51:17always measure everything it can as
  1367. 51:19often as it can. Performance metrics,
  1368. 51:22process metrics, people metrics,
  1369. 51:24capacity planning, trend analysis, fault
  1370. 51:27finding, etc. All of these have to
  1371. 51:29always be measured. So the last one is
  1372. 51:32DevOps is about sharing. Sharing is a
  1373. 51:35loop back in the cycle. So creating a
  1374. 51:37culture where people share ideas and
  1375. 51:39problems is extremely critical. So
  1376. 51:41exposing ideas can create great open
  1377. 51:44feedback that in the end it helps to
  1378. 51:46improve, share ideas, share metrics,
  1379. 51:48give DevOps shell access, see what
  1380. 51:51technology can be leveraged etc. So
  1381. 51:53DevOps is all about these four
  1382. 51:56particular features. I hope this is
  1383. 51:58clear. So now let's move on to the next
  1384. 52:00part of today's session that is
  1385. 52:02introduction to DevOps. So finally we
  1386. 52:04will address what is DevOps. DevOps is
  1387. 52:07simply a combination of two words. You
  1388. 52:09can see that one is the software
  1389. 52:11development and the second one is
  1390. 52:12operations. So this allows a single team
  1391. 52:15to handle the entire application life
  1392. 52:18cycle that is from development to
  1393. 52:20testing, deployment and finally
  1394. 52:22operations. So DevOps really helps you
  1395. 52:25to reduce the disconnection between
  1396. 52:26software developers, quality assurance
  1397. 52:29engineers and system administrators.
  1398. 52:31That is it basically promotes
  1399. 52:33collaboration between the development
  1400. 52:35and operations team to deploy code to
  1401. 52:37production faster in an automated and
  1402. 52:40repeatable way. So DevOps basically
  1403. 52:42helps to increase organization speed to
  1404. 52:45deliver applications and services. It
  1405. 52:48also allows organizations to serve their
  1406. 52:50customers better and compete more
  1407. 52:52strongly in the market. It can be also
  1408. 52:55defined in another way that is it is
  1409. 52:57also a sequence of development and IT
  1410. 52:59operations with better communication and
  1411. 53:01collaboration. So in the market it has
  1412. 53:04become one of the most valuable business
  1413. 53:06disciplines for enterprises or
  1414. 53:08organizations. With the help of DevOps
  1415. 53:10the quality and speed of the application
  1416. 53:12delivery has improved to an extremely
  1417. 53:15great extent. Organizations that have
  1418. 53:17adopted DevOps noticed a 22% improvement
  1419. 53:20in software quality and a 17%
  1420. 53:23improvement in application deployment
  1421. 53:25frequency. They have also achieved a 22%
  1422. 53:28hike in customer satisfaction. Overall,
  1423. 53:31a 19% of revenue hikes as a result of
  1424. 53:34the successful DevOps implementation has
  1425. 53:37been achieved. Moving on, DevOps
  1426. 53:40workflow is another important concept.
  1427. 53:42So what is a DevOps workflow? So it
  1428. 53:44basically provides a visual overview of
  1429. 53:46the sequence in which input is provided.
  1430. 53:49Also it tells about which one action is
  1431. 53:52performed and output is generated for an
  1432. 53:54operations process. So basically DevOps
  1433. 53:57workflow allows the ability to separate
  1434. 53:59and arrange the jobs which are top
  1435. 54:01requested by the users. Also this
  1436. 54:04workflow gives the ability to mirror
  1437. 54:06their ideal process in the configuration
  1438. 54:08jobs. Moving on, let's see some of the
  1439. 54:10DevOps principles. So the main
  1440. 54:13principles of DevOps are continuous
  1441. 54:14delivery, automation and fast reaction
  1442. 54:17to the feedback. But there are six other
  1443. 54:20principle that we'll be discussing
  1444. 54:21today. The first one is the end to-end
  1445. 54:23responsibility. So DevOps teams need to
  1446. 54:26provide performance support until they
  1447. 54:28become the end of life. It enhances the
  1448. 54:30responsibility and the quality of the
  1449. 54:32products engineered. The second one is
  1450. 54:35continuous improvement. DevOps culture
  1451. 54:37focuses on continuous improvement to
  1452. 54:39minimize waste. that is it continuously
  1453. 54:42speeds up the growth of the products or
  1454. 54:44the services that has been offered. The
  1455. 54:46third one is automate everything.
  1456. 54:48Automation is an essential part of the
  1457. 54:50DevOps process. We'll be discussing
  1458. 54:52about this later on in this session.
  1459. 54:55This is for the software development and
  1460. 54:57also for the entire infrastructure
  1461. 54:59landscape. The fourth one is
  1462. 55:01customercentric action. So the DevOps
  1463. 55:03team must be customercentric so that
  1464. 55:05they should continuously invest in
  1465. 55:07products and services. The fifth one is
  1466. 55:10monitor and test everything. The DevOps
  1467. 55:12team needs to have robust monitoring and
  1468. 55:15testing procedures. The last one is work
  1469. 55:18as one team. In the DevOps culture role
  1470. 55:20of the designers, developers and testers
  1471. 55:23are already defined. So all they need to
  1472. 55:25do is work as one team with complete
  1473. 55:28collaboration. These principles are
  1474. 55:30achieved through several DevOps
  1475. 55:31practices which include frequent
  1476. 55:33deployments, quality assurance,
  1477. 55:35automation, continuous delivery,
  1478. 55:38validating ideas as early as possible
  1479. 55:40and in team collaboration. Now let's
  1480. 55:43move on to the third topic of today's
  1481. 55:45session. Companies using DevOps.
  1482. 55:48By now you must have figured out that
  1483. 55:49DevOps helps to increase an
  1484. 55:51organization's speed to deliver
  1485. 55:53applications and services. This is
  1486. 55:55exactly why many organizations such as
  1487. 55:58Amazon, Netflix, Etsy, HP, Adobe and
  1488. 56:02many other organizations are adopting
  1489. 56:04DevOps and its practices. We will now
  1490. 56:07discuss how Amazon makes use of DevOps
  1491. 56:09to increase their work efficiency. You
  1492. 56:11must be aware that Amazon is one of the
  1493. 56:13biggest e-commerce companies in the
  1494. 56:15world. But way back in time, the website
  1495. 56:18followed a traditional monolithic
  1496. 56:19architecture. So in this type of
  1497. 56:21architecture all the processes are
  1498. 56:23coupled together and run as a single
  1499. 56:25service. Over time as the code and the
  1500. 56:28source files grew it became hard to
  1501. 56:30scale maintain and upgrade the
  1502. 56:32applications on physical servers. So
  1503. 56:35what did Amazon do? Amazon simply solved
  1504. 56:38the problem of the monolithic
  1505. 56:39architecture by moving from physical
  1506. 56:42servers to cloud-based Amazon web
  1507. 56:44services. You all must have heard of
  1508. 56:46AWS. Currently AWS follows a micros
  1509. 56:49service architecture. In Amazon there
  1510. 56:51basically three types of microservices.
  1511. 56:54They are users, threads and posts.
  1512. 56:56Developers here apply frequent but small
  1513. 56:59changes over their code via version
  1514. 57:01control tools like Git and GitHub.
  1515. 57:03Practices like code deployment help fix
  1516. 57:05bugs and adds new features to improve
  1517. 57:08the underlying software application. AWS
  1518. 57:10code deploy is one such service that
  1519. 57:13keeps track of deployments and
  1520. 57:15simplifies the entire software release
  1521. 57:17process. Amazon also uses Apollo. Apollo
  1522. 57:21is a simple one-click internal
  1523. 57:23deployment tool. So Apollo's job is to
  1524. 57:25deploy a specified set of software
  1525. 57:27across a group of hosts. On the other
  1526. 57:29hand, practices like configuration
  1527. 57:31management and infrastructure escode
  1528. 57:34help to monitor and make changes in the
  1529. 57:36software. It keeps track of the systems
  1530. 57:38performance and resources used by
  1531. 57:40developers. So in this way the testing
  1532. 57:42team can identify problems way before in
  1533. 57:45hand and fix them immediately. So this
  1534. 57:47is how Amazon implement DevOps and its
  1535. 57:50practices. Now let's move on and
  1536. 57:52understand one major concept of DevOps
  1537. 57:54that is the DevOps life cycle. So if
  1538. 57:57you're into DevOps from quite some time
  1539. 57:59now, you must have heard at least one of
  1540. 58:01these DevOps phases that is continuous
  1541. 58:03development, continuous integration,
  1542. 58:05continuous testing, continuous
  1543. 58:07deployment, and continuous monitoring.
  1544. 58:09So all of these phases that I just
  1545. 58:11mentioned make up the DevOps life cycle.
  1546. 58:14As you can see on the screen and as I've
  1547. 58:16already mentioned, all of these phases
  1548. 58:18make up the DevOps life cycle. The first
  1549. 58:21phase is the continuous development
  1550. 58:23phase. So this is the phase that
  1551. 58:24involves planning and coding of the
  1552. 58:26software. So the vision of the project
  1553. 58:28is decided during the planning phase and
  1554. 58:31the developers begin developing the code
  1555. 58:33for the application. There are no DevOps
  1556. 58:35tools that are required for planning but
  1557. 58:37there are a number of tools for
  1558. 58:39maintaining the code. The code can be
  1559. 58:41written in any language but it is mainly
  1560. 58:43maintained by using version control
  1561. 58:45tools. So here maintaining the code is
  1562. 58:48referred to as source code management.
  1563. 58:50So some of the most popular version
  1564. 58:53control tools are git, svn, mercural,
  1565. 58:55CVS etc. Also tools like ant, maven,
  1566. 58:59gradal can be used in this phase for
  1567. 59:01building or packaging the code into an
  1568. 59:03executable file that can eventually be
  1569. 59:06forwarded to any of the next phases. The
  1570. 59:09next phase in the DevOps life cycle is
  1571. 59:11continuous testing. So this is the stage
  1572. 59:13where the develop software is
  1573. 59:15continuously tested for bugs. for
  1574. 59:17continuous testing automation testing
  1575. 59:19tools like Selenium, TestNG, JUnit, etc.
  1576. 59:23are used. So basically the tools that I
  1577. 59:25just mentioned right now allow quality
  1578. 59:28asurances to test multiple code bases
  1579. 59:31thoroughly in parallel to ensure there
  1580. 59:33are no flaws in the functionality. So
  1581. 59:35what automation testing does is it saves
  1582. 59:38a lot of time, effort and labor for
  1583. 59:40executing the test instead of doing this
  1584. 59:43manually. Right? Also in this phase
  1585. 59:45docker containers can be used for
  1586. 59:47simulating the test environment.
  1587. 59:49Selenium here does the automation
  1588. 59:51testing and the reports are generated by
  1589. 59:53testng. So this entire testing phase can
  1590. 59:57be automated with the help of a
  1591. 59:58continuous integration tool called
  1592. 1:00:00genkins. We'll talk about genkins later
  1593. 1:00:02on in this session. So now let me
  1594. 1:00:04explain you this with an example.
  1595. 1:00:07Suppose you've written a selenium code
  1596. 1:00:08in Java to test your application. Now
  1597. 1:00:11what you can do is you can build this
  1598. 1:00:12code using ant or maven and once the
  1599. 1:00:15code is built it is tested for user
  1600. 1:00:17acceptance testing. So this entire
  1601. 1:00:20process can be automated using genkins.
  1602. 1:00:22Besides that the report generation is a
  1603. 1:00:25very big plus point. The task of
  1604. 1:00:27evaluating the test cases that failed in
  1605. 1:00:29a test suite gets simpler. We can also
  1606. 1:00:32schedule the execution of test cases at
  1607. 1:00:34predefined times. Once the entire
  1608. 1:00:36testing is done, the code is
  1609. 1:00:38continuously integrated with the
  1610. 1:00:39existing code. The third phase of this
  1611. 1:00:42life cycle is continuous integration. So
  1612. 1:00:45now this stage is the heart of the
  1613. 1:00:47entire DevOps life cycle. It is a
  1614. 1:00:49software development practice in which
  1615. 1:00:51the developers require to commit changes
  1616. 1:00:54to the source code more frequently. This
  1617. 1:00:56may be on a daily or a weekly basis. So
  1618. 1:00:59every commit is then built and this
  1619. 1:01:01allows early detection of problems if
  1620. 1:01:03they're present. Building code does not
  1621. 1:01:06involve compilation but it also includes
  1622. 1:01:08code review, unit testing, integration
  1623. 1:01:11testing and packaging. The code that is
  1624. 1:01:13supporting new functionality is
  1625. 1:01:15continuously integrated with the
  1626. 1:01:17existing code. Since there is continuous
  1627. 1:01:20development of software, the updated
  1628. 1:01:22code needs to be integrated continuously
  1629. 1:01:25as well as smoothly with the systems to
  1630. 1:01:27reflect changes to the end users. As
  1631. 1:01:29I've already said in the previous slide,
  1632. 1:01:31Genkins is a very popular tool used in
  1633. 1:01:34this phase. So whenever there is a
  1634. 1:01:36change in the git repository, Genkins
  1635. 1:01:38simply fetches the updated code and it
  1636. 1:01:40prepares a build of that code which is
  1637. 1:01:43in an executable file. So once this
  1638. 1:01:46entire build is performed, it is then
  1639. 1:01:48forwarded to the test server or the
  1640. 1:01:50production server. Now let's move on to
  1641. 1:01:52the fourth phase of the cycle that is
  1642. 1:01:54the continuous deployment phase. So this
  1643. 1:01:56is the stage where the code is deployed
  1644. 1:01:58to the production servers. It is very
  1645. 1:02:01important to ensure that the code is
  1646. 1:02:03correctly deployed on all the servers.
  1647. 1:02:05Now before moving on, let us understand
  1648. 1:02:07a few things about configuration
  1649. 1:02:09management and containerization tools.
  1650. 1:02:11Now these set of tools help in achieving
  1651. 1:02:14continuous deployment. Firstly, I will
  1652. 1:02:16talk about configuration management. It
  1653. 1:02:18is basically the act of establishing and
  1654. 1:02:21maintaining consistency in an
  1655. 1:02:22application's functional requirements
  1656. 1:02:24and performance. So let me put this in
  1657. 1:02:27simple words. It is the act of releasing
  1658. 1:02:29deployments to servers, scheduling
  1659. 1:02:31updates and most importantly keeping the
  1660. 1:02:34configurations consistent across all the
  1661. 1:02:36servers. Since the new code is deployed
  1662. 1:02:39on a continuous basis, configuration
  1663. 1:02:41management tools play an extremely
  1664. 1:02:43important role in executing tasks
  1665. 1:02:45quickly and frequently. Now some popular
  1666. 1:02:47tools that are used here are Puppet,
  1667. 1:02:49Chef, Salt Stack and Anible.
  1668. 1:02:52Containerization tools also play an
  1669. 1:02:54equally important role in the deployment
  1670. 1:02:56stage. Docker is one of the most popular
  1671. 1:02:59tool used for this purpose. Basically,
  1672. 1:03:01these tools help produce consistency
  1673. 1:03:03across development, test, staging and
  1674. 1:03:06production environments. Besides this,
  1675. 1:03:09they also help in scaling up and scaling
  1676. 1:03:12down of instances very swiftly.
  1677. 1:03:14Basically containerization tools help in
  1678. 1:03:17maintaining consistency across the
  1679. 1:03:19environments where the application is
  1680. 1:03:21deployed, developed and tested. Using
  1681. 1:03:24these tools, there is no scope of errors
  1682. 1:03:26or failures in the production
  1683. 1:03:27environment as they package and
  1684. 1:03:29replicate the same dependencies and
  1685. 1:03:31packages used in the development or
  1686. 1:03:34testing or staging environment.
  1687. 1:03:36Basically, it makes your application
  1688. 1:03:38easy to run on different computers. The
  1689. 1:03:41next stage is the continuous monitoring
  1690. 1:03:42stage. This is the last stage in the
  1691. 1:03:44DevOps life cycle. This is a very
  1692. 1:03:47crucial stage where you continuously
  1693. 1:03:49monitor the performance of your
  1694. 1:03:50application. So here vital information
  1695. 1:03:53about the use of the software is
  1696. 1:03:55recorded. This information is processed
  1697. 1:03:58to recognize the proper functionality of
  1698. 1:04:00the application. The system errors such
  1699. 1:04:02as low memory, server not reachable etc
  1700. 1:04:05are resolved in this phase. The root
  1701. 1:04:07cause of any issue is determined in this
  1702. 1:04:10phase. It also maintains security and
  1703. 1:04:12availability of the services also. If
  1704. 1:04:15there are any network issues, they are
  1705. 1:04:18resolved in this phase. That is, it
  1706. 1:04:20helps us automatically fix the problem
  1707. 1:04:22as soon as they're detected. So now this
  1708. 1:04:25practice involves the participation of
  1709. 1:04:27the operations team who will monitor the
  1710. 1:04:30user activity for bugs or any improper
  1711. 1:04:33behavior of the system. Your most
  1712. 1:04:35popular tools used for this phase is
  1713. 1:04:37Splunk, Elk Stack, NGIOS, New Relic and
  1714. 1:04:40Sensu. So what these tools do is they
  1715. 1:04:43help you monitor the application's
  1716. 1:04:45performance and the servers very closely
  1717. 1:04:48and they also eventually enable you to
  1718. 1:04:49check the health of the system
  1719. 1:04:51proactively. Now using these tools, they
  1720. 1:04:54can also improve productivity and
  1721. 1:04:56increase the reliability of the systems
  1722. 1:04:58which in turn reduces IT support costs.
  1723. 1:05:01Any major issues if found are reported
  1724. 1:05:04to the development team so that it can
  1725. 1:05:06be fixed in the continuous development
  1726. 1:05:07phase. This also leads to a faster
  1727. 1:05:10resolution of the problems. These stages
  1728. 1:05:12are carried out on loop continuously
  1729. 1:05:15till you achieve the desired product
  1730. 1:05:16quality. Therefore, almost all of the
  1731. 1:05:19major IT companies have shifted to
  1732. 1:05:21DevOps for building their products.
  1733. 1:05:24Moving on, if you want to become a
  1734. 1:05:26DevOps engineer or be a part of this
  1735. 1:05:28ideology, it is extremely important for
  1736. 1:05:31you to be familiar with some DevOps
  1737. 1:05:33related tools. Today I will be talking
  1738. 1:05:35about seven important DevOps tools. Now
  1739. 1:05:38before we understand the tools DevOps
  1740. 1:05:40engineers use, it is important to
  1741. 1:05:42understand containers. So what are
  1742. 1:05:44containers? Containers allow you to
  1743. 1:05:47package your application and its
  1744. 1:05:48dependencies together into one manifest
  1745. 1:05:51that can be version controlled, allowing
  1746. 1:05:54for easy replication of your application
  1747. 1:05:56across developers on your team and
  1748. 1:05:59machines in your cluster. This is
  1749. 1:06:01exactly why containerbased microservices
  1750. 1:06:04architectures have profoundly changed
  1751. 1:06:06the way development and operation teams
  1752. 1:06:08test and deploy software. Containers
  1753. 1:06:11really help companies modernize by
  1754. 1:06:13making it easier to scale and deploy
  1755. 1:06:16applications. But they have also
  1756. 1:06:18introduced new challenges and complexity
  1757. 1:06:20by creating an entirely new
  1758. 1:06:22infrastructure ecosystem. IT companies
  1759. 1:06:25are now deploying thousands of container
  1760. 1:06:27instances daily and that's a complexity
  1761. 1:06:30of scale they have to manage. How do
  1762. 1:06:32they do it? Here is where Kubernetes
  1763. 1:06:35comes to the rescue. Kubernetes is a
  1764. 1:06:38container management technology
  1765. 1:06:40developed in Google to manage
  1766. 1:06:42containerized applications in different
  1767. 1:06:44kinds of environments like physical,
  1768. 1:06:46virtual, cloud infrastructure etc. So it
  1769. 1:06:49really is just an open-source system
  1770. 1:06:52which helps in creating and managing
  1771. 1:06:54containerization of applications. Its
  1772. 1:06:57container management responsibilities
  1773. 1:06:59include container deployment, scaling
  1774. 1:07:01and descaling of containers and
  1775. 1:07:03container load balancing. It is
  1776. 1:07:05extremely important to remember that
  1777. 1:07:07Kubernetes is not a containerization
  1778. 1:07:10platform. It is a multicontainer
  1779. 1:07:12management solution. Now let's move on
  1780. 1:07:14and discuss some of the features of
  1781. 1:07:16Kubernetes. The first one is automated
  1782. 1:07:18scheduling. So Kubernetes provides an
  1783. 1:07:21advanced scheduleuler to launch
  1784. 1:07:23containers on cluster nodes based on
  1785. 1:07:25their resource requirements and other
  1786. 1:07:27constraints while not sacrificing
  1787. 1:07:29availability. The second feature is
  1788. 1:07:32self-healing capabilities. So,
  1789. 1:07:34Kubernetes allows you to replace and
  1790. 1:07:36reschedu containers when nodes die. It
  1791. 1:07:40also kills containers that do not
  1792. 1:07:41respond to userdefined health checks and
  1793. 1:07:44does not advertise them to clients until
  1794. 1:07:46they are ready to serve. The third
  1795. 1:07:48feature is automated rollouts and roll
  1796. 1:07:51back. So, what Kubernetes does is it
  1797. 1:07:53rolls out changes to the application or
  1798. 1:07:56its configuration while monitoring your
  1799. 1:07:58application health to ensure it does not
  1800. 1:08:01kill all your instances at the same
  1801. 1:08:02time. So if something goes wrong with
  1802. 1:08:05Kubernetes, you can simply roll back the
  1803. 1:08:07change. The fourth feature is horizontal
  1804. 1:08:10scaling and load balancing. Kubernetes
  1805. 1:08:12can scale up and scale down the
  1806. 1:08:14application as per the requirements with
  1807. 1:08:16a simple command using a user interface
  1808. 1:08:19or automatically based on CPU usage. Now
  1809. 1:08:23let us understand the architecture. The
  1810. 1:08:25Kubernetes architecture has two main
  1811. 1:08:28components. The first one is the master
  1812. 1:08:30node. The second one is the worker node.
  1813. 1:08:32So the master node is responsible for
  1814. 1:08:34the management of Kubernetes cluster. It
  1815. 1:08:37is mainly the entry point for all
  1816. 1:08:39administrative tasks. There can always
  1817. 1:08:42be more than one master node in the
  1818. 1:08:44cluster to check for fall tolerance. So
  1819. 1:08:46there are few components in the master
  1820. 1:08:48node that I'd like to discuss. The first
  1821. 1:08:51one is the API server. So here the API
  1822. 1:08:54server is the entry point for all the
  1823. 1:08:56rest commands used to control the
  1824. 1:08:58cluster. The second one is the
  1825. 1:09:00controller manager. It is a damon that
  1826. 1:09:03regulates the Kubernetes cluster and
  1827. 1:09:05manages different non-terminating
  1828. 1:09:07control loops. The third one is the
  1829. 1:09:09scheduleuler. So the scheduleuler
  1830. 1:09:11schedules the task to worker nodes. So
  1831. 1:09:14what it really does is it stores the
  1832. 1:09:15resource usage information for each
  1833. 1:09:18worker node. The fourth one is the etc.
  1834. 1:09:21So the etc is simple distributed
  1835. 1:09:24consistent key value store. So what it
  1836. 1:09:27mainly is used for is to share
  1837. 1:09:29configuration and service discovery. Now
  1838. 1:09:32that we know how the master nodes work,
  1839. 1:09:34let's move on to the worker nodes. So
  1840. 1:09:36these worker nodes contain all the
  1841. 1:09:38necessary services to manage the
  1842. 1:09:40networking between the containers,
  1843. 1:09:42communicate with the master node and
  1844. 1:09:44assign resources to the scheduled
  1845. 1:09:46containers. So the first component that
  1846. 1:09:48I'll be talking about in this worker
  1847. 1:09:50node is the docker container. So docker
  1848. 1:09:53runs on each of the worker nodes and
  1849. 1:09:55runs the configured parts. The second
  1850. 1:09:57one is the cublet. The cubelet gets the
  1851. 1:10:00configuration of a pod from the API
  1852. 1:10:02server and ensures that the describe
  1853. 1:10:05containers are up and running. The third
  1854. 1:10:07one is cube proxy. So cube proxy acts as
  1855. 1:10:11a network proxy and a load balancer for
  1856. 1:10:13a service on a single worker node. The
  1857. 1:10:16fourth one is pods. So a pod is one or
  1858. 1:10:19more containers that logically run
  1859. 1:10:21together on nodes. With this we come to
  1860. 1:10:24the end of the first tool in DevOps
  1861. 1:10:26tool. Let's move on to the second tool
  1862. 1:10:28that is Docker. So what is a Docker?
  1863. 1:10:31Docker is simply a containerization
  1864. 1:10:33platform that packages your application
  1865. 1:10:35and all its dependencies together in the
  1866. 1:10:38form of containers to ensure that your
  1867. 1:10:40application works seamlessly in any
  1868. 1:10:42environment. So each application here
  1869. 1:10:45will run on a separate container and
  1870. 1:10:47will have its own set of libraries and
  1871. 1:10:49dependencies. It must be really
  1872. 1:10:51convenient to move around these
  1873. 1:10:53containers, right?
  1874. 1:10:54So containers also ensures that there is
  1875. 1:10:57a process level isolation meaning each
  1876. 1:11:00application is independent of other
  1877. 1:11:02applications giving developers shity
  1878. 1:11:04that they can build applications that
  1879. 1:11:06will not interfere with one another. Now
  1880. 1:11:09the quality assurance team need not
  1881. 1:11:12install all the dependent software and
  1882. 1:11:14applications to test the code and this
  1883. 1:11:16helps them save lots and lots of time
  1884. 1:11:18and energy. This also ensures that the
  1885. 1:11:21working environment is consistent across
  1886. 1:11:23all the individuals involved in the
  1887. 1:11:26process starting from development to
  1888. 1:11:28deployment. So here the number of
  1889. 1:11:30systems can be scaled up easily and the
  1890. 1:11:32code can be deployed on them
  1891. 1:11:34effortlessly. There are some basic
  1892. 1:11:36concepts of docker you must be aware of
  1893. 1:11:38that is docker file, docker image and
  1894. 1:11:41docker container. So a docker image is
  1895. 1:11:43created by the sequence of commands
  1896. 1:11:45written in a file called docker file.
  1897. 1:11:48When this docker file is executed using
  1898. 1:11:50a docker command, it results into a
  1899. 1:11:52docker image with a name. So finally
  1900. 1:11:54when this image is executed by docker
  1901. 1:11:56run command, it will by itself start
  1902. 1:11:59whatever application or service it must
  1903. 1:12:01start on its execution. So I hope docker
  1904. 1:12:04file, docker images and docker
  1905. 1:12:06containers are clear. We'll understand
  1906. 1:12:08what is docker hub now. So docker hub is
  1907. 1:12:11basically a cloud registry where you can
  1908. 1:12:13find docker images uploaded by different
  1909. 1:12:15communities. Also, you can develop your
  1910. 1:12:18own image and upload on DockerHub. But
  1911. 1:12:20first, you need to create an account to
  1912. 1:12:22Docker Hub. So, let's move on and
  1913. 1:12:24understand what a Docker engine is. So,
  1914. 1:12:27the Docker engine is the heart of the
  1915. 1:12:29system. It is simply the application
  1916. 1:12:31that is installed on your host machine.
  1917. 1:12:34Basically, it works like a client server
  1918. 1:12:36application. It uses a server which is a
  1919. 1:12:38type of a longunning program called a
  1920. 1:12:40Damon process. It also uses a command
  1921. 1:12:43line interface client. And finally, it
  1922. 1:12:46uses an RD API which is used for
  1923. 1:12:49communication between the CLI client and
  1924. 1:12:52docker Damon. As per the image in a
  1925. 1:12:55Linux operating system, there is a
  1926. 1:12:57client which can be accessed from the
  1927. 1:12:59terminal and a host which runs the
  1928. 1:13:01Damon. We build our images and run
  1929. 1:13:03containers by passing commands from the
  1930. 1:13:06CLI client to the Damon. However, in the
  1931. 1:13:09case of Windows or Mac, there is an
  1932. 1:13:11additional toolbox component inside the
  1933. 1:13:13Docker host. So this Docker toolbox is
  1934. 1:13:15an installer to quickly and easily
  1935. 1:13:17install and set up a Docker environment
  1936. 1:13:20on your Windows or your MacBook. So this
  1937. 1:13:22toolbox installs Docker client machine
  1938. 1:13:25compose which is only present in Mac and
  1939. 1:13:27Virtual Box. With this we come to the
  1940. 1:13:30end of Docker. We'll move on to the
  1941. 1:13:32third tool of DevOps tools that is Git.
  1942. 1:13:34So Git is an extremely important tool
  1943. 1:13:36for software developers. It is a free
  1944. 1:13:39open-source distributed version control
  1945. 1:13:41system designed to handle everything
  1946. 1:13:43from small to very large projects with
  1947. 1:13:46speed and efficiency. It was created by
  1948. 1:13:48Lennis Travels in 2005 to develop Linux
  1949. 1:13:52kernel. Git has the functionality,
  1950. 1:13:54performance, security and flexibility
  1951. 1:13:56that most teams and individual
  1952. 1:13:58developers need. It also serves as an
  1953. 1:14:01important distributed version control
  1954. 1:14:03DevOps tool. So, git is primarily used
  1955. 1:14:06to manage your project comprising a set
  1956. 1:14:08of code or text files that may change
  1957. 1:14:10over time. Now, before we go further,
  1958. 1:14:12let us take a step back to learn about
  1959. 1:14:14version control systems and how git came
  1960. 1:14:17into existence. So, version control is
  1961. 1:14:20the management of changes to documents,
  1962. 1:14:22computer programs, large websites and
  1963. 1:14:25other collection of information. There
  1964. 1:14:27are basically two types of version
  1965. 1:14:29control systems. The first one being
  1966. 1:14:31centralized version control system. The
  1967. 1:14:33second one is distributed version
  1968. 1:14:35control system. So git is a distributed
  1969. 1:14:37version control system where every
  1970. 1:14:40contributor that is the user has a local
  1971. 1:14:42copy or clone of the main repository.
  1972. 1:14:45What is a repository? A repository is
  1973. 1:14:47simply a storage space for your project
  1974. 1:14:49files. Here everyone maintains a local
  1975. 1:14:52repository of their own which contains
  1976. 1:14:54all the files and metadata present in
  1977. 1:14:56the main repository. So the local
  1978. 1:14:58repository is usually on the local
  1979. 1:15:00machine of the user. So every programmer
  1980. 1:15:03maintains a local repository which is
  1981. 1:15:05actually the copy or clone of the
  1982. 1:15:07central repository on their hard drive.
  1983. 1:15:09The central repository may be present on
  1984. 1:15:11a web hosting platform like GitHub. They
  1985. 1:15:14can commit and update the local
  1986. 1:15:16repository without any interference.
  1987. 1:15:18They can also update the local
  1988. 1:15:20repositories with new data from the
  1989. 1:15:22central server by an operation called
  1990. 1:15:24pull and affect changes to the main
  1991. 1:15:26repository by an operation called push
  1992. 1:15:29from the local repository. So I hope
  1993. 1:15:31everyone understood how git works. Now
  1994. 1:15:34moving on let us understand the role of
  1995. 1:15:35git in devops. So git plays a very vital
  1996. 1:15:39role when it comes to managing the code
  1997. 1:15:40that the collaborators contribute to the
  1998. 1:15:42shared repository. So this code is then
  1999. 1:15:45extracted for performing continuous
  2000. 1:15:47integration to create a build and test
  2001. 1:15:49it on the test server and eventually
  2002. 1:15:51deploy it to the production. Tools like
  2003. 1:15:54get enable communication between the
  2004. 1:15:56development and the operations team.
  2005. 1:15:58When you're developing a large project
  2006. 1:16:00with a huge number of collaborators, it
  2007. 1:16:02is extremely important to have
  2008. 1:16:04communication between the collaborators
  2009. 1:16:06while making changes within the project.
  2010. 1:16:09Commit messages in git play a very
  2011. 1:16:11important role in communicating among
  2012. 1:16:13the team. The bits and pieces that we
  2013. 1:16:16all deploy lies in the version control
  2014. 1:16:18system like git. To succeed in devops,
  2015. 1:16:21you need to have all of the
  2016. 1:16:22communication in version control. Hence,
  2017. 1:16:25Git plays a very vital role in
  2018. 1:16:27succeeding at DevOps. Now, let's move on
  2019. 1:16:30to the next tool that is Selenium.
  2020. 1:16:32Selenium is one of the most widely used
  2021. 1:16:35open-source web user interface
  2022. 1:16:37automation testing suite. It was
  2023. 1:16:40originally developed by Jason Hoggins in
  2024. 1:16:422004 as an internal tool at Thought
  2025. 1:16:45Works. So, Selenium supports automation
  2026. 1:16:47across different browsers, platforms,
  2027. 1:16:49and programming languages. So this tool
  2028. 1:16:52can be easily deployed on platforms such
  2029. 1:16:54as Windows, Linux, Solaris, and
  2030. 1:16:56Macintosh. Moreover, it supports
  2031. 1:16:58operating systems for mobile
  2032. 1:17:00applications like Windows and Android.
  2033. 1:17:03Selenium supports a wide variety of
  2034. 1:17:04programming languages through the use of
  2035. 1:17:07drivers specific to each language.
  2036. 1:17:09Languages supported by Selenium include
  2037. 1:17:11C, Java, Pearl, PHP, Python, and Ruby.
  2038. 1:17:15Currently, Selenium web driver is the
  2039. 1:17:18most popular with Java and C. Selenium
  2040. 1:17:21test strips can be coded in any of the
  2041. 1:17:23supported programming languages and can
  2042. 1:17:25be run directly in most modern web
  2043. 1:17:27browsers. Browsers supported by Selenium
  2044. 1:17:30include Internet Explorer, Mozilla,
  2045. 1:17:32Firefox, Google Chrome, and Safari. So
  2046. 1:17:35basically, it can be used to automate
  2047. 1:17:37functional tests and can be integrated
  2048. 1:17:39with automation test tools such as
  2049. 1:17:42Maven, Genkins, and Docker to achieve
  2050. 1:17:44continuous testing. It can be also
  2051. 1:17:47integrated with tools such as testng and
  2052. 1:17:50junit for managing test cases and
  2053. 1:17:52generating reports. So now moving on,
  2054. 1:17:55what are the advantages of selenium? Why
  2055. 1:17:57should we choose selenium? Since
  2056. 1:17:59selenium is open-source, there is no
  2057. 1:18:01licensing cost involved which is a major
  2058. 1:18:04advantage over other testing tools.
  2059. 1:18:06There are many other reasons behind
  2060. 1:18:08selenium's ever growing popularity. The
  2061. 1:18:10first one is that test scripts can be
  2062. 1:18:12written in any of the programming
  2063. 1:18:14languages that is Java, Python, C#, PHP,
  2064. 1:18:17Ruby, Pearl, Net etc. Tests can also be
  2065. 1:18:20carried out in any of the operating
  2066. 1:18:22systems that is Windows, Mac or Linux.
  2067. 1:18:24Tests can also be carried out using any
  2068. 1:18:27browser that is Mosella, Firefox,
  2069. 1:18:29Internet Explorer, Google, Chrome,
  2070. 1:18:31Safari, Oprah. We've all discussed this
  2071. 1:18:33in the previous slide. And the last use
  2072. 1:18:35is that it can be integrated with Maven,
  2073. 1:18:38Genkins and Docker to achieve continuous
  2074. 1:18:40testing. So in short, Selenium can be
  2075. 1:18:43used for automated testing. Also because
  2076. 1:18:46it has cross browsers compatibility, it
  2077. 1:18:48is more preferred and it also increases
  2078. 1:18:51test coverage and reduces test execution
  2079. 1:18:54time. Now moving on, let us understand
  2080. 1:18:56an important concept in Selenium that is
  2081. 1:18:58the selenium grid. Selenium grid was
  2082. 1:19:01developed by Patrick Light body and
  2083. 1:19:03initially called it hosted QA. It was
  2084. 1:19:06used in a combination with remote
  2085. 1:19:07control to run tests on remote machines.
  2086. 1:19:10In fact, with grid, multiple test
  2087. 1:19:12scripts can be executed at the same time
  2088. 1:19:14on multiple machines. Parallel execution
  2089. 1:19:17is achieved with the help of hub node
  2090. 1:19:19architecture. One machine will assume
  2091. 1:19:21the role of hub and the others will be
  2092. 1:19:23the nodes. Hub controls the test scripts
  2093. 1:19:26running on various browsers inside
  2094. 1:19:28various operating systems. Test scripts
  2095. 1:19:30being executed on different nodes can be
  2096. 1:19:32written in different programming
  2097. 1:19:34languages. Grid is still in use and
  2098. 1:19:36works with both web driver and remote
  2099. 1:19:39control. So we'll be learning about the
  2100. 1:19:41web driver in the next slide. However,
  2101. 1:19:43maintaining a grid with all required
  2102. 1:19:45browsers and operating systems is a very
  2103. 1:19:47huge challenge. For this, there are
  2104. 1:19:50multiple online platforms that provide
  2105. 1:19:52an online selenium grid that lets you
  2106. 1:19:54access to run your Selenium automation
  2107. 1:19:56scripts. For example, you can use Lambda
  2108. 1:19:58Test. It has more than 2,000 browser
  2109. 1:20:01environments over which you can run your
  2110. 1:20:02test and truly automate cross browser
  2111. 1:20:05testing. Now, let's understand what is
  2112. 1:20:07Selenium Web Driver. Selenium Web Driver
  2113. 1:20:10is a web-based automation testing
  2114. 1:20:12framework that can test web pages
  2115. 1:20:15initiated on various web browsers and
  2116. 1:20:17various operating systems. In fact, you
  2117. 1:20:20also have the freedom to write test
  2118. 1:20:22scripts in different programming
  2119. 1:20:23languages like Java, Pearl, Python, etc.
  2120. 1:20:27It is important to remember that Mozilla
  2121. 1:20:29Firefox is Selenium Web Driver's default
  2122. 1:20:31browser. Now, some benefits of Selenium
  2123. 1:20:34Web Driver are that they support seven
  2124. 1:20:36programming languages. They test on
  2125. 1:20:38various browsers and they work on
  2126. 1:20:40different operating systems. Also, it
  2127. 1:20:42overcomes limitations of Selenium
  2128. 1:20:44version one like file upload, download,
  2129. 1:20:47popups, and dialog barrier. Now, let's
  2130. 1:20:50move on to the next most important tool
  2131. 1:20:52that is genkins. Continuous integration
  2132. 1:20:55is the most important part of DevOps
  2133. 1:20:57that is used to integrate various DevOps
  2134. 1:21:00stages. Genkins is the most popular
  2135. 1:21:03continuous integration tool. It is an
  2136. 1:21:05open-source automation tool written in
  2137. 1:21:07Java with plugins built for continuous
  2138. 1:21:10integration purposes. Genkins is
  2139. 1:21:12basically used to build and test your
  2140. 1:21:15software projects continuously making it
  2141. 1:21:17easier for developers to integrate
  2142. 1:21:19changes to the project and making it
  2143. 1:21:22easier for users to obtain a fresh
  2144. 1:21:24build. It also allows you to
  2145. 1:21:26continuously deliver your software by
  2146. 1:21:28integrating with a large number of
  2147. 1:21:30testing and deployment technologies. So
  2148. 1:21:33basically with Genkins organizations can
  2149. 1:21:36accelerate the software development
  2150. 1:21:38process through automation. Genkins
  2151. 1:21:41integrates development life cycle
  2152. 1:21:42processes of all kinds including build,
  2153. 1:21:46document, test, package, stage, deploy,
  2154. 1:21:50static analysis and much more. So this
  2155. 1:21:53tool also achieves continuous
  2156. 1:21:55integration with the help of plugins.
  2157. 1:21:57Plugins are extremely important. It
  2158. 1:21:59allows the integration of various DevOps
  2159. 1:22:01stages. If you want to integrate a
  2160. 1:22:04particular tool, you need to install
  2161. 1:22:06that particular plug-in for that tool.
  2162. 1:22:08For example, Git, Maven to project,
  2163. 1:22:11Amazon EC2, HTML publisher, etc. There
  2164. 1:22:14are many advantages of Genkins and I
  2165. 1:22:17want to discuss each one of them in
  2166. 1:22:19detail. So, the first one is it is an
  2167. 1:22:21open-source tool with a great community
  2168. 1:22:23support. The second one is it is
  2169. 1:22:26extremely easy to install. The next one
  2170. 1:22:29is it has more than thousand plugins to
  2171. 1:22:31ease your work. Now if a plug-in does
  2172. 1:22:33not exist, you can simply code it and
  2173. 1:22:35share it with the community. The fourth
  2174. 1:22:38advantage is it is free of cost. The
  2175. 1:22:41last one is it is built with Java. Now
  2176. 1:22:43if you have been coding for some time
  2177. 1:22:45now, you must be knowing that Java is
  2178. 1:22:47portable to all the major platforms. So
  2179. 1:22:50this gives an added advantage to
  2180. 1:22:51Genkins. So what makes Genkins different
  2181. 1:22:55from the other continuous integration
  2182. 1:22:57tools? There are two reasons. The first
  2183. 1:22:59one is adoption. The second one is
  2184. 1:23:01plugins. So Genkins is widespread with
  2185. 1:23:04more than 1 lakh 47,000 active
  2186. 1:23:07installations and over 1 million users
  2187. 1:23:09around the world. The adoption of
  2188. 1:23:11Genkins is extremely high. The second
  2189. 1:23:14one is that Genkins is interconnected
  2190. 1:23:16with well over thousand plugins that
  2191. 1:23:18allow it to integrate with most of the
  2192. 1:23:20development, testing and deployment
  2193. 1:23:22tools. So these two features that is
  2194. 1:23:24adoption and plugins make it one of the
  2195. 1:23:27best continuous integration tools
  2196. 1:23:28currently available in the market. Now
  2197. 1:23:31let's move on to the next tool of DevOps
  2198. 1:23:33tools that is Puppet. Today the most
  2199. 1:23:36mature tool for configuration management
  2200. 1:23:38is Puppet. But I know you must be
  2201. 1:23:40wondering why puppet is so popular and
  2202. 1:23:42what makes it unique when compared to
  2203. 1:23:44other configuration management tools.
  2204. 1:23:47Puppet is a configuration management
  2205. 1:23:49tool that is used for deploying,
  2206. 1:23:51configuring and managing servers. So now
  2207. 1:23:54let's understand the functions of
  2208. 1:23:55puppet. So the first one is it helps in
  2209. 1:23:58defining distinct configurations for
  2210. 1:24:00each and every host and it also
  2211. 1:24:03continuously checks and confirms whether
  2212. 1:24:05the required configuration is in place
  2213. 1:24:07and is not altered on the host. The
  2214. 1:24:10second function is dynamic scaling up
  2215. 1:24:12and scaling down your machines. The last
  2216. 1:24:15one is it provides control over all your
  2217. 1:24:18configured machines. So a centralized
  2218. 1:24:20change gets propagated to all
  2219. 1:24:22automatically. Puppet basically uses a
  2220. 1:24:25master slave architecture in which the
  2221. 1:24:27master and slave communicate through a
  2222. 1:24:30secure encrypted channel with the help
  2223. 1:24:32of SSL. Now let's see this architecture
  2224. 1:24:35in detail. So as you can see the diagram
  2225. 1:24:37on the screen. The puppet agent sends
  2226. 1:24:39the facts to the puppet master. Facts
  2227. 1:24:42are basically key value data pair that
  2228. 1:24:44represents some aspect of the slave
  2229. 1:24:46state such as its IP address, uptime,
  2230. 1:24:49operating system or whether it's a
  2231. 1:24:51virtual machine. Puppet master uses the
  2232. 1:24:54facts to compile a catalog that defines
  2233. 1:24:56how the slave should be configured.
  2234. 1:24:59Catalog is a document that describes the
  2235. 1:25:01desired state for each resource that
  2236. 1:25:03puppet master manages on a slave. Puppet
  2237. 1:25:06slave reports back to the master
  2238. 1:25:08indicating that the configuration is
  2239. 1:25:10finally complete which is visible in the
  2240. 1:25:12puppet dashboard. Now with this we come
  2241. 1:25:15to the last tool of DevOps, Nag IOS. Nag
  2242. 1:25:19iOS monitors your entire IT
  2243. 1:25:21infrastructure to ensure systems,
  2244. 1:25:24applications, servers and business
  2245. 1:25:26processes are functioning properly. It
  2246. 1:25:28is an integral to the DevOps life cycle.
  2247. 1:25:31So it is basically used for continuously
  2248. 1:25:33monitoring of systems, applications,
  2249. 1:25:35servers and business processes in a
  2250. 1:25:38DevOps culture. So in the event of a
  2251. 1:25:40failure, Nag iOS can alert technical
  2252. 1:25:43staff of the problem, allowing them to
  2253. 1:25:45begin remediation processes before
  2254. 1:25:47outages affect business processes, end
  2255. 1:25:50users, or customers. With this tool, you
  2256. 1:25:53don't really have to explain why an
  2257. 1:25:54unseen infrastructure outage affects
  2258. 1:25:57your organization's bottom line. Now iOS
  2259. 1:26:00runs on a server, usually as a damon or
  2260. 1:26:02a service. It periodically runs plugins
  2261. 1:26:05residing on the same server. The contact
  2262. 1:26:08hosts or servers on your network or on
  2263. 1:26:10the internet. One can view the status
  2264. 1:26:13information using the web interface. You
  2265. 1:26:15can also receive email or SMS
  2266. 1:26:17notification if something happens. The
  2267. 1:26:20Nag iOS damon behaves like a
  2268. 1:26:22scheduleuler that runs certain scripts
  2269. 1:26:24at certain moments. It stores the
  2270. 1:26:26results of those scripts and will run
  2271. 1:26:28other scripts if these result changes.
  2272. 1:26:31Nag iOS also use plugins. So these are
  2273. 1:26:34compile executables or scripts that can
  2274. 1:26:36be run from a command line to check the
  2275. 1:26:38status or a host or a service. Nag iOS
  2276. 1:26:42also uses the results from the plugins
  2277. 1:26:44to determine the current status of the
  2278. 1:26:46host and services on your network. Nag
  2279. 1:26:49iOS is built on a server or agents
  2280. 1:26:52architecture. Usually on a network a nag
  2281. 1:26:54iios server is running on a host and
  2282. 1:26:57plugins interact with local and all the
  2283. 1:26:59remote hosts that need to be monitored.
  2284. 1:27:02So these plugins will send information
  2285. 1:27:04to the scheduleuler which displays that
  2286. 1:27:06in a graphical user interface. With this
  2287. 1:27:09we come to the end of DevOps tools.
  2288. 1:27:11Let's move on to the next part of the
  2289. 1:27:13session that is DevOps automation.
  2290. 1:27:15Automation is the crucial need for
  2291. 1:27:17DevOps practices and automating
  2292. 1:27:20everything is the fundamental principle
  2293. 1:27:21of DevOps. We discussed this initially
  2294. 1:27:24in the session. Automation kickstarts
  2295. 1:27:26from the code generation on the
  2296. 1:27:28developer machine until the code is
  2297. 1:27:30pushed to the code and after that to
  2298. 1:27:32monitor the application and system in
  2299. 1:27:34the production. Automating
  2300. 1:27:36infrastructure setup and configurations.
  2301. 1:27:39Software deployment is the key highlight
  2302. 1:27:41of DevOps practice. DevOps practice is
  2303. 1:27:45dependent on automation to make
  2304. 1:27:46deliveries over a few hours and make
  2305. 1:27:49frequent deliveries across platforms.
  2306. 1:27:52Automation and DevOps boosts speed,
  2307. 1:27:55consistency, higher accuracy,
  2308. 1:27:57reliability and increases the number of
  2309. 1:28:00deliveries. Automation and DevOps
  2310. 1:28:02encapsulates everything right from the
  2311. 1:28:04building, deploying and monitoring in
  2312. 1:28:07large DevOps team that maintain
  2313. 1:28:08extensive massive IT infrastructure. The
  2314. 1:28:11tools can be classified into six
  2315. 1:28:13categories that is infrastructure
  2316. 1:28:16automation, configuration management,
  2317. 1:28:18deployment automation, performance
  2318. 1:28:21management, log management and
  2319. 1:28:23monitoring. So for infrastructure
  2320. 1:28:25automation, a great example is the
  2321. 1:28:28Amazon web services. Being a cloud
  2322. 1:28:30service, you don't really need to be
  2323. 1:28:32physically present in the data center.
  2324. 1:28:34They're easy to scale on demand and
  2325. 1:28:36there are no upfront hardware costs. It
  2326. 1:28:39can also be configured to provide more
  2327. 1:28:41servers based on traffic automatically.
  2328. 1:28:43For the second one, Chef is a great
  2329. 1:28:45example. Chef is a handy DevOps tool for
  2330. 1:28:48achieving speed, scale, and consistency.
  2331. 1:28:51It can be used to ease up complex tasks
  2332. 1:28:53and perform configuration management.
  2333. 1:28:56With the help of this tool, the DevOps
  2334. 1:28:58team can avoid making changes across
  2335. 1:29:0010,000 servers. Rather, they need to
  2336. 1:29:03make changes in one place which is
  2337. 1:29:05automatically reflected in other
  2338. 1:29:07servers.
  2339. 1:29:08For deployment automation, Genkins is a
  2340. 1:29:11great example. As we have already
  2341. 1:29:13discussed before, it helps facilitate
  2342. 1:29:15continuous integration and testing. It
  2343. 1:29:18integrates project changes more
  2344. 1:29:20efficiently by quickly finding issues as
  2345. 1:29:22soon as builds are deployed. For the
  2346. 1:29:25fourth one that is performance
  2347. 1:29:26management, application dynamic is a
  2348. 1:29:28great example. It offers real-time
  2349. 1:29:31performance monitoring. The data that is
  2350. 1:29:33collected by this tool help developers
  2351. 1:29:35to debug whenever an issue occurs.
  2352. 1:29:38The fifth one that is for log
  2353. 1:29:39management. Splunk is a great example.
  2354. 1:29:42This DevOps tool solves issues such as
  2355. 1:29:44storing, aggregating and analyzing all
  2356. 1:29:47logs in one place. So for the last one
  2357. 1:29:50that is monitoring, Nag iOS is a great
  2358. 1:29:53example. It notifies people when
  2359. 1:29:56infrastructure and related services go
  2360. 1:29:58down. It is a tool for this purpose
  2361. 1:30:00which helps the DevOps team to find and
  2362. 1:30:02correct problems immediately. Okay. Now
  2363. 1:30:05moving on, let's talk about Azure and
  2364. 1:30:08AWS DevOps. Azure DevOps is also known
  2365. 1:30:11as Microsoft Visual Studio Team
  2366. 1:30:14Services. It is basically a set of
  2367. 1:30:16collaborative development tools built
  2368. 1:30:18for the cloud. VSTS was commonly used as
  2369. 1:30:22a standalone term and Azure DevOps is a
  2370. 1:30:25platform which is made up of a few
  2371. 1:30:27different products. Some of the products
  2372. 1:30:29are Azure test plans, Azure boards,
  2373. 1:30:31Azure repos, Azure pipelines, and Azure
  2374. 1:30:34artifacts. So, Azure DevOps is
  2375. 1:30:37everything that needs to turn an idea
  2376. 1:30:39into a working piece of software. You
  2377. 1:30:41can plan a project with Azure tools. The
  2378. 1:30:44Azure pipeline is the continuous
  2379. 1:30:46integration component of Azure DevOps.
  2380. 1:30:49The Azure pipeline is Microsoft's
  2381. 1:30:51cloudnative continuous integration
  2382. 1:30:53server which allows teams to
  2383. 1:30:55continuously build, test and deploy all
  2384. 1:30:57from the cloud. An Azure pipeline can
  2385. 1:31:00connect to any number of source code
  2386. 1:31:02repositories such as Azure repos, GitHub
  2387. 1:31:05tests to grab code and artifacts for
  2388. 1:31:08application delivery. Now let me talk
  2389. 1:31:10about Azure DevOps server. So this
  2390. 1:31:13server is a Microsoft product that
  2391. 1:31:14provides version control, requirements
  2392. 1:31:17management, reporting, lab management
  2393. 1:31:19and other release management
  2394. 1:31:21capabilities. It basically covers the
  2395. 1:31:23entire application of life cycle and
  2396. 1:31:26enables DevOps capabilities.
  2397. 1:31:28Azure DevOps can be used as a backend to
  2398. 1:31:31the numerous integrated development
  2399. 1:31:33environments, but it is modified for
  2400. 1:31:35Microsoft Visual Studio and Eclipse on
  2401. 1:31:38all platforms.
  2402. 1:31:40Now that we discussed Azure DevOps
  2403. 1:31:42server, let me talk about Azure DevOps
  2404. 1:31:44services. So Microsoft announced the
  2405. 1:31:47release of the software as a service
  2406. 1:31:49offering of Visual Studio on the
  2407. 1:31:51Microsoft Azure platform. At the time,
  2408. 1:31:53Microsoft called it as a Visual Studio
  2409. 1:31:55online. Microsoft offers Visual Studio
  2410. 1:31:59basic and stakeholder subscriber access
  2411. 1:32:01levels for the Ashure DevOps services.
  2412. 1:32:04Now let's learn about AWS DevOps. AWS
  2413. 1:32:07that is Amazon Web Services is the best
  2414. 1:32:10cloud service provider and DevOps is the
  2415. 1:32:12implementation of the software
  2416. 1:32:14development life cycle. Here are some
  2417. 1:32:16reasons which makes AWS DevOps a very
  2418. 1:32:19highly popular combination such as AWS
  2419. 1:32:22cloud formation, AWS EC2, AWS cloudatch
  2420. 1:32:26and AWS pipeline. So let me talk about
  2421. 1:32:29AWS cloud formation. Here the DevOps
  2422. 1:32:31team is required to create and release
  2423. 1:32:33cloud instances and services more
  2424. 1:32:35frequently in comparison to development
  2425. 1:32:38teams. Templates of AWS resources such
  2426. 1:32:41as EC2 instances, ECS containers and S3
  2427. 1:32:45storage buckets lets you set up the
  2428. 1:32:48entire stack without having to bring
  2429. 1:32:50together everything. So in the AWS EC2
  2430. 1:32:53you can run containers inside EC2
  2431. 1:32:55instances. Hence you can leverage the
  2432. 1:32:58AWS security and management features.
  2433. 1:33:01The third one that is AWS cloudatch. So
  2434. 1:33:03the AWS cloudatch is a monitoring tool
  2435. 1:33:06that tracks every resource that AWS has
  2436. 1:33:09to offer. That is it makes it easy to
  2437. 1:33:11use third party tools for monitoring
  2438. 1:33:13such as sumo logic etc. The fourth one
  2439. 1:33:16that is AWS code pipeline is an
  2440. 1:33:18essential feature from AWS which highly
  2441. 1:33:22simplifies the way you manage your
  2442. 1:33:23continuous integration and continuous
  2443. 1:33:25deployment tools. It basically
  2444. 1:33:27integrates with tools such as genkins,
  2445. 1:33:29GitHub and code deploy that enable you
  2446. 1:33:32to visually control the flow of
  2447. 1:33:33application updates from build to
  2448. 1:33:35production. With this we've reached the
  2449. 1:33:38last topic of today's session. DevOps
  2450. 1:33:40certification. DevOps training
  2451. 1:33:42certification helps anyone to make a
  2452. 1:33:44career as a DevOps engineer. So the
  2453. 1:33:47DevOps certifications are available from
  2454. 1:33:49Red Hat, Amazon Web Services, DevOps
  2455. 1:33:52Institution, Microsoft Academy, and
  2456. 1:33:54Edureka.
  2457. 1:33:56Edureka's DevOps certification training
  2458. 1:33:58program will provide you with an
  2459. 1:34:00in-depth knowledge of various DevOps
  2460. 1:34:02tools including Git, Genkins, Docker,
  2461. 1:34:05Puppet, Kubernetes, etc. This training
  2462. 1:34:08is completely hands-on and designed in a
  2463. 1:34:10way to help you become a certified
  2464. 1:34:12practitioner through best practices in
  2465. 1:34:14continuous development, continuous
  2466. 1:34:16testing, configuration management,
  2467. 1:34:19continuous integration, and finally
  2468. 1:34:21continuous monitoring of software
  2469. 1:34:23throughout its development life cycle.
  2470. 1:34:32Let's start out with what's version
  2471. 1:34:35control. So to understand what is
  2472. 1:34:37version control system, we need to
  2473. 1:34:39understand first why we need a version
  2474. 1:34:41control system. So we'll see why do we
  2475. 1:34:43exactly need a version control system.
  2476. 1:34:45So for that let's take a scenario where
  2477. 1:34:48there are three developers working
  2478. 1:34:50remotely on a web application or a
  2479. 1:34:52mobile application. Now for simplicity
  2480. 1:34:55sake let's just assume that it is a
  2481. 1:34:58streaming application and one of them is
  2482. 1:35:01working on a streaming page. Let's call
  2483. 1:35:04them developer one. Developer two is
  2484. 1:35:06working on a user information page and
  2485. 1:35:10developer 3 is creating the payment
  2486. 1:35:12portal. Now all three of them are done
  2487. 1:35:15with their respective pages at 10:00,
  2488. 1:35:1811:00 and 12:00 respectively. Now the
  2489. 1:35:21thing is all three developers are
  2490. 1:35:23working in isolation. There may be their
  2491. 1:35:26own changes. There may be changes in
  2492. 1:35:29somebody's else's page. They're all kind
  2493. 1:35:32of adding some new files or modifying
  2494. 1:35:35older files, changing the source code or
  2495. 1:35:38something like that throughout the
  2496. 1:35:39course of this project. But how exactly
  2497. 1:35:42are they going to collaborate
  2498. 1:35:44considering that they are working
  2499. 1:35:46remotely? The solution to this is a
  2500. 1:35:48version control system. With this
  2501. 1:35:50system, I'll tell you what happens. At
  2502. 1:35:5310:00, developer 1 uploads all the files
  2503. 1:35:56regarding the streaming page. With a
  2504. 1:35:59version control system, this
  2505. 1:36:01modification is recorded and updated to
  2506. 1:36:04one central directory or folder. So
  2507. 1:36:07every time you're modifying an older
  2508. 1:36:10file or adding a new file, it creates a
  2509. 1:36:13snapshot of the latest version or the
  2510. 1:36:16latest update of the changes that you've
  2511. 1:36:19made or all the files that you've
  2512. 1:36:20uploaded. So the snapshot of your update
  2513. 1:36:24at 10:00 is saved. And then when
  2514. 1:36:27developer 2 adds their user info page,
  2515. 1:36:32this modification is also saved as a
  2516. 1:36:34snapshot. Now there are two snapshots
  2517. 1:36:36saved. And finally, the payment portal
  2518. 1:36:39page is added. And this is the last
  2519. 1:36:41modification done at 12:00 and this is
  2520. 1:36:44the most recent snapshot saved along
  2521. 1:36:47with other snapshots of other updates
  2522. 1:36:49and modifications done throughout the
  2523. 1:36:52course of this project. Every change in
  2524. 1:36:54your project, a snapshot is created and
  2525. 1:36:56your entire project is saved that way.
  2526. 1:36:59And these snapshots are actually known
  2527. 1:37:02as different versions, which are
  2528. 1:37:04basically the state of your project at a
  2529. 1:37:07particular time or at the current time.
  2530. 1:37:10It means that it'll contain the kind of
  2531. 1:37:12files your project is storing at one
  2532. 1:37:14particular time and what kind of changes
  2533. 1:37:17you have made so far between the
  2534. 1:37:20previous version and this particular
  2535. 1:37:22version. And this is exactly how a
  2536. 1:37:24version control system works. So version
  2537. 1:37:27control system basically is a system
  2538. 1:37:29that records changes to a file or a set
  2539. 1:37:32of files over time so that you can
  2540. 1:37:35record specific versions later. These
  2541. 1:37:37versions are recorded in a repository
  2542. 1:37:40and they can be recalled any time from
  2543. 1:37:42these repositories during the course of
  2544. 1:37:44your project. So version control system
  2545. 1:37:47essentially are of three types. Now the
  2546. 1:37:50local version control system is one of
  2547. 1:37:52the simplest forms of VCS and has a
  2548. 1:37:55database that keeps all the changes of
  2549. 1:37:58the files under revision control. So all
  2550. 1:38:01the files are saved by this one user and
  2551. 1:38:05they manage all of the files. But it's
  2552. 1:38:08actually really hard to maintain the
  2553. 1:38:10changes of the file and you can
  2554. 1:38:11accidentally replace one or the other
  2555. 1:38:13file that you need. It also needs
  2556. 1:38:15something known as RCS or revision
  2557. 1:38:18control system which keeps patch sets or
  2558. 1:38:21the differences between updates in a
  2559. 1:38:24special format on your disk. All of this
  2560. 1:38:27your local version control systems
  2561. 1:38:29maintains all the track of all the files
  2562. 1:38:31within your local system. As a user, you
  2563. 1:38:33can track specifically uh versions later
  2564. 1:38:36and it basically works as an independent
  2565. 1:38:38standalone system for an application. So
  2566. 1:38:41your applications like spreadsheets and
  2567. 1:38:43word processors have this control
  2568. 1:38:45mechanism. So that's one type. Apart
  2569. 1:38:49from this, you also have your
  2570. 1:38:50centralized version control system which
  2571. 1:38:53basically uses a central server to store
  2572. 1:38:56all the files and enables team
  2573. 1:38:58collaboration. So it's not one local
  2574. 1:39:01system but multiple systems which work
  2575. 1:39:04on a single repository to which users
  2576. 1:39:07can directly access as a central server.
  2577. 1:39:10So the repository is a central server
  2578. 1:39:13that could be local or remote which is
  2579. 1:39:16directly connected to each of the
  2580. 1:39:18programmer's workstation. And the third
  2581. 1:39:20kind of VCS is a distributed version
  2582. 1:39:23control system. Now these systems do not
  2583. 1:39:26necessarily rely on a central server to
  2584. 1:39:29store all the versions of a project
  2585. 1:39:30file. In a distributed version control
  2586. 1:39:33system, every contributor has a local
  2587. 1:39:35copy or a clone of the main repository.
  2588. 1:39:38So everyone maintains their own local
  2589. 1:39:40repository which contains all the files
  2590. 1:39:42and the metadata present in the main
  2591. 1:39:44repository and they can push or commit
  2592. 1:39:47or update the main repository if and
  2593. 1:39:51when required. Now we are going to cover
  2594. 1:39:53more on the latter two version control
  2595. 1:39:57systems further in the session. So now
  2596. 1:40:00let's try and understand in depth what's
  2597. 1:40:03the difference between a centralized
  2598. 1:40:04version control system and a distributed
  2599. 1:40:07version control system. As I had
  2600. 1:40:09mentioned before in a centralized
  2601. 1:40:10version control system each programmer
  2602. 1:40:13working on a branch on a project has
  2603. 1:40:16absolute access to the central server.
  2604. 1:40:19So the centralized version control
  2605. 1:40:21system uses a central server to store
  2606. 1:40:23all the files and everybody on the team
  2607. 1:40:26can directly access the central server
  2608. 1:40:28as it is one single repository. So if
  2609. 1:40:31you have three workstations, workstation
  2610. 1:40:33one, workstation 2, workstation 3, all
  2611. 1:40:36of them can directly commit to the
  2612. 1:40:38repository and get updates from the
  2613. 1:40:41repository which is your central server.
  2614. 1:40:43The repository here indicates a server
  2615. 1:40:47that could be local or remote directly
  2616. 1:40:50connected to each programmer's
  2617. 1:40:52workstation. Every programmer can
  2618. 1:40:54extract or update their workstations
  2619. 1:40:58with the data present in the repository
  2620. 1:41:00or can make changes or updates or commit
  2621. 1:41:03in the repository and every operation is
  2622. 1:41:06performed directly on this repository.
  2623. 1:41:09Even though this seems pretty convenient
  2624. 1:41:11when we are just talking about three
  2625. 1:41:13people to maintain a single repository
  2626. 1:41:15like this has some major drawbacks. One
  2627. 1:41:18of them is that it's not locally
  2628. 1:41:20available. Meaning every change that you
  2629. 1:41:22have to make you will have to be
  2630. 1:41:24connected to a network to perform any
  2631. 1:41:26action. Also in any case the central
  2632. 1:41:29server getting crashed or corrupted will
  2633. 1:41:32result in losing the entire data of the
  2634. 1:41:35project. Also another small thing which
  2635. 1:41:38is revertible but is if one person
  2636. 1:41:41accidentally makes some unwanted updates
  2637. 1:41:45instead of his or her local system they
  2638. 1:41:47will be making that changes directly in
  2639. 1:41:49the central server. So recovering that
  2640. 1:41:52part back will be again a timeconuming
  2641. 1:41:55process. This is where distributed
  2642. 1:41:57version control systems come to the
  2643. 1:41:59rescue. Now these systems do not
  2644. 1:42:01necessarily rely on a central server to
  2645. 1:42:05store all the versions of a project
  2646. 1:42:07file. In the distributed version control
  2647. 1:42:09system, each and every contributor has a
  2648. 1:42:12local copy or a local workstation clone
  2649. 1:42:15of the main repository. That is
  2650. 1:42:17everybody maintains a local repository
  2651. 1:42:19of their own which contains all the
  2652. 1:42:21files and metadata present in the main
  2653. 1:42:23repository. You will understand it
  2654. 1:42:25better if you take a look at the
  2655. 1:42:27diagram. As you can see, every
  2656. 1:42:29programmer maintains a local repository
  2657. 1:42:32or a local copy on its own, which is
  2658. 1:42:35actually the copy or clone of the
  2659. 1:42:36central repository on their local hard
  2660. 1:42:39drive. They can commit and update their
  2661. 1:42:42local repository without any
  2662. 1:42:44interference from one another and then
  2663. 1:42:46they can update their local repositories
  2664. 1:42:48with new data from the central server by
  2665. 1:42:51an operation called pull. Once they are
  2666. 1:42:54done with their bit of the code, they
  2667. 1:42:55can affect the changes of the main
  2668. 1:42:58repository by an operation called push
  2669. 1:43:00from their local repository.
  2670. 1:43:03Now, this system or this act of cloning
  2671. 1:43:06an entire repository to your workstation
  2672. 1:43:08and making all the changes on a local
  2673. 1:43:10repository gives you a couple of
  2674. 1:43:12advantages over a centralized version
  2675. 1:43:14control system. First of all, all the
  2676. 1:43:17operations except push and pull are very
  2677. 1:43:19fast because the tool only needs access
  2678. 1:43:22to the hard drive and not a remote
  2679. 1:43:24server. Hence, you do not always need to
  2680. 1:43:27be connected via a network connection or
  2681. 1:43:30you always do not need an internet
  2682. 1:43:31connection. Committing new change sets
  2683. 1:43:34can be done locally without manipulating
  2684. 1:43:37the data on the main repository. Once
  2685. 1:43:40you have a group of change sets ready,
  2686. 1:43:42you can push them all at once. So you
  2687. 1:43:45complete your set of code on your local
  2688. 1:43:48system and then you push all the files
  2689. 1:43:50once and for all into the main
  2690. 1:43:52repository. Third, since every
  2691. 1:43:55contributor has a full copy of the
  2692. 1:43:57project repository, they can share
  2693. 1:43:59changes with one another on wanting to
  2694. 1:44:01get some feedback before affecting the
  2695. 1:44:03changes in the main repository. So this
  2696. 1:44:06enhances the essence of collaboration
  2697. 1:44:09amongst a development team. And finally,
  2698. 1:44:12if the server gets crashed at any point
  2699. 1:44:14in time, the lost data can be easily
  2700. 1:44:16recovered from one of the contributors
  2701. 1:44:18local repository. And that is why
  2702. 1:44:21distributed version control system has
  2703. 1:44:23been picking up popularity over the past
  2704. 1:44:25decade. So why version control is
  2705. 1:44:28important? First of all, it helps
  2706. 1:44:31collaboration. It allows remote
  2707. 1:44:33development, shared workspace and
  2708. 1:44:36realtime updates. All versions of your
  2709. 1:44:39code are preserved. Hence, it helps you
  2710. 1:44:41manage versions of the same code. Easy
  2711. 1:44:44roll back from current version. Suppose
  2712. 1:44:47a part of your project has been headed
  2713. 1:44:49to a wrong direction, you can easily
  2714. 1:44:52roll back from the current version to
  2715. 1:44:55the last version which was stable. Now,
  2716. 1:44:58because you can reverse faulty updates,
  2717. 1:45:01you can save time and hence it reduces
  2718. 1:45:03downtime of your project development.
  2719. 1:45:06And finally, it improves visibility. You
  2720. 1:45:09can analyze and compare different
  2721. 1:45:11versions and that gives you like a 50-ft
  2722. 1:45:14top view of your entire project which
  2723. 1:45:17just accelerates your product delivery.
  2724. 1:45:20So now that you have a bare sense of
  2725. 1:45:23what is version control and why do you
  2726. 1:45:25need version control, let's understand
  2727. 1:45:28one of the most popular version control
  2728. 1:45:31systems that exists today and that is
  2729. 1:45:34git. So, Git is a distributed version
  2730. 1:45:37control tool that supports distributed
  2731. 1:45:40nonlinear workflows by providing data
  2732. 1:45:44assurance from developing quality
  2733. 1:45:46software. So, basically what it does is
  2734. 1:45:49that it lets you and your team of
  2735. 1:45:50developers work together on the same
  2736. 1:45:52project remotely from anywhere across
  2737. 1:45:55the world. Your team members can work
  2738. 1:45:57efficiently on files and easily merge
  2739. 1:46:00their changes into one source without
  2740. 1:46:02the fear of losing or deleting anything
  2741. 1:46:06of importance due to the easy roll back
  2742. 1:46:09feature. Git is primarily used to manage
  2743. 1:46:12your project comprising of a set of code
  2744. 1:46:15or text files that you may want to
  2745. 1:46:17change from time to time. Now, Git is an
  2746. 1:46:20integral part of DevOps. DevOps as most
  2747. 1:46:23of you might have the idea of is the
  2748. 1:46:26practice of bringing agility to the
  2749. 1:46:28process of development and operations. A
  2750. 1:46:30couple years ago, it was this entirely
  2751. 1:46:32revolutionary ideology which swept IT
  2752. 1:46:35organizations worldwide, boosting
  2753. 1:46:38project life cycles and in turn
  2754. 1:46:40increasing profits. DevOps promoted
  2755. 1:46:43communication between development
  2756. 1:46:45engineers and operations participating
  2757. 1:46:47together in the entire life cycle from
  2758. 1:46:50design through development process to
  2759. 1:46:52production support. Now in the entire
  2760. 1:46:55life cycle of DevOps starting from
  2761. 1:46:57planning of the projects to its
  2762. 1:46:59deployment and monitoring git plays a
  2763. 1:47:02vital role when it comes to managing the
  2764. 1:47:04code that collaborators contribute to
  2765. 1:47:06the shared repository. This code is
  2766. 1:47:09extracted for performing continuous
  2767. 1:47:11integration to create a build and test
  2768. 1:47:14it on the test server and eventually
  2769. 1:47:16deploy it to production. Tools like git
  2770. 1:47:19enable communication between the
  2771. 1:47:21development and operations team. When
  2772. 1:47:24you are developing a large project with
  2773. 1:47:26a huge number of collaborators, it is
  2774. 1:47:28extremely important to have
  2775. 1:47:30communication between the collaborators
  2776. 1:47:32between the developers while making
  2777. 1:47:34changes in the project. Comet messages
  2778. 1:47:37in git play a very important role in
  2779. 1:47:40this particular collaboration or
  2780. 1:47:41communication amongst the team. The bits
  2781. 1:47:44and pieces that we deploy or update lies
  2782. 1:47:47in this version control system such as
  2783. 1:47:49git. To succeed in DevOps, you need to
  2784. 1:47:51have all the communication in version
  2785. 1:47:54control. Hence, git plays an extremely
  2786. 1:47:57vital role in succeeding at DevOps. And
  2787. 1:48:00due to this very reason, git has earned
  2788. 1:48:02way more popularity compared to other
  2789. 1:48:05version control tools available in the
  2790. 1:48:07market such as Apachi subversion,
  2791. 1:48:09concurrent version systems and
  2792. 1:48:10mercurial. If you compare the interest
  2793. 1:48:13of git by time with other version
  2794. 1:48:15control systems, you shall realize that
  2795. 1:48:18larger companies products are generally
  2796. 1:48:20developed by developers using git all
  2797. 1:48:23around the globe. And some famous names
  2798. 1:48:25out of them are Facebook, Yahoo, Zingga,
  2799. 1:48:29Kora, Twitter, eBay, Salesforce,
  2800. 1:48:31Microsoft, and many, many more. Now,
  2801. 1:48:34lately, all of Microsoft's new
  2802. 1:48:36development work has been in Git
  2803. 1:48:39features. Microsoft Migrating.NET and
  2804. 1:48:41many of its open-source projects on
  2805. 1:48:44GitHub, which are managed by Git. One of
  2806. 1:48:47such projects is the light GBM. It's a
  2807. 1:48:49fast distributed high performance
  2808. 1:48:51gradient boosting framework based on the
  2809. 1:48:54decision tree algorithms which is used
  2810. 1:48:56for ranking classification and many
  2811. 1:48:58other machine learning tasks. Here git
  2812. 1:49:01plays an important role in managing this
  2813. 1:49:04distributed version of light GBM by
  2814. 1:49:07providing speed and accuracy. So
  2815. 1:49:10basically to enable version control gate
  2816. 1:49:13is your go-to solution. It's fast and
  2817. 1:49:16suitable for handling massive code bases
  2818. 1:49:18scattered across multiple developers
  2819. 1:49:21which makes it the most popular tool
  2820. 1:49:23used today. Now that you know about Git,
  2821. 1:49:26a terminology we'll be using a lot while
  2822. 1:49:29talking about Git and GitHub is a
  2823. 1:49:31repository. Now repository or a repo as
  2824. 1:49:34it's most commonly known as is a
  2825. 1:49:37directory or a storage space where your
  2826. 1:49:40projects can basically live. It can be
  2827. 1:49:42local to a folder or your computer or it
  2828. 1:49:45can be a storage space in another online
  2829. 1:49:48host such as your GitHub. And in this
  2830. 1:49:50particular space, in this particular
  2831. 1:49:52directory, you can keep your code files,
  2832. 1:49:54text files, images, you name it, all of
  2833. 1:49:57it inside a repository. Through the
  2834. 1:50:00course of this, we shall also be talking
  2835. 1:50:02about something known as GitHub, which
  2836. 1:50:05is nothing but a central repository. The
  2837. 1:50:07kind that we spoke about when we
  2838. 1:50:09discussed centralized versus distributed
  2839. 1:50:13version control systems. There's a
  2840. 1:50:14central repository and that is where all
  2841. 1:50:17of your code will live. You have your
  2842. 1:50:19local repository where you'll make the
  2843. 1:50:21changes and there you have the central
  2844. 1:50:22repository to which you will push all of
  2845. 1:50:24the changes. Yeah. And the central
  2846. 1:50:27repository is something that all of the
  2847. 1:50:29developers involved in this particular
  2848. 1:50:31project in a certain project have access
  2849. 1:50:34to. All right, moving on. Let's discuss
  2850. 1:50:37a few Git features which make it so
  2851. 1:50:39popular amongst organizations as well as
  2852. 1:50:42individuals. First of all, it's
  2853. 1:50:44economical. It's free and open-source.
  2854. 1:50:47Git is released under GPL's general
  2855. 1:50:50public licenses open source license. So
  2856. 1:50:53you don't need to purchase Git. It is
  2857. 1:50:55absolutely free and since it's open
  2858. 1:50:58source you can modify the source code as
  2859. 1:51:00per your requirement. Second is its
  2860. 1:51:03speed. Now since you do not have to
  2861. 1:51:06connect to any network for performing
  2862. 1:51:08all of the operations, it completes all
  2863. 1:51:11the tasks really fast. Performance tests
  2864. 1:51:14done by Mozilla showed it was an order
  2865. 1:51:17of magnitude faster than other version
  2866. 1:51:20control systems. Fetching version
  2867. 1:51:22history from locally stored repository
  2868. 1:51:25can be 100 times faster than fetching it
  2869. 1:51:29from the remote server. So the core part
  2870. 1:51:31of git is written in C which avoids
  2871. 1:51:34runtime overheads associated with other
  2872. 1:51:37highle languages which makes it
  2873. 1:51:40extremely fast compared to other version
  2874. 1:51:42control systems. Next is that git
  2875. 1:51:45supports nonlinear development. It
  2876. 1:51:48supports rapid branching and merging and
  2877. 1:51:51includes specific tools for
  2878. 1:51:52visualization and navigation of a
  2879. 1:51:55nonlinear development history. A core
  2880. 1:51:58assumption in git is that a change will
  2881. 1:52:00be merged more often than it's written
  2882. 1:52:03as it is passed around various
  2883. 1:52:05reviewers. Hence branches in git are
  2884. 1:52:07very very lightweight and is only a
  2885. 1:52:10reference to a single comet. With its
  2886. 1:52:12parental comets the full branch
  2887. 1:52:14structure can be constructed. Next,
  2888. 1:52:17let's talk about the robustness.
  2889. 1:52:20Nearly every single task in Git is
  2890. 1:52:23undoable. Git gives each developer a
  2891. 1:52:26local copy of the entire development
  2892. 1:52:28history and the changes copied from one
  2893. 1:52:31repository to another. These changes are
  2894. 1:52:33imported as additional development
  2895. 1:52:35branches and can be merged and deleted
  2896. 1:52:39and recovered the same way as a locally
  2897. 1:52:42developed branch. Next is the snapshots
  2898. 1:52:46which are recorded changes made to a
  2899. 1:52:48file rather than the file itself
  2900. 1:52:52followed by which you have integrity
  2901. 1:52:54which means no changes can be made
  2902. 1:52:56without git recording it. Since every
  2903. 1:52:59contributor has their own local
  2904. 1:53:01repository on the events of a system
  2905. 1:53:04crash the lost data can be recovered
  2906. 1:53:06from any of the local repositories. You
  2907. 1:53:08will always have a backup of all of your
  2908. 1:53:10files and none of the changes made to
  2909. 1:53:13the central repository will go unlocked
  2910. 1:53:16by git. Git uses the sa1 or the secure
  2911. 1:53:19hash function to name and identify
  2912. 1:53:22objects within its repository and every
  2913. 1:53:24file every comet is check summed and
  2914. 1:53:26retrieved by its check sum at the time
  2915. 1:53:29of the checkout. The git history is
  2916. 1:53:31stored in such a way that the ID of a
  2917. 1:53:34particular version. A comet in git's
  2918. 1:53:36terms depends upon the complete
  2919. 1:53:38development history leading up to that
  2920. 1:53:40comet. Once it's published, it's not
  2921. 1:53:43possible to change the old versions
  2922. 1:53:45without it being recorded. Then it's a
  2923. 1:53:48distributed system which means every
  2924. 1:53:50user has their own copy of the
  2925. 1:53:52repository and the data is stored
  2926. 1:53:54locally. Git gives each developer a
  2927. 1:53:57local copy of the entire development
  2928. 1:53:59history and the changes are copied from
  2929. 1:54:02one such repository to another. These
  2930. 1:54:05changes are imported as additional
  2931. 1:54:07development branches and can be merged
  2932. 1:54:09in the same way as a locally developed
  2933. 1:54:11branch. And finally, it's easy
  2934. 1:54:14branching. Now, branch management with
  2935. 1:54:16Git is very simple. It only takes a few
  2936. 1:54:19seconds to create, delete, and merge
  2937. 1:54:21branches. Feature branches provide an
  2938. 1:54:23isolated environment for each change to
  2939. 1:54:27your codebase. So when a developer wants
  2940. 1:54:29to start working on something, no matter
  2941. 1:54:31how big or small, they can create a
  2942. 1:54:33fresh new branch which is not
  2943. 1:54:35interfering with the main branch which
  2944. 1:54:38ensures that the master branch or the
  2945. 1:54:39main branch always contains production
  2946. 1:54:42quality code. So any little
  2947. 1:54:44experimentation that you want to do or
  2948. 1:54:46little things that you want to try out
  2949. 1:54:48can always be on a separate feature
  2950. 1:54:50branch instead of the changes made to
  2951. 1:54:53your master branch because ultimately
  2952. 1:54:55your master branch should contain your
  2953. 1:54:57publishable product. So now that you
  2954. 1:55:00know the basic features of git, let's
  2955. 1:55:03try and understand what the basic
  2956. 1:55:05workflow of git is or how does git work.
  2957. 1:55:08So the basic overview of how git works
  2958. 1:55:11goes like this. You basically create a
  2959. 1:55:14repository or a project with a git
  2960. 1:55:16hosting tool like Git or Bitbucket. You
  2961. 1:55:20copy or clone the repository to your own
  2962. 1:55:22local machine or your working directory.
  2963. 1:55:25You add a file to your local repository
  2964. 1:55:28and commit the changes which basically
  2965. 1:55:30means you save the changes. Then you
  2966. 1:55:32push the changes to your master branch.
  2967. 1:55:36Then you make changes to your file and
  2968. 1:55:38commit. Then you pull the changes to
  2969. 1:55:41your local machine. You create a branch
  2970. 1:55:44or a version. Make a change, commit the
  2971. 1:55:47change. Same process. Open a pull
  2972. 1:55:49request and merge your branch to the
  2973. 1:55:52master branch. Now, this is a little
  2974. 1:55:54complicated listening to it like this.
  2975. 1:55:56But once we get on to our demonstration,
  2976. 1:55:59I think things will be way more clear.
  2977. 1:56:02You can still take a good look at this
  2978. 1:56:04diagram.
  2979. 1:56:05But if you don't get it, don't worry. I
  2980. 1:56:07will be explaining these operations one
  2981. 1:56:10by one when we get to the demonstration
  2982. 1:56:12part of this Git tutorial. Moving on,
  2983. 1:56:14let's get to the good part, the hands-on
  2984. 1:56:17section. Starting with the installation
  2985. 1:56:20and setup of Git. Now, there are two
  2986. 1:56:23ways in which this goes. First of all,
  2987. 1:56:25for Windows users, you need to install
  2988. 1:56:28Git Bash for Windows. And for Linux
  2989. 1:56:31users, you'll have to start by updating
  2990. 1:56:34the package index and then install git
  2991. 1:56:36using the terminal. So first of all, for
  2992. 1:56:39our learners using Windows, you'll have
  2993. 1:56:42to log on to git sem.com/d
  2994. 1:56:46downloads and then click on downloads
  2995. 1:56:48for Windows button and then run the
  2996. 1:56:51executable file and follow through till
  2997. 1:56:54you finally install git bash. I'm not
  2998. 1:56:57going to install it completely as I
  2999. 1:56:59already have git bash downloaded but I'm
  3000. 1:57:02still going to open the page to show you
  3001. 1:57:05guys. All right. So the latest source
  3002. 1:57:08release is get 2.30.1
  3003. 1:57:12on the 8th of Feb. And you can just
  3004. 1:57:15click on this button. The moment you
  3005. 1:57:17click on this button it's going to start
  3006. 1:57:20downloading it for you. And once you
  3007. 1:57:23have the executable file, all you have
  3008. 1:57:25to do is open it or run it in your own
  3009. 1:57:28system. Right. Next, for people using
  3010. 1:57:33Linux, this is an example considering
  3011. 1:57:36you are using Ubuntu. If you're using
  3012. 1:57:39CentOS, a lot of the commands don't
  3013. 1:57:42change, but instead of apt install, you
  3014. 1:57:45will be using Yum install for CentOS. So
  3015. 1:57:49for that now I'm going to open my
  3016. 1:57:52terminal on a virtual machine. So here I
  3017. 1:57:56have running an Ubuntu machine using the
  3018. 1:57:59Oracle virtual box.
  3019. 1:58:02So I'm going to start by running an
  3020. 1:58:08update.
  3021. 1:58:10All right, this is going to take a
  3022. 1:58:12while. Kindly be patient.
  3023. 1:58:16So here I have my Ubuntu running on a
  3024. 1:58:19virtual machine. So to install git on
  3025. 1:58:22your Ubuntu machine, you have to start
  3026. 1:58:24by updating. So this will take some
  3027. 1:58:28time. If you're going to use pseudo apt
  3028. 1:58:31update. If you're using CentOS, you will
  3029. 1:58:34be using Yum instead of apt.
  3030. 1:58:39Let's clear that out. And
  3031. 1:58:42then we're going to install git
  3032. 1:58:51and then you can look for the git
  3033. 1:58:53version. Yeah. All right. Now that we
  3034. 1:58:56have our git installed, let's go ahead
  3035. 1:59:00and look at the operations and commands
  3036. 1:59:03that we are going to take a look at
  3037. 1:59:05today. You have your repository setup
  3038. 1:59:08which include the commands init, clone,
  3039. 1:59:11config and alias. Then you have your
  3040. 1:59:14save changes operations which have your
  3041. 1:59:17add, commit, diff, and stash. All of
  3042. 1:59:20these commands we going to go on and off
  3043. 1:59:23and um look at collectively mostly. Then
  3044. 1:59:27we going to look at the inspect
  3045. 1:59:29operations. Your inspect repository
  3046. 1:59:31operations of which the get status
  3047. 1:59:34command is something we are also going
  3048. 1:59:36to look at throughout this demonstration
  3049. 1:59:39right from the beginning. So apart from
  3050. 1:59:41that you have your git log get tag and
  3051. 1:59:43get blame commands. So you have your
  3052. 1:59:46merge rebase command. So let's move on
  3053. 1:59:49to our first set of git operations.
  3054. 1:59:52First of all, you have your gin init
  3055. 1:59:54command which basically creates a new
  3056. 1:59:57empty git repository. Now, this can be
  3057. 1:59:59used to convert an existing inversion
  3058. 2:00:02project to a git repository or initiate
  3059. 2:00:05an absolute fresh git repository. Now,
  3060. 2:00:08most other git commands are not
  3061. 2:00:10available outside of the initialized
  3062. 2:00:12repository. So, this is usually the
  3063. 2:00:14first command that you will run in a new
  3064. 2:00:18project. That is if you're using git
  3065. 2:00:20bash. So when I run git in it, it
  3066. 2:00:24reinitializes an existing git repository
  3067. 2:00:27which I already have here. Now what this
  3068. 2:00:29does is it reinitialized my existing git
  3069. 2:00:34repository in this particular directory
  3070. 2:00:37in this.git directory. Yeah. What git
  3071. 2:00:41init does is that it creates an empty
  3072. 2:00:43git repository or reinitializes an
  3073. 2:00:47existing one like it did for me right
  3074. 2:00:49now. It basically creates a doggit
  3075. 2:00:51directory with subdirectories and
  3076. 2:00:54template files. And when you run the git
  3077. 2:00:57init command in an existing repository,
  3078. 2:01:00it will not overwrite the things that
  3079. 2:01:02are already there. It'll rather pick up
  3080. 2:01:05the newly added templates. So that's the
  3081. 2:01:09repository initialized. You can go ahead
  3082. 2:01:12and create some files in the directory
  3083. 2:01:14or repository whatever you call it. Now
  3084. 2:01:16that is about initialization. Now, what
  3085. 2:01:19about if there was an existing
  3086. 2:01:22repository on Git that you had to act
  3087. 2:01:24upon, that you had to make updates to,
  3088. 2:01:26that you had to add files to, things
  3089. 2:01:29like that. That's where you use the git
  3090. 2:01:31clone utility. Yeah. Now, you have the
  3091. 2:01:34git clone utility which you use to
  3092. 2:01:36target an existing repository and create
  3093. 2:01:39a clone or copy of this particular
  3094. 2:01:42repository on your local machine. Now
  3095. 2:01:45this is one of the features provided to
  3096. 2:01:46you by a distributed version control
  3097. 2:01:49system as we had discussed before. So
  3098. 2:01:52this is a blank file called edureka rep
  3099. 2:01:54with just the readme text file. Let me
  3100. 2:01:58just go ahead and copy this.
  3101. 2:02:03And then I can just get clone and paste
  3102. 2:02:08its HTTPS
  3103. 2:02:11URL.
  3104. 2:02:15And as you can see, it's cloning this
  3105. 2:02:18into Edureka rep.
  3106. 2:02:22And now if I change directory
  3107. 2:02:25to edure rep, you can see the readme
  3108. 2:02:29file is right there. Yeah.
  3109. 2:02:34So we're basically going to work off of
  3110. 2:02:38this particular repository today. Edure
  3111. 2:02:41rep. Yeah. So now that we created a
  3112. 2:02:44clone, moving on, we have the git config
  3113. 2:02:48command which basically is a convenience
  3114. 2:02:50function that is used to set up your git
  3115. 2:02:52configuration values on your global or
  3116. 2:02:55local project level. This command is
  3117. 2:02:58basically used to modify your
  3118. 2:02:59configuration text file. So if I typed
  3119. 2:03:03get config
  3120. 2:03:05global user email and here
  3121. 2:03:09I type
  3122. 2:03:14so there I given my email id as the
  3123. 2:03:18global user email id. So if I ask for
  3124. 2:03:21what the global user email id is it will
  3125. 2:03:25return my ID back to me. Yeah.
  3126. 2:03:30Basically these configuration levels
  3127. 2:03:32like your username and your user ID
  3128. 2:03:35correspond to your doggget config text
  3129. 2:03:37files. Now executing this basically will
  3130. 2:03:41help you modify the configuration text
  3131. 2:03:44file. Git uses this series of
  3132. 2:03:46configuration files to determine
  3133. 2:03:48non-default behavior that you may want.
  3134. 2:03:51Yeah. So the first place git looks for
  3135. 2:03:53these values is in the systemwide
  3136. 2:03:57configuration file which contains
  3137. 2:03:59settings that are applied to every user
  3138. 2:04:02on this system. So basically if you pass
  3139. 2:04:04the option to your git config it will
  3140. 2:04:07read and write from this file
  3141. 2:04:09specifically and the next place the git
  3142. 2:04:12looks is the config/git config file
  3143. 2:04:15which is specific to each user. Now you
  3144. 2:04:18can make get read or write to this file
  3145. 2:04:21by passing your global option which is
  3146. 2:04:23what I did.
  3147. 2:04:25And the final command in the setup
  3148. 2:04:28operations that we going to look at is
  3149. 2:04:30an alias. Now alias as the name suggests
  3150. 2:04:33is basically used to create shorter
  3151. 2:04:35commands that map to longer commands.
  3152. 2:04:37They enable more efficient workflows
  3153. 2:04:40when you obviously have to use lesser
  3154. 2:04:43key strokes to execute a command. There
  3155. 2:04:45are these lengthy commands which
  3156. 2:04:48obviously kill a lot of your time. So
  3157. 2:04:51these aliases you can use to shorten
  3158. 2:04:54those commands and these are also
  3159. 2:04:56something that you will create via the g
  3160. 2:04:59config command. There isn't really a
  3161. 2:05:02direct way or a direct command of
  3162. 2:05:04creating aliases. Yeah, this is just
  3163. 2:05:07something I wanted to add in here along
  3164. 2:05:08with the git config command. Like a very
  3165. 2:05:11common alias created is co for checkout
  3166. 2:05:14or anything else ek for checkout. So
  3167. 2:05:17yeah this is something that you can do
  3168. 2:05:20using the get config command just
  3169. 2:05:23creating aliases. Moving on let's look
  3170. 2:05:26at operations that you use to add
  3171. 2:05:29changes and save changes to your git
  3172. 2:05:32repository. Now the first two commands
  3173. 2:05:35here that we're going to look at are git
  3174. 2:05:37add and git commit. Now this combination
  3175. 2:05:40is basically used to create these
  3176. 2:05:43snapshots that I was talking about
  3177. 2:05:44initially in the session. Right? So
  3178. 2:05:47basically what you do is first you use
  3179. 2:05:50the git add command to add a change in
  3180. 2:05:53your current directory or your working
  3181. 2:05:55directory and you add that to the
  3182. 2:05:57staging area. It tells g that you want
  3183. 2:06:00to include a particular set of updates
  3184. 2:06:03or changes in a particular file in the
  3185. 2:06:06next commit. Then what you do is you
  3186. 2:06:09move on to get commit after making the
  3187. 2:06:12changes to your working tree. Then you
  3188. 2:06:14use the git commit command which
  3189. 2:06:16captures a snapshot of your project's
  3190. 2:06:20current state. So basically you use add
  3191. 2:06:24to update the index using the current
  3192. 2:06:26content found in your working tree and
  3193. 2:06:29then you basically prepare the content
  3194. 2:06:32in the staging area for the next comet.
  3195. 2:06:34Then you run the commit command to take
  3196. 2:06:37that snapshot of your project's current
  3197. 2:06:40status. Now remember this is very
  3198. 2:06:42important and you have to do it each
  3199. 2:06:44time. You must use the add command to
  3200. 2:06:47add any new modified files to the index.
  3201. 2:06:51You can't directly commit anything
  3202. 2:06:53without adding it to the stage area
  3203. 2:06:55first. Now what I did was I quickly went
  3204. 2:06:58ahead and added three files to my
  3205. 2:07:01repository edure rep. So
  3206. 2:07:06if I go into this repository you can see
  3207. 2:07:09there are three files edure file one
  3208. 2:07:11file two file three. Now let's see if
  3209. 2:07:13these files are in my index or not using
  3210. 2:07:17the command get status. Now g status
  3211. 2:07:20basically displays the state of the
  3212. 2:07:23working directory and the staging area.
  3213. 2:07:26It will list all the modified files
  3214. 2:07:28which are ready to be added to the local
  3215. 2:07:30repository. It lets you see which
  3216. 2:07:33changes have been staged and which
  3217. 2:07:36haven't, which files are being tracked
  3218. 2:07:38by git and not. So if I typed get
  3219. 2:07:42status,
  3220. 2:07:45you can see on your main branch
  3221. 2:07:48you have three unttracked files, which
  3222. 2:07:50are the three files that I just added,
  3223. 2:07:52edure file 1, 2, and three. These are
  3224. 2:07:56not added to the index yet. This means I
  3225. 2:07:58cannot commit these changes unless I
  3226. 2:08:01added them explicitly to the index. So
  3227. 2:08:05now we're going to add these three
  3228. 2:08:07files. This command will update the
  3229. 2:08:10index using the current content which is
  3230. 2:08:12found in your working tree as you can
  3231. 2:08:14see in front of you and then it'll
  3232. 2:08:16prepare the content in the staging area
  3233. 2:08:18for the next comet. So either I can just
  3234. 2:08:22get add and put in the directory name or
  3235. 2:08:26I can just use get add with an extension
  3236. 2:08:29of a which means all. And this will add
  3237. 2:08:32all of these files to the index which
  3238. 2:08:34are in the directory but not updated in
  3239. 2:08:36the index yet. Yeah. Now I've done that.
  3240. 2:08:40Let me go ahead and use get status
  3241. 2:08:42again. And you can see all of these file
  3242. 2:08:44names are written in green. And you can
  3243. 2:08:47see changes to be committed
  3244. 2:08:50written here which means all of these
  3245. 2:08:52changes are ready to be committed. They
  3246. 2:08:54are added to the index. Now these files
  3247. 2:08:57are added to the index. You're ready to
  3248. 2:08:59commit them. Now as I had mentioned
  3249. 2:09:01before, we're going to commit them. And
  3250. 2:09:04committing refers to recording the
  3251. 2:09:05snapshots of the repository at any given
  3252. 2:09:08time. So your committed snapshots will
  3253. 2:09:10never change unless it's done
  3254. 2:09:13explicitly. So, I'm going to clear this
  3255. 2:09:16and we're going to commit this by typing
  3256. 2:09:18get commit and then adding a tag or a
  3257. 2:09:22message called
  3258. 2:09:24committing
  3259. 2:09:27three files. Let's try this out. As you
  3260. 2:09:31can see, three files changed, three
  3261. 2:09:33insertions. You can see our Edureka
  3262. 2:09:36files 1 2 3 have been committed. The get
  3263. 2:09:39commit command has committed the changes
  3264. 2:09:41in the three files in your local
  3265. 2:09:43repository. Now, if you want to commit a
  3266. 2:09:46snapshot of all of the changes in your
  3267. 2:09:48working directory at once, you can
  3268. 2:09:50always go with commit-
  3269. 2:09:53a. Now, let me add a couple more files
  3270. 2:09:56to my directory just to show you the
  3271. 2:09:58difference between your files added to
  3272. 2:10:00the index versus the ones that are not.
  3273. 2:10:11If I type ls again, you can see there
  3274. 2:10:13are two more files over here. As you can
  3275. 2:10:17see, I have two other files.
  3276. 2:10:26I'm just going to add the edureka file 4
  3277. 2:10:30and not the file five. And then I'm just
  3278. 2:10:33going to get commit
  3279. 2:10:37committing files. And as you can see,
  3280. 2:10:39only one file changed. Only one
  3281. 2:10:42insertion happened. And that only
  3282. 2:10:44happened because Edureka file 5 is not
  3283. 2:10:49added to the index.
  3284. 2:10:52And even if I use the extension A, I
  3285. 2:10:56cannot add E edureka file 5 because that
  3286. 2:11:00has not been added to your index.
  3287. 2:11:04Now if I just go ahead and add EDA file
  3288. 2:11:085,
  3289. 2:11:12voila,
  3290. 2:11:13the change has occurred in our Git
  3291. 2:11:16repository. Now if I typed get status
  3292. 2:11:22there are no more files to add or
  3293. 2:11:24commit. Our branch is ahead of the
  3294. 2:11:26origin or main branch by three commits
  3295. 2:11:29and you can use git push to publish your
  3296. 2:11:31local commits. Now what is git push?
  3297. 2:11:33This is something we will cover later in
  3298. 2:11:36this session. Now understand that before
  3299. 2:11:38you affect the changes made to the
  3300. 2:11:40central repository, you should always
  3301. 2:11:42pull changes from the central repository
  3302. 2:11:45to your local repository just to get the
  3303. 2:11:47most updated version of your branch.
  3304. 2:11:50You'll get all the work of your
  3305. 2:11:52collaborators that have been
  3306. 2:11:54contributing in the central repository.
  3307. 2:11:57For that you use the pull command. Now
  3308. 2:12:00as you can see there's nothing to commit
  3309. 2:12:02and you're working very clean.
  3310. 2:12:04There are other commands like the get
  3311. 2:12:06status command which you could use for
  3312. 2:12:09similar purposes. For example, you have
  3313. 2:12:12the git log command which only operates
  3314. 2:12:14on committed history. It basically will
  3315. 2:12:17display to you the committed snapshots
  3316. 2:12:19and will let you list the project
  3317. 2:12:21history, filter it and search for
  3318. 2:12:23specific changes. So if you typed get
  3319. 2:12:26log, it's going to show you all the
  3320. 2:12:28commits that have happened since we
  3321. 2:12:31started with this git file.
  3322. 2:12:34Okay, here you can see at the bottom
  3323. 2:12:36your original main. There's your initial
  3324. 2:12:39commit, right? Then our first comet
  3325. 2:12:43where we committed three files. Then we
  3326. 2:12:45committed the fourth file and finally
  3327. 2:12:47when we committed file number five,
  3328. 2:12:50right? These are all the commits
  3329. 2:12:52including the initial commit the first
  3330. 2:12:54one. Yeah. Along with the author and the
  3331. 2:12:58date and time. Remember when I told you
  3332. 2:13:01about everything is recorded when you're
  3333. 2:13:04using git? This is what I meant. You
  3334. 2:13:07will can always access who made commits
  3335. 2:13:10at what time and what commits were made
  3336. 2:13:13when you use a version control system
  3337. 2:13:16such as git. Now at a point like this, I
  3338. 2:13:18think it's crucial to mention uh one
  3339. 2:13:21more command which is the git tag. And
  3340. 2:13:23it's used to basically capture a tag in
  3341. 2:13:26history or a point in history that is
  3342. 2:13:28used for a marked version release.
  3343. 2:13:31Right? So it's basically uh like a
  3344. 2:13:33branch that doesn't change and after
  3345. 2:13:36being created they have no further
  3346. 2:13:38history of commits. Yeah. So that is one
  3347. 2:13:42and another one is get blame. Now the
  3348. 2:13:46get blame function displays of the
  3349. 2:13:49author's metadata attached to a specific
  3350. 2:13:52committed line in a file. It's used to
  3351. 2:13:54examine specific points in a files
  3352. 2:13:57history and get context as to who the
  3353. 2:14:00last author was that modified that line.
  3354. 2:14:04So if I went back and typed get blame
  3355. 2:14:09adure file 5.xt, txt
  3356. 2:14:14it's going to show who the person is
  3357. 2:14:17that is to blame who committed this
  3358. 2:14:21particular file or made this particular
  3359. 2:14:23change right it'll also if you paid
  3360. 2:14:27attention give you the commit number as
  3361. 2:14:31you can see this E9 D6 3E FO commit
  3362. 2:14:36number this also has this E9 D6 3E FO
  3363. 2:14:41which is the first few characters of
  3364. 2:14:43this particular commit number. Yeah.
  3365. 2:14:47So now that you know how to check the
  3366. 2:14:50status of the changes and see who made
  3367. 2:14:54the changes, it's time that you
  3368. 2:14:56understand how you fetch changes from
  3369. 2:14:59your remote repository to a local
  3370. 2:15:01repository and how you push comets from
  3371. 2:15:05your local repository to your remote
  3372. 2:15:07repository. So here we going to look at
  3373. 2:15:09two commands called pull and push. Now
  3374. 2:15:12first of all you have the get pull
  3375. 2:15:14command which fetches changes from your
  3376. 2:15:16remote repository to a local repository.
  3377. 2:15:18Basically it merges upstream changes in
  3378. 2:15:21your local repository which is a common
  3379. 2:15:24task in git based collaborations.
  3380. 2:15:26But at first you need to set your
  3381. 2:15:28central repository as the origin using
  3382. 2:15:32the command get remote add origin. And
  3383. 2:15:35I'm going to add the link to my central
  3384. 2:15:37repository which is this.
  3385. 2:15:42And as it says the remote origin already
  3386. 2:15:45exists
  3387. 2:15:47now that your origin is set. And now
  3388. 2:15:49we're going to pull our main branch. So
  3389. 2:15:53I'm just going to type get pull origin
  3390. 2:15:55main.
  3391. 2:15:56And it says we are already up to date.
  3392. 2:15:59Now certain number of tutorials or
  3393. 2:16:01documents that you might be following
  3394. 2:16:03might even give you the command gp pull
  3395. 2:16:06origin master in which case you're
  3396. 2:16:09working on the master branch. Now to
  3397. 2:16:11know which branch you're at you can just
  3398. 2:16:14use a command get branch
  3399. 2:16:18v. Yeah I'll tell you which branch are
  3400. 2:16:22you working on. Yeah. So yeah, we are
  3401. 2:16:25working on the main branch and we are
  3402. 2:16:28already up to date with the branch since
  3403. 2:16:32my local repository was already updated
  3404. 2:16:34with files from the main branch. This is
  3405. 2:16:36the message of an upto-date branch. Now
  3406. 2:16:40you can also like use git pull origin
  3407. 2:16:46and your whatever branch name. Here I'm
  3408. 2:16:48using main.
  3409. 2:16:50That's a mistake on my part. Maybe I was
  3410. 2:16:52trying to clear the screen.
  3411. 2:16:54All right. So here, even if I pull from
  3412. 2:16:58the branch using get pull origin and the
  3413. 2:17:01branch name to my local git repository,
  3414. 2:17:04you can see it's already up to date. So
  3415. 2:17:06now my local git repository is now all
  3416. 2:17:09updated with the recent changes. So now
  3417. 2:17:12it's time to make the changes to your
  3418. 2:17:13central repository by using the push
  3419. 2:17:15command. So we're going to use the push
  3420. 2:17:18command. This command transfers commits
  3421. 2:17:20from your local repository to your
  3422. 2:17:22remote repository and it is basically
  3423. 2:17:24the opposite of your pull operations.
  3424. 2:17:27Pulling will import come commits to your
  3425. 2:17:29local repositories whereas pushing will
  3426. 2:17:31export comets to your remote
  3427. 2:17:32repositories.
  3428. 2:17:34It's going to ask you for your
  3429. 2:17:38username
  3430. 2:17:44and password before it lets you push
  3431. 2:17:47into your main branch there. So I've put
  3432. 2:17:50in the username and password for my
  3433. 2:17:52GitHub account. And with that, this has
  3434. 2:17:55pushed the changes from my local
  3435. 2:17:57repository to the remote repository
  3436. 2:17:59along with all the necessary commits and
  3437. 2:18:01internal objects. Now this has created a
  3438. 2:18:04local branch in your destination
  3439. 2:18:06repository. The use of git push is to
  3440. 2:18:09publish your local changes to a central
  3441. 2:18:11repository. After you've accumulated
  3442. 2:18:13several local comets and are ready to
  3443. 2:18:15share them with the rest of the team,
  3444. 2:18:17you can then push them to your central
  3445. 2:18:19repository by using the get push
  3446. 2:18:21command. Now the files which have
  3447. 2:18:23already been committed previously in the
  3448. 2:18:25commit section and they were all push
  3449. 2:18:28ready. You will use git push origin
  3450. 2:18:31master to reflect these files in the
  3451. 2:18:34master branch of your repository.
  3452. 2:18:37All right. So let's go ahead to our
  3453. 2:18:40repository and see
  3454. 2:18:44if changes have been made. And yes you
  3455. 2:18:47can see all of our files on our GitHub
  3456. 2:18:50repository. You have edureka file 1 2 3
  3457. 2:18:524 and 5. All the five files that we had
  3458. 2:18:55created on our local repository. Yeah,
  3459. 2:18:59you have all these five files and the
  3460. 2:19:01readme file here. Here also you have the
  3461. 2:19:03readme file and all the five files that
  3462. 2:19:06we had created.
  3463. 2:19:08Now at this point in this git tutorial,
  3464. 2:19:10I hope you have understood the basic
  3465. 2:19:13commands of git. You have pulling,
  3466. 2:19:16pushing, adding, committing, things like
  3467. 2:19:18that. Now let's take a step further and
  3468. 2:19:21understand the three basic commands of
  3469. 2:19:23parallel development. Here I'm going to
  3470. 2:19:25be talking about branching, merging and
  3471. 2:19:29rebasing. So first of all let's talk
  3472. 2:19:32about merging. Now merging is a way to
  3473. 2:19:35combine the work of different branches
  3474. 2:19:37together. This will basically allow you
  3475. 2:19:39to branch off, develop a new feature and
  3476. 2:19:42then combine it back in. As you can see
  3477. 2:19:44in the diagram, it shows you two
  3478. 2:19:47basically different branches. New branch
  3479. 2:19:50and master. Now when we merge the work
  3480. 2:19:53of the new branch into the master, it
  3481. 2:19:56creates a new comet which contains all
  3482. 2:19:58the work of the master and new branch.
  3483. 2:20:01Now if we merge the two branches with
  3484. 2:20:04the merge command,
  3485. 2:20:06as I had mentioned before, git allows
  3486. 2:20:08you for easy branching, which means you
  3487. 2:20:10have parallel branches with your master
  3488. 2:20:13branch that help you carry on your
  3489. 2:20:16individual work while not interrupting
  3490. 2:20:18your main product which is your master
  3491. 2:20:22branch or your main branch. So branches
  3492. 2:20:24in git are nothing but pointers to
  3493. 2:20:27specific comets. Yeah. So, Git generally
  3494. 2:20:29prefers to keep its branches as
  3495. 2:20:32lightweight as possible. Now, there are
  3496. 2:20:34basically two kinds of branches. VR
  3497. 2:20:36local and remote tracking branches. A
  3498. 2:20:39local branch is just not the path of
  3499. 2:20:41your working tree. On the other hand,
  3500. 2:20:43the remote tracking branches have
  3501. 2:20:45special purposes. Some of them are
  3502. 2:20:48linking your work from your local
  3503. 2:20:50repository to your central repository
  3504. 2:20:52and automatically detecting which remote
  3505. 2:20:55branches to get changes from when you do
  3506. 2:20:57a git pull. So you can check what your
  3507. 2:21:00local branch is by using git
  3508. 2:21:04branch. So you know you are at your main
  3509. 2:21:07branch and the one thing you should
  3510. 2:21:09understand one thing is like a main
  3511. 2:21:11mantra of people who use git are branch
  3512. 2:21:14early and branch often. Yes. So to
  3513. 2:21:17create a new branch, you're going to use
  3514. 2:21:20a command get
  3515. 2:21:23branch and your branch name. And in this
  3516. 2:21:26case, I'm just going to use a branch
  3517. 2:21:28name edurea images. All right. And here
  3518. 2:21:31you can see this diagram shows the
  3519. 2:21:33workflow of a new branch that is
  3520. 2:21:36created. When we create a new branch, it
  3521. 2:21:38originates from the master branch
  3522. 2:21:40itself. So since there is no storage or
  3523. 2:21:43memory overhead with making many
  3524. 2:21:45branches, it's usually easier to
  3525. 2:21:47logically divide your work up than
  3526. 2:21:49having big chunky branches. Hence the
  3527. 2:21:52branch often part. Now let's see how to
  3528. 2:21:55commit using branches. Now branching
  3529. 2:21:57includes the work of a particular comet
  3530. 2:22:00along with all parent commits, right? So
  3531. 2:22:03as you see the new branch has detached
  3532. 2:22:06itself from the master or the main
  3533. 2:22:08branch and hence it'll create a
  3534. 2:22:10different path. So we are going to get
  3535. 2:22:16check out the branch name which in our
  3536. 2:22:19case is edureka images
  3537. 2:22:23and then we are going to get commit. So
  3538. 2:22:27you have unttracked files, edurea images
  3539. 2:22:29and nothing added.
  3540. 2:22:35So you made that branch. Now merging is
  3541. 2:22:39a way to combine the work of different
  3542. 2:22:42branches together. So basically what
  3543. 2:22:44this does is now that we've branched off
  3544. 2:22:46to something known as edureka images,
  3545. 2:22:48you can go ahead add files to it,
  3546. 2:22:50develop a new feature, and then combine
  3547. 2:22:52it back into your main branch. Here you
  3548. 2:22:54can see two different branches. You have
  3549. 2:22:56your new branch and your main branch.
  3550. 2:22:59And when we merge the work of a new
  3551. 2:23:02branch into the main branch, it creates
  3552. 2:23:04a new comet which contains all the work
  3553. 2:23:07of the main branch and the new branch.
  3554. 2:23:09So now if we merge
  3555. 2:23:12this branch, as you can see, it's
  3556. 2:23:14already up to date. It's important to
  3557. 2:23:17know that the branch name here should be
  3558. 2:23:20the branch that you want to merge into
  3559. 2:23:21the branch that you're currently
  3560. 2:23:23checking out. So make sure that you are
  3561. 2:23:25checked out of this destination branch.
  3562. 2:23:28So let's just merge all the work of the
  3563. 2:23:31branch edureka images into your main
  3564. 2:23:34branch. For that I will first check out
  3565. 2:23:37my main branch
  3566. 2:23:40and then merge edureka images with get
  3567. 2:23:45merge
  3568. 2:23:46edureka images. And as you can see all
  3569. 2:23:50the data from the branch edurea images
  3570. 2:23:54has merged into the main branch. Now
  3571. 2:23:57notice that merging in git creates a
  3572. 2:23:59special commit that has two unique
  3573. 2:24:01parents. Now this is one way of merging
  3574. 2:24:04into the main branch. There's also
  3575. 2:24:06another way of combining the work
  3576. 2:24:08between two branches which is called
  3577. 2:24:11rebasing. Now rebasing takes a set of
  3578. 2:24:14comets, copies them and stores them
  3579. 2:24:16outside your repository. The advantage
  3580. 2:24:18of rebasing is that it can also be used
  3581. 2:24:21to make linear sequence comets. The
  3582. 2:24:24comet log or the history of the
  3583. 2:24:26repository stays clean if rebasing is
  3584. 2:24:28done. Now our work from the new branch
  3585. 2:24:31is placed right after master and we have
  3586. 2:24:34this nice linear sequence of commits.
  3587. 2:24:37This command doesn't copy but moves all
  3588. 2:24:40our work from the current branch to the
  3589. 2:24:42master or the main branch. they look
  3590. 2:24:44like they've been developed sequentially
  3591. 2:24:47instead of having developed parallelly.
  3592. 2:24:53So if I just did another
  3593. 2:24:57branch called get branch edurea images 2
  3594. 2:25:01and then maybe get checkout.
  3595. 2:25:12Okay, then we get commit this
  3596. 2:25:16and then I could just get rebase main
  3597. 2:25:19and your current branch will be up to
  3598. 2:25:21date. This command basically moves all
  3599. 2:25:24of your work from your current branch to
  3600. 2:25:25your master branch and it'll basically
  3601. 2:25:27look like it has been developed
  3602. 2:25:29sequentially instead of having developed
  3603. 2:25:32parallelly. Now apart from these there
  3604. 2:25:35are certain operations that you ought to
  3605. 2:25:37know. Firstly, archiving your
  3606. 2:25:39repository. You can use this command. It
  3607. 2:25:42stores all of your files and data in a
  3608. 2:25:44zip file rather than agit
  3609. 2:25:47directory. This creates only a single
  3610. 2:25:50snapshot omitting version control
  3611. 2:25:52completely. Though this comes in handy
  3612. 2:25:54when you want to send these files to a
  3613. 2:25:56client for review who doesn't have git
  3614. 2:25:58installed in their computers. Apart from
  3615. 2:26:00this, you can also bundle your
  3616. 2:26:02repository which basically turns your
  3617. 2:26:05entire repository into a single file.
  3618. 2:26:07This pushes the master branch or the
  3619. 2:26:09main branch to a remote branch only
  3620. 2:26:12contained in a file instead of a
  3621. 2:26:14repository. You could alternately change
  3622. 2:26:17the repository, clone the repo bundle,
  3623. 2:26:20create a copy and use gitlog, but that
  3624. 2:26:23is like five commands instead of one.
  3625. 2:26:25Why not just use one command? And
  3626. 2:26:28finally, stashing uncommitted changes.
  3627. 2:26:31When you want to undo adding a feature
  3628. 2:26:34or any kind of added data temporarily,
  3629. 2:26:37we can always stash them temporarily.
  3630. 2:26:40You can use git status stash status and
  3631. 2:26:43then you want to reapply the changes you
  3632. 2:26:46stashed using git stash apply. Having
  3633. 2:26:49said that, let's move on to another very
  3634. 2:26:51important topic in this git tutorial.
  3635. 2:26:55Let's go through a brief introduction to
  3636. 2:26:57SSH. Now, what is SSH? What is an SSH
  3637. 2:27:00key? Now, an SSH key is an access
  3638. 2:27:04credential for secure shell network
  3639. 2:27:06protocol. It's basically an
  3640. 2:27:09authenticated and encrypted secure
  3641. 2:27:11network protocol and is used for remote
  3642. 2:27:13communications between machines on an
  3643. 2:27:16unsecured open network for remote file
  3644. 2:27:20transfer, network management, and remote
  3645. 2:27:22operating system access. So basically
  3646. 2:27:25it's typically used to log into a remote
  3647. 2:27:27machine and execute commands in it. But
  3648. 2:27:30this also supports tunneling, forwarding
  3649. 2:27:32TCP ports and X11 conditions. It can
  3650. 2:27:36transfer files using associated SSH file
  3651. 2:27:39transfer or secure copy protocols. It
  3652. 2:27:42provides you several alternative options
  3653. 2:27:45for strong authentication and protects
  3654. 2:27:48the communication security and integrity
  3655. 2:27:51with very strong encryption. It's a
  3656. 2:27:53secure alternative to the nonprotected
  3657. 2:27:55login protocols and insecure file
  3658. 2:27:58transfer methods such as FTP. So
  3659. 2:28:01basically how do you create SSH keys?
  3660. 2:28:04You start by using the command SSH key
  3661. 2:28:08gen and then you'll be prompted to enter
  3662. 2:28:10a file in which to save the key.
  3663. 2:28:14So home addere
  3664. 2:28:19then we're going to enter a passphrase.
  3665. 2:28:21I'm just going to leave it empty again.
  3666. 2:28:24And you can see our identification has
  3667. 2:28:27been saved in the file that we
  3668. 2:28:29specified. And we have something known
  3669. 2:28:32as a key fingerprint.
  3670. 2:28:35And finally, what we have to do is add
  3671. 2:28:37the new SSH key to the SSH agent.
  3672. 2:28:42And then you will see identity added.
  3673. 2:28:46And that's it. You have created an SSH
  3674. 2:28:48key.
  3675. 2:28:57The need for GitHub. It is extremely
  3676. 2:29:00important for software developers to
  3677. 2:29:02work on a web-based platform to share
  3678. 2:29:04their projects and collaborate with
  3679. 2:29:06other developers. This platform must be
  3680. 2:29:09a version control system. That is, it
  3681. 2:29:12must enable multiple people to
  3682. 2:29:13simultaneously work on a single project.
  3683. 2:29:16Each person edits his or her own copy of
  3684. 2:29:20the files and chooses when to share
  3685. 2:29:22those changes with the rest of the team.
  3686. 2:29:24This application must also be capable of
  3687. 2:29:27hosting millions of programmers and
  3688. 2:29:29hobbyists that download and evaluate
  3689. 2:29:31each other's work. GitHub is one such
  3690. 2:29:34platform of choice for developers that
  3691. 2:29:36can host multiple programmers and review
  3692. 2:29:39their code.
  3693. 2:29:41GitHub has several competitors. For
  3694. 2:29:44instance, GitLab. GitLab is an
  3695. 2:29:46open-source web interface and source
  3696. 2:29:49control platform based on Git. Whereas
  3697. 2:29:52Microsoft Team Foundation server is an
  3698. 2:29:55enterprisegrade server for teams to
  3699. 2:29:57share code, track work, and ship
  3700. 2:30:00software for any language all in a
  3701. 2:30:02single package. Bitbucket on the other
  3702. 2:30:05hand stores all of your Git and Mercural
  3703. 2:30:08source code in one place with unlimited
  3704. 2:30:11private repositories.
  3705. 2:30:13So what really makes GitHub so powerful
  3706. 2:30:16and popular among developers? GitHub is
  3707. 2:30:19an open-source platform and the
  3708. 2:30:21community is really what fuels it.
  3709. 2:30:24Moreover, GitHub is the platform of
  3710. 2:30:26choice for developers from various large
  3711. 2:30:29corporations too. Microsoft is the
  3712. 2:30:31number one contributor to the system,
  3713. 2:30:34but there are also Google, SAP, Airbnb,
  3714. 2:30:38IBM, PayPal and many others. Exposure
  3715. 2:30:42and insight that you can get on GitHub
  3716. 2:30:44are simply unmatched by any other
  3717. 2:30:46platform. Here you can discover code
  3718. 2:30:48written by others, learn from it and
  3719. 2:30:51even use it for your own projects.
  3720. 2:30:54Versions control on GitHub works very
  3721. 2:30:56much like Microsoft Office or Google
  3722. 2:30:59Drive. It simply tracks all the changes
  3723. 2:31:01made to your code and who makes them.
  3724. 2:31:04You can always review the detailed
  3725. 2:31:06change log that neatly hosts all of the
  3726. 2:31:08relevant information. Using GitHub
  3727. 2:31:11eliminates the need for complex
  3728. 2:31:13corporate security solution because
  3729. 2:31:15everything is on cloud. The platforms
  3730. 2:31:18protects code branches, verifies commit
  3731. 2:31:21signing and controls access.
  3732. 2:31:24Now that we know why we need GitHub, let
  3733. 2:31:26us understand what is GitHub. GitHub is
  3734. 2:31:29a Git repository hosting service that
  3735. 2:31:32provides a web-based graphical interface
  3736. 2:31:34with many features. A repository is
  3737. 2:31:37usually used to organize a single
  3738. 2:31:39project. Repositories can contain
  3739. 2:31:41folders, files, images, videos,
  3740. 2:31:44spreadsheets, anything your project
  3741. 2:31:46needs. Let's say for example a team
  3742. 2:31:49wants to work on a particular project.
  3743. 2:31:52Here they can simultaneously write and
  3744. 2:31:54update the code to a central repository
  3745. 2:31:56which is present on GitHub. So, GitHub
  3746. 2:31:59is a highly used software that is
  3747. 2:32:01typically used for version control. It
  3748. 2:32:03is helpful when more than just say one
  3749. 2:32:05person is working on a project. For
  3750. 2:32:08example, a software development team
  3751. 2:32:10wants to build a website and everyone
  3752. 2:32:13has to update their codes simultaneously
  3753. 2:32:15while working on this project. In this
  3754. 2:32:18case, GitHub helps them to build a
  3755. 2:32:20centralized repository where everyone
  3756. 2:32:22can upload, edit, and manage the code
  3757. 2:32:24files. Most software projects have a bug
  3758. 2:32:28tracker of some kind. GitHub's tracker
  3759. 2:32:30is called issues and has its very own
  3760. 2:32:33section in every repository. Issues
  3761. 2:32:36basically are a great way to keep track
  3762. 2:32:38of tasks, enhancements, and bugs for
  3763. 2:32:41your project.
  3764. 2:32:42Moving on, people often get confused
  3765. 2:32:45between the terms Git and GitHub. Now,
  3766. 2:32:48let me clearly explain the difference
  3767. 2:32:50between them. Git is simply a version
  3768. 2:32:53control system that lets you manage and
  3769. 2:32:55track changes within your project.
  3770. 2:32:57Whereas GitHub is a cloud-based service
  3771. 2:33:00that lets you manage git repositories.
  3772. 2:33:03So basically Git is the tool and GitHub
  3773. 2:33:05is the service. Now that we know the
  3774. 2:33:08difference between Git and GitHub, let
  3775. 2:33:10us move on and understand how these two
  3776. 2:33:12work hand in hand. We already know that
  3777. 2:33:15git is a version control tool that will
  3778. 2:33:18allow you to perform all kinds of
  3779. 2:33:19operations to fetch data from the
  3780. 2:33:21central server or push data to it.
  3781. 2:33:24Whereas GitHub is a code hosting
  3782. 2:33:27platform for version control
  3783. 2:33:28collaboration.
  3784. 2:33:30GitHub is basically a company that
  3785. 2:33:32allows you to host a central repository
  3786. 2:33:34in a remote server. Now without any
  3787. 2:33:37further ado, let's get started with the
  3788. 2:33:39demonstration on how to use GitHub. So
  3789. 2:33:42for this demonstration, we're working on
  3790. 2:33:44the website version of GitHub. There's
  3791. 2:33:46another version of GitHub that is the
  3792. 2:33:48desktop version which you can download
  3793. 2:33:49it to your personal computer. So we're
  3794. 2:33:52simply going to search for GitHub in our
  3795. 2:33:55search engine. The first link will lead
  3796. 2:33:57you to the official website of GitHub.
  3797. 2:33:59So I'm going to click on that. So this
  3798. 2:34:02will redirect me to the main homepage of
  3799. 2:34:04GitHub. As you can see, there is a
  3800. 2:34:06search GitHub option. There are also two
  3801. 2:34:08buttons that says sign in and sign up.
  3802. 2:34:10If you're new to GitHub, you can simply
  3803. 2:34:12enter in your credentials, that is a
  3804. 2:34:14username, email, password, and sign up
  3805. 2:34:16for GitHub. But if you already have an
  3806. 2:34:19account like I do, I'm simply going to
  3807. 2:34:21click on the sign in button. And it'll
  3808. 2:34:23redirect me to a page where I have to
  3809. 2:34:25enter the credentials. That is my email
  3810. 2:34:27address and password. I'm going to do
  3811. 2:34:29that now. And I'm going to click on the
  3812. 2:34:32sign in button. Now, this is the main
  3813. 2:34:34page of my account. As you can see, I
  3814. 2:34:37have no repositories. It's all new. It's
  3815. 2:34:39all fresh. But if you're not new to
  3816. 2:34:41GitHub, you can view all of your
  3817. 2:34:43repositories on the left hand corner.
  3818. 2:34:45Now before we move on, I'm going to
  3819. 2:34:47explain you all the features that are
  3820. 2:34:50present within GitHub. So you can see a
  3821. 2:34:53search bar here. So the search bar will
  3822. 2:34:55allow you to look for profiles, certain
  3823. 2:34:58keywords, look for different kinds of
  3824. 2:34:59projects that are available on GitHub.
  3825. 2:35:01All of those can be done using this bar
  3826. 2:35:03here. And you can see four options next
  3827. 2:35:05to the bar that says pull request issues
  3828. 2:35:08marketplace explore. Pull request we'll
  3829. 2:35:10learn later on in this session. But the
  3830. 2:35:12issues in marketplace we won't be
  3831. 2:35:13discussing in this video for now. The
  3832. 2:35:16explore button on the other hand is an
  3833. 2:35:18extremely important and interesting
  3834. 2:35:20button. So once I click on that it'll
  3835. 2:35:22redirect me to a page with some
  3836. 2:35:25activities that are going on around in
  3837. 2:35:27GitHub. You can see here they're
  3838. 2:35:29trending repositories, they're trending
  3839. 2:35:31developers. Basically, this is a feed
  3840. 2:35:33that will allow you to interact with
  3841. 2:35:35developers and other people,
  3842. 2:35:37collaborators from all around the world.
  3843. 2:35:39Basically, in Instagram 2, you have an
  3844. 2:35:41explore button which will allow you to
  3845. 2:35:43interact with different people from all
  3846. 2:35:45around the world. So, the same concept
  3847. 2:35:47is implied in the GitHub explore button
  3848. 2:35:50too. So, you can explore topics, you can
  3849. 2:35:52explore tending repositories,
  3850. 2:35:54developers. Basically, it's an
  3851. 2:35:56interaction with other people from
  3852. 2:35:57different parts of the world. So, I hope
  3853. 2:35:59that's clear. Now the most important
  3854. 2:36:02part of the session are the three
  3855. 2:36:05buttons that are available in the right
  3856. 2:36:06hand corner of the navigation bar. So
  3857. 2:36:08you can see there's a bell icon, there's
  3858. 2:36:10a plus icon, there's a pixelated icon on
  3859. 2:36:13the right hand corner. So the bell icon
  3860. 2:36:16allows you to read notifications of your
  3861. 2:36:18activities that occur in GitHub. So
  3862. 2:36:20that's what it really is. You can see
  3863. 2:36:22the inbox will allow you to view all of
  3864. 2:36:25the notifications. You can also view the
  3865. 2:36:27100 notifications by clicking on this un
  3866. 2:36:30button. As of now, I don't have any
  3867. 2:36:32notifications, so there's nothing
  3868. 2:36:33available. You can also group these
  3869. 2:36:35notifications by the date or repository
  3870. 2:36:38by clicking on this group by button
  3871. 2:36:39here. You can also view your save
  3872. 2:36:41notifications by clicking on here. And
  3873. 2:36:44the done button on the other hand will
  3874. 2:36:46let you mark all of your notifications
  3875. 2:36:48that you're done with, your previous
  3876. 2:36:50notifications. So these are the three
  3877. 2:36:53important buttons you'll have to know in
  3878. 2:36:55this bell icon. And the filters are not
  3879. 2:36:57necessary as of now. So I'm not going to
  3880. 2:36:59discuss that. This button on the other
  3881. 2:37:01hand will allow you to manage not your
  3882. 2:37:02notification settings and your
  3883. 2:37:04subscriptions too. So that's all for
  3884. 2:37:06this bell icon. The next important
  3885. 2:37:08button is this plus icon. As you can see
  3886. 2:37:11there are five drop-own options that
  3887. 2:37:13appear here. The first one being new
  3888. 2:37:15repository followed by import
  3889. 2:37:16repository, new gist, new organization,
  3890. 2:37:19new project. So new repository we've
  3891. 2:37:21already discussed previously in this
  3892. 2:37:23session. A repository is a place where
  3893. 2:37:26you create your files for your project.
  3894. 2:37:28It's basically a storage space, right?
  3895. 2:37:30So your repository can directly interact
  3896. 2:37:33with your git, right? So the new
  3897. 2:37:35repository option will allow you to make
  3898. 2:37:38files a repository to your GitHub
  3899. 2:37:41account. Right? The git on the other
  3900. 2:37:43hand the tool that which we use to make
  3901. 2:37:45local repositories in our personal
  3902. 2:37:47computer can be directly pushed on the
  3903. 2:37:50local repositories can directly be
  3904. 2:37:52pushed onto your GitHub account. So
  3905. 2:37:54that's what the new repository button
  3906. 2:37:56allows you to do. So the new project on
  3907. 2:38:00the other hand is a place to track
  3908. 2:38:02issues, features and other tasks that
  3909. 2:38:04are related to the code within the
  3910. 2:38:06repository. You can also connect with
  3911. 2:38:08the DevOps build and deploy process,
  3912. 2:38:10assign people to tasks and so on by
  3913. 2:38:13using this button that is the new
  3914. 2:38:14project button. So the difference
  3915. 2:38:17between the new repository button and
  3916. 2:38:19the new project button is that projects
  3917. 2:38:21in GitHub are only a part of GitHub but
  3918. 2:38:24not Git. But the new repository option
  3919. 2:38:27is a part of GitHub and Git. So that's
  3920. 2:38:30the main difference between new
  3921. 2:38:31repository and new project. I hope
  3922. 2:38:33that's clear. So the next button will
  3923. 2:38:36drop me down some interactions that I
  3924. 2:38:39can make with my profile. So if I click
  3925. 2:38:41on this your profile option, it will
  3926. 2:38:44redirect me to a page where I can edit
  3927. 2:38:46my profile. I can really create my
  3928. 2:38:48identity using this page. So here if I
  3929. 2:38:51click the edit profile, I can add a bio
  3930. 2:38:53about myself. I can add the company in
  3931. 2:38:55which I'm working in, the location at
  3932. 2:38:57where I am, the website, Twitter
  3933. 2:38:59username, etc. So all of that I can add
  3934. 2:39:01here all of the information about
  3935. 2:39:03myself. I can also view the repositories
  3936. 2:39:05I'm working on currently or the
  3937. 2:39:07repositories I've worked in the past
  3938. 2:39:10projects that I'm working on the
  3939. 2:39:12packages and the entire contributions
  3940. 2:39:14I've been making on GitHub from the last
  3941. 2:39:17year. So basically it allows me to build
  3942. 2:39:20an identity or it'll help me build my
  3943. 2:39:22profile on GitHub. So I hope that's
  3944. 2:39:24clear. Now, if I click on this button
  3945. 2:39:28and if I want to sign out from my
  3946. 2:39:29profile, I can simply scroll down and
  3947. 2:39:31click on the sign out button here. And
  3948. 2:39:33this will sign me out of my account. So,
  3949. 2:39:36that's all for getting started with
  3950. 2:39:38GitHub. These are the basics on what
  3951. 2:39:40GitHub is and what each of the button
  3952. 2:39:43and options really do. Now, if I want to
  3953. 2:39:45move back to the main page of my GitHub
  3954. 2:39:48profile, I can simply click on this
  3955. 2:39:49OCAT. That's GitHub's logo. So, I'm just
  3956. 2:39:52going to click on this OCAT logo. And
  3957. 2:39:55here I'm back to my main page. Now
  3958. 2:39:57before we move on and work on the
  3959. 2:39:59different operations and options within
  3960. 2:40:02GitHub and learn different things about
  3961. 2:40:04GitHub, I'm going to give you a brief
  3962. 2:40:07overview on how to download the desktop
  3963. 2:40:11version of GitHub. So I'm simply going
  3964. 2:40:13to search for GitHub desktop on my
  3965. 2:40:15search engine and I'm going to click on
  3966. 2:40:17the first link that's available on this
  3967. 2:40:18page. Now I can simply click on this
  3968. 2:40:21button that says download for Windows
  3969. 2:40:2364bit. That's compatible to my current
  3970. 2:40:26version of my personal computer. If you
  3971. 2:40:29have a Mac, you can simply click on the
  3972. 2:40:31Mac version and download it to your
  3973. 2:40:33desktop. But as I've already mentioned
  3974. 2:40:35previously that we're going to work on
  3975. 2:40:37the website version. So I'm going to
  3976. 2:40:38simply switch back to this. Now let's
  3977. 2:40:41quickly move on to the next part of the
  3978. 2:40:43session.
  3979. 2:40:44Create a repository. So firstly let us
  3980. 2:40:47understand what a repository is. It is
  3981. 2:40:50simply a storage space for the correct
  3982. 2:40:52project that you're working on. GitHub
  3983. 2:40:54is a very popular central repository
  3984. 2:40:56that allows you to share your files.
  3985. 2:40:58Whereas Git allows you to create local
  3986. 2:41:00repositories that are present on the
  3987. 2:41:02system you are working on. So you can
  3988. 2:41:05basically push your local repository
  3989. 2:41:06into GitHub and share it with other
  3990. 2:41:09collaborators via the central one. Now
  3991. 2:41:11that we know what a repository is and
  3992. 2:41:14how it works. Let's go on to the
  3993. 2:41:16demonstration part and create our first
  3994. 2:41:18repository. So you can do this in two
  3995. 2:41:20ways. Either you can click on your
  3996. 2:41:22create repository button that is present
  3997. 2:41:24on the left side or you can as I've
  3998. 2:41:26already mentioned in the previous part
  3999. 2:41:27of the session. You can click onto this
  4000. 2:41:29plus icon and you can click on the new
  4001. 2:41:31repository option. So this will redirect
  4002. 2:41:34you to a page that says create a new
  4003. 2:41:36repository. You can add your repository
  4004. 2:41:38name. I'm going to name my repository as
  4005. 2:41:40Edureka and it's available. All of your
  4006. 2:41:43repository names must be unique from one
  4007. 2:41:45another to identify them easily. You can
  4008. 2:41:47also add a description which is
  4009. 2:41:49optional. I'm just going to add the
  4010. 2:41:51description. This is my first
  4011. 2:41:54repository. And a description allows
  4012. 2:41:57people or other collaborators to
  4013. 2:41:58understand what your repository is all
  4014. 2:42:00about. But as a good developer or a good
  4015. 2:42:03programmer, you would definitely want to
  4016. 2:42:05add a description and give an overview
  4017. 2:42:07of what your repository is all about.
  4018. 2:42:09There are two options now available that
  4019. 2:42:12says private or public. Now you can
  4020. 2:42:15choose your repository to either be
  4021. 2:42:17public or private. So the private one
  4022. 2:42:19lets you decide who can access your
  4023. 2:42:21profile whereas the public one lets
  4024. 2:42:23anyone view and access your repository
  4025. 2:42:26but you can choose who can commit to it.
  4026. 2:42:28That's the difference between public and
  4027. 2:42:30private repository. I'm going to let my
  4028. 2:42:32repository be public as of now. Now, if
  4029. 2:42:35you scroll down, you can see that you
  4030. 2:42:37can initialize your repository with
  4031. 2:42:38three options. The first one being add a
  4032. 2:42:41readme file. The second one being add a
  4033. 2:42:43git ignore file. You can always choose a
  4034. 2:42:46add a readme text file to your project
  4035. 2:42:48which often contains information about
  4036. 2:42:50the project and other necessary details
  4037. 2:42:53the user must be aware of when he or she
  4038. 2:42:55is accessing that particular project.
  4039. 2:42:57Now I want a readme file for my
  4040. 2:42:59repository. So I'm going to click on
  4041. 2:43:01this button here. That's going to check
  4042. 2:43:02it. The next option is add a ignore
  4043. 2:43:06file. So this file will let you ignore a
  4044. 2:43:09list of files when the user is pushing
  4045. 2:43:11files to GitHub. That's what this option
  4046. 2:43:14really does, but I'm going to let this
  4047. 2:43:16be unchecked for now. For your
  4048. 2:43:18repository to truly be open sourced, you
  4049. 2:43:20will need to license it so others are
  4050. 2:43:22free to use, change, and distribute the
  4051. 2:43:25software. You can simply click on choose
  4052. 2:43:27a license option and pick your the
  4053. 2:43:29required license for your project. There
  4054. 2:43:31are several licenses like MIT, GPL,
  4055. 2:43:34Apache license 2.0, BST, etc. But for
  4056. 2:43:37this repository, we don't really need a
  4057. 2:43:39license. So, I'm going to untick this
  4058. 2:43:41too. And now you can see there's a piece
  4059. 2:43:43of information that says this will set
  4060. 2:43:45master as a default branch. But I'm
  4061. 2:43:48going to ignore this for now. I'm going
  4062. 2:43:50to explain about branches later on in
  4063. 2:43:52this session. So this is all you have to
  4064. 2:43:54do to create your first new repository.
  4065. 2:43:56You add a name, you choose a
  4066. 2:43:58description, you add an optional
  4067. 2:43:59description, you let your repository be
  4068. 2:44:02either public or private, and you
  4069. 2:44:04initialize your repository with either
  4070. 2:44:05of these three options. And I'm simply
  4071. 2:44:07going to click on my create repository
  4072. 2:44:09option. Now this will redirect me to a
  4073. 2:44:11page with all the information and the
  4074. 2:44:13files that are currently present in my
  4075. 2:44:14repository. You can see here my
  4076. 2:44:17repository name is present here with the
  4077. 2:44:19optional description that I gave and the
  4078. 2:44:22number of files. Currently we have only
  4079. 2:44:24just one file that's the readme text
  4080. 2:44:25file and that's present here. So this is
  4081. 2:44:28all we have. Congratulations you just
  4082. 2:44:30created your first repository. Now you
  4083. 2:44:32can see there are some options that says
  4084. 2:44:34issues, pull requests, actions,
  4085. 2:44:36projects, wiki, security, etc. We don't
  4086. 2:44:39have to really talk about all of these
  4087. 2:44:40right now. We will just learn about one
  4088. 2:44:43option that says code here. So this is
  4089. 2:44:45really important. If you click on this
  4090. 2:44:47button, you can see that there's a link
  4091. 2:44:49that is available here and https link.
  4092. 2:44:53So if you copy this link and paste it on
  4093. 2:44:55your kit terminal that's present on your
  4094. 2:44:57computer. You can download this entire
  4095. 2:45:00project directly to your local system.
  4096. 2:45:02So that's what the link is for. I hope
  4097. 2:45:04that's clear. And the next option that
  4098. 2:45:06says open with GitHub desktop will allow
  4099. 2:45:09you to open this entire repository in
  4100. 2:45:11your GitHub desktop version. And you can
  4101. 2:45:13also the last option that says download
  4102. 2:45:15zip will allow you to download this
  4103. 2:45:17entire repository in the form of zip
  4104. 2:45:20files. So all of your project files will
  4105. 2:45:22be within that zip file. So that's all
  4106. 2:45:24you have to really know about your
  4107. 2:45:26repository. And I'm going to click on
  4108. 2:45:29the readme text file that's available.
  4109. 2:45:31It will take me to another page with
  4110. 2:45:33some extra information about that file.
  4111. 2:45:35You can see currently we have two lines
  4112. 2:45:38and the memory space that is allocated
  4113. 2:45:40to this file. So we currently have two
  4114. 2:45:42lines that is edure and this is my first
  4115. 2:45:43repository. And you can also see the
  4116. 2:45:45number of contributors to this project
  4117. 2:45:47that is just one. That's just me for
  4118. 2:45:49now. And you can view the history of the
  4119. 2:45:52commits or the changes that have been
  4120. 2:45:54performed in your file. So we'll come
  4121. 2:45:57back to that part later on this session.
  4122. 2:45:59But you can move back to your main page
  4123. 2:46:01of this repository by clicking on the
  4124. 2:46:03name button here. So Edureka is the name
  4125. 2:46:06of my repository. So I'm going to click
  4126. 2:46:07on that. So now I'm back to the main
  4127. 2:46:09page of my repository.
  4128. 2:46:12Before we learn how to create our first
  4129. 2:46:14branch, let us understand what branches
  4130. 2:46:16are. Branches allow you to work on other
  4131. 2:46:19features that can be included and merge
  4132. 2:46:22with the master branch if required. So
  4133. 2:46:24what is the master branch? The master
  4134. 2:46:26branch is the main branch where your
  4135. 2:46:28project resides on. So all of the
  4136. 2:46:30changes, all of the activities that you
  4137. 2:46:32do with your main project lies or is on
  4138. 2:46:35your default branch that is named as the
  4139. 2:46:37master branch. So what really GitHub
  4140. 2:46:39allows you to do is it allows you to
  4141. 2:46:41create additional branches. So on these
  4142. 2:46:43additional branches you can work on the
  4143. 2:46:45other features or you can experiment
  4144. 2:46:47with your project and if you're happy
  4145. 2:46:49with this you can simply merge these
  4146. 2:46:51features to your main branch that is
  4147. 2:46:53your master branch. This is what
  4148. 2:46:54branches are really for. So they simply
  4149. 2:46:57allow you to work on other features.
  4150. 2:46:59That's what branches are. So let's move
  4151. 2:47:01on to the demonstration part and look at
  4152. 2:47:03how we can create our own branches. So
  4153. 2:47:06now if you look on the left corner, you
  4154. 2:47:08can see a button that says master. So
  4155. 2:47:10currently we're on the master branch and
  4156. 2:47:13there's only one branch and the master
  4157. 2:47:15branch as I've already mentioned is the
  4158. 2:47:17default branch. So when you create a
  4159. 2:47:18repository you're automatically creating
  4160. 2:47:20a master branch. So this is where your
  4161. 2:47:23project will be residing on. And now if
  4162. 2:47:26you want to create another branch, say
  4163. 2:47:28let's name this branch one branch. So
  4164. 2:47:32this is what I want to name my
  4165. 2:47:34additional branch. I'm simply going to
  4166. 2:47:36name it and I'm going to click on the
  4167. 2:47:38enter button. So it will redirect me to
  4168. 2:47:40a page. So this is the exact replica of
  4169. 2:47:43your master branch. And you can work on
  4170. 2:47:46this branch. You can work on any other
  4171. 2:47:48feature or you can add something, you
  4172. 2:47:51can remove something, you can really
  4173. 2:47:52experiment on this branch. And if you're
  4174. 2:47:54happy with this, you can merge back this
  4175. 2:47:56feature or the experimentation that
  4176. 2:47:59you've been working on to your master
  4177. 2:48:01branch. Right? So, you can see there's a
  4178. 2:48:03readme text file. It's exactly the same.
  4179. 2:48:04There's the name of your repository, the
  4180. 2:48:07description of the repository. You can
  4181. 2:48:09click on the readme text file and
  4182. 2:48:11everything's the absolute same. you can
  4183. 2:48:13quickly switch back to the main page,
  4184. 2:48:16but the only difference is that you're
  4185. 2:48:18currently on a branch named branch one
  4186. 2:48:21branch. You're not on your master
  4187. 2:48:22branch. Now, if you want to switch back
  4188. 2:48:24to your master branch and work on it,
  4189. 2:48:26you can click on this button and you'll
  4190. 2:48:28find the master here. You can click on
  4191. 2:48:31that and it will take you back to your
  4192. 2:48:33master branch. Here you can work on your
  4193. 2:48:36project. So, there currently two
  4194. 2:48:38branches. You can see that and
  4195. 2:48:40everything's normal. Everything looks
  4196. 2:48:41simple. That's all for branches. It's
  4197. 2:48:44really easy. I hope it's clear. So you
  4198. 2:48:46can look for branches here on this bar
  4199. 2:48:48here that's present here. You can also
  4200. 2:48:51create new ones in the same option. So
  4201. 2:48:54that's all for branches. Let's move on
  4202. 2:48:56to the next part of the session. Make a
  4203. 2:48:58comet. Now what are comets? Comets
  4204. 2:49:01simply record changes to one or more
  4205. 2:49:03files in your branches. So basically
  4206. 2:49:06they save the changes that you're making
  4207. 2:49:07in your project. Git always assigns each
  4208. 2:49:10comet a unique identification which is
  4209. 2:49:13called SHA or hash that identifies the
  4210. 2:49:16specific changes. So for any changes are
  4211. 2:49:19made to your project files, you can
  4212. 2:49:21simply go back and look at the version
  4213. 2:49:23history or the history of the each
  4214. 2:49:26commit you've performed on your project
  4215. 2:49:28files. So that's what really commits are
  4216. 2:49:30all about. It's extremely easy. Let's go
  4217. 2:49:33ahead and make our first commit. Now I'm
  4218. 2:49:35going to switch to my branch one branch
  4219. 2:49:38and I'm going to make my first commit.
  4220. 2:49:40I'm going to click on my readme text
  4221. 2:49:42file. That's the only file currently in
  4222. 2:49:44a repository. So we'll make the change
  4223. 2:49:46in the readme text file. There are three
  4224. 2:49:49really important icons that are present
  4225. 2:49:51in the right corner as you can see. The
  4226. 2:49:53first one is a PC icon that says open
  4227. 2:49:56this file in GitHub desktop. So if you
  4228. 2:49:58click on this file, this entire file
  4229. 2:50:00will open in your GitHub desktop
  4230. 2:50:01version. The next one that is the pencil
  4231. 2:50:04icon will allow me to edit this
  4232. 2:50:06particular file that is my readme text
  4233. 2:50:08file. And the third icon is a bin icon
  4234. 2:50:10which will allow me to delete this file.
  4235. 2:50:12Now what we'll be working on is the
  4236. 2:50:14pencil icon. That's the edit this file
  4237. 2:50:16option. I'm going to click on this and I
  4238. 2:50:19can simply view a space or a file that
  4239. 2:50:23will allow me to make changes to my
  4240. 2:50:26readme text file. I'm going to add
  4241. 2:50:28another line here that says this is my
  4242. 2:50:30first commit. This is what I want to add
  4243. 2:50:33to my readme text file. And if I want to
  4244. 2:50:35preview the changes, I'm going to click
  4245. 2:50:37on this preview changes button. You can
  4246. 2:50:39see that this is my first repository.
  4247. 2:50:40This is my first commit. This is my
  4248. 2:50:42first commit is the additional piece of
  4249. 2:50:44information that we'll be adding to my
  4250. 2:50:45readme text file. And it's highlighted
  4251. 2:50:48in blue. So, we know that that's the
  4252. 2:50:49additional information. I'm happy with
  4253. 2:50:51this change. I'm going to switch back to
  4254. 2:50:53my edit file. I'm going to scroll down.
  4255. 2:50:56And if I want to add a description about
  4256. 2:50:58the change that I'm performing to my
  4257. 2:51:01file, I can do that. A good programmer
  4258. 2:51:03would always add a description to the
  4259. 2:51:06change that he's making to the project
  4260. 2:51:07file. So other collaborators when they
  4261. 2:51:10view the commit or they view the change,
  4262. 2:51:12they can read the extended description
  4263. 2:51:14and understand what the change is about.
  4264. 2:51:16So that's a good habit that you must
  4265. 2:51:18follow. But as of now, we're not going
  4266. 2:51:19to do that. So I'm going to leave this
  4267. 2:51:22blank. As you can see, there are two
  4268. 2:51:24radio buttons that are currently
  4269. 2:51:25available. The first one says commit
  4270. 2:51:28directly to the branch one branch. This
  4271. 2:51:30will allow me to make the change or save
  4272. 2:51:33or make the commit directly to my branch
  4273. 2:51:35one branch only. So the change that I'm
  4274. 2:51:38making currently is only implemented to
  4275. 2:51:40my branch one branch. The second option
  4276. 2:51:42allows me to create a new branch for
  4277. 2:51:44this particular commit and start a pull
  4278. 2:51:46request. We're not going to talk much
  4279. 2:51:48about this option right now, but the
  4280. 2:51:51first option is extremely important. So,
  4281. 2:51:53we'll let this be stuck on to the option
  4282. 2:51:56that says commit directly to the branch
  4283. 2:51:57one branch. And I'm going to click on
  4284. 2:51:59the commit changes options. And this
  4285. 2:52:01will simply implement the entire change
  4286. 2:52:03to the file. You can see that the change
  4287. 2:52:05is implemented. The additional piece of
  4288. 2:52:07line that says this is my first commit
  4289. 2:52:09is added to my readme text file. Now the
  4290. 2:52:13interesting part is if I switch to my
  4291. 2:52:16master branch, the change is not
  4292. 2:52:19implemented in my master branch. So the
  4293. 2:52:20change is only currently present in my
  4294. 2:52:23branch one branch. And now if I want to
  4295. 2:52:27view the history of the changes that
  4296. 2:52:29I've made, I've already mentioned in the
  4297. 2:52:31previous part of the session that the
  4298. 2:52:32history button will allow me to do so.
  4299. 2:52:35So, I'm going to click on this history
  4300. 2:52:36button. And you can see that I made my
  4301. 2:52:40first commit 23 minutes ago and I made
  4302. 2:52:43my new commit 41 seconds ago. And there
  4303. 2:52:46is also a hash number, unique hash
  4304. 2:52:48identification number that allows me to
  4305. 2:52:51distinguish between both of these
  4306. 2:52:52changes. So, all of my commits that I'll
  4307. 2:52:55be making on this branch will be
  4308. 2:52:57available here. So, that's the main
  4309. 2:52:59point of a version control system, isn't
  4310. 2:53:02it? understanding and keeping a record
  4311. 2:53:04of all the changes that we're performing
  4312. 2:53:06in our files and our projects. So this
  4313. 2:53:08is gives full justice to the word
  4314. 2:53:10version control. So that is what GitHub
  4315. 2:53:13is all about. Now that we learn how to
  4316. 2:53:15make our first comet two, let's move on
  4317. 2:53:17to the next part of the session. Open
  4318. 2:53:20and merge pull requests. So what are
  4319. 2:53:22pull requests? Pull requests let you
  4320. 2:53:25tell other developers about changes
  4321. 2:53:27you've pushed to branch in a repository
  4322. 2:53:29on GitHub. So once a pull request is
  4323. 2:53:31open, you can acknowledge and review the
  4324. 2:53:34changes with collaborators and add
  4325. 2:53:36follow-up commits after which your
  4326. 2:53:38changes are merged into the base branch.
  4327. 2:53:40So there are two ways to create a pull
  4328. 2:53:42request. The first one being pull
  4329. 2:53:44requests from a fork repository and the
  4330. 2:53:46second one being pull request from a
  4331. 2:53:48branch within a repository. Currently in
  4332. 2:53:51this demo, we will work on the second
  4333. 2:53:52one that is pull request from a branch
  4334. 2:53:54within a repository. Now I'm simply
  4335. 2:53:56going to switch to my demo part. Okay.
  4336. 2:53:58Now currently I'm on my master branch.
  4337. 2:54:01I'm going to click on this pull request
  4338. 2:54:02option that's here. Now it says branch
  4339. 2:54:06one has had recent pushes 3 minutes ago.
  4340. 2:54:08Compare and pull request. I'm not going
  4341. 2:54:09to click on that. I'm going to simply
  4342. 2:54:11click on the new pull request option
  4343. 2:54:13here. So this will allow me to compare
  4344. 2:54:15the changes. There's a base branch and a
  4345. 2:54:18compare branch. The base branch is the
  4346. 2:54:20master branch and the compare branch I
  4347. 2:54:22will compare my master branch to my
  4348. 2:54:24branch one branch. So this notification
  4349. 2:54:27says that the merge between the branch
  4350. 2:54:30one branch and master branch is
  4351. 2:54:31definitely possible. So it's a green
  4352. 2:54:33signal. So if I scroll down I can view
  4353. 2:54:36the difference between both the
  4354. 2:54:37branches. So the left hand side
  4355. 2:54:39indicates the information that is
  4356. 2:54:41present on the master branch and the
  4357. 2:54:43right hand indicates the information
  4358. 2:54:45that is present in my branch one branch.
  4359. 2:54:48Plus sign indicates the additional
  4360. 2:54:51information that is present in my branch
  4361. 2:54:52one branch. I'm happy with this. So I'm
  4362. 2:54:55simply going to scroll up and create the
  4363. 2:54:57pull request and click on that. I can
  4364. 2:54:59also leave a comment and I can preview
  4365. 2:55:01the change. That's not necessary for
  4366. 2:55:03now. So I'm going to go ahead and create
  4367. 2:55:05the pull request. Now this will redirect
  4368. 2:55:08me to a page. So this page says that the
  4369. 2:55:12pull request has been opened and now I
  4370. 2:55:15can choose to merge this pull request.
  4371. 2:55:17That is I can merge the branch one
  4372. 2:55:21branch to my master branch. So it says
  4373. 2:55:24this branch has no conflicts with the
  4374. 2:55:25base branch. Merging can be performed
  4375. 2:55:27automatically and that's good news,
  4376. 2:55:29right? So I'm going to click on merge
  4377. 2:55:31pull request and I'm going to confirm my
  4378. 2:55:33merge. Update my readme text file. I'm
  4379. 2:55:36happy with that. So I'm just going to
  4380. 2:55:37confirm it. Now it says pull request
  4381. 2:55:40successfully merged and closed. You're
  4382. 2:55:42all set. The branch one branch can be
  4383. 2:55:44safely deleted. I'm not going to delete
  4384. 2:55:46the branch. I'm going to compare both of
  4385. 2:55:48the branches and see if my master branch
  4386. 2:55:52is exactly the same as my branch one
  4387. 2:55:55branch. So I'm going to click on this
  4388. 2:55:56edurea. I'm going to go to my main page
  4389. 2:55:59of my repository. So my master branch
  4390. 2:56:02has the additional piece of information
  4391. 2:56:04that says this is my first commit. Now
  4392. 2:56:06if I switch to my branch one branch, it
  4393. 2:56:09has the exact piece of information. So
  4394. 2:56:12the information that was present in my
  4395. 2:56:14branch one branch has been successfully
  4396. 2:56:17implemented to my master branch. So
  4397. 2:56:19that's all for the pull request part
  4398. 2:56:21two. We've reached the end of the
  4399. 2:56:23demonstration part. Now let's quickly
  4400. 2:56:25look at the case study of how Microsoft
  4401. 2:56:27implemented GitHub. I'm pretty sure most
  4402. 2:56:30of you have heard of Microsoft.
  4403. 2:56:31Microsoft Corporation is an American
  4404. 2:56:34multinational technology company. It
  4405. 2:56:36develops, manufactures, licenses,
  4406. 2:56:38supports and sells different computer
  4407. 2:56:40software, consumer electronics, personal
  4408. 2:56:43computers and other related services.
  4409. 2:56:46So, initially Microsoft was against the
  4410. 2:56:48use of the open-source because they held
  4411. 2:56:51very tightly to the internet protocol.
  4412. 2:56:53They were completely hesitant to adapt
  4413. 2:56:55to this new concept of sharing code to
  4414. 2:56:57the entire world. But in 2010, they
  4415. 2:57:00rethought this entire scenario and now
  4416. 2:57:02Microsoft is one of the biggest
  4417. 2:57:04contributors to open-source. Today,
  4418. 2:57:06about 2,000 to 25,000 Microsoft
  4419. 2:57:08engineers maintain TypeScript,NET,
  4420. 2:57:11Windows, Terminal, DARP, Helm, and more
  4421. 2:57:14than a thousand other open-source
  4422. 2:57:16projects. So, first what they did was
  4423. 2:57:18they released new processes in measured
  4424. 2:57:20containment. But later on they released
  4425. 2:57:22only license software. So here
  4426. 2:57:25developers can learn from the company's
  4427. 2:57:27source code but they couldn't really
  4428. 2:57:29build on it. Eventually the stigma died
  4429. 2:57:31and now even closed code likenet is open
  4430. 2:57:35source under an MIT license. Teams
  4431. 2:57:37realize that they need to accept
  4432. 2:57:39contributions to get feedback and learn
  4433. 2:57:41from other developers. To organize and
  4434. 2:57:44understand this approach Microsoft
  4435. 2:57:46created their open-source programs
  4436. 2:57:48office which enables distribution and
  4437. 2:57:50centralization of knowledge. So the OSPO
  4438. 2:57:54provides the resources and maintainers
  4439. 2:57:56to manage thousands of repositories and
  4440. 2:57:59contributors effectively on GitHub. Even
  4441. 2:58:01though Microsoft invests in its tools,
  4442. 2:58:04they expect other individuals and
  4443. 2:58:05organizations to lead the way. Microsoft
  4444. 2:58:08believes that GitHub's value isn't in
  4445. 2:58:10any one feature, but its entire
  4446. 2:58:13community. GitHub is the place to
  4447. 2:58:15collaborate. It's where everyone is and
  4448. 2:58:18where most of the entire world's open
  4449. 2:58:20source is already happening. It's not
  4450. 2:58:23just a feature but the whole thing.
  4451. 2:58:33So guys let's first talk about why we
  4452. 2:58:35need continuous integration. Let's talk
  4453. 2:58:37about a scenario where we are not using
  4454. 2:58:38continuous integration. Now when we work
  4455. 2:58:41in a development team there are multiple
  4456. 2:58:43developers. Now all the developers work
  4457. 2:58:45on different different components for a
  4458. 2:58:46project or for a code. A developer A may
  4459. 2:58:49be writing code thinking scenario. let's
  4460. 2:58:51say Python 1.0 and developer B will be
  4461. 2:58:53writing code thinking of a scenario 1.2
  4462. 2:58:561.3 and so on. One of the biggest
  4463. 2:58:58challenges that we face in an industry
  4464. 2:59:00is how to make sure that all the
  4465. 2:59:02developers codes get collaborated and
  4466. 2:59:04that we are having properly release
  4467. 2:59:06getting deployed. That is the biggest
  4468. 2:59:08challenge in the industry. Now another
  4469. 2:59:10challenge that most developers fail is
  4470. 2:59:12debugging. Now whenever you write a code
  4471. 2:59:14there are a lot of bugs and issues. Now
  4472. 2:59:16the code is often written thousands and
  4473. 2:59:18thousands of lines. Now if you don't
  4474. 2:59:20have any proper continuous integration
  4475. 2:59:21mechanism or a packaging mechanism,
  4476. 2:59:24you'll see it takes days, even weeks and
  4477. 2:59:26months to debug your code to make it
  4478. 2:59:28100% bug-free. Now that is a challenge
  4479. 2:59:30that really makes the development
  4480. 2:59:32process very slow. So how to test the
  4481. 2:59:34code? Now testing used to be a
  4482. 2:59:36monotonous task. Now their team used to
  4483. 2:59:38spend months of a life cycle to make the
  4484. 2:59:40code, complete the test code and make
  4485. 2:59:42sure it's bug-free. Now what used to
  4486. 2:59:44happen is guys two things. One is you
  4487. 2:59:46are not able to deliver on time and
  4488. 2:59:48secondly business never see value coming
  4489. 2:59:50out of the IT. If businesses see it not
  4490. 2:59:53adding value, it is not delivering
  4491. 2:59:55product on time, they will start
  4492. 2:59:56rethinking and giving a second thought.
  4493. 2:59:58Why do we need to invest so much money
  4494. 3:00:00in the IT industry or in the IT
  4495. 3:00:02software? These things were hampering
  4496. 3:00:04big time in the development and release
  4497. 3:00:06of modern-day deployment software
  4498. 3:00:07cycles. In the modern day world, we want
  4499. 3:00:10to make sure our deployment cycles are
  4500. 3:00:12robust. We're able to get the main need
  4501. 3:00:14of the market and deploy the product as
  4502. 3:00:16soon as possible. But with this
  4503. 3:00:18approach, we're not using the CI tools.
  4504. 3:00:20It used to take 6 months to develop a
  4505. 3:00:22product, deploy a product and make it
  4506. 3:00:24bug-free. Now things change drastically
  4507. 3:00:26when we start using continuous
  4508. 3:00:27integration. Now using continuous
  4509. 3:00:29integration, we can deploy codes at the
  4510. 3:00:31quickest. Amazon for instance deploys
  4511. 3:00:34code every 11.6 seconds. Now how is that
  4512. 3:00:37possible if you ask? It's because they
  4513. 3:00:39are using the continuous integration
  4514. 3:00:41mechanism. using CI tools like genkins
  4515. 3:00:44where we can automate the process like
  4516. 3:00:45building, packaging, deployment, testing
  4517. 3:00:47and so on. So that we can do all these
  4518. 3:00:49things with a click of a button in a
  4519. 3:00:51matter of seconds. CI process helps us
  4520. 3:00:54to deploy multiple releases parallelly.
  4521. 3:00:56Now in one day we can do thousands and
  4522. 3:00:58thousands of release without impacting
  4523. 3:01:00our environment and making sure these
  4524. 3:01:02release are in line with our
  4525. 3:01:04requirement. The CI tool has an awesome
  4526. 3:01:06notification mechanism where it notifies
  4527. 3:01:08instantly of any success or failures
  4528. 3:01:10happening. So that if I have to debug
  4529. 3:01:12the code or troubleshoot it, I will know
  4530. 3:01:14exactly at the pinpoint location where
  4531. 3:01:16it is failing. You can do multiple
  4532. 3:01:18notification management mechanism like
  4533. 3:01:20an email and SMS any ITSM tools. Now all
  4534. 3:01:24those modern ways of notification are
  4535. 3:01:26possible using the CI tools like
  4536. 3:01:28Genkins. Now we integrate these CI tools
  4537. 3:01:30like Genkins with modern-day build and
  4538. 3:01:33packaging tools like Maven and Gradel so
  4539. 3:01:35that we can automate the common problem
  4540. 3:01:37which developers spend most of their
  4541. 3:01:39time on. Now developers spend half of
  4542. 3:01:41their life cycle like packaging their
  4543. 3:01:42code, code review, code deployment, unit
  4544. 3:01:45testing. Now all those things can be
  4545. 3:01:46automated and can be done with a click
  4546. 3:01:48of a button using these CI tools. Now
  4547. 3:01:51what is continuous integration? Now we
  4548. 3:01:53have talked about how it helped to save
  4549. 3:01:55time, how it helped to save the energy
  4550. 3:01:58and how it helped to make release more
  4551. 3:01:59frequent and it help us to streamline
  4552. 3:02:01the process. Now what actually is
  4553. 3:02:03continuous integration? Now if I go
  4554. 3:02:05traditionally continuous integration is
  4555. 3:02:07basically you can say a process that
  4556. 3:02:09help us to combine or make smoothen the
  4557. 3:02:11automation of task like compiling the
  4558. 3:02:14code doing the testing and deploying the
  4559. 3:02:16code into our life cycles. So how does
  4560. 3:02:18this continuous integration work? So
  4561. 3:02:20developers who works on projects
  4562. 3:02:22generally commit their code in any
  4563. 3:02:24version tools like GitHub, GitLab,
  4564. 3:02:26Gitbucket, SVN etc. So using continuous
  4565. 3:02:29integration we pull the code from the
  4566. 3:02:31version control system like git for
  4567. 3:02:32example. Now we automate the process
  4568. 3:02:34like code compiling, code testing, code
  4569. 3:02:37review and then finally deploy the code
  4570. 3:02:39in the lowest life cycle environment.
  4571. 3:02:41You can say continuous integration is
  4572. 3:02:43sort of a development practice where
  4573. 3:02:45developers pull the code from the
  4574. 3:02:46version control system and make the code
  4575. 3:02:48deploy in the lower life cycle
  4576. 3:02:50environment. Now the beauty of using
  4577. 3:02:52these CI tool is we can automate the
  4578. 3:02:54process in such a way that whenever a
  4579. 3:02:56developers make a new comet or a new
  4580. 3:02:58change in the version control system
  4581. 3:03:00tools, we can create a sort of a
  4582. 3:03:01pipeline and the pipeline automatically
  4583. 3:03:03picks the code from the VCS tools and
  4584. 3:03:06compile it and then deploy the software.
  4585. 3:03:08Another good thing about it is it does
  4586. 3:03:10not require any human intervention. So
  4587. 3:03:13once I have set up a pipeline then I
  4588. 3:03:15don't need to worry about running the
  4589. 3:03:16code again and again or making any
  4590. 3:03:18changes. It automatically happens in a
  4591. 3:03:21fully automated process as I mentioned a
  4592. 3:03:23while back. Now we can use the process
  4593. 3:03:25whenever a new comet happens or you can
  4594. 3:03:27run it on a schedule basis or something.
  4595. 3:03:30Now CI or continuous integration was
  4596. 3:03:32first time proposed in 1991 as part of
  4597. 3:03:35the extreme program concept. At that
  4598. 3:03:38time it was not adopted so well but in
  4599. 3:03:40the modern day industry it has become
  4600. 3:03:41the bread and butter of smoothing up
  4601. 3:03:43release or for our development process.
  4602. 3:03:46In a modern day world continuous
  4603. 3:03:47integration can be say as a practice of
  4604. 3:03:49merging all developers working copy to a
  4605. 3:03:52mainstream where you can develop and
  4606. 3:03:53deploy the code multiple times in the
  4607. 3:03:55same day with as many changes as
  4608. 3:03:57possible. Now there is no limit of how
  4609. 3:04:00many lines of code. It can be tens and
  4610. 3:04:02thousands of lines of code which can be
  4611. 3:04:04compiled multiple times throughout the
  4612. 3:04:06iteration. Let's see a case study where
  4613. 3:04:08we try to see how things changed for an
  4614. 3:04:10organization after it adopted to the CI
  4615. 3:04:13or continuous integration mode. Here we
  4616. 3:04:16have picked up an example of Adope to
  4617. 3:04:17see how it helped in the development
  4618. 3:04:19process. Adope realized at some point of
  4619. 3:04:22the time that they have not released
  4620. 3:04:23very frequently. When this happened
  4621. 3:04:25their market presentation share was down
  4622. 3:04:27as they were not following the country's
  4623. 3:04:29integration approach. Now they were
  4624. 3:04:31using the native method of compiling the
  4625. 3:04:33code, debugging the code, testing the
  4626. 3:04:35code because of which they were noticing
  4627. 3:04:36that it used to take up to 6 months
  4628. 3:04:39release updates. Now 6 months was a long
  4629. 3:04:41duration whereas their competitors were
  4630. 3:04:44releasing very frequently which was
  4631. 3:04:46helping them to capture the market
  4632. 3:04:47share. Adobe decided some point at a
  4633. 3:04:49time that they need to change the
  4634. 3:04:50software development and deployment
  4635. 3:04:52strategies and they tried to adopt the
  4636. 3:04:54continuous integration mechanism. Once
  4637. 3:04:57they adopted the continuous integration
  4638. 3:04:58mechanism, they found that the response
  4639. 3:05:00time was a lot better and a lot faster.
  4640. 3:05:03Now they were able to deploy the updates
  4641. 3:05:04more frequently with every times a
  4642. 3:05:06change was made by a developer or new
  4643. 3:05:08release was being released and it helped
  4644. 3:05:11them reduce the response times and they
  4645. 3:05:13were 60% more faster. The development
  4646. 3:05:15teams were getting more effective and
  4647. 3:05:17they were able to really deploy losses
  4648. 3:05:19far more in a better and structured way
  4649. 3:05:22than what they were doing without using
  4650. 3:05:23CI. You can see how CI helps industry.
  4651. 3:05:27Amazon is the best case scenario. Amazon
  4652. 3:05:29in modern day scenario deploy quotes
  4653. 3:05:31every 11.6 seconds almost five times
  4654. 3:05:34every minutes. Now this is all possible
  4655. 3:05:36using the continuous integration.
  4656. 3:05:39Now what is Genkins? Now we've talked
  4657. 3:05:41about what is CI. We've talked about why
  4658. 3:05:44we need CI. Now let's talk about what is
  4659. 3:05:46Genkins and how does Genkins fit in this
  4660. 3:05:49particular picture. Now, Genkins is an
  4661. 3:05:52open-source automation server which
  4662. 3:05:54helps us to automate the process of
  4663. 3:05:55development relating to testing,
  4664. 3:05:57deployment, packaging and others. It is
  4665. 3:06:00a serverbased systems that run on
  4666. 3:06:02software Apache Tomcat. Now, it support
  4667. 3:06:04VCS store like Git, Big Bucket, etc. It
  4668. 3:06:08also support build automation tools like
  4669. 3:06:10Apache, Maven and it helps to make and
  4670. 3:06:12facilitate our continuous integration
  4671. 3:06:14and continuous delivery process. Now,
  4672. 3:06:17Genkins was first released in the year
  4673. 3:06:192011 and it's completely open-source
  4674. 3:06:21software as a part of the MIT license.
  4675. 3:06:24Genkins is a plug-in based profile. In
  4676. 3:06:27Genkins, you have got plug-in which
  4677. 3:06:29basically used to interact with
  4678. 3:06:30different different tools and
  4679. 3:06:31components. In Genkin, plug-in are
  4680. 3:06:34primary released in language other than
  4681. 3:06:36Java. Plugins are available to integrate
  4682. 3:06:39Genkins with most version control system
  4683. 3:06:42tools and most databases. Using these
  4684. 3:06:45plugins we set up purposes for example
  4685. 3:06:47unit testing. Now you can do compiling,
  4686. 3:06:49you can do packaging. Now you can create
  4687. 3:06:51some reports. Now you can do some
  4688. 3:06:53lodging. Now all these things are
  4689. 3:06:55possible using plugins and genkins.
  4690. 3:06:58Another important component that we've
  4691. 3:06:59talked about in Genkins. Apart from
  4692. 3:07:02plugins is genkins notification which we
  4693. 3:07:05call it as mailer. Using mailer guys we
  4694. 3:07:08can configure email notification. For
  4695. 3:07:10instance, you can configure scenario.
  4696. 3:07:13For example, you want mail notification
  4697. 3:07:14when bill is successful. Now, all these
  4698. 3:07:17things can be done using mailer as the
  4699. 3:07:19genkins component. Another important
  4700. 3:07:21component in genkins is the SSH agent.
  4701. 3:07:24Genkins also follow a typical master
  4702. 3:07:27slave topology. Now, why do we need a
  4703. 3:07:29master slave topology and a CI tools
  4704. 3:07:32like genkins? Now, when you work in the
  4705. 3:07:34organization, we have got multiple teams
  4706. 3:07:37which you want to build and deploy their
  4707. 3:07:38own pipeline or deploy their own
  4708. 3:07:40software project codes. Now teams don't
  4709. 3:07:43want the piece of code to be run on a
  4710. 3:07:44server which is owned by some other
  4711. 3:07:46teams. So what we can do is we can set
  4712. 3:07:48up a master slave topology where genkins
  4713. 3:07:51may run on a server X but you can
  4714. 3:07:53connect multiple other servers which
  4715. 3:07:55will act as a slave. So when you are
  4716. 3:07:57deploying a code executing a pipeline
  4717. 3:07:59you can run those codes on those XY Z
  4718. 3:08:02servers. Now this is a beauty of using
  4719. 3:08:04Genkins master slave topology. Now
  4720. 3:08:07another good thing about genkins is
  4721. 3:08:09genkins can be deployed on any operating
  4722. 3:08:11system. In Genkins you can use in a
  4723. 3:08:14window mode, a Linux mode, a Mac mode or
  4724. 3:08:16now all these genkins jobs can be
  4725. 3:08:18deployed on any operating system. It is
  4726. 3:08:20not at all dependent. Now both master
  4727. 3:08:22and safe needs to be of the same
  4728. 3:08:24operating system. Another important core
  4729. 3:08:26component of genkins call is Java doc.
  4730. 3:08:29This is our plugin in genkins which
  4731. 3:08:32basically is a part of a genkins score
  4732. 3:08:34that help us to publish results like
  4733. 3:08:35bill action, bill directory, what is the
  4734. 3:08:38expected bill output. All those things
  4735. 3:08:40that we see in genkins they all are
  4736. 3:08:43happening using Java. Now let's talk
  4737. 3:08:45about security injection. Apart from
  4738. 3:08:48that genkins have other sorts of
  4739. 3:08:50authorization like project based
  4740. 3:08:52strategy, metricbased authorization
  4741. 3:08:54which help us to make genkins more
  4742. 3:08:57secure. We'll talk more about this when
  4743. 3:08:59we talk about the genkins overall. So as
  4744. 3:09:01you can see on the diagram, genkins is
  4745. 3:09:03pulling code from the source code
  4746. 3:09:05control system like git, big bucket etc.
  4747. 3:09:08To start deploying it in genkins, we
  4748. 3:09:10have got a notification management
  4749. 3:09:11system using mailer where if the bit is
  4750. 3:09:14successful, we get a war file or a zip
  4751. 3:09:16file. We can define how we want the
  4752. 3:09:18build to be created and if it is a
  4753. 3:09:20failure it will send the notification
  4754. 3:09:22management to a developer that something
  4755. 3:09:24happened wrongly with the specific code
  4756. 3:09:26lines and you need to rectify your
  4757. 3:09:28codes. Now that is the beauty of using
  4758. 3:09:30genkins. So Genkins is still the bread
  4759. 3:09:33and butter in the industry. There are
  4760. 3:09:35some genkins competitors also in the
  4761. 3:09:37market like GitLab Jenkins and some
  4762. 3:09:39others but by default Genkins is the to
  4763. 3:09:42go tool for the CI industry. So far
  4764. 3:09:45we've talked about genkins. Now let's
  4765. 3:09:47talk about what is pipelining in
  4766. 3:09:49Genkins. Now let's say I want to deploy
  4767. 3:09:52a code. The code may have certain steps
  4768. 3:09:54like first step I'm building the code.
  4769. 3:09:56Second step I'm compiling then code
  4770. 3:09:58reviewing then packaging then deploying.
  4771. 3:10:01So how do I automate a combine of all
  4772. 3:10:03these steps which can be executed in one
  4773. 3:10:05go. Now to deploy all the scenario we
  4774. 3:10:08have created a delivery pipeline. Now
  4775. 3:10:10pipeline is nothing but it's a
  4776. 3:10:11combination of different different steps
  4777. 3:10:13or different tasks that we need to
  4778. 3:10:15perform in order to deploy our code. Now
  4779. 3:10:17using a pipeline instead of doing this
  4780. 3:10:19task or code deployment manually we
  4781. 3:10:21combine them and deploy them as a sort
  4782. 3:10:23of one common approach of a delivery
  4783. 3:10:25pipeline. Now there are multiple ways on
  4784. 3:10:28how you can create a pipeline. The two
  4785. 3:10:30most common ways or common approaches of
  4786. 3:10:32using a pipeline as you can see from
  4787. 3:10:34scenario a declarative approach and the
  4788. 3:10:37second one that is used in the industry
  4789. 3:10:39is a scripted approach. This particular
  4790. 3:10:41is an example of a genkins pipeline
  4791. 3:10:43script. Here you are saying we are first
  4792. 3:10:46doing a stage called build stage where
  4793. 3:10:48we will be combining multiple tasks like
  4794. 3:10:50first we are using Java then we are
  4795. 3:10:52printing something called echohello
  4796. 3:10:53pipeline then we using Maven as the
  4797. 3:10:56build automation tool and try to deploy
  4798. 3:10:58a package and then we are doing a shell
  4799. 3:11:00script output of what all things are
  4800. 3:11:02present in that particular directory
  4801. 3:11:04structure. This is a typical example of
  4802. 3:11:07syntax of how to create a pipeline in
  4803. 3:11:09genkins. Now let's talk about the two
  4804. 3:11:11predominant pipeline that are used in
  4805. 3:11:13the IT industry scripted and
  4806. 3:11:15declarative. Now let's talk about what
  4807. 3:11:17is scripted and declarative and how they
  4808. 3:11:20are different from each other. A
  4809. 3:11:22scripted pipeline is a traditional
  4810. 3:11:24genkins pipeline approach and a
  4811. 3:11:26declarative pipeline is a modern-day
  4812. 3:11:28pipeline approach that is used in the
  4813. 3:11:29industry. In a scripted pipeline, the
  4814. 3:11:32syntax was first strict while in
  4815. 3:11:34declarative pipeline view something
  4816. 3:11:35called as Groovy syntax. When you use a
  4817. 3:11:38declarative pipeline, you can get a code
  4818. 3:11:40from any version system tool like git.
  4819. 3:11:43You can create something called as
  4820. 3:11:44genkins file and you can download
  4821. 3:11:46genkins file from a virtual constant
  4822. 3:11:48tool and that can be used to run your
  4823. 3:11:50genkins code. When you use a scripted
  4824. 3:11:53pipeline, you define a code something
  4825. 3:11:54called as a node block. But one
  4826. 3:11:56declarative pipeline will define a code
  4827. 3:11:58in a pipeline block as we can see in the
  4828. 3:12:00previous example. Now let's talk about
  4829. 3:12:02what is genkins file and how it can be
  4830. 3:12:05used. Now genkins file are like a text
  4831. 3:12:08file where you define your entire
  4832. 3:12:10structure and syntax of your genkins.
  4833. 3:12:12You know only how to download the file
  4834. 3:12:14and in particular you can just give the
  4835. 3:12:16part of your git repo. If it is true
  4836. 3:12:18then get the credential the private repo
  4837. 3:12:21and it can pull all the contents from
  4838. 3:12:22there and just execute your code. It is
  4839. 3:12:25a modern deployment mechanism that we
  4840. 3:12:27use when we work with a genkins
  4841. 3:12:29pipeline. Using genkins pipeline we use
  4842. 3:12:31certain things which help us. Let's talk
  4843. 3:12:33about this. First is code review. Now
  4844. 3:12:37you do a genkins pipeline. You can
  4845. 3:12:38easily review your code. Your code can
  4846. 3:12:40be reviewed by multiple developers
  4847. 3:12:42before being executed. Now how that
  4848. 3:12:45works is in Genkins file they are stored
  4849. 3:12:47generally in a version control tool like
  4850. 3:12:49Git. You can put something called as a
  4851. 3:12:51pull request for a code review. Now
  4852. 3:12:53different members of your team can
  4853. 3:12:55review the code before you actually pull
  4854. 3:12:57the Jenkins file and deploy it. Now you
  4855. 3:12:59can do an audit trail or refer to as a
  4856. 3:13:01long audit. You can lock each and every
  4857. 3:13:03step's output that is being executed as
  4858. 3:13:06part of the genkins file and can see
  4859. 3:13:08what is happening when the genkins file
  4860. 3:13:09is getting executed. It's sort of like a
  4861. 3:13:12verbus lock. Then you can find a single
  4862. 3:13:14place who store all your data or all
  4863. 3:13:16your outputs. You don't need to have
  4864. 3:13:18developers scattered here and there and
  4865. 3:13:20writing their own codes for executing a
  4866. 3:13:22genkins pipeline. whole organization can
  4867. 3:13:25approach a genkins file mythology where
  4868. 3:13:27code can be stored in a VCS tools and
  4869. 3:13:29from there the code can be downloaded
  4870. 3:13:31and can work as a single source for your
  4871. 3:13:33entire pipeline. Now let's talk about
  4872. 3:13:36the genkins workflow in particular. How
  4873. 3:13:38does genkins workflow work? Genkins
  4874. 3:13:41workflow always start with a version
  4875. 3:13:42control system or you can say a source
  4876. 3:13:45code repository. Multiple developers
  4877. 3:13:47collaborate and they put their code in a
  4878. 3:13:49source code system like git from where
  4879. 3:13:51genkins try to pull the data from that
  4880. 3:13:53source control system. For your system
  4881. 3:13:55there is no mandry or the source code
  4882. 3:13:57needs to be git. It can be big bucket
  4883. 3:14:00svn whatever your organization uses with
  4884. 3:14:02genkins server. Now we execute tasks
  4885. 3:14:05like build deploy compiling packaging
  4886. 3:14:08code reviewing. Now all these things
  4887. 3:14:09happen using genkins server where your
  4888. 3:14:11genkins actually install was running.
  4889. 3:14:14Now genkins server can be any operating
  4890. 3:14:16system. It can be a window machine,
  4891. 3:14:18Ubuntu machine, Linux machine or a Mac
  4892. 3:14:21as well. It can be any operating system
  4893. 3:14:23of today's modern world availability.
  4894. 3:14:26Using this genkins server will execute
  4895. 3:14:28our different different task and
  4896. 3:14:29scenarios. In Genkins server, we use the
  4897. 3:14:32mail functionality for the feedback
  4898. 3:14:34mechanism. We notify developers the
  4899. 3:14:36commit or the code deployment
  4900. 3:14:38successfully or it is a failure. It also
  4901. 3:14:41has some challenges. Now what can be
  4902. 3:14:42done using the feedback mechanism?
  4903. 3:14:44Possibly using the genkins server. So
  4904. 3:14:47using genkins server we always first
  4905. 3:14:49deploy the code on a lower life cycle
  4906. 3:14:51environment. That is recommended
  4907. 3:14:53standard practice. So what we do is we
  4908. 3:14:55first deploy a QA server on a testing
  4909. 3:14:58server and once the code deployment is
  4910. 3:15:00successful on the lower life cycle then
  4911. 3:15:02we go ahead and deploy the code on a
  4912. 3:15:04production server. That is how the
  4913. 3:15:06entire genkins workflow mainly
  4914. 3:15:08particular interact first. Now guys,
  4915. 3:15:10let's talk about the Genkins
  4916. 3:15:11installation and how to install Genkins
  4917. 3:15:13in a machine. As you all know, Genkins
  4918. 3:15:16by default run on 80080. So, please make
  4919. 3:15:19sure that if you're using any VMs in
  4920. 3:15:21your organization, the port 80805
  4921. 3:15:24settings are open and configured so that
  4922. 3:15:26it can be accessible. I will get into
  4923. 3:15:28some of the prerequisites required for
  4924. 3:15:30installing Genkins post which will go
  4925. 3:15:33ahead and install Genkins on a window
  4926. 3:15:35box. Now there are a few first
  4927. 3:15:37configuration that needs to be done and
  4928. 3:15:40I'll be covering those as well. So once
  4929. 3:15:42I have genkins installed and configured
  4930. 3:15:44properly I will get into the user
  4931. 3:15:46administrative part then create few
  4932. 3:15:48users and I will get into some of the
  4933. 3:15:50plugins for setting up various kinds of
  4934. 3:15:52access permissions for this users and
  4935. 3:15:55also put in some of the freestyle jobs.
  4936. 3:15:57Freestyle job is basically nothing but a
  4937. 3:16:00very simple job and I will also show you
  4938. 3:16:02the powerfulness of Genkins by
  4939. 3:16:04scheduling this particular job to run
  4940. 3:16:06based upon time schedule. Then I will
  4941. 3:16:09also connect Genkins with GitHub. Now
  4942. 3:16:11GitHub is a source code source code
  4943. 3:16:13repository where I've got some
  4944. 3:16:14repositories put up there. So using
  4945. 3:16:16genkins I will connect to GitHub pull up
  4946. 3:16:19a repository that is existing on GitHub
  4947. 3:16:22onto the genkins box and then run a few
  4948. 3:16:24commands to build this particular
  4949. 3:16:26repository that is pulled from the
  4950. 3:16:28genkins sending out emails. Now it's a
  4951. 3:16:30very very important configuration of
  4952. 3:16:32genkins or any other continuous
  4953. 3:16:34integration server for that particular
  4954. 3:16:37matter. Now whenever there is any
  4955. 3:16:39notification that has been sent as a
  4956. 3:16:41part of either build going bad or by
  4957. 3:16:43being good or building propagate to some
  4958. 3:16:46environment and all these scenarios now
  4959. 3:16:48you will need the country's integration
  4960. 3:16:50servers to be sending out notification.
  4961. 3:16:52So I will get into the bit of details of
  4962. 3:16:54how to configure the genkins for sending
  4963. 3:16:56out emails. Now I will also get into the
  4964. 3:16:59scenario where I will have a web
  4965. 3:17:00application such as a maven based Java
  4966. 3:17:03web application which will pull from the
  4967. 3:17:05GitHub repository and I will deploy it
  4968. 3:17:08into the Tomcat server. Now the Tomcat
  4969. 3:17:10server will be locally running on the my
  4970. 3:17:12system. Eventually I will get into the
  4971. 3:17:14other very very important topic which is
  4972. 3:17:16the master slave configuration. It's a
  4973. 3:17:18very important and pretty interesting
  4974. 3:17:20topics where distributed builds is
  4975. 3:17:22achieved using a master slave
  4976. 3:17:24configuration. Now all this can be very
  4977. 3:17:27very easily based up using a plug-in. So
  4978. 3:17:30this is what I'm going to be covering as
  4979. 3:17:31a part of this tutorial. Now Genkins is
  4980. 3:17:34a web application that is written in
  4981. 3:17:36Java and there are various ways in which
  4982. 3:17:38you can use and install genkins. Now
  4983. 3:17:40I've listed a popular three mechanism in
  4984. 3:17:42which Genkins is usually installed in
  4985. 3:17:44any system. Now the topmost one is a
  4986. 3:17:47window or a Linux based services. So if
  4987. 3:17:49at all you have a window like the way I
  4988. 3:17:51have and I'm going to use this mechanism
  4989. 3:17:54for this demo. So I will download the
  4990. 3:17:56MSI installer. So whenever you start as
  4991. 3:17:59a service it goes out and nicely install
  4992. 3:18:02all that is required for my genkins and
  4993. 3:18:04I have a service that can be started or
  4994. 3:18:07stopped based upon my needs. Any flavors
  4995. 3:18:09of Linux is one of many other ways of
  4996. 3:18:12running genkins in downloading this
  4997. 3:18:14generic war file. And as long as you
  4998. 3:18:16have a JDK installed, you can launch
  4999. 3:18:19this war file by the command opening up
  5000. 3:18:21a command box prompt or shell prompt
  5001. 3:18:23defer to later on Linux box specifying
  5002. 3:18:26jar and the name of this war file
  5003. 3:18:28typically bringing up your web
  5004. 3:18:30application and you know you can
  5005. 3:18:32continue with your installation. Now the
  5006. 3:18:34only thing being if at all you want to
  5007. 3:18:36stop using genkins you just go ahead and
  5008. 3:18:38close this prompt even into a control C
  5009. 3:18:40and then bringing down this prompt and
  5010. 3:18:42in Genkins server and then you also have
  5011. 3:18:44the other older versions of genkins
  5012. 3:18:47where run popularly using this way in
  5013. 3:18:49which you already have a Java based web
  5014. 3:18:51server running up and running. So you
  5015. 3:18:54kind of drop in this war file into the
  5016. 3:18:56root folders or the HTTP root folder of
  5017. 3:19:00your web server. So genkins will explore
  5018. 3:19:02and kind of bring up your application.
  5019. 3:19:04All user credentials or user
  5020. 3:19:06administration is all taken care by the
  5021. 3:19:08apache or the Tomcat server or the web
  5022. 3:19:11server on which the genkins is running.
  5023. 3:19:14This was a very old way of running but
  5024. 3:19:16still some people use it because if they
  5025. 3:19:18don't want to maintain two servers now
  5026. 3:19:20if they already have a Java web service
  5027. 3:19:23which is being nicely maintained and
  5028. 3:19:25backup. Now Genkins can run a test to
  5029. 3:19:27it. All right. So either ways it doesn't
  5030. 3:19:29matter however you're going to bring up
  5031. 3:19:31your Genkins instance. The way we're
  5032. 3:19:32going to operate genkins is all going to
  5033. 3:19:34be very very same or similar but the
  5034. 3:19:37subtle change in terms of user
  5035. 3:19:38administration. Now if at all you're
  5036. 3:19:40launching it through any other web
  5037. 3:19:42server which will take care of the user
  5038. 3:19:44administration otherwise all the command
  5039. 3:19:46or all the configuration or the way in
  5040. 3:19:48which I'm going to run this demo is
  5041. 3:19:50going to be same across any of these
  5042. 3:19:52installation. All right, as I mentioned
  5043. 3:19:54earlier, Genkins is nothing but a simple
  5044. 3:19:56web application that is run in Java. So
  5045. 3:19:59all that is need is Java prelyably JDK1
  5046. 3:20:02or 17 with a 2GB RAM which is amend RAM
  5047. 3:20:06for running the genkins and also like
  5048. 3:20:08any other open-source tool sets when you
  5049. 3:20:10install JDK ensure that you set in the
  5050. 3:20:12environment variables. Now Java home to
  5051. 3:20:15point in the right directory. Now this
  5052. 3:20:17is something very specific to JDK. Now,
  5053. 3:20:19but for any other open-source tools that
  5054. 3:20:21I've installed, there is always a
  5055. 3:20:23preferred environment variable that we
  5056. 3:20:25got to set in which is specific to that
  5057. 3:20:28particular tools that you're going to
  5058. 3:20:29use. This is a generic thing that there
  5059. 3:20:31is for you to know. Now, for any other
  5060. 3:20:33open-source project because the
  5061. 3:20:35open-source project discover themselves
  5062. 3:20:37by using the environment variables. So,
  5063. 3:20:39as a general practice or a good
  5064. 3:20:41practice, always set these environment
  5065. 3:20:43variables according. So I already have a
  5066. 3:20:46JDK 17 installed on my system. But in
  5067. 3:20:48case you do not, what I will recommend
  5068. 3:20:50is just navigate to the browser to the
  5069. 3:20:53Oracle homepage. Just type in your
  5070. 3:20:54search for install JDK mm page. Then
  5071. 3:20:57you'll have the accept the license
  5072. 3:20:59agreement. Now what I will recommend is
  5073. 3:21:02just navigate on your browser to the
  5074. 3:21:04Oracle homepage and just type in your
  5075. 3:21:06search install JDK. Now you're going to
  5076. 3:21:09navigate to the down here and install
  5077. 3:21:11the 64 installer that is the.exe. exe.
  5078. 3:21:14Now let me show you once I have
  5079. 3:21:16installed what I've done with regards to
  5080. 3:21:18the part. So if you get into this
  5081. 3:21:20environment variable so I have just set
  5082. 3:21:23in the Java home variable. Now you can
  5083. 3:21:25go back to your this PC go to C programs
  5084. 3:21:30to Java and then copy this part. Then
  5085. 3:21:33click in the environment variables. I'll
  5086. 3:21:36select the first one that is the edit
  5087. 3:21:38the system environment variable and
  5088. 3:21:41we'll click on the environment variables
  5089. 3:21:43and we'll set a path here. As you can
  5090. 3:21:45see here, Java home and we'll go down
  5091. 3:21:47here on the path. So this is the path
  5092. 3:21:50for your Java home screen. So simply
  5093. 3:21:53click on edit and click on new and we'll
  5094. 3:21:56just paste the path which we have just
  5095. 3:21:58copied from the install.exe Java. So
  5096. 3:22:02I've already installed it as you can see
  5097. 3:22:04the C program file. So I simply click on
  5098. 3:22:06okay. So the only difference between the
  5099. 3:22:08system variables and the user variables
  5100. 3:22:10for demon is this is control the whole
  5101. 3:22:13system of the JDK the system variable.
  5102. 3:22:16So we want to edit in the system
  5103. 3:22:18variables. So the path I've been
  5104. 3:22:20changing here is in the system
  5105. 3:22:22variables. All right. Now the home
  5106. 3:22:24variable is where I have the sequels and
  5107. 3:22:26program friend of the JDK17.
  5108. 3:22:29You see this is my Java home. All right.
  5109. 3:22:32Now one thing to do is ensure that in
  5110. 3:22:33case you run Java or Java C for a
  5111. 3:22:36command you ensure that you also add the
  5112. 3:22:38part into this part variable right so
  5113. 3:22:41you see somewhere I will say there you
  5114. 3:22:43got the colon program files now you
  5115. 3:22:45click on that and I'll show you the bin
  5116. 3:22:48as well which I've copied and paste it
  5117. 3:22:50here as well okay so simply just go back
  5118. 3:22:54so that's how you get the bin copy this
  5119. 3:22:56path and paste it here which I've
  5120. 3:22:58already done it so I'll just simply
  5121. 3:23:00click on Okay. Okay. And okay. Now let
  5122. 3:23:04me minimize the screen as well. So the
  5123. 3:23:07next thing we need to do now is go to
  5124. 3:23:09cmd to check if your Java has been
  5125. 3:23:12installed on your system. So you simply
  5126. 3:23:14type on java space/ version and you can
  5127. 3:23:19see I already have Java version 17.0.5
  5128. 3:23:23installed in my system and it's up and
  5129. 3:23:25running. So as you can see the runtime
  5130. 3:23:27environments and this is a 64-bit
  5131. 3:23:30server. This is a VM virtual machine.
  5132. 3:23:33Okay. So, as you can see, Java is
  5133. 3:23:35installed in my system and it's up and
  5134. 3:23:38ready. So, the next thing we need to do
  5135. 3:23:40now is install Genkins. I'm just
  5136. 3:23:43canceling that and open a new browser
  5137. 3:23:46again, new tab, and type in genkins.io.
  5138. 3:23:50Now, as you can see, this is the
  5139. 3:23:51homepage of Genkins. All right. So, you
  5140. 3:23:55can even read the documentation or you
  5141. 3:23:57can simply click on download will take
  5142. 3:23:59you to this page. Now here you can see
  5143. 3:24:01the hardware and software requirements.
  5144. 3:24:02Then what packaging is required for
  5145. 3:24:05downloading the installing genkins. So
  5146. 3:24:08this is the part for on the left hand
  5147. 3:24:09side we have the LTS and on the other
  5148. 3:24:12side we have the which is a more stable
  5149. 3:24:14and on the right hand side we have the
  5150. 3:24:16regular weekly releases. So we'll
  5151. 3:24:19definitely go for the stable LTS
  5152. 3:24:22download which is a long-term support
  5153. 3:24:24which is released every 12 weeks whereas
  5154. 3:24:26the regular releases changes weekly. So
  5155. 3:24:29I'll be going ahead and scroll down and
  5156. 3:24:32click on window. So as you can see there
  5157. 3:24:35are different parameters where you can
  5158. 3:24:36do you can have on dockers then you have
  5159. 3:24:38Ubuntu then you have the CentOS Fedora
  5160. 3:24:41or the Windows like I'm going to install
  5161. 3:24:43in this case in this demo. Then but we
  5162. 3:24:45have different aspects as well like the
  5163. 3:24:47free BSD the Gentos Mac OS etc. So as
  5164. 3:24:51you can see on the first stop we have
  5165. 3:24:52the dotwire we can even install that and
  5166. 3:24:55unzip that. But in this case in this
  5167. 3:24:57demo part we'll simply click on Windows.
  5168. 3:25:00So go on ahead and click window guys.
  5169. 3:25:07Now you can see the download has
  5170. 3:25:08started. So we just wait a few seconds
  5171. 3:25:10until it's done installing the MSI. And
  5172. 3:25:13as you can see it's done. So this is my
  5173. 3:25:15downloading genkins instance. So what
  5174. 3:25:18I'll be doing now is simply click on
  5175. 3:25:20next. Now as you can see guys on top
  5176. 3:25:22here it's written the genkins run on
  5177. 3:25:24local host 80080. So keeping that in
  5178. 3:25:27mind click on next. As you can see this
  5179. 3:25:30is where our genkins is installed that
  5180. 3:25:32is in C and program files and by the
  5181. 3:25:35name genkins. So you can always change
  5182. 3:25:38this location where the genkins has been
  5183. 3:25:40installed but in this case I'll rather
  5184. 3:25:43keep it on the C drive itself. So the
  5185. 3:25:45next thing you need to do now is we'll
  5186. 3:25:47run server as a local system so that we
  5187. 3:25:49don't have to put any administrator or
  5188. 3:25:51the password. And so the next step now
  5189. 3:25:53is we test the port. So as you can see
  5190. 3:25:55you got a green tick mark. So we'll
  5191. 3:25:57click on next. Now you can see here that
  5192. 3:25:59there is no it has failed because there
  5193. 3:26:01is no compatible Java version 11 or 17.
  5194. 3:26:04But as you can remember guys, we have
  5195. 3:26:06already installed Java 17 and we have
  5196. 3:26:09already verified that we're using the
  5197. 3:26:11command prompt where it has shown us the
  5198. 3:26:13versions Java 17. So what you need to do
  5199. 3:26:16is simply click on change and select the
  5200. 3:26:18Java 17 from Java 8. So simply click on
  5201. 3:26:22Java 17 JDK 17 as you can see. Click on
  5202. 3:26:25next and click on the install part. Done
  5203. 3:26:28and dusted. So I've already told you
  5204. 3:26:30that genkins run on the localhost 80080.
  5205. 3:26:34Right? So we're going to go localhost
  5206. 3:26:36col 80080 and hit on enter. Now as you
  5207. 3:26:40can see please wait while genkins is
  5208. 3:26:42getting ready for work. Right? So this
  5209. 3:26:44will take a few minutes and then you'll
  5210. 3:26:46be having to provide the credential of
  5211. 3:26:48the administrator. All right. So just
  5212. 3:26:50give it a few minutes while it's
  5213. 3:26:52starting up. All right. Now you have to
  5214. 3:26:54provide the administrator password.
  5215. 3:26:56Right. So you can go ahead and go down
  5216. 3:26:58out here. You can see the password is in
  5217. 3:27:01the C and go to the program data then
  5218. 3:27:04genkins then we have a genkins then a
  5219. 3:27:06secret then you'll find the initial
  5220. 3:27:08admin password. So we need to head out
  5221. 3:27:10there. So what we need to do is we'll go
  5222. 3:27:12down there. So I'm just going to
  5223. 3:27:14minimize the screen now. Minimize it
  5224. 3:27:16once again and as you remember we go to
  5225. 3:27:19the C. As you can see right where is
  5226. 3:27:21I'll just show you minimize the screen
  5227. 3:27:23here so you can see and do it along with
  5228. 3:27:26me. So as you can see this is in PC then
  5229. 3:27:29scroll down to C disk. Okay this thing
  5230. 3:27:32popped up sorry in this. So you have a
  5231. 3:27:34program data right as you can see here
  5232. 3:27:36down there is no program data right. So
  5233. 3:27:39what you need to do is it's in the
  5234. 3:27:40hidden file. So what you need to do now
  5235. 3:27:43is click on the three buttons and view.
  5236. 3:27:47Click on show and click on the hidden
  5237. 3:27:49items. Now let's see if it's there.
  5238. 3:27:51Scroll down. Program data. You can see
  5239. 3:27:53at the last. Yeah. Simply click on that.
  5240. 3:27:55Double click on it. As you can see, then
  5241. 3:27:57we have to go to the folder name as
  5242. 3:27:59genkins. Yeah, you can see on the top
  5243. 3:28:01genkins and genkins. Then we need to
  5244. 3:28:04search for secrets. There it is folder.
  5245. 3:28:07And as you can see there's an initial
  5246. 3:28:09admin password. Now you simply click on
  5247. 3:28:11that. We'll try with the notepad. So we
  5248. 3:28:14can copy. So simply copy that and paste
  5249. 3:28:17it in the administrator password and
  5250. 3:28:19click on continue. So in this case I
  5251. 3:28:21will not save it in my computer or
  5252. 3:28:24system. So there are two installation
  5253. 3:28:26plugins available which is custom by
  5254. 3:28:28genkins. One is they have suggested
  5255. 3:28:30plugins and the other one is you can
  5256. 3:28:32select the plugins which you want to be
  5257. 3:28:34installed. So in this scenario I'll
  5258. 3:28:36simply click on the install suggested by
  5259. 3:28:38the genkins. Now what happened is the
  5260. 3:28:40plugins are all related to each other.
  5261. 3:28:42So it's like the typical RPM kind of a
  5262. 3:28:44problem where you try to install some
  5263. 3:28:46plugins and got a dependency which is
  5264. 3:28:49not installed and you get all those
  5265. 3:28:51issues in order to get rid of that. What
  5266. 3:28:53genkins recommend is that there are a
  5267. 3:28:54bunch of plugins that is already
  5268. 3:28:56recommended and you're good to go.
  5269. 3:28:58Right. So just go ahead and blindly
  5270. 3:29:00click on the recommended by the plugins
  5271. 3:29:03which is suggested or custom by the
  5272. 3:29:06genkins. And as you can see the getting
  5273. 3:29:08started process is going ahead. So it'll
  5274. 3:29:12take a few minutes depending on your
  5275. 3:29:14internet speed or on your system. Now
  5276. 3:29:16you can see all these plugins are
  5277. 3:29:18installing it for you. So it will take a
  5278. 3:29:21few minutes time. So let's just wait
  5279. 3:29:23till we get all the plugins installed in
  5280. 3:29:26a system properly. So this is a good
  5281. 3:29:28combination to kind of begin with and
  5282. 3:29:31keeping that in mind genkins need a lot
  5283. 3:29:33of bandwidth right now in terms of
  5284. 3:29:35network. So in case you know your
  5285. 3:29:36network is not so good, it'll make for a
  5286. 3:29:39few of these plugins will kind of fail
  5287. 3:29:41and these plugins are all you know
  5288. 3:29:43unavailable on openly or mirrored site
  5289. 3:29:46and sometimes some of them may be down.
  5290. 3:29:48So do not worry in case some of these
  5291. 3:29:51plug-in kind of fail to install you get
  5292. 3:29:53an options to kind of retry installing
  5293. 3:29:56them. But just ensure that you at least
  5294. 3:29:58at the most 90 to 95% of all of these
  5295. 3:30:01plugin are installed without any
  5296. 3:30:03problem. As you can see it's we are
  5297. 3:30:05almost there. It's around 60% to 70%.
  5298. 3:30:10Now once all these plugins are
  5299. 3:30:12installed. Now my plug-in in the
  5300. 3:30:14installation is all good. There's no
  5301. 3:30:16failure in any of the plug-in. So after
  5302. 3:30:18that we've got to create this first
  5303. 3:30:20username that is the first admin user.
  5304. 3:30:23So you need to give in the username and
  5305. 3:30:25the password. Then you have to confirm
  5306. 3:30:27your password. Give it your full name
  5307. 3:30:28and your email address. Right. So we'll
  5308. 3:30:31start it by giving the username. I'll
  5309. 3:30:33keep it plain and simple. Now, you got
  5310. 3:30:35to remember these password and the
  5311. 3:30:37confirm password because if you kind of
  5312. 3:30:39lose the or you don't remember the
  5313. 3:30:41password of the genkins, it'll be really
  5314. 3:30:44hard to get back your account. So, try
  5315. 3:30:46to keep it as simple as possible and
  5316. 3:30:49keeping in mind that you have to
  5317. 3:30:50remember the password because getting
  5318. 3:30:52back this account will be really
  5319. 3:30:54difficult. All right, so I'll be putting
  5320. 3:30:56the password as well. Give it my full
  5321. 3:30:58name. Okay, my a is small and go to the
  5322. 3:31:02email address
  5323. 3:31:07at the rate into rayco.
  5324. 3:31:10All right. So once it's all done, so
  5325. 3:31:13just simply click on save and continue.
  5326. 3:31:16So click on never don't want to save the
  5327. 3:31:18password. And as you remember I've told
  5328. 3:31:20you by default gen can run on localhost
  5329. 3:31:238080. Right? So you can simply click
  5330. 3:31:25this or you can copy this or just write
  5331. 3:31:28save and finish. You can even copy this
  5332. 3:31:31link. Save and finish. Now start using
  5333. 3:31:33Genkins. All right. Now that's kind of
  5334. 3:31:35complete my Genkins installation. As you
  5335. 3:31:38can see it was not that tough at all.
  5336. 3:31:40Now the Genkins is installed correctly.
  5337. 3:31:42Now let me quickly walk you through some
  5338. 3:31:45of the very minimal configuration that
  5339. 3:31:47is required. Now these are kind of the
  5340. 3:31:49first time configuration that is
  5341. 3:31:50required. So, and also let me warn you
  5342. 3:31:53the UI is a little hard for many people
  5343. 3:31:55to wrap their head around, especially
  5344. 3:31:57the window guys. But if you're all a
  5345. 3:31:59Java guys, you know how painful it is to
  5346. 3:32:01write UI in Java. You kind of appreciate
  5347. 3:32:04how the effort that has gone into the UI
  5348. 3:32:07bottom line. It was a little hard to
  5349. 3:32:08know wrap your head around it becomes
  5350. 3:32:10like start using it possibly you start
  5351. 3:32:12liking it all. All right. So I will get
  5352. 3:32:14into some of these important ones.
  5353. 3:32:16Something called as configuration system
  5354. 3:32:18or the configuration system. This is
  5355. 3:32:22something kind of put in your
  5356. 3:32:23configuration to complete your genkins
  5357. 3:32:25instance. Now few things to kind of look
  5358. 3:32:28out for this is the home. Now configure
  5359. 3:32:30system is where you kind of put in the
  5360. 3:32:33configuration for your complete genkins
  5361. 3:32:36instance. Now a few things to keep a
  5362. 3:32:37look out is the home directory. All
  5363. 3:32:40right. Now this is a Java home where all
  5364. 3:32:42the configuration all the workspace
  5365. 3:32:44anything and everything regarding
  5366. 3:32:46Jenkins is stored out here in the system
  5367. 3:32:49message. Now in the system message you
  5368. 3:32:51can put in some of the message on the
  5369. 3:32:54system. You can just type anything you
  5370. 3:32:56want probably show up somewhere here on
  5371. 3:32:58the menu. Now the number of executors is
  5372. 3:33:00a very very important configuration.
  5373. 3:33:02This just lets Jenkins know at any point
  5374. 3:33:05in time how many jobs or how many
  5375. 3:33:07threads can be run. So you can kind of
  5376. 3:33:09visualize like a thread that can be run
  5377. 3:33:11on this particular instant. As a thumb
  5378. 3:33:13rule, if at all you're on a single core
  5379. 3:33:15system, the number of executor you
  5380. 3:33:17should be good enough in case at any
  5381. 3:33:18point if there is any multiple jobs that
  5382. 3:33:20kind of get triggered at the same time.
  5383. 3:33:22Now in case the number of executor are
  5384. 3:33:24less compared to the number of jobs that
  5385. 3:33:26are out there to open up the new so you
  5386. 3:33:28don't need to panic because they will
  5387. 3:33:30get queue up and eventually genkins will
  5388. 3:33:32be get up and running. So just keep that
  5389. 3:33:34in mind that whenever a new job kind of
  5390. 3:33:37gets triggered in the CPU's usage and
  5391. 3:33:39the memory usage in terms of the disk,
  5392. 3:33:42it's like a very high of the genkins
  5393. 3:33:44instant. So that's something you got to
  5394. 3:33:45keep in mind. All right, the number of
  5395. 3:33:47executors for my system is kind of a
  5396. 3:33:50good label for my genkins. I don't want
  5397. 3:33:52any of these usage. So how do you want
  5398. 3:33:54to use your genkins? This is good for me
  5399. 3:33:56because I only have a primary server
  5400. 3:33:59that is running. So I want to use this
  5401. 3:34:00as low as possible. All right, as you
  5402. 3:34:04can see it's two. Now this is usage. So
  5403. 3:34:07I can leave everything to default. Now
  5404. 3:34:09what I want is I want this SMTP server
  5405. 3:34:11configuration. Now Genkins will be
  5406. 3:34:13sending out some emails. What I've done
  5407. 3:34:15here is I've configured the SMTP details
  5408. 3:34:18of my personal email details. In case
  5409. 3:34:21you are you know in your ination you
  5410. 3:34:23want some sort of an email that is like
  5411. 3:34:26an email ID that is set up for a genkins
  5412. 3:34:28server. So you can specify the SMTP
  5413. 3:34:31server details of your company. So that
  5414. 3:34:33you know you can authorize genkins to
  5415. 3:34:34kind of like send out emails. But in
  5416. 3:34:36case you want to try it out like I have
  5417. 3:34:39configured my personal email ID which is
  5418. 3:34:42of the Gmail for sending out
  5419. 3:34:44notification for the same TP server will
  5420. 3:34:46be the SMTP Gmail. So it's right as
  5421. 3:34:49username as
  5422. 3:35:09we have we have used the MTP
  5423. 3:35:10authentification and then we g the
  5424. 3:35:12password.
  5425. 3:35:15Now you can just send out an email to
  5426. 3:35:17see if at all this configuration works
  5427. 3:35:19again. Now Gmail will not allow you to
  5428. 3:35:21allow anybody to send out notification
  5429. 3:35:23on your behalf. So you just have to
  5430. 3:35:25lower the security level of your Gmail
  5431. 3:35:27ID so that you can allow
  5432. 3:35:28programmatically somebody to send out
  5433. 3:35:30email notification on your behalf. So
  5434. 3:35:32I've already done that. So let's see if
  5435. 3:35:35this work.
  5436. 3:35:41Let's test it again since I have entered
  5437. 3:35:43the wrong password. Let's see if this
  5438. 3:35:46works or not. And it has given me a
  5439. 3:35:48password has not accepted. So now as you
  5440. 3:35:50can see since my Gmail has not been set
  5441. 3:35:53up. So what you have to do is you have
  5442. 3:35:55to lower your security level of your
  5443. 3:35:57Gmail ID so that you can be allowed to
  5444. 3:36:00test your email configuration. All
  5445. 3:36:02right. So simply click on save. So now
  5446. 3:36:06we're heading back to the dashboard. Now
  5447. 3:36:09we shall go to the global tool
  5448. 3:36:12configuration. Now look at the scenario
  5449. 3:36:14where Jenkins is a continuous
  5450. 3:36:17integration server. Now it does not know
  5451. 3:36:19what kind of a code base it's going to
  5452. 3:36:21pull and what kind of tools says is
  5453. 3:36:24required or what is the code that is
  5454. 3:36:26going to pull in and how it is going to
  5455. 3:36:27build. So you'll have to put in all the
  5456. 3:36:30tools that is required for building the
  5457. 3:36:32appropriate kind of code that you're
  5458. 3:36:33going to pull in from you know like a
  5459. 3:36:36source code repository. So for example
  5460. 3:36:38in case your source code is a Java code
  5461. 3:36:40and assuming that you have you know
  5462. 3:36:42because this demo this is my laptop and
  5463. 3:36:44I've put all the configuration JDK
  5464. 3:36:46everything on my laptop because I am a
  5465. 3:36:48developer and I'm working on the laptop
  5466. 3:36:50but my country's integration servers
  5467. 3:36:53will be known as a separate server
  5468. 3:36:55without anything being installed on it.
  5469. 3:36:57So in case I want genkins to you know
  5470. 3:36:59like run on a Java code and I need to
  5471. 3:37:01specify the JDK location of this out
  5472. 3:37:04there. So okay since I've already have
  5473. 3:37:06the JDK installed and have already put
  5474. 3:37:08in the Java home directly or rather and
  5475. 3:37:11the environmental environment correctly
  5476. 3:37:13so I don't need to do it. So now if at
  5477. 3:37:15all you want the genkins server to use
  5478. 3:37:17git. Now as you know that git is a
  5479. 3:37:19command bash or the command prompt for
  5480. 3:37:22running git and connecting to any other
  5481. 3:37:24git server. So you will need git to be
  5482. 3:37:26no installed on that particular system.
  5483. 3:37:28Now gradel and maven if at all you have
  5484. 3:37:31some maven as you want to do this in any
  5485. 3:37:33other tools that you're going to install
  5486. 3:37:35on your system which is your continuous
  5487. 3:37:37integration server. So you'll have to
  5488. 3:37:38come in here and try to configure it.
  5489. 3:37:40And in case you have not configured it
  5490. 3:37:42then genkins will not be able to find
  5491. 3:37:44these tools for building your task. So
  5492. 3:37:46since I don't want to install anything
  5493. 3:37:48we'll go back to manage system. Now you
  5494. 3:37:51can see the global configure global
  5495. 3:37:53security. I can see this an SSH server.
  5496. 3:37:56Now what does this mean if you ask me?
  5497. 3:37:58Genkins own user database. So this is
  5498. 3:38:01nothing but the security access control
  5499. 3:38:04which is set to genkins own user
  5500. 3:38:06database. So what does this mean is you
  5501. 3:38:08know genkins by default it uses files
  5502. 3:38:11system where it stores all the usernames
  5503. 3:38:14which hashes up like these username that
  5504. 3:38:16kind of stores them as of it. So as of
  5505. 3:38:19now genkin is configured to use in your
  5506. 3:38:22own database assuming that you are
  5507. 3:38:24running organization. So you will
  5508. 3:38:25probably want to you know have some sort
  5509. 3:38:27of LDAP server which will in turn have a
  5510. 3:38:31control of your access to your genkins
  5511. 3:38:33repository. So you will specify your
  5512. 3:38:35LDAP server details the root DN password
  5513. 3:38:38or the managed DN. So the LDAP as you
  5514. 3:38:42can see or the LDAP which the genkins
  5515. 3:38:44itself will tune in for your specific
  5516. 3:38:46servers. Now you have the manager DN the
  5517. 3:38:49manager password. Now all these should
  5518. 3:38:50be filled. All these details should be
  5519. 3:38:52filled in case you want to connect your
  5520. 3:38:54Genkins instance with your LDAP server
  5521. 3:38:56or any of the authentication server that
  5522. 3:38:59you have in your organization. But for
  5523. 3:39:00now since I don't have any of these
  5524. 3:39:02things, I'm going to use its own
  5525. 3:39:03database. That's good enough. All right.
  5526. 3:39:06So I'll simply the genkins own user
  5527. 3:39:08database. So I will set up some
  5528. 3:39:10authorization methods. So for now let me
  5529. 3:39:12not get into any of these details of
  5530. 3:39:14this and just be aware that genkins can
  5531. 3:39:16be connected for authorization to an
  5532. 3:39:18LDAP server or you can have genkins
  5533. 3:39:21managing its own server which is
  5534. 3:39:23happening as of now. Let me put in a
  5535. 3:39:25very very simple job. All right. So
  5536. 3:39:27let's create a new job in this video. So
  5537. 3:39:30simply click on new item. Now simply you
  5538. 3:39:33can add any item name here. So the most
  5539. 3:39:37important here are the freestyle and
  5540. 3:39:39pipeline. For the first demo, we'll
  5541. 3:39:41click on the freestyle job and click on
  5542. 3:39:43okay. So, so in the description, you can
  5543. 3:39:45write anything in your description. This
  5544. 3:39:47is an optional thing. So, you can say
  5545. 3:39:49this is my first job demo for so in this
  5546. 3:39:53demo I don't want to connect it to any
  5547. 3:39:55source code for now. So, I'm just going
  5548. 3:39:57to leave it to none. Now, we don't need
  5549. 3:40:00to write any build environment as well.
  5550. 3:40:01Now, in this build step, we simply click
  5551. 3:40:03on execute windows on. So since I'm on
  5552. 3:40:06the window box, I will say execute
  5553. 3:40:08window bash command. All right. So what
  5554. 3:40:11do you want to do? So let me just echo
  5555. 3:40:13something. Echo hello world. This is
  5556. 3:40:16hello. Welcome to my first demo job in
  5557. 3:40:21Edo. Then we'll specify the date and
  5558. 3:40:24time as well. So put in date colon as
  5559. 3:40:28time as well. So you can see it's a very
  5560. 3:40:30very simple command. We just have to put
  5561. 3:40:32an eco and we have something along with
  5562. 3:40:34the date and time. So we'll keep
  5563. 3:40:36everything as simple as possible. So we
  5564. 3:40:38save this job. So once it is shipped. So
  5565. 3:40:41you can see there's a bill history. So
  5566. 3:40:43once you have saved this job, you know
  5567. 3:40:44the job name comes up here. As you can
  5568. 3:40:46see project first job by mistically I've
  5569. 3:40:48written double T in my first job. Now as
  5570. 3:40:51you'll see here there's some builds
  5571. 3:40:52history. So there is nothing as of now
  5572. 3:40:55because I've put in a job. I have not
  5573. 3:40:57yet run it. All right. So let me try and
  5574. 3:41:00build it now. Now you can see there's a
  5575. 3:41:02number my first job. So you will see a
  5576. 3:41:04date and you will see the time since
  5577. 3:41:06I've clicked twice. So if I've come one
  5578. 3:41:08and two now if you click on this now you
  5579. 3:41:11can see the console output. Now if you
  5580. 3:41:13click on this now you can see this and
  5581. 3:41:15this is the output that is run. Hello
  5582. 3:41:17welcome to my first demo job in ita
  5583. 3:41:20along with the date and along with the
  5584. 3:41:22time. Now if you see this now if we
  5585. 3:41:25navigate this now if you navigate this
  5586. 3:41:27we go back to here. Now as you can see
  5587. 3:41:29there's a folder created as jobs right
  5588. 3:41:31so this is the directory what I was
  5589. 3:41:33mentioning earlier regarding genkins
  5590. 3:41:35home if you can just open it up either
  5591. 3:41:37you can see this folder jobs so this as
  5592. 3:41:40mentioned earlier regarding genkins home
  5593. 3:41:42so all the job related stuff it's
  5594. 3:41:43specific to this particular genkins
  5595. 3:41:45installation is all here now all the
  5596. 3:41:47plugins that I installed the details in
  5597. 3:41:49each of those plugins can be found here
  5598. 3:41:51right so the workspace is where the jobs
  5599. 3:41:54that I've created whichever I'm running
  5600. 3:41:56would you know there'll be an individual
  5601. 3:41:57folder specific to the jobs that has
  5602. 3:41:59been put up there and all right so one
  5603. 3:42:01job one quick run that is how it looks
  5604. 3:42:04like so the workspace is where all the
  5605. 3:42:06jobs that I have created whichever I'm
  5606. 3:42:08running what you know there'll be an
  5607. 3:42:09individual folder specific to that jobs
  5608. 3:42:11that has been made up right so as you
  5609. 3:42:13can see there's a first job that we have
  5610. 3:42:15just created just now so one job one
  5611. 3:42:17quick run that we have done that is how
  5612. 3:42:19it's look like it's pretty simple now
  5613. 3:42:21let's go back so let us put on a second
  5614. 3:42:24job so we can go back to dashboard click
  5615. 3:42:26on new items and say Second job. Let's
  5616. 3:42:29get the spelling correct this time.
  5617. 3:42:31Second, I wrote second first again.
  5618. 3:42:33Second job. And I can put a semicolon
  5619. 3:42:37here. Underscore second job. Let me
  5620. 3:42:39click on freestyle again. Click on okay.
  5621. 3:42:41And you can say this is my second. So I
  5622. 3:42:46just want to demonstrate the
  5623. 3:42:47powerfulness of the automation server
  5624. 3:42:49and how simple it is to automate a job
  5625. 3:42:52that is put on the genkins which will be
  5626. 3:42:54triggered automatically. Now remember
  5627. 3:42:56what I've said earlier about genkins
  5628. 3:42:58because at the core of genkins is a very
  5629. 3:43:00very powerful automation server. All
  5630. 3:43:02right. So my second job this is my
  5631. 3:43:05second job which will be triggered
  5632. 3:43:09automatically. Okay. So in the build
  5633. 3:43:12step we'll put bash terms. Then we'll
  5634. 3:43:14write here eco again. So we'll say here
  5635. 3:43:17something as second job is going on
  5636. 3:43:20here. the tools
  5637. 3:43:23sorry with the tools of an automation
  5638. 3:43:26toolation
  5639. 3:43:29tool
  5640. 3:43:31and then I'll give some date as well
  5641. 3:43:34date parameter time but this time I'm
  5642. 3:43:37going to demonstrate the powerfulness of
  5643. 3:43:39the automation server that is there so
  5644. 3:43:41if you see here there is a build trigger
  5645. 3:43:43so build can be triggered using various
  5646. 3:43:45triggers that is there so you'll get
  5647. 3:43:47into the GitHub trigger or a hook or a
  5648. 3:43:50web hook which is kind of triggering. So
  5649. 3:43:52we'll see that later on. But for now,
  5650. 3:43:53what I want to do is I want to ensure
  5651. 3:43:55that this job that I'm going to put in
  5652. 3:43:57will be automatically triggered. Let's
  5653. 3:43:59say every minute I'm on this job to be
  5654. 3:44:02run on its own. So we'll put as build
  5655. 3:44:05periodically and we will set the time.
  5656. 3:44:08Now if you can see here, there's a bunch
  5657. 3:44:10of help. If you want to go through it,
  5658. 3:44:13you can go through it. Let's just put
  5659. 3:44:14out very very simple regular expression
  5660. 3:44:17for scheduling this job every minute.
  5661. 3:44:19All right. So 5,000 is all I'm going to
  5662. 3:44:21put in. 1 2 3 4 5. Now let me save this.
  5663. 3:44:27Let's go back. So when you build
  5664. 3:44:29periodically
  5665. 3:44:31is now you can see here. Now we just
  5666. 3:44:33copy that. And now how do we check if it
  5667. 3:44:36gets triggered every 15 minutes. So I
  5668. 3:44:38just don't do anything but wait for 15
  5669. 3:44:40minutes. And if all everything goes
  5670. 3:44:42well, Jenkins will automatically trigger
  5671. 3:44:44my second job in 15 minutes. Now you can
  5672. 3:44:48see here is still processing. So we have
  5673. 3:44:50to wait for 15 minutes. Now we can go
  5674. 3:44:53through all those command of the
  5675. 3:44:56scheduling time. So you can see how many
  5676. 3:44:58stars required for each minutes or for
  5677. 3:45:01each hour. Now as you can see it's done.
  5678. 3:45:04You can just go and build go here and go
  5679. 3:45:07to console output. Now you can see the
  5680. 3:45:10finish is success and you have this. Now
  5681. 3:45:13we can go back and copy this and see if
  5682. 3:45:16they on your it's already there. You can
  5683. 3:45:19go to workspace. You can see where
  5684. 3:45:20second job has also been created
  5685. 3:45:23automatically by genkins. Now that I
  5686. 3:45:25have my genkins up and running a few
  5687. 3:45:27jobs that have been put up here on my
  5688. 3:45:29genkins instance, I will need a way of
  5689. 3:45:31controlling access to my genkins server.
  5690. 3:45:34This is where I will use a plug-in
  5691. 3:45:35called a rolebased access plug-in and
  5692. 3:45:38create few rules. The rules are
  5693. 3:45:40something like a global rule and a
  5694. 3:45:42project rules for a specific role. I can
  5695. 3:45:44have different rules and I can have user
  5696. 3:45:46who have sign up for the users for my
  5697. 3:45:48create kind of assign to these roles so
  5698. 3:45:51that each of these users fall into some
  5699. 3:45:54category. This is my way of kind of
  5700. 3:45:56controlling access to my genkins
  5701. 3:45:58instance and ensuring that people don't
  5702. 3:46:00do something unwanted. All right. So
  5703. 3:46:02first thing first let me go ahead and
  5704. 3:46:04install a plugin for doing that. So we
  5705. 3:46:06get into manage genkins. Then we go to
  5706. 3:46:08manage plugins. There will plugins
  5707. 3:46:11install plugins. We have advanced
  5708. 3:46:13settings. So these are the available
  5709. 3:46:15plugins. Uh and then if you go to
  5710. 3:46:17install now these are the installed
  5711. 3:46:19plugins. Now let's go and search for a
  5712. 3:46:22rolebased. Now you can see base
  5713. 3:46:24authorization strategy. So this will
  5714. 3:46:27happen is it enables user authorization
  5715. 3:46:29using a role-based strategy. Now roles
  5716. 3:46:31can be defined globally or for
  5717. 3:46:33particular jobs or nodes selected by a
  5718. 3:46:35regular expression. This is the plugins
  5719. 3:46:38everyone. So you will install it without
  5720. 3:46:40restart. So it's success. It looks good.
  5721. 3:46:42Looks good. Now waiting for this. Yeah,
  5722. 3:46:45it's success. Done now. So go back to
  5723. 3:46:47the top page. Now one thing to remember
  5724. 3:46:50guys is genin is running on a Java using
  5725. 3:46:53a Java instance. So typically many
  5726. 3:46:55things will work the same way unless
  5727. 3:46:57inherently you want it to restart. So
  5728. 3:46:59but a good practice is whenever you do
  5729. 3:47:01some sort of a big installation or a big
  5730. 3:47:04patches on your genin instance just
  5731. 3:47:06ensure that you can restart it otherwise
  5732. 3:47:08there will be a difference in terms of
  5733. 3:47:10what is installed in the system and what
  5734. 3:47:12is there on the file system so you'll
  5735. 3:47:14need to flush out few of those setting
  5736. 3:47:16later on but for now these are very
  5737. 3:47:18small plug-in so this will run without
  5738. 3:47:21any problem but otherwise if at all
  5739. 3:47:23there are some plugins which they will
  5740. 3:47:25need to restart you know you can kindly
  5741. 3:47:27go ahead and restart your Jenkins
  5742. 3:47:29plugins instance but for now I don't
  5743. 3:47:30need that it looks good I have installed
  5744. 3:47:32the plugins so where do I see my plugins
  5745. 3:47:36and installed the plugins which is
  5746. 3:47:38specific to the user control to access
  5747. 3:47:40control now let's go we go to the
  5748. 3:47:42configure global security now we can go
  5749. 3:47:45ahead and check the authorization you
  5750. 3:47:47can see here authorization rolebased
  5751. 3:47:49strategy popping out here right as you
  5752. 3:47:51can see the rolebased strategy has been
  5753. 3:47:53installed and has been shown here this
  5754. 3:47:56is because of my installation of my
  5755. 3:47:58rolebased plugin So this is what I would
  5756. 3:48:00want to enable because I've already have
  5757. 3:48:02my own database setup and for the
  5758. 3:48:04authorization part in that sense that
  5759. 3:48:06you can do what I'm going to install. I
  5760. 3:48:09mean I've already installed a rolebased
  5761. 3:48:10strategy right now I'm going to enable
  5762. 3:48:12that strategy. So we simply click on
  5763. 3:48:15rolebased strategy. Okay. And click on
  5764. 3:48:18save. So now I'm going to enable that
  5765. 3:48:19strategy. All right. Now I will say okay
  5766. 3:48:22now I've installed the rolebased access
  5767. 3:48:23plugin. Now we'll need to just set it up
  5768. 3:48:26and check you know I will go ahead and
  5769. 3:48:28create some roles and it shows that I've
  5770. 3:48:30assigned users as per these roles. So
  5771. 3:48:33let me go to manage the configuration
  5772. 3:48:36manage genkins and let's see how we can
  5773. 3:48:39create our roles not here as well. So we
  5774. 3:48:43can do manage and assign roles for
  5775. 3:48:45creating a roles. Okay now you'll only
  5776. 3:48:47be able to see this once and only when
  5777. 3:48:49you have installed those plugins. Now
  5778. 3:48:52I've enabled the plugins. Now I've
  5779. 3:48:55enabled the rolebased access control as
  5780. 3:48:57well. Now we'll go ahead and create some
  5781. 3:48:59rules for this particular genkins
  5782. 3:49:00instance. So first I will manage roles.
  5783. 3:49:04So this is at a very high level which is
  5784. 3:49:06a global role. Now there are some role
  5785. 3:49:08to add which you can add yourself some
  5786. 3:49:10item roles for some projects or
  5787. 3:49:12something. So let me create a role which
  5788. 3:49:14kind of visualize like a group. So we'll
  5789. 3:49:17create our own called the developer.
  5790. 3:49:20Typically the genkins instance or the CA
  5791. 3:49:22instance are kind of own up or
  5792. 3:49:24controlled by a QA guys. So that's why
  5793. 3:49:27I'm creating a role called developer and
  5794. 3:49:29I'm adding this role at a global role.
  5795. 3:49:31So I will add this here and then I can
  5796. 3:49:33click read as well. So we've given this
  5797. 3:49:37administrator right. So we add this. So
  5798. 3:49:40as you can see here you will see this
  5799. 3:49:42develop a rule that there is each one of
  5800. 3:49:45these options that you can hover here
  5801. 3:49:47and sort of see what kind of permission
  5802. 3:49:50you have given it to this developer role
  5803. 3:49:52that you have just created. So you can
  5804. 3:49:54read and write then you can create some
  5805. 3:49:56changes. You have given a permission as
  5806. 3:49:58credential which you can create then you
  5807. 3:50:00can delete then the manage the domains.
  5808. 3:50:04So these kind of help or permission that
  5809. 3:50:07they're giving it. So these are some
  5810. 3:50:09kind of sort of a help for a permission
  5811. 3:50:12specific. So you want to see it's like
  5812. 3:50:14uh how it sounds a little you different
  5813. 3:50:17but I would want to give you a very very
  5814. 3:50:19little permission for the developer. So
  5815. 3:50:21from an administrator perspective I just
  5816. 3:50:23want him to have a read and write kind
  5817. 3:50:25of a role credentials. Okay read and
  5818. 3:50:28write and I can allow him to view as
  5819. 3:50:30well. I don't want him to create agents
  5820. 3:50:33or give him some delete. Now I don't
  5821. 3:50:35want him to configure, build, provision
  5822. 3:50:38or connect or disconnect anything. So
  5823. 3:50:39I'll just give him a read and a view.
  5824. 3:50:41And I don't even want him to have access
  5825. 3:50:43to my workspace as well. So I'll just
  5826. 3:50:45give him now for run. So I won't even
  5827. 3:50:48give him the access to that. Now we can
  5828. 3:50:51give view as well. I don't want him to
  5829. 3:50:53delete. And what I'm doing here is just
  5830. 3:50:56creating a global rules for the
  5831. 3:50:58developers. And I've given him a very
  5832. 3:51:00very limited roles in the sense that I
  5833. 3:51:02don't want this developer to be able to
  5834. 3:51:04run any agents nor create jobs or build
  5835. 3:51:07jobs or cancel jobs or configure jobs at
  5836. 3:51:10the maximum. Right? So I just want him
  5837. 3:51:11to read that is already put up there.
  5838. 3:51:13Okay. So I will save now and create a
  5839. 3:51:16rule that is done now that I've created
  5840. 3:51:19rule. Now I still don't have any users
  5841. 3:51:21that is in there the system. So let me
  5842. 3:51:24go ahead and create some users on the
  5843. 3:51:26system. So we'll go back to manage
  5844. 3:51:28genkins and go to manage users. Now let
  5845. 3:51:32me create another user. Okay. By
  5846. 3:51:34clicking on plus users and we'll say
  5847. 3:51:37this one as a developer. Give him some
  5848. 3:51:40password and name him as develop three
  5849. 3:51:45and email and just simply give my email
  5850. 3:51:47here and click on create users. Okay.
  5851. 3:51:51One two. So we have created. Now this
  5852. 3:51:53developer one two is a user that I have
  5853. 3:51:56configured but still yet I have not set
  5854. 3:51:57any rules for this particular user. So I
  5855. 3:52:00will go to the manage and gain. I will
  5856. 3:52:02give him the manage and assign roles. So
  5857. 3:52:05now we'll go manage and assign roles and
  5858. 3:52:08we'll assign role. So what you're going
  5859. 3:52:10to see what I'm going to do now is I'm
  5860. 3:52:12going to assign a role that is specific
  5861. 3:52:14to that particular developer. So I'll
  5862. 3:52:17find that particular user and assign him
  5863. 3:52:19or means the developer role that I've
  5864. 3:52:21already configured the rules. Okay. So
  5865. 3:52:24this is the role that we have created.
  5866. 3:52:25So we will search the user that we have
  5867. 3:52:27just created developer one two. Now if I
  5868. 3:52:31assign this. So go ahead and save the
  5869. 3:52:34changes. Now let's go ahead and check
  5870. 3:52:36the permission of this particular user
  5871. 3:52:38by logging on to my main account and
  5872. 3:52:40logging back as the developer one. Now
  5873. 3:52:43let's log out from here. lock out and
  5874. 3:52:46say developer developer one. Now if you
  5875. 3:52:49remember this role was created with very
  5876. 3:52:51less privilege. So there you go. I have
  5877. 3:52:53genkins but I don't see a new item. I
  5878. 3:52:55can't trigger a new jobs. I can't do
  5879. 3:52:57anything. I see these jobs. However, I
  5880. 3:52:59don't think I'll be able to start this
  5881. 3:53:01job. Now I don't have the permission to
  5882. 3:53:02set forth at the maximum. So what I can
  5883. 3:53:04do is look at this job. See, so this is
  5884. 3:53:06a limited role that was created and I've
  5885. 3:53:09added this damare to that particular
  5886. 3:53:12role which was a developer role so that
  5887. 3:53:15the developers don't get to configure
  5888. 3:53:16any of the jobs because the Jenkins
  5889. 3:53:18instance is owned by a QA person. He
  5890. 3:53:21doesn't want to give developer any
  5891. 3:53:23ethnicity or right. So the rights that
  5892. 3:53:26you set out by creating a developer
  5893. 3:53:28roles or any user who tag as a part of
  5894. 3:53:31this developer role will get the same
  5895. 3:53:33kind of permission and these permission
  5896. 3:53:35can be you know fine grain it can be a
  5897. 3:53:38project specific permission as well but
  5898. 3:53:40for now I just demonstrate the highle
  5899. 3:53:42permission that I have set. So let me
  5900. 3:53:44quickly log out of this user and get
  5901. 3:53:46back to my admin account. So I need
  5902. 3:53:48because I need to continue my demo with
  5903. 3:53:50the developer roles that was created.
  5904. 3:53:52Now one of the reasons for Genkins being
  5905. 3:53:54so popular as I mentioned earlier is the
  5906. 3:53:56bunch of plugins but it's got plugin for
  5907. 3:53:58connecting anything and everything. Now
  5908. 3:54:00you can find the genkin plugins then you
  5909. 3:54:02will see the index over here. There are
  5910. 3:54:04so many plugins that are there. All of
  5911. 3:54:06these are wonderful plugins. Whatever
  5912. 3:54:09connectors that you will need if you
  5913. 3:54:11want to connect genkins to the AW
  5914. 3:54:13instance or you want to connect genkins
  5915. 3:54:14to a Docker instant or any of those
  5916. 3:54:17containers you will have a plugin. You
  5917. 3:54:19can go and search up if you want if you
  5918. 3:54:21want connect genkins to big bucket. So
  5919. 3:54:23simply click on big. So as you can see
  5920. 3:54:26these are available. So bottom line
  5921. 3:54:29genkins without plugin is nothing. So
  5922. 3:54:31plugins is the heart of genkins for you
  5923. 3:54:33to connect or in order to connect
  5924. 3:54:35genkins with any of the containers or
  5925. 3:54:37any of the other sets of tools you will
  5926. 3:54:40need the plugins. Now if you want to
  5927. 3:54:41connect or you want to build a
  5928. 3:54:42repository which has got Java and Melvin
  5929. 3:54:45you will need to install Maven and GTK
  5930. 3:54:47on an instance. Now if at all you're
  5931. 3:54:50looking for a or a Microsoft build you
  5932. 3:54:52will need to have MS build installed on
  5933. 3:54:55your genkins instance and the plugins
  5934. 3:54:57that would be targeted MS build if at
  5935. 3:55:00all you want to listen to some server
  5936. 3:55:01site web hooks from GitHub you will need
  5937. 3:55:04a GitHub specific plugins you want to
  5938. 3:55:06connect to genkins to AWS you need those
  5939. 3:55:09plugins now if you want to connect
  5940. 3:55:11docker instance that is running anywhere
  5941. 3:55:13in the world as long as you have the URL
  5942. 3:55:16which is publicly reachable you just
  5943. 3:55:18have darker plug-in that is installed on
  5944. 3:55:20your genkins instance. So if you want to
  5945. 3:55:23connect to a docker instance that is
  5946. 3:55:25running anywhere in the world as long as
  5947. 3:55:26you have the URL which is publicly
  5948. 3:55:28reachable you just have a plug-in that
  5949. 3:55:30is installed on your genkins instance.
  5950. 3:55:32Now sonar cube is one of popular
  5951. 3:55:34statistic code analysis. So you can
  5952. 3:55:37connect a genkins build. You can build a
  5953. 3:55:39jobs on genkins and push it to a sonar
  5954. 3:55:41cube and get sunar cube to run analysis
  5955. 3:55:43on that and get back the result in
  5956. 3:55:45genkins. Now all of these works very
  5957. 3:55:48well because of the plugins. Now with
  5958. 3:55:50that let me connect our Genkins instance
  5959. 3:55:52to a GitHub. So now let us connect our
  5960. 3:55:55Genin instance to a GitHub. Now I
  5961. 3:55:56already have a very simple Java
  5962. 3:55:58repository up on my GitHub instance. So
  5963. 3:56:00let me connect genkins to this
  5964. 3:56:02particular GitHub instance and pull out
  5965. 3:56:04a job that is put up there. Right? So
  5966. 3:56:06this is a very very simple and you know
  5967. 3:56:08repository is called hello Java and this
  5968. 3:56:11is what is there in the repository.
  5969. 3:56:13There's a simple class file. It's just
  5970. 3:56:15got some one line of system out. So this
  5971. 3:56:19is already present on github.com at this
  5972. 3:56:22place and this will be the URL for this
  5973. 3:56:25repository. So I will pick it up. So
  5974. 3:56:28what I'll do is I will connect my Jensen
  5975. 3:56:30instance to go to my GitHub and provide
  5976. 3:56:33my credential and pull out this
  5977. 3:56:35repository which is on the cloud hosted
  5978. 3:56:37in the github.com and get it to my
  5979. 3:56:39genkins instant and then build this
  5980. 3:56:41particular Java file. Now I'm keeping
  5981. 3:56:43the source code very very simple. It is
  5982. 3:56:45just a Java file. Now how do I build my
  5983. 3:56:48Java file? How do I compile my Java
  5984. 3:56:50file? I just say Java C and name. Now
  5985. 3:56:53the name of my class file is hello Java.
  5986. 3:56:56And how do I run my Java file? I will
  5987. 3:56:57say Java and hello. Okay. So remember I
  5988. 3:57:00don't need to install any plugins now
  5989. 3:57:02because what it all needs is a get
  5990. 3:57:04plugin. So get plug-in which is already
  5991. 3:57:06installed on this system. So let us go
  5992. 3:57:09back create a new items. We'll create
  5993. 3:57:12the first job here. Let's say this is a
  5994. 3:57:15get first project. Now let it be a
  5995. 3:57:18freestyle. Click okay. Now we'll go to
  5996. 3:57:21the source code management. Remember
  5997. 3:57:22right we always have been keeping it
  5998. 3:57:24undone. So in this part we'll put it as
  5999. 3:57:27get. Now as you remember earlier in
  6000. 3:57:29examples we do not use any source code
  6001. 3:57:31because we were just putting up some
  6002. 3:57:33echo kind of jobs that did not need any
  6003. 3:57:35integration with any of the source code
  6004. 3:57:38system. So now let us connect this. So
  6005. 3:57:40I'm going to put up my source code and
  6006. 3:57:42it will show up because the plug-in is
  6007. 3:57:44already there. Now I have already copied
  6008. 3:57:47the HTTP address from the GitHub and
  6009. 3:57:50simply paste it here. Now what is the
  6010. 3:57:53credential? So I'll simply add that. If
  6011. 3:57:56we add credential this time. So I'll
  6012. 3:57:58just click and cancel. So if we just add
  6013. 3:58:02genkins. So we'll add a username here.
  6014. 3:58:06Now if there are any errors in terms of
  6015. 3:58:09not able to genkins to be able to find
  6016. 3:58:11the git or the g.exe or if the
  6017. 3:58:13credential are wrong somewhere down
  6018. 3:58:15here. So you'll see a red message. Okay.
  6019. 3:58:17Like something is not right. For now
  6020. 3:58:20it's okay. Now I'm going to build
  6021. 3:58:22tricker. Now what will be there as a
  6022. 3:58:24part of my build step? because this
  6023. 3:58:26repository just have the Java file
  6024. 3:58:28correct low Java. So in order for me to
  6025. 3:58:31build this, I will say execute window
  6026. 3:58:33bash command and I'll say Java. Hello
  6027. 3:58:38Java. Java. Now let's save this. Okay.
  6028. 3:58:42So let me try to run this. Okay. Build
  6029. 3:58:44it. Now click on this console output.
  6030. 3:58:47Great. Now as you can see here there's a
  6031. 3:58:49lot of executed gate on the behalf. It
  6032. 3:58:52goes on there to provide my credentials
  6033. 3:58:55and so you know it pull my repository
  6034. 3:58:57and my default. Now we'll pull up the
  6035. 3:58:59master branch. This is there on the post
  6036. 3:59:02string and it kind of builds this whole
  6037. 3:59:04thing on Java C hello world. Finish and
  6038. 3:59:07it's given me a success. So it's kind of
  6039. 3:59:09build this whole thing Java C hello to
  6040. 3:59:12Java and it runs this Java hello hello
  6041. 3:59:16world. And there as you can see this is
  6042. 3:59:18the output there. And here you can see
  6043. 3:59:20if you want to look at the content that
  6044. 3:59:23was created on the repository. Now if
  6045. 3:59:26you can go there into the my workspace
  6046. 3:59:28like I've showed earlier you can just
  6047. 3:59:29simply click here and you can already
  6048. 3:59:31see here it's been created kit first
  6049. 3:59:33project and it's saying hello. Now as
  6050. 3:59:36you can see it's already there. Now if
  6051. 3:59:38you can go back as you can see and
  6052. 3:59:40simply close that. Now what it did was
  6053. 3:59:42genkins on your behalf went over all the
  6054. 3:59:44way to GitHub pulled this repository
  6055. 3:59:47from there and then you know it brought
  6056. 3:59:48it down to your local system on my
  6057. 3:59:50genkins instance. Now it's compiled it
  6058. 3:59:52and it run this particular application.
  6059. 3:59:54Now that I've integrated genkins
  6060. 3:59:56successfully with git simply within the
  6061. 3:59:58Java application.
  6062. 4:00:05Now let's start with a Docker use case.
  6063. 4:00:08Imagine that you're working in a
  6064. 4:00:09fast-paced IT department where issues
  6065. 4:00:12keep popping up, asserts go unttracked,
  6066. 4:00:14and changes need approval. That is where
  6067. 4:00:16IBM control desk comes in. It
  6068. 4:00:18streamlines IT service management by
  6069. 4:00:20centralizing incident problem and asset
  6070. 4:00:23management into one easy to use platform
  6071. 4:00:25and it helps in solving problems faster
  6072. 4:00:28with automation and intelligent
  6073. 4:00:29workflows to improve service quality and
  6074. 4:00:32keep things running. Let me tell you all
  6075. 4:00:34what is IBM control desk. IBM control
  6076. 4:00:37desk is an IT service management tool
  6077. 4:00:39that helps manage and also support users
  6078. 4:00:41and IT infrastructure. It builds on IBM
  6079. 4:00:44Maximo assert management a platform
  6080. 4:00:47originally designed for managing
  6081. 4:00:48physical and IT asserts. Did you all
  6082. 4:00:51know that even IBM faced challenges? IBM
  6083. 4:00:54control desk while a robust IT service
  6084. 4:00:56management solution face several
  6085. 4:00:58challenges in traditional environments.
  6086. 4:01:00The deployment process was often complex
  6087. 4:01:03requiring extensive configuration and
  6088. 4:01:05manual efforts that prolonged setup
  6089. 4:01:07times. Its architecture was resource
  6090. 4:01:10intensive leading to inefficiencies and
  6091. 4:01:12also higher operational costs.
  6092. 4:01:14Scalability was another significant
  6093. 4:01:16huddle as adapting to increasing
  6094. 4:01:18workloads required to major
  6095. 4:01:19architectural adjustments limiting its
  6096. 4:01:22responsiveness to business needs.
  6097. 4:01:24Additionally, maintenance and upgrade
  6098. 4:01:26process were frequently causing downtime
  6099. 4:01:28and increasing operational overhead. And
  6100. 4:01:31also the traditional on- premises setup
  6101. 4:01:32was a lack and flexibility of modern
  6102. 4:01:34cloud-based solutions making integration
  6103. 4:01:37with other tools more difficult and
  6104. 4:01:39highlighting the need for more
  6105. 4:01:41modernized approach such as
  6106. 4:01:42containerization to improve performance,
  6107. 4:01:45scalability and ease of management.
  6108. 4:01:48Imagine managing thousands of IT asserts
  6109. 4:01:50and services without scalable
  6110. 4:01:52infrastructure. This is where the IBM
  6111. 4:01:54control desk was before Docker. So let's
  6112. 4:01:57ever think why Docker was introduced
  6113. 4:01:59into IBM control desk. In the IBM
  6114. 4:02:01control desk case study, Docker was
  6115. 4:02:03introduced to address the challenges
  6116. 4:02:05associated with managing traditional IT
  6117. 4:02:07service management applications. IBM
  6118. 4:02:10control desk a complex and resource
  6119. 4:02:12intensive platform often faced issues
  6120. 4:02:14with scalability, high resource
  6121. 4:02:16consumption and complex deployment
  6122. 4:02:17process in traditional environments.
  6123. 4:02:20Docker helped overcome these challenges
  6124. 4:02:21by containerizing the application
  6125. 4:02:23components allowing for more efficient
  6126. 4:02:25resource use, easier scaling and
  6127. 4:02:27simplified deployments. By using Docker,
  6128. 4:02:30IBM control desk could quickly adapt to
  6129. 4:02:32changes, reduce operational overhead,
  6130. 4:02:34and also improve performance aligning
  6131. 4:02:36with modern DevOps and cloud native
  6132. 4:02:38practices. Here is simplified
  6133. 4:02:40explanation of the setup described where
  6134. 4:02:43a single VM on Red Hat Linux with two
  6135. 4:02:46CPUs and 4GB RAM hosts both the IBM
  6136. 4:02:49control desk and the DB2 database.
  6137. 4:02:52Application files are shared via NFS
  6138. 4:02:54that is making them accessible to docker
  6139. 4:02:56for container deployments. Here comes
  6140. 4:02:58another step that is building Docker
  6141. 4:03:00images. They decided to strictly follow
  6142. 4:03:02what is stated in the Maximo assert
  6143. 4:03:04management. That is maximum assert
  6144. 4:03:07management is a comprehensive software
  6145. 4:03:08solution developed by IBM that helps
  6146. 4:03:11organizations manage their asserts
  6147. 4:03:13effectively throughout their life cycle.
  6148. 4:03:15That is it is a part of an IBM Watson
  6149. 4:03:18IoT that is internet of things platform
  6150. 4:03:20and it's widely used in industries such
  6151. 4:03:22as manufacturing utilities and also
  6152. 4:03:25transportation and facilities
  6153. 4:03:26management. A team built a docker image
  6154. 4:03:28for IBM control desk like generating the
  6155. 4:03:31war files and also for the UI using
  6156. 4:03:34docker files server.xml and also
  6157. 4:03:36JVM.options
  6158. 4:03:38they built images for various
  6159. 4:03:39applications including UI chron mess
  6160. 4:03:44and also API. Since JMS wasn't provided
  6161. 4:03:47they created it from scratch based on
  6162. 4:03:49the webspear liberty docs. The service
  6163. 4:03:52portal image built from the NodeJS
  6164. 4:03:54included certificates for secure
  6165. 4:03:56communication. Next is that they
  6166. 4:03:58deployed containers. Containers were
  6167. 4:03:59deployed on an Ubanto machine with four
  6168. 4:04:02CPUs and 32GB RAM. Each application had
  6169. 4:04:05a container connected to a Docker
  6170. 4:04:06network for intercontainer
  6171. 4:04:08communication. Docker Compose managed
  6172. 4:04:10all resources using Docker Compose. For
  6173. 4:04:13configuration, including environment
  6174. 4:04:15variables and host settings. The
  6175. 4:04:18streamlined approach enhanced
  6176. 4:04:19scalability, simplified management and
  6177. 4:04:21improved integration for IBM control
  6178. 4:04:23desks. Let me tell you what Docker
  6179. 4:04:26bought and changed. Docker transformed
  6180. 4:04:27IBM control desk by enabling
  6181. 4:04:29containerization, improving resource
  6182. 4:04:31efficiency and scalability. It
  6183. 4:04:33simplified deployment, reduced downtime
  6184. 4:04:36and made updates easier through the
  6185. 4:04:37confident isolation. This enhanced
  6186. 4:04:40system flexibility, reliability and
  6187. 4:04:42overall performance making IBM control
  6188. 4:04:44desk more agile and responsive. So here
  6189. 4:04:47is a condensed version of four points.
  6190. 4:04:49First is the efficient containerization.
  6191. 4:04:51Docker improved IBM control desk's
  6192. 4:04:53resource efficiency and scalability by
  6193. 4:04:56containerizing its components. They also
  6194. 4:04:58streamlined deployment enabled faster
  6195. 4:05:00setup with fewer errors and reduce
  6196. 4:05:02downtime. Easier maintenance too. Docker
  6197. 4:05:05isolated components which made updates
  6198. 4:05:07and maintenance more manageable and
  6199. 4:05:09flexible. Enhanced agility work. Docker
  6200. 4:05:12was also an enhanced agility that made
  6201. 4:05:15approach for IBM control desk more agile
  6202. 4:05:17and responsive to business needs
  6203. 4:05:19optimizing operations. Now let's see the
  6204. 4:05:21overall solution bought involving Docker
  6205. 4:05:24in IBM control desk bought a
  6206. 4:05:25comprehensive solution by containerizing
  6207. 4:05:27its application components which
  6208. 4:05:29improved resource utilization and
  6209. 4:05:31scalability. This approach allowed
  6210. 4:05:33faster and more consistent deployments
  6211. 4:05:35reducing setup errors and minimizing
  6212. 4:05:37downtime. Docker also enables seamless
  6213. 4:05:40updates and maintenance by isolating
  6214. 4:05:42different components, enhancing the
  6215. 4:05:44systems flexibility and reliability.
  6216. 4:05:46Furthermore, the streamlined modular
  6217. 4:05:48architecture simplified operations,
  6218. 4:05:50reduced operational cost and increased
  6219. 4:05:52responsiveness, ultimately transforming
  6220. 4:05:55IBM control desk into a more efficient
  6221. 4:05:57and agile IT service management
  6222. 4:05:59platform. Let's see the key benefits
  6223. 4:06:01bought. First is enhanced scalability.
  6224. 4:06:04Containerization optimized resource and
  6225. 4:06:06also simplified scaling as demand grew.
  6226. 4:06:08Efficient deployment. Docker streamlined
  6227. 4:06:10deployment reducing errors and downtime
  6228. 4:06:13for a more reliable setup. Simplified
  6229. 4:06:15maintenance. Isolated components enabled
  6230. 4:06:18easy updates boosting flexibility and
  6231. 4:06:20reliability. Last is the cost effective
  6232. 4:06:22operations. The modular setup cut costs
  6233. 4:06:25and also improved responsiveness making
  6234. 4:06:27IBM control desk more agile. The result
  6235. 4:06:30bought by this use case was this article
  6236. 4:06:32showed a case study using container
  6237. 4:06:34technology to leverage the native
  6238. 4:06:36support of webpere liberty profile with
  6239. 4:06:38the IBM control desk product. So they
  6240. 4:06:41found that they have more traditional
  6241. 4:06:43product to container to evolve it toward
  6242. 4:06:45a cloud native like architecture without
  6243. 4:06:47any need of touch the goal that is there
  6244. 4:06:50were also no impact at the application
  6245. 4:06:51level. This case study showed how
  6246. 4:06:54container technology was used to
  6247. 4:06:55transform IBM control desk into
  6248. 4:06:57cloudnative like architecture without
  6249. 4:06:59changing the application code. Despite
  6250. 4:07:01being a traditional product not
  6251. 4:07:03originally designed by the
  6252. 4:07:04microservices, containers allowed the
  6253. 4:07:06IBM to modularize its components,
  6254. 4:07:09mimicking microservices and improving
  6255. 4:07:11scalability and flexibility. The process
  6256. 4:07:13involved identifying dependent modules
  6257. 4:07:16that is by updating build scripts,
  6258. 4:07:17deploying each module in its own
  6259. 4:07:19container, setting up communication
  6260. 4:07:21between them and testing the setup. This
  6261. 4:07:24approach shows that even traditional
  6262. 4:07:26application can be modernized with
  6263. 4:07:28containers making deployment easier and
  6264. 4:07:30more efficient.
  6265. 4:07:32Now let's see why Docker is so
  6266. 4:07:34necessary. First, Docker is portable
  6267. 4:07:37that is they run app consistently across
  6268. 4:07:39any environment. Second, they're
  6269. 4:07:41lightweight. Containers use fewer
  6270. 4:07:43resources than WM that is the virtual
  6271. 4:07:45machines. Then their efficiency, faster
  6272. 4:07:48setup times and better resource
  6273. 4:07:50utilization. Next comes the scalability.
  6274. 4:07:53Easily scale apps using container
  6275. 4:07:55orchestration. Then is the consistency.
  6276. 4:07:58Same behavior from development to
  6277. 4:07:59production. DevOps integration and
  6278. 4:08:02streamline CI/CD pipelines. Next is the
  6279. 4:08:05isolation. Securely run multiple
  6280. 4:08:07applications on the same host. Last is a
  6281. 4:08:10simplified dependency management that is
  6282. 4:08:12package all dependencies in one
  6283. 4:08:14container. Now let's see the
  6284. 4:08:16prerequisite to learn Docker. Docker
  6285. 4:08:19simplifies creating consistent
  6286. 4:08:20environments across workflows. But to
  6287. 4:08:23fully harness its power, you'll first
  6288. 4:08:24need a solid grasp on Linux command line
  6289. 4:08:27tools and also the containerization
  6290. 4:08:29basics. Three main programming languages
  6291. 4:08:32needed are Python, JavaScript and
  6292. 4:08:35Golang. And the additional prerequisites
  6293. 4:08:37needed are version control that is
  6294. 4:08:40understanding git or another version
  6295. 4:08:41control system can be beneficial for
  6296. 4:08:43managing code changes in docker
  6297. 4:08:45projects. Then is the networking
  6298. 4:08:47concepts. A basic understanding of
  6299. 4:08:49networking concepts like IP address
  6300. 4:08:51ports and networking protocols can be
  6301. 4:08:53helpful for configuring docker networks.
  6302. 4:08:56Last is the operating system.
  6303. 4:08:58Familiarity with command line interfaces
  6304. 4:09:00like CLI and basic system administration
  6305. 4:09:03concepts. Next, let's see what is a
  6306. 4:09:06container. A container technology was
  6307. 4:09:08launched in 2013 as an open-source
  6308. 4:09:11Docker engine. It leverage existing
  6309. 4:09:13computing concepts around containers and
  6310. 4:09:15specifically in the Linux world.
  6311. 4:09:17Primitives known as Cgroups and also
  6312. 4:09:19name spaces, Docker's technology is
  6313. 4:09:21unique because it focuses on the
  6314. 4:09:23requirements of developers and systems
  6315. 4:09:25operators to separate application
  6316. 4:09:27dependencies from infrastructure. A
  6317. 4:09:29container is a lightweight isolated unit
  6318. 4:09:32that packages an application and its
  6319. 4:09:34dependencies. It also ensures it runs
  6320. 4:09:36consistently across different
  6321. 4:09:37environments. Now let's see why Docker
  6322. 4:09:40uses containers. Docker uses containers
  6323. 4:09:43for its portability as it runs the same
  6324. 4:09:45anywhere. Then for its efficiency that
  6325. 4:09:47uses fewer resources than virtual
  6326. 4:09:49machines. Then comes the scalability
  6327. 4:09:51where it can easily scale applications.
  6328. 4:09:54Last is its consistency that ensures the
  6329. 4:09:56app behaves the same in all
  6330. 4:09:58environments.
  6331. 4:09:59Now let's see what is Docker. A Docker
  6332. 4:10:02is a platform that enables developers to
  6333. 4:10:04design, develop and deploy testing to
  6334. 4:10:06manage applications in isolated portable
  6335. 4:10:09environments known as containers.
  6336. 4:10:11Containers allow you to package an
  6337. 4:10:13application and all its dependencies
  6338. 4:10:14like libraries, configurations, etc.
  6339. 4:10:17into a single unit ensuring that app
  6340. 4:10:19runs consistently across different
  6341. 4:10:21environments. Next coming to the
  6342. 4:10:23benefits of Docker. The benefits of
  6343. 4:10:25Docker are consistency which runs
  6344. 4:10:27applications the same way across
  6345. 4:10:29development, testing and production.
  6346. 4:10:31Efficiency. Docker containers use fewer
  6347. 4:10:34resources than WMs. They also run faster
  6348. 4:10:36to start and also use less memory and
  6349. 4:10:38storage. Scalability. Docker is commonly
  6350. 4:10:42used in cloud environments and
  6351. 4:10:43microservices architecture making it
  6352. 4:10:45easy to scale applications horizontally.
  6353. 4:10:48Simplified CIC. Docker helps automate
  6354. 4:10:50and streamline continuous integration
  6355. 4:10:52and continuous deployment pipelines. We
  6356. 4:10:55will look at the virtual machines versus
  6357. 4:10:57containers and their differences. The
  6358. 4:10:59architecture of the virtual machines is
  6359. 4:11:01that WMs run on a full operating system
  6360. 4:11:03on a hypervisor and containers share the
  6361. 4:11:06host OS kernel but isolate applications.
  6362. 4:11:09The resource usage of the WMs are heavy
  6363. 4:11:11requiring more CPU, memory, and storage
  6364. 4:11:13as they run separate OS instances. But
  6365. 4:11:16containers are lightweight and efficient
  6366. 4:11:18since they share the host OS. The start
  6367. 4:11:21time of the VMs take minutes to boot.
  6368. 4:11:23But the container starts in seconds. The
  6369. 4:11:26portability of VMs are less portable
  6370. 4:11:27tied to OS and hypervisor. Containers
  6371. 4:11:30are highly portable and run consistently
  6372. 4:11:32across different environments. The
  6373. 4:11:34performance of VMs have more overhead
  6374. 4:11:36due to virtualizations. But containers
  6375. 4:11:38offer near native performance with
  6376. 4:11:40minimal overhead. The use cases of the
  6377. 4:11:43VMs are full isolation, legacy apps and
  6378. 4:11:45heavy resource needs. But in containers
  6379. 4:11:48we have fast scaling, microservices,
  6380. 4:11:50cloudnative apps. Containers are idle
  6381. 4:11:52for lightweight scalable deployments
  6382. 4:11:54while VMs are better for complete
  6383. 4:11:56isolation and resourceheavy
  6384. 4:11:58applications.
  6385. 4:11:59Moving on to Docker components. The core
  6386. 4:12:02components of Docker are first is a
  6387. 4:12:04Docker engine. This is the heart of a
  6388. 4:12:06Docker responsible for building,
  6389. 4:12:08running, and managing Docker containers.
  6390. 4:12:10It's available for Windows, Mac OS, and
  6391. 4:12:12Linux. Docker images. These are the
  6392. 4:12:15blueprints of containers containing the
  6393. 4:12:17application code, libraries, and
  6394. 4:12:18dependencies required to run the
  6395. 4:12:20application. Last comes the Docker
  6396. 4:12:22containers. Instances created from
  6397. 4:12:24Docker images. They are lightweight
  6398. 4:12:26isolated environments where applications
  6399. 4:12:28run. Now, let's learn the architecture
  6400. 4:12:30of Docker. Docker follows a client
  6401. 4:12:32server architecture that allows
  6402. 4:12:34applications to be packed into
  6403. 4:12:35containers. It consists of several key
  6404. 4:12:37components working together to manage,
  6405. 4:12:39build, and run containers efficiently.
  6406. 4:12:42Here is an overview of Docker's
  6407. 4:12:43architecture. First, let's learn about
  6408. 4:12:45the Docker client. A Docker client is a
  6409. 4:12:48primary interface for users to interact
  6410. 4:12:49with Docker. Users issue command like
  6411. 4:12:52Docker build, Docker run, and Docker
  6412. 4:12:54pull, while the client translates into
  6413. 4:12:56API calls that are sent to the Docker
  6414. 4:12:58demon. The client can communicate with
  6415. 4:13:00either the local Docker demon or the
  6416. 4:13:02remote one. The key role of a Docker
  6417. 4:13:04client is they send commands to the
  6418. 4:13:06Docker demon using the REST API. Next,
  6419. 4:13:08let's see about the Docker demon or it's
  6420. 4:13:11also known as the Docker engine. The
  6421. 4:13:12Docker demon is a core service running
  6422. 4:13:14in the background on the host system
  6423. 4:13:16that manages Docker objects like
  6424. 4:13:18containers, images, networks, and
  6425. 4:13:20volumes. The demon listens to API
  6426. 4:13:22request from the client and also handles
  6427. 4:13:25all the container management tasks such
  6428. 4:13:27as creating, starting, and stopping
  6429. 4:13:29containers. is responsible for executing
  6430. 4:13:31the container life cycle including
  6431. 4:13:33pulling images, building containers and
  6432. 4:13:35ensuring their isolation. The key role
  6433. 4:13:37for the Docker deminina. It executes
  6434. 4:13:39commands, managing containers, images
  6435. 4:13:41and networks. Next is a Docker image. A
  6436. 4:13:44Docker image is a readonly template that
  6437. 4:13:46contains instructions for creating a
  6438. 4:13:48Docker container. Image include
  6439. 4:13:50everything needed to run an application
  6440. 4:13:52like code, libraries, environment
  6441. 4:13:55variables and configuration. The key
  6442. 4:13:57role of a Docker image is that they are
  6443. 4:13:59blueprint for creating containers.
  6444. 4:14:02Docker container. A container is a
  6445. 4:14:03runnable instance of a Docker image.
  6446. 4:14:05Containers are lightweight and isolated,
  6447. 4:14:07but they share the host OS kernels
  6448. 4:14:10making them efficient compared to
  6449. 4:14:11virtual machines. The key role of a
  6450. 4:14:13Docker container is that they are
  6451. 4:14:15lightweight, portable, and isolated
  6452. 4:14:17instance of an application. Next comes a
  6453. 4:14:19Docker registries that is a Docker hub.
  6454. 4:14:22Docker registries are repositories that
  6455. 4:14:23store Docker image. The most common
  6456. 4:14:25registry is the Docker Hub, a public
  6457. 4:14:27registry maintained by Docker.
  6458. 4:14:29Developers can push their custom images
  6459. 4:14:31to a registry or pull pre-built images
  6460. 4:14:34for use of their projects. Registries
  6461. 4:14:36can be public or private, allowing
  6462. 4:14:38organizations to manage and store their
  6463. 4:14:40proprietary container images securely.
  6464. 4:14:42The key role of a Docker registry is
  6465. 4:14:44that they store and distribute Docker
  6466. 4:14:46images. Moving on to the Docker engine
  6467. 4:14:48REST API. Docker's engine API allows
  6468. 4:14:51programmatic interaction with the server
  6469. 4:14:53Docker demon. The API can be accessed
  6470. 4:14:56over HTTP enabling developers and
  6471. 4:14:58servers to manage Docker
  6472. 4:14:59programmatically. All the communication
  6473. 4:15:02between the Docker client and the demon
  6474. 4:15:03happens via the API. The key role of a
  6475. 4:15:06Docker engine rest API is that they
  6476. 4:15:08enable automation and remote management
  6477. 4:15:10of Docker through the REST interface.
  6478. 4:15:12Docker volume. Volumes allow data to
  6479. 4:15:15persist beyond the life cycle of
  6480. 4:15:17container providing a way to store and
  6481. 4:15:19share data between containers or with
  6482. 4:15:21the host system. They're commonly used
  6483. 4:15:23to store the database files or other
  6484. 4:15:25datas that are needed to persist even if
  6485. 4:15:27the container is destroyed or recreated.
  6486. 4:15:29The key role of a Docker volume is they
  6487. 4:15:31have the persistent storage for
  6488. 4:15:33containers. Last comes a Docker network.
  6489. 4:15:36A network is a group of two or more
  6490. 4:15:38devices that can communicate with each
  6491. 4:15:39other either physically or virtually. A
  6492. 4:15:42Docker network is a virtual network
  6493. 4:15:44created by Docker to enable
  6494. 4:15:45communication between Docker containers.
  6495. 4:15:47If two containers are running on the
  6496. 4:15:49same host, they can communicate with
  6497. 4:15:51each other without the need of ports to
  6498. 4:15:53be exposed to the host machine. They may
  6499. 4:15:55use the Docker to manage Docker host in
  6500. 4:15:57any platform manner regardless to
  6501. 4:15:59whether they run Windows, Linux, or the
  6502. 4:16:01combination of two. The key role of a
  6503. 4:16:04Docker network is to manage
  6504. 4:16:05communication between containers and
  6505. 4:16:07external networks. Now, let's see the
  6506. 4:16:09development workflows of Docker. Docker
  6507. 4:16:12enhances development workflows through
  6508. 4:16:14first is a containerization having
  6509. 4:16:16packages application and dependencies
  6510. 4:16:18into lightweight portable containers
  6511. 4:16:20ensuring consistency environments across
  6512. 4:16:22development, testing and production.
  6513. 4:16:24Next is the local development enables
  6514. 4:16:26developers to replicate production
  6515. 4:16:28environment locally speeding up testing
  6516. 4:16:30and debugging. Next comes the continuous
  6517. 4:16:33integration or the continuous deployment
  6518. 4:16:35which integrates with CI/CD pipelines
  6519. 4:16:36for automated build, test and deployment
  6520. 4:16:39process. Last is the version control.
  6521. 4:16:41Supports versioning of images allowing
  6522. 4:16:43easy roll back and management of
  6523. 4:16:45application versions. Now we'll see how
  6524. 4:16:48to install Docker on a Ubuntu machine.
  6525. 4:16:52Now let's start with installing Docker
  6526. 4:16:54on a Ubuntu machine first. Now in order
  6527. 4:16:56to install Docker on Ubuntu, there are
  6528. 4:16:58some prerequisites. I would advise you
  6529. 4:17:01to go to Docker's install Docker engine
  6530. 4:17:03on Ubuntu.
  6531. 4:17:06Click on the first line that you can
  6532. 4:17:08see. Install Docker engine on Abundant.
  6533. 4:17:12Here you can see the documentation and
  6534. 4:17:14check for all the prerequisites that are
  6535. 4:17:16specified there.
  6536. 4:17:22Once you're done with the verification,
  6537. 4:17:24you can move ahead with the installation
  6538. 4:17:26process.
  6539. 4:17:28We'll be using the following install
  6540. 4:17:30using the AP repository process to
  6541. 4:17:32install Docker on a Ubuntu machine.
  6542. 4:17:35First open the terminal on your Ubuntu
  6543. 4:17:36machine.
  6544. 4:17:38Now let's set up the Docker's AP
  6545. 4:17:40repository. To do that, first we need to
  6546. 4:17:43add the Docker's official GPG key. We
  6547. 4:17:46begin by running a simple AP get update
  6548. 4:17:49to refresh the package lists. So let's
  6549. 4:17:51type pseudoapp
  6550. 4:17:54get update.
  6551. 4:17:56This will refresh all the package list
  6552. 4:17:57that is needed.
  6553. 4:18:02be patient until the packages are
  6554. 4:18:04getting refreshed.
  6555. 4:18:08So next we'll install CA certificates
  6556. 4:18:10and curl on our machine for that. So
  6557. 4:18:13let's copy and paste the command on our
  6558. 4:18:14terminal.
  6559. 4:18:17So as you can see that it's getting
  6560. 4:18:19installed. Type S to continue the
  6561. 4:18:21installation.
  6562. 4:18:25CS certificates in our command is a
  6563. 4:18:27digital certificate that ensures your
  6564. 4:18:28machine can communicate securely over
  6565. 4:18:30the internet by verifying the
  6566. 4:18:32authenticity of websites. The curl is a
  6567. 4:18:35tool used for transferring data with
  6568. 4:18:36URLs allowing us to download files from
  6569. 4:18:39the internet such as docker's jpg key.
  6570. 4:18:44So now let's move to the next command
  6571. 4:18:45that is we'll be creating the directory
  6572. 4:18:47for storing the key rings.
  6573. 4:18:50So for that let's copy and paste the
  6574. 4:18:52next command to the terminal.
  6575. 4:18:57Now let's also add Docker's GPG key to
  6576. 4:18:59it.
  6577. 4:19:02We'll download Docker's official GPG key
  6578. 4:19:04using the following command.
  6579. 4:19:10Now let's also type the command to
  6580. 4:19:11ensure that the GPG key can be read by
  6581. 4:19:13the system. So we'll copy and paste from
  6582. 4:19:15our documentary and paste it on a
  6583. 4:19:17terminal. Next let's add the Docker
  6584. 4:19:20repository to a sources. So for that
  6585. 4:19:23we'll add the Docker repository as the
  6586. 4:19:25ABD sources. And this step will allow
  6587. 4:19:27Ubuntu to know where to find Docker's
  6588. 4:19:29packages.
  6589. 4:19:33So the command we just ran adds the
  6590. 4:19:35Docker repository to our AP sources
  6591. 4:19:37list. This command will specify that the
  6592. 4:19:40architecture of our machine to ensure
  6593. 4:19:41compatibility.
  6594. 4:19:43This part will extract the code name of
  6595. 4:19:44our Ubuntu release making sure we
  6596. 4:19:46download the correct version of the
  6597. 4:19:48Docker.
  6598. 4:19:50Now let's also update the package list
  6599. 4:19:52again.
  6600. 4:19:53Now that we have added the doers
  6601. 4:19:55repository, we'll run another apt get
  6602. 4:19:57update command to refresh the list of
  6603. 4:19:59available packages from this new source.
  6604. 4:20:03So as you can see the reading package
  6605. 4:20:04list is done.
  6606. 4:20:08Now we'll install Docker by running the
  6607. 4:20:09command below. This installs Docker
  6608. 4:20:12engine, Docker CLI, and the essential
  6609. 4:20:14Docker tools on your system.
  6610. 4:20:21Enter s to continue the installation.
  6611. 4:20:26So be patient until the docker's
  6612. 4:20:28installation is getting installed. In
  6613. 4:20:31our docker installation command, we have
  6614. 4:20:34docker c that means docker community
  6615. 4:20:36edition the main docker engine and the
  6616. 4:20:39docker cli means the command line
  6617. 4:20:40interface for docker. Container.io IO is
  6618. 4:20:43the core container runtime for Docker
  6619. 4:20:46and the Docker build X plug-in is a
  6620. 4:20:48plug-in for building Docker images.
  6621. 4:20:50Docker compost plug-in is a plug-in to
  6622. 4:20:52manage multicontainer application.
  6623. 4:21:01So let's be patient until all the
  6624. 4:21:03packages in the docker is getting
  6625. 4:21:04installed.
  6626. 4:21:10Finally, we can verify whether Docker
  6627. 4:21:12was successfully installed by running
  6628. 4:21:14the Hello World image.
  6629. 4:21:16So, let's type sudo docker run hello
  6630. 4:21:19world. This command pulls a test image
  6631. 4:21:22from docker hub, runs it inside a
  6632. 4:21:24container and displays a confirmation
  6633. 4:21:26message. If the installation was
  6634. 4:21:28successful, you should see the hello
  6635. 4:21:30from docker message indicating
  6636. 4:21:31everything is working perfectly.
  6637. 4:21:34There you have it. We have successfully
  6638. 4:21:36installed Docker on our Ubuntu machine
  6639. 4:21:38and verified it with the Hello World
  6640. 4:21:39image.
  6641. 4:21:42Let's clear the screen.
  6642. 4:21:45Now that we have successfully installed
  6643. 4:21:46Docker, let's clear our terminal and
  6644. 4:21:48explore what happens when we simply type
  6645. 4:21:51Docker.
  6646. 4:21:53When you run this command, you will see
  6647. 4:21:55a list of all available Docker commands.
  6648. 4:21:57This list is incredibly useful when
  6649. 4:21:59you're unsure about which command to
  6650. 4:22:01use. There's also a brief description
  6651. 4:22:03next to each command that will help you
  6652. 4:22:05understand its purpose.
  6653. 4:22:07Now, let's go over some of the common
  6654. 4:22:09commands. First is run. It creates and
  6655. 4:22:13run a new container from an image. This
  6656. 4:22:15is one of the most frequently used
  6657. 4:22:16commands in Docker. It allows you to run
  6658. 4:22:19a container based on an image which can
  6659. 4:22:21be pulled from a registry or built
  6660. 4:22:23locally.
  6661. 4:22:24Next is the execute command. It allows
  6662. 4:22:26you to execute a command in a running
  6663. 4:22:28container. This is useful when you need
  6664. 4:22:30to interact with a running container
  6665. 4:22:32such as opening a shell inside it. The
  6666. 4:22:34ps command that is the list containers.
  6667. 4:22:37This command shows you all the
  6668. 4:22:38containers that are currently running or
  6669. 4:22:40that have been stopped. Next is the
  6670. 4:22:43build. This command allows you to create
  6671. 4:22:45a docker image from a docker file
  6672. 4:22:47defining the environment and
  6673. 4:22:48dependencies of your containerized
  6674. 4:22:50application.
  6675. 4:22:52Next is pull. It allows you to download
  6676. 4:22:54an image from a registry. Use this
  6677. 4:22:56command to pull images from a Docker
  6678. 4:22:58registry like Docker Hub. Push. It
  6679. 4:23:00uploads an image to the registry. If you
  6680. 4:23:03want to share your image with others,
  6681. 4:23:04you can push it to a public or private
  6682. 4:23:06registry too. Images. Images are the
  6683. 4:23:09list of images. This command shows all
  6684. 4:23:11the Docker images that are available on
  6685. 4:23:13your local machine. Login. Authenticate
  6686. 4:23:16to a registry. Use this when you need to
  6687. 4:23:18log to a Docker registry. For example,
  6688. 4:23:21Docker Hub to pull or push images. Log
  6689. 4:23:24out. This allows you to log out from a
  6690. 4:23:26registry. This logs you out from the
  6691. 4:23:28Docker registry too. Such search Docker
  6692. 4:23:31Hub for images. This allows you to
  6693. 4:23:33search Docker Hub for pre-built images
  6694. 4:23:35based on your requirements. Next is a
  6695. 4:23:37version. Show the Docker version
  6696. 4:23:39information. It provides details about
  6697. 4:23:41the version of the Docker you're
  6698. 4:23:43running. Last is the info. It'll display
  6699. 4:23:46systemwide information. This command
  6700. 4:23:48gives you detailed information about
  6701. 4:23:49your Docker installation, including how
  6702. 4:23:51many containers and images are present,
  6703. 4:23:54your storage driver, and other
  6704. 4:23:55systemwide stats.
  6705. 4:23:58Let's start by checking the Docker
  6706. 4:24:00version. If you're not familiar with the
  6707. 4:24:01version you're running, you can simply
  6708. 4:24:03use this command that is a Docker
  6709. 4:24:04version.
  6710. 4:24:06When you're running this command, it
  6711. 4:24:07displays the current version of the
  6712. 4:24:09Docker on your system. In case it shows
  6713. 4:24:11a version 27.3.1,
  6714. 4:24:13which is the latest version. Similarly,
  6715. 4:24:16we can check more detailed systemwide
  6716. 4:24:18information using the info command. So,
  6717. 4:24:20let's type p sudo docker info.
  6718. 4:24:24This info command provides extensive
  6719. 4:24:26details about your docker setup,
  6720. 4:24:28including the number of containers,
  6721. 4:24:29images, and other resources being used
  6722. 4:24:31by Docker on your system.
  6723. 4:24:34So, as we progress through this
  6724. 4:24:36tutorial, we'll dive deeper into many of
  6725. 4:24:38these commands and understand how to use
  6726. 4:24:40them in real world scenarios. Now moving
  6727. 4:24:43forward, we'll build a docker image
  6728. 4:24:45using docker file and run that image on
  6729. 4:24:47your local host as a container on your
  6730. 4:24:49system and we'll also open a web browser
  6731. 4:24:52to see our web page hosted after running
  6732. 4:24:54the container. So the first step is to
  6733. 4:24:56create a directory for our project.
  6734. 4:24:58We'll use the following command that is
  6735. 4:25:00mk directory my app. This creates a
  6736. 4:25:04directory named my app.
  6737. 4:25:06So here you can see that my app is seen.
  6738. 4:25:10Next, we'll move into this directory
  6739. 4:25:12using the cd my app. Now, we'll create a
  6740. 4:25:15file named index.html.
  6741. 4:25:18So, for that, we'll type the command
  6742. 4:25:20that is touchindex.html.
  6743. 4:25:22Once the file is created, we'll open it
  6744. 4:25:25using the nano editor and write the
  6745. 4:25:27content into the file. So, I will be
  6746. 4:25:29typing here subscribe to edureka.
  6747. 4:25:33Then press Ctrl + X followed by Y to
  6748. 4:25:36save and press enter to confirm the file
  6749. 4:25:38name as index.html.
  6750. 4:25:41To verify the content inside index html,
  6751. 4:25:44we will use the command that is cat
  6752. 4:25:46index.html.
  6753. 4:25:49So here you can see the subscribe to it
  6754. 4:25:52is also visible. Our next step is to
  6755. 4:25:54create a file named docker file. For
  6756. 4:25:56that we need to type the command as
  6757. 4:25:58touch docker file. Then type ls to see.
  6758. 4:26:03So here you can see that a docker file
  6759. 4:26:05index h.html is visible. After creating
  6760. 4:26:07the docker file, we'll open it in the
  6761. 4:26:09nano editor and write some instructions
  6762. 4:26:11into it.
  6763. 4:26:13So let's type from engineext. So
  6764. 4:26:15engineext is an open-source web server
  6765. 4:26:17that is widely used for serving static
  6766. 4:26:19content, load balancing, and also acting
  6767. 4:26:22as a reverse proxy. In this case, we are
  6768. 4:26:24using it to serve our index.html file.
  6769. 4:26:27Next, let's type copy index.html. html
  6770. 4:26:31/ user share engine x / html. So the
  6771. 4:26:37copy instruction will allow you to copy
  6772. 4:26:39our index.html file from the current
  6773. 4:26:41directory into the html directory which
  6774. 4:26:44is the default directory where engine x
  6775. 4:26:46serves its web pages. If your index html
  6776. 4:26:49file is in a different folder, you'll
  6777. 4:26:52need to specify the correct file path in
  6778. 4:26:54the docker file. The docker file is
  6779. 4:26:56essentially a text file with set of
  6780. 4:26:57instructions that docker uses to build
  6781. 4:27:00an image. So by typing cat docker file
  6782. 4:27:02you can see the content that we have
  6783. 4:27:04written in the nano editor.
  6784. 4:27:07So next we'll need to make sure that the
  6785. 4:27:09docker is running. If docker is not
  6786. 4:27:11running you can start it with the
  6787. 4:27:12following command that is p sudo service
  6788. 4:27:15docker start.
  6789. 4:27:20If needed, you can also stop the docker
  6790. 4:27:22by typing pseudo service docker stop.
  6791. 4:27:27So press Q to exit the status display.
  6792. 4:27:34As we have stopped the docker, let's
  6793. 4:27:35start the docker again. So let's type
  6794. 4:27:37the command as pseudo service docker
  6795. 4:27:39start.
  6796. 4:27:41We can also see the status by writing
  6797. 4:27:44the command pseudo service docker
  6798. 4:27:46status. So here you can see that a
  6799. 4:27:49docker is active and it is running.
  6800. 4:27:52Now let's proceed to build our docker
  6801. 4:27:54image. We'll use the docker build
  6802. 4:27:56command that is docker build minus t my
  6803. 4:27:59app. Let's write the command for the
  6804. 4:28:01build that is docker build- t my app and
  6805. 4:28:06a dot. Docker build is a command that
  6806. 4:28:09builds a docker image based on the
  6807. 4:28:10instruction provided in the docker file.
  6808. 4:28:13And the t flag is used to tag the image
  6809. 4:28:15with a name. In this case, it is my app.
  6810. 4:28:18This makes it easier for reference
  6811. 4:28:19later. And the dot after my app refers
  6812. 4:28:23to the current directory where in which
  6813. 4:28:25the docker file is located.
  6814. 4:28:28So by running the build command, we can
  6815. 4:28:30see that the error is occurred. So the
  6816. 4:28:32error shows that the permission denied
  6817. 4:28:34while trying to connect to the docker
  6818. 4:28:36demon. It means that we need to connect
  6819. 4:28:38as a super user. So let's type the
  6820. 4:28:40command as pseudo su and then write the
  6821. 4:28:43command for build.
  6822. 4:28:45So now you can see that my Docker is
  6823. 4:28:47getting built.
  6824. 4:28:50Be patient because it might take time.
  6825. 4:29:02Now that we've successfully built our
  6826. 4:29:04image, now it's time to run the Docker.
  6827. 4:29:07Now let's type the command that is
  6828. 4:29:09docker run minus d minus p 6969
  6829. 4:29:13col my app minus d flag runs a container
  6830. 4:29:17in detached mode meaning it runs in the
  6831. 4:29:19background and the p flag is used to map
  6832. 4:29:22ports in this case we are mapping port
  6833. 4:29:246969 on a local machine to port 80
  6834. 4:29:27inside the container which is a default
  6835. 4:29:30http port for engineext.
  6836. 4:29:33This command essentially starts a
  6837. 4:29:34container from my app image allowing us
  6838. 4:29:37to access our web page on the local host
  6839. 4:29:39via port 6969.
  6840. 4:29:41Now to check the container is running we
  6841. 4:29:43use the docker ps command.
  6842. 4:29:46This will list all the running
  6843. 4:29:47containers and you should see the my app
  6844. 4:29:49container running.
  6845. 4:29:51Finally to see what we have hosted on
  6846. 4:29:53the container. Open a web browser. Here
  6847. 4:29:56we'll use Firefox.
  6848. 4:29:58So on the search bar, let's type
  6849. 4:30:00localhost 6969.
  6850. 4:30:02So when you visit to this URL, you
  6851. 4:30:04should see subscribe to Edurea displayed
  6852. 4:30:06on the web page, confirming that our
  6853. 4:30:08Docker container is serving the content
  6854. 4:30:10successfully.
  6855. 4:30:12Now going back to our terminal. Now that
  6856. 4:30:15we have successfully built and run our
  6857. 4:30:17Docker image locally, let's move ahead
  6858. 4:30:19and push this image to Docker Hub where
  6859. 4:30:21it will be publicly accessible and
  6860. 4:30:23stored privately in your Docker Hub
  6861. 4:30:25account. If you don't have a DockerHub
  6862. 4:30:28account yet, go to hub.docker.com to
  6863. 4:30:31create one.
  6864. 4:30:33It's a simple signup process.
  6865. 4:30:36Once you have created your account, we
  6866. 4:30:38can proceed with logging into DockerHub
  6867. 4:30:40from the Docker CLI.
  6868. 4:30:43Now, to push our image to Docker Hub, we
  6869. 4:30:45first need to log to Docker from the
  6870. 4:30:47terminal. We can do that using the
  6871. 4:30:49Docker login command. So let's type
  6872. 4:30:53docker login minus u and give our
  6873. 4:30:55username minus p with our password.
  6874. 4:31:00The u flag is specified for username and
  6875. 4:31:03the p flag is specified for the
  6876. 4:31:04password. So once you're logged in
  6877. 4:31:06successfully
  6878. 4:31:08the docker will display a message
  6879. 4:31:10confirming the login.
  6880. 4:31:12Before pushing the image to docker hub
  6881. 4:31:14we need to tag our local image with a
  6882. 4:31:16name that includes our docker hub
  6883. 4:31:17username. This ensures that a docker hub
  6884. 4:31:20knows which repository the image belongs
  6885. 4:31:22to. For that, let's type the command
  6886. 4:31:25that is docker tag my app the username
  6887. 4:31:30my app colon and then the version tag
  6888. 4:31:34here. My app colon latest is the name
  6889. 4:31:36and the version tag for the image. We
  6890. 4:31:38are tagging this image as latest to
  6891. 4:31:40indicate it's the most recent version.
  6892. 4:31:43Now we can push our docker image to
  6893. 4:31:45docker hub using the docker push
  6894. 4:31:46command. So let's type docker push with
  6895. 4:31:49the username and the version tag. Again
  6896. 4:31:53this will upload the my app image to
  6897. 4:31:55your docker hub repository. Docker will
  6898. 4:31:57display the progress as it pushes the
  6899. 4:31:59image layers. And once it's complete you
  6900. 4:32:02will see the confirmation message.
  6901. 4:32:07So let's be patient unless the image is
  6902. 4:32:10pushed.
  6903. 4:32:13So here you can see a confirmation
  6904. 4:32:14message telling that it is pushed.
  6905. 4:32:17So after you have pushed the image to
  6906. 4:32:19the Docker Hub, you can log out of your
  6907. 4:32:21Docker Hub account from the CLI using
  6908. 4:32:23the Docker logout command.
  6909. 4:32:27For that, let's type docker logout. This
  6910. 4:32:30is useful when working on the shared
  6911. 4:32:31machines or environments where you don't
  6912. 4:32:34want your credentials to remain stored.
  6913. 4:32:36To verify that our image is now
  6914. 4:32:38available on Docker Hub, we can use the
  6915. 4:32:40Docker search command. This command
  6916. 4:32:42allows you to search the Docker Hub for
  6917. 4:32:43images. So for that let's type the
  6918. 4:32:45command as docker search username
  6919. 4:32:50and my app. So here you can see all the
  6920. 4:32:53images that we have published.
  6921. 4:32:56So once the image is on the docker hub
  6922. 4:32:58we can pull it to any other machine or
  6923. 4:33:00even to a current machine to ensure that
  6924. 4:33:02it works as expected. The docker pull
  6925. 4:33:05command allows us to download the image
  6926. 4:33:06from the docker hub. So let's type the
  6927. 4:33:08command as docker pull with our username
  6928. 4:33:13and the image name with the version tag.
  6929. 4:33:17This command will download the image
  6930. 4:33:18layers from the docker hub to your local
  6931. 4:33:20machine.
  6932. 4:33:22So here you can see that our image is
  6933. 4:33:23pulled successfully.
  6934. 4:33:27After pulling the image you can run it
  6935. 4:33:29on your local machine just like we did
  6936. 4:33:31earlier using the docker run command. So
  6937. 4:33:34now we can open our web browser and
  6938. 4:33:35visit typing the local host 6969.
  6939. 4:33:40You should see the same that is
  6940. 4:33:42subscribe to Edurea page confirming that
  6941. 4:33:44we have successfully pulled and run the
  6942. 4:33:46Docker image from the Docker Hub. And
  6943. 4:33:49that's it. You have successfully learned
  6944. 4:33:51how to push an image to Docker Hub.
  6945. 4:33:53Search for it, pull it, and run it on
  6946. 4:33:55your local machine.
  6947. 4:33:58Now that we have learned how to work
  6948. 4:34:00with individual containers in Docker,
  6949. 4:34:02let's introduce Docker Compose.
  6950. 4:34:06Docker Compose is an essential tool when
  6951. 4:34:08you're working with multicontainer
  6952. 4:34:09applications. Instead of managing each
  6953. 4:34:12container individually, Docker Compose
  6954. 4:34:14lets you define and manage all the
  6955. 4:34:16services your application needs in a
  6956. 4:34:18single YAML file called the Docker
  6957. 4:34:20Compose.
  6958. 4:34:22So here we have the command to install
  6959. 4:34:24Docker Compose.
  6960. 4:34:27The option minus L makes the curl follow
  6961. 4:34:29redirects ensures that it reaches the
  6962. 4:34:31final download URL and the UAE- S part
  6963. 4:34:35dynamically inserts operating system
  6964. 4:34:37name such as Linux or Windows and the
  6965. 4:34:40UAE minus M inserts the system
  6966. 4:34:42architecture that is whether it is
  6967. 4:34:4464-bit or 32-bit. This ensures a correct
  6968. 4:34:46version is downloaded for your system.
  6969. 4:34:49The docker compose option specifies
  6970. 4:34:51output location where the docker compos
  6971. 4:34:53binary will be saved. In this case it is
  6972. 4:34:56user local bin docker compose.
  6973. 4:35:02Once the binary is downloaded apply
  6974. 4:35:04executable permissions that is sudo ch
  6975. 4:35:07mode plus x command
  6976. 4:35:09to verify that docker compose has been
  6977. 4:35:11installed correctly. Let's check the
  6978. 4:35:13version.
  6979. 4:35:15So let's type the command as docker
  6980. 4:35:16compose version. So here you can see
  6981. 4:35:19repeat. So here you can see that the
  6982. 4:35:20docker compose version is v2.29.7 29.7
  6983. 4:35:24that is the latest version. Now that we
  6984. 4:35:26have installed docker compost, let's
  6985. 4:35:28create a simple docker compost file.
  6986. 4:35:30This file will define two services. A
  6987. 4:35:33web server having an image of engineext
  6988. 4:35:35and a database that is radius. So first
  6989. 4:35:38we'll create a new directory named
  6990. 4:35:40docker compose file.
  6991. 4:35:43So let's repeat. So let's write the
  6992. 4:35:45command for it. MKdir
  6993. 4:35:47docker compose file. Then we'll go
  6994. 4:35:50inside the directory. So type cd docker
  6995. 4:35:53compose file.
  6996. 4:35:55Inside this directory, we'll create a
  6997. 4:35:57new file named docker compose.yiml
  6998. 4:36:00using the touch command. So let's type
  6999. 4:36:03touch docker compos yiml.
  7000. 4:36:07Next, we'll open this file with the nano
  7001. 4:36:09editor and add the following content. So
  7002. 4:36:12let's type services
  7003. 4:36:15web that uses the engine x image
  7004. 4:36:19and the other file is the database
  7005. 4:36:22which uses the reddis image.
  7006. 4:36:26We'll save the file by pressing control
  7007. 4:36:28+ x then y to confirm and save. Finally
  7008. 4:36:32enter to confirm the file name. Before
  7009. 4:36:35we run the file let's check if it's
  7010. 4:36:36valid using docker compose config
  7011. 4:36:38command. This command checks the syntax
  7012. 4:36:41error or misconfigurations in the YAML
  7013. 4:36:43file. So let's type the command docker
  7014. 4:36:46compos config. If the file is valid, you
  7015. 4:36:49will see the content printed out. Now we
  7016. 4:36:51are ready to run our services to start
  7017. 4:36:54both enginex and radius containers.
  7018. 4:36:56We'll use the docker compose up command.
  7019. 4:36:59We'll run it in the detached mode. So
  7020. 4:37:00the containers run in the background.
  7021. 4:37:03So let's type docker compose up minus d.
  7022. 4:37:14So once the containers are up, we can
  7023. 4:37:16verify by listing the running containers
  7024. 4:37:17using the docker ps command. You will
  7025. 4:37:20see two containers running, enginex and
  7026. 4:37:22radius which were defined in a docker
  7027. 4:37:24compose.l file. Now to stop and remove
  7028. 4:37:27the containers, we can use the docker
  7029. 4:37:29compose down command. This command will
  7030. 4:37:32bring down all the services defined in a
  7031. 4:37:34docker compose file. So let's type
  7032. 4:37:36docker compose down.
  7033. 4:37:44Now let's modify a docker compos yl file
  7034. 4:37:46to expose a port for engine service so
  7035. 4:37:49we can access it from a browser.
  7036. 4:37:52So open the file again with nano. We'll
  7037. 4:37:55add the following lines under the web
  7038. 4:37:56service to map ports 8080 on our local
  7039. 4:38:00machine to port 80 in the container.
  7040. 4:38:05After making this change, let's validate
  7041. 4:38:07the file again by typing docker compose
  7042. 4:38:10config. If the file is valid, we can now
  7043. 4:38:13run it again using the docker compose up
  7044. 4:38:15command.
  7045. 4:38:18If the file is valid, we can now run it
  7046. 4:38:20again using the docker compose up
  7047. 4:38:22command. Since the engines and radius
  7048. 4:38:24images are already downloaded, it will
  7049. 4:38:27skip downloading and simply start the
  7050. 4:38:29containers. Now let's go to the browser
  7051. 4:38:32and type localhost 8080.
  7052. 4:38:36So you'll see a default welcome page
  7053. 4:38:38confirming that a container is running
  7054. 4:38:40and accessible on the port 8080.
  7055. 4:38:44Once you're done, you can bring down the
  7056. 4:38:46containers again using docker compose
  7057. 4:38:48down command.
  7058. 4:38:51Docker compose comes with several useful
  7059. 4:38:53commands. To see a list of available
  7060. 4:38:55commands, we can use the help command.
  7061. 4:38:57So let's type docker compose
  7062. 4:39:01minus minus help.
  7063. 4:39:03You'll see a list of commands like up
  7064. 4:39:07down config ps and many more. These
  7065. 4:39:10commands allow you to manage a docker
  7066. 4:39:12compose services easily. So that's a
  7067. 4:39:16quick introduction to docker compose. We
  7068. 4:39:18have seen how to install docker compose.
  7069. 4:39:20Create and validate a docker compose.l
  7070. 4:39:23file. Run multiple containers with a
  7071. 4:39:25single command. Map ports for service
  7072. 4:39:27access. Bring containers down when they
  7073. 4:39:30are no longer needed.
  7074. 4:39:38So let's start this session by first
  7075. 4:39:40understanding why one needs Azure
  7076. 4:39:42virtual machine. So first thing is of
  7077. 4:39:44course the costsaving the pricing
  7078. 4:39:46criteria. So we can like shut down and
  7079. 4:39:48stop the virtual machines if not in use.
  7080. 4:39:50Stopped uh virtual machine will not
  7081. 4:39:52incur any charge. Restarting the virtual
  7082. 4:39:54machine will maintain its state based on
  7083. 4:39:57persistentness.
  7084. 4:39:59Second, the boosted scalability. So we
  7085. 4:40:01can like scale up and down or in and out
  7086. 4:40:04the virtual machines. Autoscale features
  7087. 4:40:07is also there to support based on some
  7088. 4:40:09metrics. For example, scale out to five
  7089. 4:40:12instances when CPU utilization is
  7090. 4:40:14greater than 70% for more than 5
  7091. 4:40:16minutes. Third is alerts. So like we can
  7092. 4:40:19trigger actions and alerts based on
  7093. 4:40:21metrics of computing resources consumed
  7094. 4:40:22by a virtual machine. Fourth is we can
  7095. 4:40:24have a better control or say more amount
  7096. 4:40:27of control. So with Azure virtual
  7097. 4:40:28machines developer have more control
  7098. 4:40:30over the development environment which
  7099. 4:40:32is very helpful in case of building a
  7100. 4:40:33highly secure architecture for a complex
  7101. 4:40:35solution. Developers can choose
  7102. 4:40:37operating system networking storage
  7103. 4:40:39connections etc. to build a sandbox
  7104. 4:40:41solution. Lastly, easy diagnostics means
  7105. 4:40:44Azure virtual machine provides the
  7106. 4:40:46facility to troubleshoot issues with
  7107. 4:40:48options like remote debugging, event
  7108. 4:40:50logs, IIS logs, application logs, etc.
  7109. 4:40:54Moving ahead, let's understand in brief
  7110. 4:40:56what is Azure virtual machine. So for
  7111. 4:40:58that we are going to first understand
  7112. 4:41:00what is a virtual machine. So a virtual
  7113. 4:41:02machine is a computer file typically
  7114. 4:41:04called as an image which behaves like an
  7115. 4:41:06actual computer. It is one of the files
  7116. 4:41:07which contains everything. It runs in
  7117. 4:41:10Windows, Linux, etc. This gives you a
  7118. 4:41:13flexibility that you can run multiple
  7119. 4:41:15machines in a physical computer. Each
  7120. 4:41:17system can have a different operating
  7121. 4:41:19system. Each of these virtual machines
  7122. 4:41:21provide its own virtual hardware which
  7123. 4:41:24includes CPUs, memory, hard drives,
  7124. 4:41:26network interfaces and other such
  7125. 4:41:28devices. Now let's understand what is
  7126. 4:41:31Azure virtual machine. So Azure virtual
  7127. 4:41:33machine is one of the services provided
  7128. 4:41:35by Azure to create your own instances.
  7129. 4:41:37So it can be used for various ways like
  7130. 4:41:40development and test applications in the
  7131. 4:41:42cloud and also for extended data center.
  7132. 4:41:45It is to remember that when you are
  7133. 4:41:47running Azure virtual machine you must
  7134. 4:41:50pay for the compute time on a per minute
  7135. 4:41:52basis. The pricing of this is based on
  7136. 4:41:55the size operating system and any
  7137. 4:41:57license software that has been installed
  7138. 4:41:59in it. In order to avoid corresponding
  7139. 4:42:02charges when you are not using it, it is
  7140. 4:42:04to be seen that you change its state to
  7141. 4:42:07stopped that is deallocated. Now let's
  7142. 4:42:10understand some of the key features of
  7143. 4:42:11Azure virtual machine. So first is
  7144. 4:42:14isolation. So each of these uh network
  7145. 4:42:16work independently. When creating a
  7146. 4:42:18virtual network, you can divide them
  7147. 4:42:20into segments. You can configure the
  7148. 4:42:22virtual network to use your own DNA
  7149. 4:42:24servers. Second is virtual network
  7150. 4:42:26connectivity. So it can be connected to
  7151. 4:42:28each other enabling resources in any
  7152. 4:42:30virtual network to communicate with
  7153. 4:42:32resources in any other virtual network.
  7154. 4:42:35Third is internet communication. So by
  7155. 4:42:37default when you are launching any
  7156. 4:42:38instances in the Azure virtual machine,
  7157. 4:42:40it can access the internet as and when
  7158. 4:42:43you need you can enable inbound access
  7159. 4:42:45to specific resources. Fourth is on
  7160. 4:42:48premises connectivity. So a virtual
  7161. 4:42:50network can be connected to an
  7162. 4:42:52on-remises network enabling the sources
  7163. 4:42:53to communicate between each other. Then
  7164. 4:42:56there is Azour's resource communication.
  7165. 4:42:58So resources which falls under Azure
  7166. 4:43:00virtual network can communicate with
  7167. 4:43:02each other using private IP addresses
  7168. 4:43:04irrespective of the resources are from
  7169. 4:43:07different subnets. They provide default
  7170. 4:43:10routing between subnets. Onremise
  7171. 4:43:12networks operating system you don't have
  7172. 4:43:14to configure and manage routes. So the
  7173. 4:43:17next one is the routing. So uh Azour's
  7174. 4:43:20routing can be optionally overridden by
  7175. 4:43:22default through configuring with your
  7176. 4:43:24own routes or by propagating BGP routes
  7177. 4:43:27through network gateway. And the last
  7178. 4:43:29one is traffic filtering. So network
  7179. 4:43:31traffic can be filtered from resources
  7180. 4:43:32in a virtual network by source IP
  7181. 4:43:34addresses and port. So now let's
  7182. 4:43:37understand the Azure virtual machine
  7183. 4:43:38architecture. Azure was like initially
  7184. 4:43:41named as a project red dog by Microsoft.
  7185. 4:43:44The brain behind the project red dog is
  7186. 4:43:47Mr. David Cutler in initial days it was
  7187. 4:43:50uh a custom version of Windows and the
  7188. 4:43:52goal was to boot from a virtual hardest
  7189. 4:43:55so for that let's first try to
  7190. 4:43:57understand the main components of Azure
  7191. 4:43:59virtual machine so first is fabric
  7192. 4:44:01controller so one of the most important
  7193. 4:44:03components in Azure virtual machine
  7194. 4:44:04architecture is this is one of the
  7195. 4:44:06pillars based on which the architecture
  7196. 4:44:08works fabric controller basically owns
  7197. 4:44:10all the resources the placement of the
  7198. 4:44:12nodes load balancing scalability as per
  7199. 4:44:15requirement update patch management
  7200. 4:44:17everything is owned by the segment. As
  7201. 4:44:19the user creates their own instance of
  7202. 4:44:21virtual machine, all the tasks like
  7203. 4:44:23provisioning or the like the
  7204. 4:44:24deprovisioning along with the
  7205. 4:44:26supervision of all the nodes is taken
  7206. 4:44:28care by the fabric controller. In brief,
  7207. 4:44:30we can say that uh this is the backbone
  7208. 4:44:32of the Azure virtual machine system. So
  7209. 4:44:35next is the patch management. So patch
  7210. 4:44:37management workflow is a major advantage
  7211. 4:44:39of the Azure system as this module makes
  7212. 4:44:42Azure easy to manage and stay updated
  7213. 4:44:45across all the nodes. In Azure system,
  7214. 4:44:48hosts are image based. Therefore, there
  7215. 4:44:50is no need to update all the nodes one
  7216. 4:44:53by one like legacy system. Here Azure
  7217. 4:44:56basically delivers updated VHD at one
  7218. 4:44:58place and the entire system of nodes
  7219. 4:45:00gets updated. A typical update takes
  7220. 4:45:02place every four to 6 weeks which
  7221. 4:45:04ensures security and uh system
  7222. 4:45:06stabilization. Microsoft here ensures
  7223. 4:45:09that the updates are tested and verified
  7224. 4:45:12before it gets rolled out to the nodes.
  7225. 4:45:14Third is partition. So Azure fabric
  7226. 4:45:17controller has a couple of partition
  7227. 4:45:19types and they are update domains, fall
  7228. 4:45:22domains. These partitions help Azure
  7229. 4:45:24virtual machine to maintain its
  7230. 4:45:26availability and resilience. The
  7231. 4:45:28partitioning uh helps maintain zero
  7232. 4:45:29downtime, minimum failures and constant
  7233. 4:45:32availability. So the first is update
  7234. 4:45:34domains and partition that is it is the
  7235. 4:45:36strategy that ensures the upgradation of
  7236. 4:45:38the servers without taking it down. Then
  7237. 4:45:41uh Microsoft Azure system distributes
  7238. 4:45:43instances into a few update domains.
  7239. 4:45:45Here every update domains work as a
  7240. 4:45:47logical unit. One update domain gets
  7241. 4:45:49upgraded at a time. The upgrade process
  7242. 4:45:52gets completed when all the update
  7243. 4:45:54domains are processed. Azure makes sure
  7244. 4:45:56that the upgrade is uh completed with
  7245. 4:45:58the minimum impact on the running
  7246. 4:46:00services. Then there is fall domains.
  7247. 4:46:02Fall domain is nothing but a single
  7248. 4:46:04failure point. Fabric controller ensures
  7249. 4:46:06that isolated hardware failure does not
  7250. 4:46:09happen by distributing the instances to
  7251. 4:46:11multiple fall domains. This will prevent
  7252. 4:46:14the malfunctioning of the system due to
  7253. 4:46:16any single component malfunction. Then
  7254. 4:46:19there is the Azure compute stamps. So
  7255. 4:46:22Azure divide things into multiple stamps
  7256. 4:46:25and each stamp has its individual fabric
  7257. 4:46:27controller. Azure has two kinds of
  7258. 4:46:29stamps. Compute stamps and storage
  7259. 4:46:31stamps. The fabric controller is also
  7260. 4:46:34distributed in multiple branches. Azure
  7261. 4:46:37generally has five replicas of a fabric
  7262. 4:46:39controller and they are all in
  7263. 4:46:40synchronization to replicate the state.
  7264. 4:46:42In these five instances, one is primary
  7265. 4:46:44and the information is passed to primary
  7266. 4:46:47by the control panel. Now primary
  7267. 4:46:48instances make sure that same
  7268. 4:46:50instruction has been passed to the
  7269. 4:46:52secondary instances. Now the last one
  7270. 4:46:54are like some other virtual machine
  7271. 4:46:56components. So apart from these there
  7272. 4:46:59are three other important components of
  7273. 4:47:00Azure virtual machine. They are
  7274. 4:47:02computer, storage and networking. So
  7275. 4:47:06Microsoft Azure also has a capability to
  7276. 4:47:08monitor the health of the virtual
  7277. 4:47:09machines in place and if any issue is
  7278. 4:47:12found there is an option to auto
  7279. 4:47:13recovery. This service is known as
  7280. 4:47:15service healing. As the fabric
  7281. 4:47:16controller ability to detect the failure
  7282. 4:47:19therefore this task is carried out by
  7283. 4:47:20the fabric controller to detect failure
  7284. 4:47:22and trigger auto recovery. So this was
  7285. 4:47:25all about the components of like the
  7286. 4:47:26main components of Azure virtual
  7287. 4:47:28machine. Now let's understand the
  7288. 4:47:30architecture of how to run a Windows
  7289. 4:47:32virtual machine on Azure. So
  7290. 4:47:33provisioning a virtual machine in Azure
  7291. 4:47:35requires some additional components
  7292. 4:47:36beside the virtual machine itself
  7293. 4:47:38including networking and storage
  7294. 4:47:39resources that we recently talked about
  7295. 4:47:41the other virtual machine components. So
  7296. 4:47:44let's understand this uh step by step.
  7297. 4:47:46The first is the resource group.
  7298. 4:47:48Resource group is a logic container that
  7299. 4:47:50holds related Azure resources. In
  7300. 4:47:52general group resources based on their
  7301. 4:47:54lifetime and who will manage them. Then
  7302. 4:47:56there is a virtual machine. So you can
  7303. 4:47:59provision a virtual machine from a list
  7304. 4:48:00of published images or from a custom
  7305. 4:48:02managed image or virtual hard disk uh
  7306. 4:48:05like what we say as VHD file uh uploaded
  7307. 4:48:08to Azure blob storage. So Azure offers
  7308. 4:48:10many different virtual machine sizes. If
  7309. 4:48:12you are moving an existing workload to
  7310. 4:48:14Azure, start with the virtual machine
  7311. 4:48:16size that's the closest match to your on
  7312. 4:48:18premises server. Then measure the
  7313. 4:48:20performance of your actual workload in
  7314. 4:48:22terms of CPU, memory and disk or in
  7315. 4:48:25input or output operations per second
  7316. 4:48:27and adjust the size as needed. So
  7317. 4:48:30generally choose an Azure region that is
  7318. 4:48:31the closest to your internal users or
  7319. 4:48:34customers. Not all virtual machine sizes
  7320. 4:48:37are available in all regions. So keep
  7321. 4:48:39that in mind. Then there are disks. So
  7322. 4:48:42for best uh disk input input output
  7323. 4:48:45performance, we recommend like premium
  7324. 4:48:47storage. for that go with premium
  7325. 4:48:49storage which stores data on solid state
  7326. 4:48:51drives means SSDs. Uh so cost is based
  7327. 4:48:54on the capacity of the provisioned
  7328. 4:48:56disck. IOPS and throughput also depend
  7329. 4:48:59on disk size. So when you provision this
  7330. 4:49:01consider all the factors like capacity,
  7331. 4:49:04IOPS and throughput. We also recommend
  7332. 4:49:06using manage disk. So managed disk
  7333. 4:49:08simplify disk management by handling the
  7334. 4:49:10storage for you. Managed disc do not
  7335. 4:49:12require a storage account. Simply
  7336. 4:49:14specify the size and type of disk and it
  7337. 4:49:16is deployed as a highly available
  7338. 4:49:18resource. The operating system disk is a
  7339. 4:49:20virtual hydra hard drive stored in Azure
  7340. 4:49:23storage. So it persists even when the
  7341. 4:49:25host machine is down. We also recommend
  7342. 4:49:27creating one or more data discs which
  7343. 4:49:29are persistent. Uh so virtual hard used
  7344. 4:49:32for application data when possible
  7345. 4:49:34install applications on a data disk uh
  7346. 4:49:36not the operating system disck. So some
  7347. 4:49:38legacy applications might need to
  7348. 4:49:40install components on the C drive. In
  7349. 4:49:42that case, you can like resize the
  7350. 4:49:43operating system disck using PowerShell.
  7351. 4:49:46The virtual machine is also created with
  7352. 4:49:47a temporary disk. This disk is stored on
  7353. 4:49:49a physical drive on the host machine. It
  7354. 4:49:52is not saved in Azure storage and may be
  7355. 4:49:54deleted during reboots and other virtual
  7356. 4:49:56machine life cycle events. Use this disk
  7357. 4:49:58only for temporary data such as page or
  7358. 4:50:00swap files. Then there is the network.
  7359. 4:50:03So the networking components includes
  7360. 4:50:05the following resources like virtual
  7361. 4:50:06network. So every virtual machine is
  7362. 4:50:08deployed into a virtual network that can
  7363. 4:50:10be segmented into multiple subnets. Then
  7364. 4:50:12there is network interface. In short we
  7365. 4:50:14say it as NIC. The NIC enables the
  7366. 4:50:16virtual machine to communicate with the
  7367. 4:50:18virtual network. So if you need multiple
  7368. 4:50:21NIC's for your VM, be aware that maximum
  7369. 4:50:23number of NIC's is defined for each
  7370. 4:50:26virtual machine size. Then there's
  7371. 4:50:27public IP address. A public IP address
  7372. 4:50:29is needed to communicate with the
  7373. 4:50:31virtual machine. For example, while
  7374. 4:50:32remote desktop means RDP. So the public
  7375. 4:50:36IP address can be dynamic or static. The
  7376. 4:50:38default is dynamic. Then there is a
  7377. 4:50:41network security group where we say NSD
  7378. 4:50:43which are used to allow or deny network
  7379. 4:50:45traffic to virtual machines. NSDs can be
  7380. 4:50:47associated uh either with the subnets or
  7381. 4:50:50with individual virtual machine
  7382. 4:50:51instances. Then there are certain
  7383. 4:50:53operations. So that includes
  7384. 4:50:55diagnostics. So enable monitoring and
  7385. 4:50:56diagnostics including basic health
  7386. 4:50:58metrics, diagnostics, infrastructure
  7387. 4:51:00logs and boot diagnostics. So boot
  7388. 4:51:02diagnostics can help you diagnose boot
  7389. 4:51:05failure if your virtual machine gets
  7390. 4:51:07into a non bootable state. Create an
  7391. 4:51:10Azure storage account to store the logs.
  7392. 4:51:13A standard locally redundant uh storage
  7393. 4:51:16uh account is sufficient for diagnostic
  7394. 4:51:18logs. Then there's availability. So your
  7395. 4:51:21virtual machine can be may be affected
  7396. 4:51:23by planned maintenance or unplanned
  7397. 4:51:26downtime. You can use virtual machine
  7398. 4:51:27reboot logs to determine whether a
  7399. 4:51:29virtual machine reboot was caused by
  7400. 4:51:32planned maintenance. For higher
  7401. 4:51:33availability, deploy multiple virtual
  7402. 4:51:36machines in an availability set. Then
  7403. 4:51:38there are backups to protect against
  7404. 4:51:39accidental data loss. So use the Azure
  7405. 4:51:42backup service to back up your virtual
  7406. 4:51:44machines to georreed storage. Azure
  7407. 4:51:46backup provides like application
  7408. 4:51:48consistent backups. Then there is
  7409. 4:51:49stopping a virtual machine. So Azure
  7410. 4:51:51makes a distinction between stopped and
  7411. 4:51:54deallocated states. You are charged when
  7412. 4:51:56the virtual machine status is stopped
  7413. 4:51:58but not when the virtual machine is
  7414. 4:52:00deallocated. In the Azure portal, the
  7415. 4:52:02stop button deallocates the virtual
  7416. 4:52:04machine. If you shut down through the
  7417. 4:52:06operating system while logged in, the
  7418. 4:52:08virtual machine is stopped but not
  7419. 4:52:09deallocated. So you will still be
  7420. 4:52:11charged. Then there is deleting a
  7421. 4:52:13virtual machine. So if you delete a
  7422. 4:52:15virtual machine, the virtual hard drives
  7423. 4:52:16are not deleted. That means you can
  7424. 4:52:18safely delete the virtual machine
  7425. 4:52:20without losing data. However, you will
  7426. 4:52:22be charged for storage. to delete the
  7427. 4:52:23virtual hard drive, delete the file from
  7428. 4:52:25blob storage to prevent accidental
  7429. 4:52:27deletion as a resource lock to lock the
  7430. 4:52:30entire resource group or like lock
  7431. 4:52:32individual resources such as virtual
  7432. 4:52:34machine. So this is all about the major
  7433. 4:52:37components and how they work in
  7434. 4:52:39synchronization with each other to form
  7435. 4:52:41a virtual machine. So this is how the
  7436. 4:52:44architecture looks like and how it works
  7437. 4:52:46of Azure virtual machine.
  7438. 4:52:48Now that we have a theoretical as well
  7439. 4:52:50as an architectural understanding of
  7440. 4:52:52Azure virtual machine, let's try our
  7441. 4:52:54hands on it on how to create a virtual
  7442. 4:52:56machine and how to connect it. So you
  7443. 4:53:00can just go to the Azure portal. Here
  7444. 4:53:02you see all the services which you have
  7445. 4:53:03recently used and uh you can just
  7446. 4:53:05directly go search for virtual machines
  7447. 4:53:07from here
  7448. 4:53:09and go to the virtual machines.
  7449. 4:53:12Here you see there's no virtual machine
  7450. 4:53:14being created till now. So we can just
  7451. 4:53:15go to create.
  7452. 4:53:17So subscription Azure labs we have and
  7453. 4:53:19then resource group we have to give. If
  7454. 4:53:21you already have a resource group just
  7455. 4:53:22give or create a new one from here
  7456. 4:53:25resource
  7457. 4:53:29you can give a name as well
  7458. 4:53:3301 area is central India. So yeah region
  7459. 4:53:36I'm choosing central India which is
  7460. 4:53:38nearest to me and also my consumers are
  7461. 4:53:40nearest to me. That's the region I'm
  7462. 4:53:42selecting. So always keep in mind while
  7463. 4:53:43you select the region, select the region
  7464. 4:53:45which is near to you and also to your
  7465. 4:53:47consumers. Then in availability options
  7466. 4:53:50requirements security type standard
  7467. 4:53:52Windows 79 data center generation 2
  7468. 4:53:54right azure no not required size then we
  7469. 4:53:57have to choose yeah I can go with B1 or
  7470. 4:54:00you can like select any other size you
  7471. 4:54:01can see for all the sizes. So you can
  7472. 4:54:04select any one of them like right now
  7473. 4:54:05I'm using B1. I can use B2s as well. So
  7474. 4:54:09I will just repeat those that has two
  7475. 4:54:11virtual CPUs and 4 GB of memory. Then I
  7476. 4:54:14will be creating a username. So Azure
  7477. 4:54:16admin is good for me. And I will give a
  7478. 4:54:19username as well. It should be alpha
  7479. 4:54:20numeric along with special character
  7480. 4:54:22with one capital letters as well. So
  7481. 4:54:24keep that in mind while creating the
  7482. 4:54:26password.
  7483. 4:54:28Password matched. So let's go to the
  7484. 4:54:31next step. Public and more not selected
  7485. 4:54:33allow selected report. So RDP 3389 you
  7486. 4:54:36have to select if it's not selected. So
  7487. 4:54:39yeah, now let's go to the disk. No
  7488. 4:54:41thanks, not required. Then select
  7489. 4:54:44whichever isable for you like SSD or HDD
  7490. 4:54:48standard one. It also like the price was
  7491. 4:54:50also dependent on which option you're
  7492. 4:54:52going with. So I'm going with standard
  7493. 4:54:54SSD right now. Next networking nothing
  7494. 4:54:57is required. If you want to change
  7495. 4:54:58anything as per your requirement, you
  7496. 4:55:00can change that. So management auto
  7497. 4:55:02shutdown. If you require enable like if
  7498. 4:55:04you enable auto shutdown, it will auto
  7499. 4:55:05shut down. It's depend on you. Right now
  7500. 4:55:07I don't require that. So go to the next
  7501. 4:55:10one. Extensions and everything is there.
  7502. 4:55:12So I'm selecting an extension here for
  7503. 4:55:15myself. You can also like select which
  7504. 4:55:17one is required for you. I require
  7505. 4:55:20Microsoft enter malware. Go next. So
  7506. 4:55:25then
  7507. 4:55:27I have to create that. So I create it
  7508. 4:55:30next. If you want to add any text you
  7509. 4:55:32can. It's up to you. And then you can
  7510. 4:55:35just go to review and create. So here
  7511. 4:55:37you will actually get the price. Right
  7512. 4:55:39now I'm not getting because I have a
  7513. 4:55:40different kind of an company based
  7514. 4:55:42account. But if you have any personal
  7515. 4:55:44account then you will be getting the uh
  7516. 4:55:47total price of your virtual machine
  7517. 4:55:49you're going to host. Right? So can
  7518. 4:55:51recheck all the information you have
  7519. 4:55:53selected for all the services you have
  7520. 4:55:55been selected sub services and then you
  7521. 4:55:58can create it. So the virtual machine is
  7522. 4:56:01getting deployed. So here you can see
  7523. 4:56:02deployment to resource group is in
  7524. 4:56:04progress.
  7525. 4:56:07So now you can see the deployment is
  7526. 4:56:09complete. So you can just go to your
  7527. 4:56:12resource from here. Let's see what all
  7528. 4:56:14is created. We can see a virtual machine
  7529. 4:56:16is created. Public IP address is there.
  7530. 4:56:18A network security group is created for
  7531. 4:56:20security purposes. Then there's network
  7532. 4:56:22interface being created. Then uh a
  7533. 4:56:24storage disk is being created and as
  7534. 4:56:26well as the virtual network. As we have
  7535. 4:56:27understood all these things are required
  7536. 4:56:29on virtual machine architecture we have
  7537. 4:56:31understood right. So that's already been
  7538. 4:56:33created. So we can go to a virtual
  7539. 4:56:35machine. Now you can see here uh status
  7540. 4:56:38it is running right now. Location every
  7541. 4:56:41region location you can see it's showing
  7542. 4:56:43central India and you can see the public
  7543. 4:56:45IP address as well here. So all this is
  7544. 4:56:47here. You can actually like copy the
  7545. 4:56:50public IP address and directly connect
  7546. 4:56:52it through your remote desktop
  7547. 4:56:53connection by pasting it here and
  7548. 4:56:55connecting it or you can just go to
  7549. 4:56:57connect and go to RDP and here you can
  7550. 4:57:00like download the RDP file personal RDP
  7551. 4:57:02file just uh for that uh one thing
  7552. 4:57:06remember you have to go back to that you
  7553. 4:57:08have to copy the IP for that. So you see
  7554. 4:57:11the IP is copied so let's open the RDP.
  7555. 4:57:15Yeah, put connect. Yeah, for for that
  7556. 4:57:19same IP the RDP has been downloaded. So
  7557. 4:57:21we don't require IP to paste. You can
  7558. 4:57:23just uh give the username and id that we
  7559. 4:57:25have given while creating the virtual
  7560. 4:57:28machine. So that was and then the
  7561. 4:57:31password credentials.
  7562. 4:57:34Yes.
  7563. 4:57:37So we have created the virtual machine
  7564. 4:57:38and now we have connected it as well. So
  7565. 4:57:42here is your service manager which has
  7566. 4:57:43been open and here how your virtual
  7567. 4:57:46machine has been created. So virtual
  7568. 4:57:48computer has been created. Here you can
  7569. 4:57:49see the dashboard all the things like
  7570. 4:57:51add roles and features whatever you want
  7571. 4:57:52to add and get from here or you can
  7572. 4:57:55create your local server given all the
  7573. 4:57:57requirements you can create a local
  7574. 4:57:58server as well and come to this PC and
  7575. 4:58:02here you can see all like this is the
  7576. 4:58:04storage you have got temporary storage
  7577. 4:58:06and main program storage. So this is how
  7578. 4:58:09we can connect the virtual machine. I
  7579. 4:58:12hope you have understood it. So stop
  7580. 4:58:15this session. Yeah. So I have closed the
  7581. 4:58:18virtual machine and I can even stop it
  7582. 4:58:20from here. If I go here and stop so that
  7583. 4:58:22it stops uh like the charging cycle gets
  7584. 4:58:25stopped. You won't be charged for
  7585. 4:58:27running the virtual machine here. So uh
  7586. 4:58:29through this we can like save our cost.
  7587. 4:58:32It is under process is getting stopped.
  7588. 4:58:35Takes a little while. See you can see
  7589. 4:58:37the status as deallocating means
  7590. 4:58:39deallocating means it's getting stopped.
  7591. 4:58:41So you can see it's successfully stopped
  7592. 4:58:43and after that you can even delete the
  7593. 4:58:45virtual machine. So the virtual machine
  7594. 4:58:47is getting deleted and through this
  7595. 4:58:49billing cycle was uh still going on for
  7596. 4:58:51because we had a virtual machine with so
  7597. 4:58:54it got deleted. So virtual machine is
  7598. 4:58:57you can see is deleted still other uh
  7599. 4:58:59things are still there. If you want to
  7600. 4:59:01delete the resource group as well you
  7601. 4:59:03can completely delete the resource
  7602. 4:59:04group. You just have to type the
  7603. 4:59:06resource group name. So delete. So all
  7604. 4:59:08the services which are being under this
  7605. 4:59:10will be deleted along with the resource
  7606. 4:59:11group. So you can see uh and just come
  7607. 4:59:15to home and now you can see there's no
  7608. 4:59:17okay let me go to the VM resource the
  7609. 4:59:19resource not found because it got
  7610. 4:59:21deleted. Okay let me refresh it once
  7611. 4:59:23again. So yeah there's no resource group
  7612. 4:59:26anymore. So this is all about the
  7613. 4:59:29virtual machine and how to create it as
  7614. 4:59:33well as how to delete it and all the
  7615. 4:59:36concepts behind it. So next is uh the
  7616. 4:59:38pricing options. So for pricing option
  7617. 4:59:41you can just simply go for Azure virtual
  7618. 4:59:43machine
  7619. 4:59:45pricing.
  7620. 4:59:47Let's see the pricing structure how the
  7621. 4:59:50pricing works for Azure virtual machine.
  7622. 4:59:52You can see like can select whatever the
  7623. 4:59:54operating system you want to choose. You
  7624. 4:59:56can choose that from here. Just a sec.
  7625. 4:59:59Yeah, everything is there. You can
  7626. 5:00:01choose as per your requirement. Like
  7627. 5:00:03right now I'm going with I'm going with
  7628. 5:00:05Windows OS only. And category I can
  7629. 5:00:07choose like whichever I want to. Right
  7630. 5:00:09now I'm choosing general purpose only.
  7631. 5:00:11Pricing is getting updated here. You can
  7632. 5:00:13see BS series, AV2 and standard D2
  7633. 5:00:18standard all standards are there on the
  7634. 5:00:20basis of the pricing differs. And now if
  7635. 5:00:22I choose the VM just a second Windows OS
  7636. 5:00:26choose the category that is general
  7637. 5:00:28purpose then I have to choose the VM
  7638. 5:00:31series that is uh suppose I going to
  7639. 5:00:34choose PS series and then the region
  7640. 5:00:38suppose I choose mine central India
  7641. 5:00:40currency and no in rupees or dollars
  7642. 5:00:43it's up to you suppose I'm going with
  7643. 5:00:45dollar only right now displaying prices
  7644. 5:00:47by hour or by month you can see and then
  7645. 5:00:50you can come to see the prices right for
  7646. 5:00:53B1's because we have choose the B1's
  7647. 5:00:56right BS series. So B1's that is the
  7648. 5:00:58price dollar wise.
  7649. 5:01:01Similarly if you go with a different
  7650. 5:01:03series like suppose we say this V5 then
  7651. 5:01:06you can see the prices got changed. This
  7652. 5:01:08is how it gets changed. So this is how
  7653. 5:01:10we can look for the prices and go as for
  7654. 5:01:12a requirement.
  7655. 5:01:16Let us start by taking a look at the
  7656. 5:01:18definition first. Now if I talk about
  7657. 5:01:19the definition, this is what we have. It
  7658. 5:01:21is Microsoft's multi-tenant cloud-based
  7659. 5:01:23directory, an identity management
  7660. 5:01:25service that combines core directory
  7661. 5:01:27services, application access management
  7662. 5:01:29and identity protection into a single
  7663. 5:01:31solution. Now there's so many terms in
  7664. 5:01:32it and so many things to understand. Let
  7665. 5:01:35me simplify this definition so that you
  7666. 5:01:36understand it in a much better way. To
  7667. 5:01:38do that, I would be giving you an
  7668. 5:01:39example. Think of it in this way.
  7669. 5:01:41Suppose I am a cloud vendor or not a
  7670. 5:01:43cloud vendor. I am a service vendor and
  7671. 5:01:46I reside on a cloud. That means I have a
  7672. 5:01:48particular application that runs on
  7673. 5:01:50cloud. Now this service is used by quite
  7674. 5:01:52a few customers plus there are quite a
  7675. 5:01:55few organizations that I have to
  7676. 5:01:56interact with. Now in this case all
  7677. 5:01:58these medias or customers and
  7678. 5:02:00organizations they have to communicate
  7679. 5:02:02with me. So how do they do it? Well,
  7680. 5:02:04what they would do is they would go
  7681. 5:02:05ahead and create an account or maybe
  7682. 5:02:07have some user ids through which they
  7683. 5:02:09can actually communicate with me. Now
  7684. 5:02:10this is okay if the number is countable
  7685. 5:02:12or manageable. Suppose there was a
  7686. 5:02:15situation where we had a number of
  7687. 5:02:16people and the number of people was
  7688. 5:02:18constantly increasing. Suppose I have
  7689. 5:02:20somewhere around 1,000 2,000 people. Now
  7690. 5:02:23these many login and these many
  7691. 5:02:25credentials managing all these can be a
  7692. 5:02:27huge problem. Let me give you an
  7693. 5:02:29example. How does this happen exactly or
  7694. 5:02:30what problems do you face normally?
  7695. 5:02:32Suppose I have 10 organizations. Now to
  7696. 5:02:34log into all these or give access to all
  7697. 5:02:36these 10 organizations can be a huge
  7698. 5:02:39problem. Why all these organizations
  7699. 5:02:41might have different kind of accesses.
  7700. 5:02:43Based on that I have to set in different
  7701. 5:02:44security protocols as well. If certain
  7702. 5:02:47organizations have an easier protocol
  7703. 5:02:49what if they get an access to other
  7704. 5:02:51organizations as well or to the data
  7705. 5:02:53that other organizations have to
  7706. 5:02:54correspond to. In that case it can be a
  7707. 5:02:56huge problem. Apart from that I might
  7708. 5:02:58have n number of customers and keeping
  7709. 5:03:00track of so many customers can again be
  7710. 5:03:02a problem when you talk about creating
  7711. 5:03:03credentials. So all this is a huge
  7712. 5:03:06problem. So what happened was Microsoft
  7713. 5:03:08Azure it went ahead and created
  7714. 5:03:10something called as Azure Active
  7715. 5:03:11Directory. It is nothing but something
  7716. 5:03:13that acts as a middleware. It takes care
  7717. 5:03:15of all the signins and all these things.
  7718. 5:03:17How? Now the users will have a single
  7719. 5:03:19sign on process. That means they would
  7720. 5:03:21sign in only once. Plus they can have
  7721. 5:03:23access to the applications that are
  7722. 5:03:24there which I provide them. Now this
  7723. 5:03:27intermediary that is your active
  7724. 5:03:29directory. What it does is it federates
  7725. 5:03:31all the responsibilities of taking care
  7726. 5:03:33of access and all those things that is
  7727. 5:03:35the way I set all the rules. It just
  7728. 5:03:37incorporates those rules and accordingly
  7729. 5:03:39it gives access to all the users. thus
  7730. 5:03:41simplifying all the complexities that I
  7731. 5:03:43would face otherwise. So this is what an
  7732. 5:03:45active directory exactly is. It
  7733. 5:03:47basically goes ahead and simplifies all
  7734. 5:03:49the signing in and user authentication
  7735. 5:03:51processes or identification processes
  7736. 5:03:53rather. Now as we move further we'll be
  7737. 5:03:55discussing quite a few other terms and
  7738. 5:03:57you'd be having a clearer picture as to
  7739. 5:03:59what I'm saying exactly. But meanwhile
  7740. 5:04:00you just bear with me and let's move
  7741. 5:04:02further and try to understand what are
  7742. 5:04:04the other points that we need to talk
  7743. 5:04:05about. Okay. Yes, I did miss out on this
  7744. 5:04:07point. What Microsoft Azure does is it
  7745. 5:04:09also gives you something called as a
  7746. 5:04:11better platform where developers can
  7747. 5:04:13develop their applications with lot more
  7748. 5:04:15ease. Again, as we move further, we'll
  7749. 5:04:17be understanding this point as well.
  7750. 5:04:23So what is the exact difference between
  7751. 5:04:26Windows AD and Azure AD? Let's try to
  7752. 5:04:28understand that as well. Now when you
  7753. 5:04:30talk about Windows AD that is active
  7754. 5:04:31directory, these are the layers it has
  7755. 5:04:34to take care of. You have something
  7756. 5:04:35called as your domain services. You have
  7757. 5:04:37your lightweight directories. You have
  7758. 5:04:39your federation services, certificate
  7759. 5:04:41services and rights management services
  7760. 5:04:42as well. Now these are so many things to
  7761. 5:04:44take care of. When you talk about your
  7762. 5:04:46active directory with Microsoft Azure,
  7763. 5:04:48it combines all these layers into two.
  7764. 5:04:52Firstly, you have your Windows Azure
  7765. 5:04:54active directory. Now it is something
  7766. 5:04:56that takes care of all the services that
  7767. 5:04:58surround or revolve around identity
  7768. 5:05:00problems. That is when you talk about
  7769. 5:05:03identification management, this is the
  7770. 5:05:04part that takes care of it. that is your
  7771. 5:05:06W A and then we have the other part
  7772. 5:05:08where you have to actually go ahead and
  7773. 5:05:10communicate with other organizations. I
  7774. 5:05:11gave you an example of 10 different
  7775. 5:05:13organizations needing 10 different
  7776. 5:05:15things that is federating all these
  7777. 5:05:16organizations. Your Windows Azure access
  7778. 5:05:19control services it takes care of all
  7779. 5:05:20those things. So both these so-called
  7780. 5:05:23active directories they more or less
  7781. 5:05:25serve similar purposes but the approach
  7782. 5:05:27in which they do is is completely
  7783. 5:05:29different. Your active directory has
  7784. 5:05:30more layered approach where every
  7785. 5:05:32service is given a different layer or
  7786. 5:05:34different way of handling it. But when
  7787. 5:05:36you talk about your Microsoft Azure
  7788. 5:05:38active directory, it simplifies things.
  7789. 5:05:41Your first layer takes care of most of
  7790. 5:05:42the things and the remaining things are
  7791. 5:05:44something that is taken care by your
  7792. 5:05:45Windows Azure access control service.
  7793. 5:05:47Also, when you talk about active
  7794. 5:05:49directory, it uses something called as
  7795. 5:05:51LDAP for various other communications.
  7796. 5:05:52But when you talk about your Azure
  7797. 5:05:54active directory, here you use something
  7798. 5:05:56called as your REST APIs. Again the
  7799. 5:05:58approach is completely different.
  7800. 5:06:04So what are the audiences that are
  7801. 5:06:06catered by this directory? Well, first
  7802. 5:06:09and foremost we have IT admins. Now when
  7803. 5:06:11I talk about IT admins, what Microsoft
  7804. 5:06:13Azure active directory does is it
  7805. 5:06:15provides in single sign on for various
  7806. 5:06:17applications. Now there are quite a few
  7807. 5:06:20SAS applications that is software as a
  7808. 5:06:22service applications and various
  7809. 5:06:23onremise applications to which you have
  7810. 5:06:25a single sign on. You do not have to
  7811. 5:06:27login every now and then. Now I've
  7812. 5:06:28worked on quite a few applications and
  7813. 5:06:30places where you have to login every now
  7814. 5:06:32and then you have a lot of trouble
  7815. 5:06:33because you have to remember so many
  7816. 5:06:35passwords and so many login and these
  7817. 5:06:37different credentials can be a problem.
  7818. 5:06:38Now this is something your Microsoft
  7819. 5:06:40Azure takes care of. Single sign on is
  7820. 5:06:42very convenient. Apart from that it
  7821. 5:06:44ensures strong identification and there
  7822. 5:06:46quite a few processes that ensure this.
  7823. 5:06:48Now I won't be discussing those points
  7824. 5:06:50in detail but yes when you talk about
  7825. 5:06:51identification Microsoft Azure ensures
  7826. 5:06:53that it happens in a very good manner.
  7827. 5:06:55Plus, it automates quite a few
  7828. 5:06:57processes. Again, easing up this
  7829. 5:06:58process. Apart from that, it also caters
  7830. 5:07:01quite a few developers as well. Now, I'm
  7831. 5:07:03talking about quite a few organizations
  7832. 5:07:05and since sign on becomes easier here,
  7833. 5:07:07your application developers can focus on
  7834. 5:07:09building applications and since they
  7835. 5:07:11have access to so many organizations and
  7836. 5:07:13so many resources, application
  7837. 5:07:14development definitely becomes easier.
  7838. 5:07:16Online customers, now people who have
  7839. 5:07:19been working for quite a while, they
  7840. 5:07:20might know that we have things like
  7841. 5:07:22Office 365 or you have your CRM services
  7842. 5:07:24as well. Now you had an access to all
  7843. 5:07:27these things by using your Windows
  7844. 5:07:29active directory. But your Microsoft
  7845. 5:07:31Azure active directory also gives you
  7846. 5:07:32access to all these services. That means
  7847. 5:07:34if you're using or have account on any
  7848. 5:07:36one of these things, you can have access
  7849. 5:07:38to all these services or have access to
  7850. 5:07:40all the active directory services that
  7851. 5:07:42Azure has to provide to you. So what
  7852. 5:07:44this does is it cers the needs of
  7853. 5:07:45various online customers as well.
  7854. 5:07:52So let us try to understand the next
  7855. 5:07:54point that is Azure Active Directory
  7856. 5:07:56additions. For that what I'm going to do
  7857. 5:07:58is I'm going to go ahead and switch into
  7858. 5:07:59the Microsoft's web page basically or
  7859. 5:08:02I'm going to switch into my browser and
  7860. 5:08:04move to their website and talk about all
  7861. 5:08:05these points. So instead what I would do
  7862. 5:08:07is I would first discuss the last point
  7863. 5:08:10and before we do go ahead and take a
  7864. 5:08:11look at the demo then we would just go
  7865. 5:08:13ahead and talk about these points as
  7866. 5:08:15well so that we can directly switch into
  7867. 5:08:16the demo part. So let's move further and
  7868. 5:08:18try to understand the next point and
  7869. 5:08:19then come back to this point.
  7870. 5:08:26So what are tenants basically? Now when
  7871. 5:08:28you talk about a tenant, it is nothing
  7872. 5:08:29but an organization. I just mentioned
  7873. 5:08:31that we have tens of organizations that
  7874. 5:08:33a particular application might cater.
  7875. 5:08:35Now all these organizations are treated
  7876. 5:08:37as tenants. All these tenants can have
  7877. 5:08:40access to a particular active directory
  7878. 5:08:42or more than one active directory. As we
  7879. 5:08:44move into the demo part, I would be
  7880. 5:08:46talking about how to create multiple
  7881. 5:08:48directories as well. Yes, we can have
  7882. 5:08:49more than one active directory. We'll
  7883. 5:08:51discuss that as we move into the demo
  7884. 5:08:53part. But before that, you just
  7885. 5:08:54understand these points as in what I'm
  7886. 5:08:56trying to say exactly. Yes, what happens
  7887. 5:08:58here exactly is when you talk about a
  7888. 5:09:00tenant, first and foremost, it is
  7889. 5:09:02nothing but an organization and it is a
  7890. 5:09:04dedicated instance of your Azure Active
  7891. 5:09:06Directory service. Plus, these are
  7892. 5:09:08isolated instances. That means as I
  7893. 5:09:11mentioned, we have 10 organizations or
  7894. 5:09:12five organizations. You'd be having
  7895. 5:09:14isolated instances for each of these
  7896. 5:09:16organizations ensuring that they stay
  7897. 5:09:19aloof and their services and their
  7898. 5:09:22protocols are maintained differently.
  7899. 5:09:23This is where your Azure active
  7900. 5:09:25directory steps in. It takes care of all
  7901. 5:09:26these things. It ensures that nothing is
  7902. 5:09:29ambiguous or nothing is intermixed.
  7903. 5:09:31Everything stays separate. Plus each and
  7904. 5:09:33every platform or organization gets
  7905. 5:09:36serviced equally well. As we move
  7906. 5:09:38further, we would be creating users and
  7907. 5:09:40then I would give you the differences as
  7908. 5:09:42in what a tenant is, how do you go ahead
  7909. 5:09:44and create all the domains and all those
  7910. 5:09:45things. So again into the demo part
  7911. 5:09:47you'd be understanding these topics with
  7912. 5:09:49little more clarity or more
  7913. 5:09:51understanding rather
  7914. 5:09:57this is the demo part but before that as
  7915. 5:09:59I've already mentioned let me quickly
  7916. 5:10:01switch to the website of Microsoft Azure
  7917. 5:10:03and I would be discussing the additions
  7918. 5:10:06that you can choose from and then we can
  7919. 5:10:08directly jump into the demo part. Okay
  7920. 5:10:10guys, so this is a Microsoft doc
  7921. 5:10:12basically which talks about choosing an
  7922. 5:10:14addition. So these are the options you
  7923. 5:10:17have. We would be finishing this quickly
  7924. 5:10:18and then we would be switching into the
  7925. 5:10:20demo part. So let's understand this. Now
  7926. 5:10:22what Microsoft Azure does is it gives
  7927. 5:10:24you various options. First and foremost,
  7928. 5:10:27you have three options to pick from. And
  7929. 5:10:29out of these three options, the first
  7930. 5:10:31one is your basic option that is your
  7931. 5:10:33active directory basic. Then you have
  7932. 5:10:35your premium which is P1. And then you
  7933. 5:10:37have one more premium which is P2. All
  7934. 5:10:39these things provide you with different
  7935. 5:10:41options that you have. First and
  7936. 5:10:42foremost, your main job is to have your
  7937. 5:10:45access that is your identity management,
  7938. 5:10:47your security and your single sign on
  7939. 5:10:49and all those things. Now, these are
  7940. 5:10:51some of the services that come with your
  7941. 5:10:53basic account as well and also with your
  7942. 5:10:56free account. What Microsoft Azure does
  7943. 5:10:58is for people who are completely new to
  7944. 5:11:00the session and Microsoft Azure, let me
  7945. 5:11:02tell you that you have a free sign into
  7946. 5:11:04Microsoft account. That means you can go
  7947. 5:11:06ahead and create your account there and
  7948. 5:11:08avail these services for a certain
  7949. 5:11:10duration which are available to you for
  7950. 5:11:12free. So yes, you do not have to pay
  7951. 5:11:14anything. There you have a free account
  7952. 5:11:16in that you'll be having access to some
  7953. 5:11:18of these services. But if you need
  7954. 5:11:20advanced services then you have to pay
  7955. 5:11:22for it. And for those things you have
  7956. 5:11:24three options that is your basic,
  7957. 5:11:26premium P1 and premium P2. Let's try to
  7958. 5:11:28understand these one by one as in what
  7959. 5:11:30are these and what do they have to offer
  7960. 5:11:31to you. Now if you scroll down and if
  7961. 5:11:33you take a look at this thing you have
  7962. 5:11:34your Azure active directory basic. Now
  7963. 5:11:37this basic is nothing but it is designed
  7964. 5:11:38for people who are task workers or who
  7965. 5:11:41are focused on a particular application
  7966. 5:11:43of on cloud. Now it takes care of
  7967. 5:11:45everything your single signons your SLAs
  7968. 5:11:48and it ensures that the security is
  7969. 5:11:5099.9%. And it provides you with all
  7970. 5:11:53these features which you can see here
  7971. 5:11:54that is your self-service password
  7972. 5:11:56resets and all those things. You also
  7973. 5:11:58have access to quite a few things like
  7974. 5:11:59your proxies and all those things. I
  7975. 5:12:01won't be getting into the details of
  7976. 5:12:02what proxies are and all those things.
  7977. 5:12:04But yeah, for people who are admins and
  7978. 5:12:05who have worked on these topics or in
  7979. 5:12:08these domains, they would understand
  7980. 5:12:09what do these things mean. So yep, you
  7981. 5:12:11have access to all these things which
  7982. 5:12:13fall under your basic option. Apart from
  7983. 5:12:16that, you have something called as your
  7984. 5:12:17premium P1. Now this is for people who
  7985. 5:12:20want to scale up. So when you try to
  7986. 5:12:22scale up, you'd be dealing with quite a
  7987. 5:12:24few things and terms like your IM and
  7988. 5:12:26all those things would come into
  7989. 5:12:27picture. Now, IM is nothing but your
  7990. 5:12:30identity and access management basically
  7991. 5:12:32which is a very important point when you
  7992. 5:12:33talk about active directories. So, yes,
  7993. 5:12:36it provides you with these things as
  7994. 5:12:37well or these facilities as well like
  7995. 5:12:39identity protection, your security in
  7996. 5:12:41the cloud and all those things.
  7997. 5:12:42Everything is taken care of for this
  7998. 5:12:43particular model. Now, when you talk
  7999. 5:12:45about premium P2, if I scroll down, this
  8000. 5:12:48is what you have. It is designed for
  8001. 5:12:50more advanced protection. That means
  8002. 5:12:52you'd be getting all the services that
  8003. 5:12:53were provided in basic and P1. Apart
  8004. 5:12:56from that you'd be having some
  8005. 5:12:58additional services which ensure more
  8006. 5:13:00security. That means it focuses more on
  8007. 5:13:03privilege identity management. Now again
  8008. 5:13:05this is something that you can read and
  8009. 5:13:07understand. It is very easy. But to give
  8010. 5:13:09you a basic difference your first thing
  8011. 5:13:11provides you with your basic services
  8012. 5:13:13that is your basic access gives you
  8013. 5:13:15basic active directory service access.
  8014. 5:13:17Then you have your premium version which
  8015. 5:13:18is focused for scaling up and when you
  8016. 5:13:20talk about P2 it focuses more on
  8017. 5:13:22advanced security. So these are the
  8018. 5:13:24three different additions that you can
  8019. 5:13:26choose from. Now if you're somebody who
  8020. 5:13:28is belonging to a particular
  8021. 5:13:30organization and wants to go ahead and
  8022. 5:13:32use these services, he can actually go
  8023. 5:13:33ahead and read all these things and then
  8024. 5:13:35go ahead and take a decision
  8025. 5:13:36accordingly. Now what I'm going to do is
  8026. 5:13:38I'm quickly going to go ahead and switch
  8027. 5:13:39into the demo part. For that I need to
  8028. 5:13:41go ahead and open my Microsoft Azure
  8029. 5:13:43account. So let's do that. Well,
  8030. 5:13:47my internet is kind of slow today. So it
  8031. 5:13:49might take a little longer while than
  8032. 5:13:51normal. I can click here on portal and
  8033. 5:13:53there you go. It would ask me to sign
  8034. 5:13:55in. I would be using a dummy account
  8035. 5:13:57today for this so-called demo. I wanted
  8036. 5:13:59to give you an access to or view to
  8037. 5:14:01quite a few directories and all those
  8038. 5:14:03things. So that is why I did go ahead
  8039. 5:14:05and create an account and or certain
  8040. 5:14:07active directories created or basically
  8041. 5:14:10certain accounts created. Now this is
  8042. 5:14:12how the Azure portal looks like for
  8043. 5:14:14people who are completely new. Again you
  8044. 5:14:15have your dashboard here. Apart from
  8045. 5:14:17that, you can actually go ahead and
  8046. 5:14:18create quite a few things that is your
  8047. 5:14:19virtual machines, your data factories
  8048. 5:14:21and all those things. For people who
  8049. 5:14:23want to know all those things, they can
  8050. 5:14:24actually go ahead and refer the other
  8051. 5:14:25videos that are there in this series and
  8052. 5:14:28you would know quite a few other things
  8053. 5:14:29as well. But as far as this session
  8054. 5:14:31goes, we are here to talk about active
  8055. 5:14:33directory. So let's head into it and try
  8056. 5:14:34to understand how do you go ahead and
  8057. 5:14:36create active directories and all those
  8058. 5:14:37things. Now how do you navigate to a
  8059. 5:14:39particular active directory? Now if you
  8060. 5:14:40scroll down here you would be seeing an
  8061. 5:14:42active directory here for people who
  8062. 5:14:44have an account on Microsoft Azure and
  8063. 5:14:46have access to all these things. They
  8064. 5:14:47would have an active directory by
  8065. 5:14:49default. So you just have to come here
  8066. 5:14:50and click on it and a particular
  8067. 5:14:53dashboard would open up for you people
  8068. 5:14:55as well. Now this is how it looks like.
  8069. 5:14:57You have all these things an overview
  8070. 5:14:58getting started. You have users groups
  8071. 5:15:00which you can manage and monitor. You
  8072. 5:15:02have devices you can connect to your
  8073. 5:15:04various app registrations. As I've told
  8074. 5:15:06you you can manage multiple applications
  8075. 5:15:08as well. Now in that case what happens
  8076. 5:15:10is as I've mentioned you might be
  8077. 5:15:11dealing with multiple applications. So a
  8078. 5:15:13particular user what applications should
  8079. 5:15:15he have access to? What domains does he
  8080. 5:15:17have access to? What are the devices
  8081. 5:15:19that are configured? All these things
  8082. 5:15:21can be controlled or managed from here
  8083. 5:15:22basically. So this is what your
  8084. 5:15:24so-called active directory does. Now
  8085. 5:15:26let's move further and try to create
  8086. 5:15:27some users. Now how do we do that? Well
  8087. 5:15:29I can click on this icon here and it
  8088. 5:15:32would give you the list of users that
  8089. 5:15:34are already there. As you can see there
  8090. 5:15:36quite a few users here. This was a demo
  8091. 5:15:38account. So, we did go ahead and create
  8092. 5:15:39so-called users so that you can have a
  8093. 5:15:41look at them. This is something that I
  8094. 5:15:43created yesterday that is Chris Pratt.
  8095. 5:15:45Now, how do you go ahead and create an
  8096. 5:15:46account? I would be talking about all
  8097. 5:15:48these things to give you a start. You
  8098. 5:15:50have to click on this thing new users
  8099. 5:15:53and this window opens up. Now, again,
  8100. 5:15:55I'll have to go back and show you
  8101. 5:15:56something else. How do we deal with all
  8102. 5:15:58these things? Well, first and foremost,
  8103. 5:16:00you need to give in a pseudo name or a
  8104. 5:16:02name of the person for which you want to
  8105. 5:16:04create a user. Apart from that, you need
  8106. 5:16:07a particular domain name or yes, a
  8107. 5:16:09domain name for a particular domain
  8108. 5:16:10service. Now, how do we get that? Now,
  8109. 5:16:13these domain services have to be
  8110. 5:16:14registered with your so-called Azure
  8111. 5:16:17Active Directory. So, I have these
  8112. 5:16:19accounts here, right? So, I can use one
  8113. 5:16:21of these accounts to just go ahead and
  8114. 5:16:23create a particular user. Suppose I want
  8115. 5:16:25that user to be assigned or maybe
  8116. 5:16:28associated with this ID. So, I can
  8117. 5:16:31select this domain service extension
  8118. 5:16:33basically. Again click on new user. So
  8119. 5:16:36what name should I give to this
  8120. 5:16:37particular user? Now I am a huge cricket
  8121. 5:16:39fan and recently I watched England's
  8122. 5:16:42match. So let's pick name of one of the
  8123. 5:16:45players that belongs to England team say
  8124. 5:16:47Sam billings and again this is where I
  8125. 5:16:49would be creating the user. Say I say
  8126. 5:16:52Sam bill as a pseudo name and I give in
  8127. 5:16:56this domain details that is at
  8128. 5:16:58edurea.tk.
  8129. 5:16:59Now this is something that is configured
  8130. 5:17:01already. That is why I can use it and I
  8131. 5:17:03can have an account. If I used an ID
  8132. 5:17:05that was not registered with this Azure
  8133. 5:17:08account, I wouldn't have been able to
  8134. 5:17:09create this user because it would have
  8135. 5:17:11given me a particular error. As we move
  8136. 5:17:13further, we would be taking a look at
  8137. 5:17:14that as well. But for now, let's go
  8138. 5:17:16ahead and create a legitimate user that
  8139. 5:17:18is this one. Now, it verifies whether
  8140. 5:17:20the name is proper or not. Name is
  8141. 5:17:22something you can use in any which way
  8142. 5:17:24you want to. But your username has to be
  8143. 5:17:26legit and valid. So I have these details
  8144. 5:17:28which I've entered. Configuration not
  8145. 5:17:30required. Properties can be default. And
  8146. 5:17:33if I have to assign him a role, I can
  8147. 5:17:35click here. You can see the name is
  8148. 5:17:37verified here as well. Let's make him a
  8149. 5:17:40global admin maybe. And again you'd be
  8150. 5:17:42given a password here. If you say show,
  8151. 5:17:44it would show you the password. And I
  8152. 5:17:45would suggest that you note it down
  8153. 5:17:47because you would be required to go
  8154. 5:17:49ahead and log in. And in that case, you
  8155. 5:17:51might be needing this password. So a
  8156. 5:17:53suggestion that you note it down. I say
  8157. 5:17:56okay here and I create the user. Now it
  8158. 5:17:59might take a while because at times
  8159. 5:18:00there are certain things that take a
  8160. 5:18:02while but in this case it has happened
  8161. 5:18:03pretty quickly. So as you can see we've
  8162. 5:18:06gone ahead and created a user. His name
  8163. 5:18:08was sambling if I'm not wrong. So yes
  8164. 5:18:10there you have this account which is
  8165. 5:18:12sample and if you click on it and open
  8166. 5:18:14it you can have access to that account
  8167. 5:18:17where you can enter in other details.
  8168. 5:18:19What applications that are there under
  8169. 5:18:20this user and what applications do you
  8170. 5:18:22want to assign? which devices do you
  8171. 5:18:24want to configure and all those things.
  8172. 5:18:26If you scroll down, you have some other
  8173. 5:18:27options as well. Signins and audit logs.
  8174. 5:18:29Now, I won't get into the details of
  8175. 5:18:31these things, but you can assign all
  8176. 5:18:33these things to this particular user as
  8177. 5:18:35well. So, yeah, this is what the user
  8178. 5:18:37looks like and you can actually go ahead
  8179. 5:18:39and log into this Azure account through
  8180. 5:18:42this user profile as well. We can do
  8181. 5:18:44that. What I'm going to do is I'm going
  8182. 5:18:45to go ahead and create or open an
  8183. 5:18:47incognito window where I'm going to go
  8184. 5:18:49ahead and login as this user. Let's just
  8185. 5:18:52say cognto. And
  8186. 5:18:56now if I try to login, I would have to
  8187. 5:18:59enter in the details. I've actually gone
  8188. 5:19:01ahead and tried logging in, but I've
  8189. 5:19:03forgotten the credential details. So let
  8190. 5:19:05me just quickly switch to this window.
  8191. 5:19:07Copy this email ID and again switch
  8192. 5:19:09here. So this is the email id which we
  8193. 5:19:10have sam bill. Next and my password was
  8194. 5:19:16I hope it is right.
  8195. 5:19:18Yes. So when you log in for the first
  8196. 5:19:21time, it would ask you to enter the
  8197. 5:19:23current password
  8198. 5:19:26and then you can enter the new password
  8199. 5:19:28let's say
  8200. 5:19:30and then you reenter the password.
  8201. 5:19:34There you go. And you sign in. So what
  8202. 5:19:36happens is you enter into this portal as
  8203. 5:19:39a fresh user.
  8204. 5:19:42See I'm a completely new user and it
  8205. 5:19:44says do you want to start a tour? But I
  8206. 5:19:46don't want to do that. So I would just
  8207. 5:19:47say maybe later. There you go. You have
  8208. 5:19:50your fresh dashboard. There is nothing
  8209. 5:19:51pinned here and everything is completely
  8210. 5:19:53new. So yep, you've entered in as a
  8211. 5:19:56completely new user
  8212. 5:19:58and this is the active directory where
  8213. 5:20:00I'm assigned to that is my previous
  8214. 5:20:02active directory. As you can see, this
  8215. 5:20:04is what we have here to offer. So yes,
  8216. 5:20:06as a user I have certain privileges and
  8217. 5:20:08I can have access to this so-called
  8218. 5:20:10portal. So this is something I wanted
  8219. 5:20:12you all to see there. There there quite
  8220. 5:20:13a few other things which we are going to
  8221. 5:20:14go ahead and take a look at it. But for
  8222. 5:20:15now, let me just log out and close this
  8223. 5:20:18tab. Now I'm back here. There are other
  8224. 5:20:20things I want you to understand and
  8225. 5:20:22those things are if I come here, what
  8226. 5:20:24you can see is we have certain users
  8227. 5:20:26here. Right? There you go. Now if you
  8228. 5:20:28take a look at certain email ids, you
  8229. 5:20:31can see these email ids. Now these are
  8230. 5:20:32quite huge email ids, right? What
  8231. 5:20:34happens is when you do go ahead and
  8232. 5:20:36register your domain service, you
  8233. 5:20:38register that domain service with
  8234. 5:20:40Microsoft Azure account. And when you do
  8235. 5:20:42go ahead and create users, you would not
  8236. 5:20:44want to have such use names that is say
  8237. 5:20:46for example Vishall at Microsoft
  8238. 5:20:49something something something something
  8239. 5:20:50that can be long right and that is
  8240. 5:20:52complicated to handle or manage. So
  8241. 5:20:54instead what you can do is you can
  8242. 5:20:55provide them with sudo identities or
  8243. 5:20:57pseudo ids as well so that the process
  8244. 5:21:00becomes easier or simpler to handle.
  8245. 5:21:02Let's try to do that and see how can we
  8246. 5:21:04do that. Can we just go ahead and assign
  8247. 5:21:06a particular domain name or a domain
  8248. 5:21:08service when we just go ahead and create
  8249. 5:21:10a new user or all those things. So in
  8250. 5:21:13order to add a particular domain what
  8251. 5:21:14you have to do is you have to go ahead
  8252. 5:21:15and again where is my active directory
  8253. 5:21:18here it is and I just kind of scroll
  8254. 5:21:20down you can see custom domain names
  8255. 5:21:22where you can actually go ahead and add
  8256. 5:21:24domain names but there are certain
  8257. 5:21:25catches to it. Let's try to understand
  8258. 5:21:27those. Now it would ask me to enter a
  8259. 5:21:30custom domain name and I say demo domain
  8260. 5:21:33maybe. Yeah. and let me give it some
  8261. 5:21:36extension. Now again let me tell you
  8262. 5:21:37that this is a demo practice and it
  8263. 5:21:40won't take in this particular domain
  8264. 5:21:42name. I'll tell you why. But first let's
  8265. 5:21:44just try to add this domain. Yeah the
  8266. 5:21:46domain name is added but as you can see
  8267. 5:21:49to use demo domain add with Azure AD
  8268. 5:21:52create a new text record with your
  8269. 5:21:54domain name registar using the info
  8270. 5:21:57below. So if I say text I need to copy
  8271. 5:22:00this part and I have to actually go
  8272. 5:22:02ahead and add this to my particular
  8273. 5:22:03domain name. Now I won't be going ahead
  8274. 5:22:05and doing that because that is something
  8275. 5:22:06that we are not discussing here because
  8276. 5:22:08for that we would be needing some other
  8277. 5:22:10domain name which I do not have right
  8278. 5:22:12now with me. So if you do go ahead and
  8279. 5:22:14try to add a particular domain name you
  8280. 5:22:16need to have that particular domain that
  8281. 5:22:17is suppose I'm using a particular
  8282. 5:22:19website or I have a particular
  8283. 5:22:21organization which has a particular
  8284. 5:22:23website or a domain name that is
  8285. 5:22:24[email protected]
  8286. 5:22:26or something like that. So I need to
  8287. 5:22:28make sure that I go ahead and register
  8288. 5:22:30or have access to that particular domain
  8289. 5:22:32and then I need to go ahead and attach
  8290. 5:22:33this particular text to it or authorize
  8291. 5:22:35this text with it so that I can actually
  8292. 5:22:37go ahead and confirm with Microsoft
  8293. 5:22:39Azure that yes I have an access to that
  8294. 5:22:41particular domain and only then can I go
  8295. 5:22:43ahead and use this particular domain
  8296. 5:22:45with my Microsoft Azure. Now if I click
  8297. 5:22:47here on verify it would give me an error
  8298. 5:22:49that I'm very sure of. See could not
  8299. 5:22:51find the DNS record for this domain. DNS
  8300. 5:22:55changes may take up to 72 hours to
  8301. 5:22:57propagate. That means I have 72 hours to
  8302. 5:22:59go ahead and add this particular text
  8303. 5:23:01message to that domain and so that I can
  8304. 5:23:03verify that yes this domain is legal but
  8305. 5:23:05in this case it isn't. I just took
  8306. 5:23:07something for the demo purpose or for
  8307. 5:23:09the reference sake and this is the
  8308. 5:23:11domain that I might have or which I can
  8309. 5:23:13actually go ahead and use. So yeah, this
  8310. 5:23:15is how you actually go ahead and add a
  8311. 5:23:16particular domain and you can actually
  8312. 5:23:18go ahead and create a user as well. What
  8313. 5:23:21you have to do is when you do go ahead
  8314. 5:23:22and register this particular domain, you
  8315. 5:23:24can just go ahead and follow the
  8316. 5:23:25processes like creating a user which we
  8317. 5:23:27did in the previous case because that
  8318. 5:23:29was the registered domain when I used
  8319. 5:23:31that so-called edurea.tk TK it was
  8320. 5:23:33registered with my so-called Azure
  8321. 5:23:35account and I could actually go ahead
  8322. 5:23:36and register that particular user but in
  8323. 5:23:38this case I cannot but yes if you do go
  8324. 5:23:41ahead and create a particular domain or
  8325. 5:23:43you want to go ahead and create a
  8326. 5:23:44particular domain or register a
  8327. 5:23:45particular domain make sure that it is
  8328. 5:23:47valid and it is underused and you can
  8329. 5:23:49actually go ahead and register that
  8330. 5:23:50particular domain by using this
  8331. 5:23:52particular process. So yeah this is how
  8332. 5:23:54you actually go ahead and do all these
  8333. 5:23:55things. Now when you have this
  8334. 5:23:56particular domain which is not
  8335. 5:23:58registered and if you do go ahead and
  8336. 5:23:59create a particular user on it what
  8337. 5:24:01happens is your Microsoft Azure would
  8338. 5:24:03let you create that user but the
  8339. 5:24:05credentials or the access that user has
  8340. 5:24:07is as a guest user because your
  8341. 5:24:09Microsoft isn't sure that this domain
  8342. 5:24:12which you just created is actually
  8343. 5:24:14registered or something that you can
  8344. 5:24:16actually go ahead and use. So that is
  8345. 5:24:17one point which you need to consider.
  8346. 5:24:19Now let me just quickly go back to my
  8347. 5:24:20active directory and see if there are
  8348. 5:24:22anything or any points that I need to
  8349. 5:24:24discuss with you or something that we
  8350. 5:24:25have messed up on. So what I'm going to
  8351. 5:24:28do is I'm going to talk about something
  8352. 5:24:30else called as creating an active
  8353. 5:24:32directory or can we create multiple
  8354. 5:24:34active directories? That is a question.
  8355. 5:24:36If you ask me I would say yes definitely
  8356. 5:24:38you can create multiple directories. Now
  8357. 5:24:40as you see here if I go to a particular
  8358. 5:24:42directory I would be having an option
  8359. 5:24:44called as switch directories. Now if I
  8360. 5:24:47click here I have certain options from
  8361. 5:24:49which I can pick a default directory.
  8362. 5:24:51Now in my case I have quite a few
  8363. 5:24:54directories which I can actually go
  8364. 5:24:55ahead and choose from. But I want to
  8365. 5:24:58give you all a demo as in how do you go
  8366. 5:24:59ahead and create one because these are
  8367. 5:25:01something that we have created for the
  8368. 5:25:04practice purpose or certain usage
  8369. 5:25:06purpose. So let's go ahead and create a
  8370. 5:25:08fresh one. So how do we do that? Can we
  8371. 5:25:10just go ahead and create one? Well yes
  8372. 5:25:12definitely we can create one.
  8373. 5:25:15If you just scroll down, you have
  8374. 5:25:17certain options here. We had an option
  8375. 5:25:20of creating a new directory. Let me just
  8376. 5:25:22go ahead and see where that option is.
  8377. 5:25:24See, this option create a directory. So,
  8378. 5:25:28let's start by giving it certain name.
  8379. 5:25:30Say edureka
  8380. 5:25:321 2 3 4.
  8381. 5:25:36Not 1 2 3 4. Let's call it say edure
  8382. 5:25:39edurea. Maybe is it there? Yep. And what
  8383. 5:25:44should be the domain name? Edureka 121.
  8384. 5:25:48Edureka 121 state. Well, since I'm from
  8385. 5:25:52India, let's stick to India. And I say
  8386. 5:25:54create. Now, it might take a couple of
  8387. 5:25:56minutes when you just go ahead and
  8388. 5:25:57create this so-called directory. So,
  8389. 5:25:59yep. Meanwhile, you bear with me. And
  8390. 5:26:01there you go. You have your directory
  8391. 5:26:03here. You can just click on this thing
  8392. 5:26:04to manage your directories.
  8393. 5:26:07As you can see, it's a completely new
  8394. 5:26:09directory which is fresh and new to use.
  8395. 5:26:12That means as you can see it's Edureka
  8396. 5:26:14Edureka and if you click on any one of
  8397. 5:26:16these things you won't be having
  8398. 5:26:17anything else. Now in my previous active
  8399. 5:26:19directory I had so many users. Now if
  8400. 5:26:21you come here you would see there's just
  8401. 5:26:23one user main admin. I do not have
  8402. 5:26:26anything else or no other user
  8403. 5:26:28whatsoever. That means this is a fresh
  8404. 5:26:30directory. Like as you can see if you
  8405. 5:26:32just go back to the ed option you'd be
  8406. 5:26:35having an option of resetting your
  8407. 5:26:37so-called directory and you can do that
  8408. 5:26:38as well. But I do not want to do that
  8409. 5:26:40for now. I can just click on this and I
  8410. 5:26:43go back. See, here's the option. You can
  8411. 5:26:45click on it and you can switch the user.
  8412. 5:26:47So, yeah, you can use multiple
  8413. 5:26:49directories and you can have multiple
  8414. 5:26:50users for these directories as well.
  8415. 5:26:52Now, I can just go ahead and create
  8416. 5:26:53users for this directory as well. But I
  8417. 5:26:56won't be doing that. Now, since I do not
  8418. 5:26:57need this directory, I'm just going to
  8419. 5:26:59go ahead and delete it. So, I click on
  8420. 5:27:00this icon. I do not have permissions
  8421. 5:27:03probably. So, I click on it and I ensure
  8422. 5:27:05that permission is granted. I say yes
  8423. 5:27:07and I save changes. It might take half a
  8424. 5:27:10minute to update these properties or if
  8425. 5:27:13the internet is slow it might take a
  8426. 5:27:14longer as well. There you see the
  8427. 5:27:16changes have been updated. Now if I
  8428. 5:27:18refresh this thing the access is given
  8429. 5:27:21to me. I can just
  8430. 5:27:23I don't want to delete the dashboard. I
  8431. 5:27:25just want to go ahead and delete my
  8432. 5:27:27so-called uh active directory.
  8433. 5:27:35Okay. So I do not have an access to my
  8434. 5:27:37domain services because of which I'm not
  8435. 5:27:38able to delete this account. But yeah,
  8436. 5:27:41you normally have an option where you
  8437. 5:27:42can actually go ahead and delete this
  8438. 5:27:43directory. So yep, you can go ahead and
  8439. 5:27:45do that as well. So yeah, this was the
  8440. 5:27:47demo about active directory as in how do
  8441. 5:27:49you go ahead and create a user? How do
  8442. 5:27:50you create a particular domain space or
  8443. 5:27:53domain service? Basically, how do you go
  8444. 5:27:54ahead and create multiple active
  8445. 5:27:56directories?
  8446. 5:28:04So our first topic is what are ARM
  8447. 5:28:06templates?
  8448. 5:28:08So as you can see in the definition ARM
  8449. 5:28:10template is a block of code that defines
  8450. 5:28:13the infrastructure and the configuration
  8451. 5:28:15of your project. So here it means that
  8452. 5:28:18it is a way of deploying infrastructure
  8453. 5:28:21as a code to the Azure environment. So
  8454. 5:28:24here you create a project in that you
  8455. 5:28:27define the objects you want and you also
  8456. 5:28:30specify their properties names and their
  8457. 5:28:32types and you convert it into a JSON
  8458. 5:28:35file and once you upload this file into
  8459. 5:28:38the Azure what does ARM API do? It
  8460. 5:28:42understand the whole code which is in
  8461. 5:28:44the JSON file. So here the JSON file is
  8462. 5:28:48then checked into the source control and
  8463. 5:28:50managed like any other code file. So
  8464. 5:28:53here what ARM templates are like they
  8465. 5:28:56give you the ability to roll out within
  8466. 5:28:58the Azure environment. So it can contain
  8467. 5:29:02the contents of the entire resource
  8468. 5:29:04group like they can manage the whole
  8469. 5:29:06resource group or it can also contain
  8470. 5:29:09one or more resources which is assigned
  8471. 5:29:12under that particular resource group. So
  8472. 5:29:14when a template is deployed you have the
  8473. 5:29:17option of either using complete or the
  8474. 5:29:20incremental code like part by part
  8475. 5:29:22codes. So if you go with the complete
  8476. 5:29:25mode it deletes any object that are not
  8477. 5:29:29visible or that does not appear within
  8478. 5:29:31the template. Okay. So if you have a
  8479. 5:29:34template and in that if you are not able
  8480. 5:29:36to see any objects so you can delete you
  8481. 5:29:39can delete from those resource group
  8482. 5:29:41which you're deploying. So in this
  8483. 5:29:43scenario, whatever you're deploying into
  8484. 5:29:45the resource group like you will see
  8485. 5:29:47that many amount of objects into that
  8486. 5:29:49particular resource group. In the
  8487. 5:29:52incremental deployment, it uses
  8488. 5:29:54basically the template to the additional
  8489. 5:29:56resources to an existing resource group.
  8490. 5:29:59So the benefit of this is that you don't
  8491. 5:30:01lose any infrastructure that is missing
  8492. 5:30:04from the template. But the downside is
  8493. 5:30:06that you will have to clear up old
  8494. 5:30:09resources from the other way. So it's
  8495. 5:30:11like whatever new resources you are
  8496. 5:30:13adding into the existing resource group
  8497. 5:30:15that won't delete you are able to see
  8498. 5:30:18those but once you are adding new then
  8499. 5:30:20you need to filter out the previous
  8500. 5:30:22resources as well. In this case, uh the
  8501. 5:30:25ideal deployment is complete, but it
  8502. 5:30:28does mean that you need to have a good
  8503. 5:30:30automated deployment pipeline with at
  8504. 5:30:32least one test environment where you can
  8505. 5:30:35validate that template and it doesn't
  8506. 5:30:37rip the heart of your production like it
  8507. 5:30:40should not ruin your management. Now
  8508. 5:30:43that we have come to know what are ARM
  8509. 5:30:45templates, now let us see why choose ARM
  8510. 5:30:48templates. So how are they useful to us?
  8511. 5:30:51What makes it so special? So there are a
  8512. 5:30:54few advantages which validates that how
  8513. 5:30:57ARM templates are useful to use in Azure
  8514. 5:31:00environment. So we'll look onto them one
  8515. 5:31:03by one. So our first is declarative
  8516. 5:31:06syntax. So what does it means is that
  8517. 5:31:09the RM template allows you to create and
  8518. 5:31:12deploy the entire Azure infrastructure
  8519. 5:31:15declaratively. So it means here that if
  8520. 5:31:18you're using the ARM template you can
  8521. 5:31:20create it while declaring all your by
  8522. 5:31:23declaring all the codes in the JSON file
  8523. 5:31:25where you declare your needs your
  8524. 5:31:27properties and everything. It is very
  8525. 5:31:29declarative. You declare then it allows
  8526. 5:31:32you to deploy it in that way itself.
  8527. 5:31:34Okay. For example, you can not only
  8528. 5:31:37deploy virtual machines but also network
  8529. 5:31:40infrastructure, storage systems and any
  8530. 5:31:43other resources that you need within
  8531. 5:31:45that Azure environment. You don't have
  8532. 5:31:47to go one by one like first you create
  8533. 5:31:49virtual machine and then you can go to
  8534. 5:31:51storage account. You can create it at
  8535. 5:31:53once. Next is repeatable results. So
  8536. 5:31:57here you can repeatedly deploy your
  8537. 5:32:00infrastructure throughout the
  8538. 5:32:01development life cycle and you have the
  8539. 5:32:03confidence that your resources are
  8540. 5:32:05deployed in a consistent manner. It is
  8541. 5:32:08not key you can only deploy once you can
  8542. 5:32:10deploy it more than one time. So and you
  8543. 5:32:14get the consistent results out of it
  8544. 5:32:16like whenever you deploy you will get
  8545. 5:32:18that much appropriate results
  8546. 5:32:20consistently.
  8547. 5:32:22So here the templates are item important
  8548. 5:32:25which means that you can deploy the same
  8549. 5:32:27template many times and the same
  8550. 5:32:30resource types in the same state. So if
  8551. 5:32:33you have created a template you can
  8552. 5:32:36deploy it more than one times. So
  8553. 5:32:38whenever you deploy the resources under
  8554. 5:32:40it will give you the same results. You
  8555. 5:32:43can develop one template that represents
  8556. 5:32:46the desired state rather than developing
  8557. 5:32:48lots of separate templates to represent
  8558. 5:32:51updates. Next is orchestration.
  8559. 5:32:55So what do we mean here is that you
  8560. 5:32:58don't have to worry about the
  8561. 5:33:00complexities of ordering operations. So
  8562. 5:33:03the resource manager orchestrates the
  8563. 5:33:05development of interdependent resources.
  8564. 5:33:08So they are created in the correct
  8565. 5:33:10order. So here you don't have to worry
  8566. 5:33:12that in which order like you don't have
  8567. 5:33:15to think that which one should be
  8568. 5:33:17deployed first which one should be
  8569. 5:33:18deployed second. So ARM template manage
  8570. 5:33:21it reads the code and it manages itself
  8571. 5:33:24and it makes it in order which has to be
  8572. 5:33:26deployed first which has to be deployed
  8573. 5:33:28last. So it is done by the ARM itself.
  8574. 5:33:31You don't have to do it manually. When
  8575. 5:33:34possible, resource manager deploys a
  8576. 5:33:36resource in parallel. So your deployment
  8577. 5:33:39finish faster than serial deployment. It
  8578. 5:33:42can also manage your time by just
  8579. 5:33:45deploying the resources parallelly. So
  8580. 5:33:48it can do the multitasking work like it
  8581. 5:33:51can uh deploy two resources at once so
  8582. 5:33:54that you get the faster results and you
  8583. 5:33:57don't need so many commands to it. you
  8584. 5:33:59can just deploy the template through one
  8585. 5:34:01command rather than imperative command.
  8586. 5:34:04So here you just need to like hit a
  8587. 5:34:07command to run this particular template
  8588. 5:34:09and it all your other tasks are done
  8589. 5:34:11simultaneously. Next is modular files.
  8590. 5:34:15So here you can break your templates
  8591. 5:34:17into smaller reusable components and
  8592. 5:34:20link them togetherment time. You can
  8593. 5:34:23also nest the one template inside the
  8594. 5:34:27another. So you can break down these
  8595. 5:34:29templates into one or more parts
  8596. 5:34:33and then you you can also just create a
  8597. 5:34:35nested loop out of like you can create
  8598. 5:34:40a proper how your deployment should
  8599. 5:34:42process. Next is you can
  8600. 5:34:46create create resources. So as we said
  8601. 5:34:49you can immediately use new Azure
  8602. 5:34:52resources and features into the
  8603. 5:34:54templates. As soon as a resource
  8604. 5:34:56provider introduces new resource you can
  8605. 5:34:59deploy those resources through these
  8606. 5:35:01templates. So you don't have tools or
  8607. 5:35:04modules to be updated before using the
  8608. 5:35:07new services. If you want that
  8609. 5:35:09particular service, it automatically
  8610. 5:35:12grasps that particular service and it
  8611. 5:35:14makes it ready to deploy. Next is
  8612. 5:35:17testing. So when we talk here about
  8613. 5:35:19testing, you can template follows
  8614. 5:35:22recommended guidelines by testing it
  8615. 5:35:25with the ARM template toolkit.
  8616. 5:35:28So what helps you like to test whether
  8617. 5:35:31your whole process or your whole project
  8618. 5:35:34is running smoothly and based on the
  8619. 5:35:37requirements or not. kit is a PowerShell
  8620. 5:35:41script that you can just download from
  8621. 5:35:45GitHub or any portal. So the main
  8622. 5:35:47benefit of this toolkit is that it makes
  8623. 5:35:50it easier for you to develop expertise
  8624. 5:35:52using the template language itself.
  8625. 5:35:54Everything is within the ARM have to
  8626. 5:35:57have a separate testing toolkit for. All
  8627. 5:35:59right. Okay. So one of our folks named
  8628. 5:36:03Rohan has asked is there any other
  8629. 5:36:06toolkit available? As I said Rohan, the
  8630. 5:36:11testing process is within the ARM.
  8631. 5:36:14ARM itself has its own toolkit. So when
  8632. 5:36:18you're deploying a to that ARM API so
  8633. 5:36:22once it is in the process of deployment,
  8634. 5:36:26it it is deployed it will automatically
  8635. 5:36:29go under the testing process and it will
  8636. 5:36:32test the whole template over there. So
  8637. 5:36:34you don't need an extra toolkit for it
  8638. 5:36:37because ARM is one it is managing your
  8639. 5:36:40services. It is managing your resources
  8640. 5:36:43whatever you're deploying into the
  8641. 5:36:44Azure. Lastly once it is deployed it is
  8642. 5:36:47also testing it whether that particular
  8643. 5:36:49resources working smoothly or not. I
  8644. 5:36:52hope you got clear with this.
  8645. 5:36:54Moving ahead we have deployment
  8646. 5:36:57blueprints.
  8647. 5:36:59So before we see what is the advantage
  8648. 5:37:01of these blueprints, let us understand
  8649. 5:37:03what are basically blueprints. So just
  8650. 5:37:06as blueprints allow a particular
  8651. 5:37:09engineer or an architecture to sketch a
  8652. 5:37:11project's design or the parameters. So
  8653. 5:37:15Azure blueprints is also one kind of
  8654. 5:37:17them that enables the cloud architects
  8655. 5:37:19or the central information technology
  8656. 5:37:22groups to define a reputable set of
  8657. 5:37:25Azure resources that implements and
  8658. 5:37:27adheres to an organization's standard
  8659. 5:37:30patterns and requirements. So basically
  8660. 5:37:33the blueprint makes it possible for the
  8661. 5:37:35development team to rapidly build and
  8662. 5:37:37start new environments with same trust
  8663. 5:37:40that they are building within the
  8664. 5:37:41organizational compliances
  8665. 5:37:44with a set of built-in components such
  8666. 5:37:46as networking speed development
  8667. 5:37:49and the delivery is a declarative way to
  8668. 5:37:52orchestrate the deployment of various
  8669. 5:37:54resource templates and other artifacts
  8670. 5:37:57such as role assignments, policy
  8671. 5:37:59assignment, ARM templates itself.
  8672. 5:38:02resource groups. So what is the
  8673. 5:38:04advantage of deploying blueprints is
  8674. 5:38:06like you can meet the regularity and the
  8675. 5:38:08compliances standard. So these
  8676. 5:38:11blueprints include pre-built templates
  8677. 5:38:13for various architectures
  8678. 5:38:15which will help you organize your work
  8679. 5:38:18as well as fasten your deployment rate.
  8680. 5:38:22Next is track deployments.
  8681. 5:38:25So in Azure portal you can review the
  8682. 5:38:27deployment history and get information
  8683. 5:38:30about the template deployment and you
  8684. 5:38:33can also see the template that was
  8685. 5:38:36deployed the parameters value passed in
  8686. 5:38:39and any output values other
  8687. 5:38:41infrastructure as a code service aren't
  8688. 5:38:44tracked through the the portal. So here
  8689. 5:38:47whatever your deployment history you can
  8690. 5:38:50track down the deployment history. You
  8691. 5:38:52can also get to know okay which template
  8692. 5:38:54has been deployed and what were the
  8693. 5:38:57parameters under that particular
  8694. 5:38:58template and what output did you get out
  8695. 5:39:01of those templates. So you can have keep
  8696. 5:39:03a track of each and every deployments.
  8697. 5:39:06Next is exportable code. You can get a
  8698. 5:39:09template for an existing resource either
  8699. 5:39:12exporting the current state of the
  8700. 5:39:15resource group or viewing the template
  8701. 5:39:17used for that particular deployment. So
  8702. 5:39:20viewing these exported template is a
  8703. 5:39:23helpful way to learn about the template
  8704. 5:39:26syntax.
  8705. 5:39:28Lastly, policy as a code. So see as we
  8706. 5:39:31know Azure policy is a policy as a code
  8707. 5:39:34framework to automate the you're using
  8708. 5:39:37the Azure policies. Policy remediation
  8709. 5:39:40is done on the non-compliant resources
  8710. 5:39:43when deployed through the template. So
  8711. 5:39:46these are some of the key benefits of
  8712. 5:39:48the advantages of ARM templates which
  8713. 5:39:51makes it more useful within the Azure
  8714. 5:39:54environment.
  8715. 5:39:55Now let us understand what are
  8716. 5:39:57templates. So basically the template is
  8717. 5:40:00a JavaScript object notation or a JSON
  8718. 5:40:03file that defines the infrastructure and
  8719. 5:40:06configuration of your project. As we had
  8720. 5:40:09discussed before to create a particular
  8721. 5:40:12object or if you want to run a
  8722. 5:40:13particular resource you need to like
  8723. 5:40:15specify you want to use and what are the
  8724. 5:40:18parameters its properties and its name
  8725. 5:40:21and all the information into a JSON file
  8726. 5:40:24and then you upload it. So it becomes a
  8727. 5:40:27template. The JSON file is nothing but a
  8728. 5:40:30template that is run inside the
  8729. 5:40:33Azure resource manager. So the template
  8730. 5:40:36uses a declarative syntax which lets you
  8731. 5:40:40state what you intend to deploy without
  8732. 5:40:42having to write the sequence of
  8733. 5:40:44programming commands to create it. So in
  8734. 5:40:46the template you specify the resources
  8735. 5:40:48to deploy and the properties for those
  8736. 5:40:51resources. That is nothing but in the
  8737. 5:40:53JSON file you specify each and
  8738. 5:40:55everything what are the properties
  8739. 5:40:57whatever resources you want to deploy
  8740. 5:41:00and it becomes a template form and it
  8741. 5:41:03gets deployed in the ARM. Now that we
  8742. 5:41:06have understood what are templates now
  8743. 5:41:08let us understand the template design.
  8744. 5:41:11So defining the templates and the
  8745. 5:41:14resource group is entirely up to you and
  8746. 5:41:16how you want to manage your solution.
  8747. 5:41:19For example, you can deploy your three
  8748. 5:41:21tire application through a single
  8749. 5:41:23template. So as you can see in this
  8750. 5:41:25diagram. So this is a three tire
  8751. 5:41:27template. All right. So in this template
  8752. 5:41:30you can run three types of application
  8753. 5:41:32that is virtual machine, app services
  8754. 5:41:35and SQL database. And it can be done
  8755. 5:41:38within the one resource group itself. So
  8756. 5:41:41here you don't have to define your
  8757. 5:41:43entire infrastructure in a single
  8758. 5:41:46template. Often it makes sense to divide
  8759. 5:41:48your deployment requirements into a set
  8760. 5:41:50of targeted purpose specific templates.
  8761. 5:41:53But you can easily reuse these templates
  8762. 5:41:55for a different solutions. So now if you
  8763. 5:41:58see in this another diagram, you can
  8764. 5:42:00also deploy a three tire solution
  8765. 5:42:04through a parent class or in the nested
  8766. 5:42:07form. So as you can see here, this is a
  8767. 5:42:10parent template. Under this we have
  8768. 5:42:12created sub tempmplates that is one
  8769. 5:42:15template is for virtual machine the
  8770. 5:42:18second template is for app services and
  8771. 5:42:20the third one is for the SQL database.
  8772. 5:42:23So here you can create it in the nested
  8773. 5:42:25form as well. So it depends upon you how
  8774. 5:42:27you need to design your own templates
  8775. 5:42:30and you can create different resource
  8776. 5:42:32groups also or you can add them into a
  8777. 5:42:35single resource group.
  8778. 5:42:37Now let us understand how do erm
  8779. 5:42:39templates work.
  8780. 5:42:41So as you can see in this diagram the RM
  8781. 5:42:44templates actually work on the
  8782. 5:42:47hierarchical scope level. So as we know
  8783. 5:42:49there are different ways to create our
  8784. 5:42:51resources like Azure portal, Azure
  8785. 5:42:54PowerShell and Azure CLI and apart from
  8786. 5:42:58the Azure environment we also have the
  8787. 5:43:00third party clients those are rest
  8788. 5:43:02clients. So these are the different ways
  8789. 5:43:05through which you can like create your
  8790. 5:43:07own resources and your resource groups
  8791. 5:43:10as well. Once you start creating the
  8792. 5:43:12resources in the Azure environment. So
  8793. 5:43:15whenever you're creating a resource
  8794. 5:43:17group or you're opting for a new
  8795. 5:43:20service. So what happens that in the
  8796. 5:43:22back end there creates a JSON file that
  8797. 5:43:25is nothing but an ARM template. So as we
  8798. 5:43:28discussed that ARM template is all about
  8799. 5:43:31the JSON format. It has the JSON syntax.
  8800. 5:43:34So whatever resources we would be
  8801. 5:43:37creating or whatever services we would
  8802. 5:43:39be opting within the Azure environment
  8803. 5:43:41that would be converted in the back end
  8804. 5:43:44as the JSON file and that JSON file then
  8805. 5:43:48goes to our API that is nothing but
  8806. 5:43:51Azure resource manager API. So what does
  8807. 5:43:54the Azure resource manager API do is
  8808. 5:43:56that extract that file and then
  8809. 5:43:59understands what are the requirements in
  8810. 5:44:02that particular template and for that
  8811. 5:44:05like now if you're opting for a resource
  8812. 5:44:07for any services from Azure you always
  8813. 5:44:10need a subscription so it will check
  8814. 5:44:13whether you are subscribed to Azure
  8815. 5:44:16portal or not then based on your
  8816. 5:44:17subscriptions you can it allows the
  8817. 5:44:20particular resources to get deployed. So
  8818. 5:44:24once your subscription is authenticated
  8819. 5:44:27then you have a resource providers. So
  8820. 5:44:31in the ARM template we specify what are
  8821. 5:44:34the different services we want to opt
  8822. 5:44:36for or what and all resources we require
  8823. 5:44:40within the Azure environment. So it goes
  8824. 5:44:44automatically into our resource provider
  8825. 5:44:46and within that we can run multiple
  8826. 5:44:49objects that are nothing but our
  8827. 5:44:51services. for example virtual machines,
  8828. 5:44:53app services, storage account and SQL.
  8829. 5:44:56So this is how ARM templates or the
  8830. 5:44:59whole Azure resource manager work. So in
  8831. 5:45:02a just if I call it is is like whatever
  8832. 5:45:05resource you are uh trying to create in
  8833. 5:45:08the Azure portal or through PowerShell
  8834. 5:45:11or through CLI or from any third party
  8835. 5:45:14application. So it does have a template
  8836. 5:45:17and in the back end which is then
  8837. 5:45:19extracted by the RM that is Azure
  8838. 5:45:22resource manager API. Then it processes
  8839. 5:45:24the particular template for the
  8840. 5:45:26deployment based on your subscriptions.
  8841. 5:45:29Now we know that how templates usually
  8842. 5:45:32work. It uses the JavaScript object
  8843. 5:45:35notation syntax that also includes the
  8844. 5:45:38advanced capabilities. So in this
  8845. 5:45:40particular syntax we have the different
  8846. 5:45:42components. So the first component is
  8847. 5:45:46the parameters. So what are actually
  8848. 5:45:48parameters? So here the parameters allow
  8849. 5:45:51you to pass the different values to the
  8850. 5:45:54ERM template for use during the
  8851. 5:45:56deployment. Some common examples like
  8852. 5:45:59you can include the names of the
  8853. 5:46:00resources or which Azure region to host
  8854. 5:46:03them. So what do they do is it enables
  8855. 5:46:07your templates to be more dynamic and
  8856. 5:46:10used across the different environments.
  8857. 5:46:12So parameters require a name and a type.
  8858. 5:46:15So here you can include strings, array,
  8859. 5:46:17objects, integers, boolean or any secure
  8860. 5:46:21string like password. Optionally
  8861. 5:46:23parameters also contain the description
  8862. 5:46:26of how to use these particular
  8863. 5:46:28parameter. So you can include default
  8864. 5:46:30values to your parameters so that you do
  8865. 5:46:34not need to provide one at runtime and
  8866. 5:46:36you can configure it with a set number
  8867. 5:46:39of values. So this configuration is
  8868. 5:46:42helpful when you want to like limit what
  8869. 5:46:45SKUs or location a person can deploy the
  8870. 5:46:48resources.
  8871. 5:46:49The next component is functions.
  8872. 5:46:53So in ARM template functions allow you
  8873. 5:46:56to create complicated expressions that
  8874. 5:46:59you don't want to repeat throughout the
  8875. 5:47:01template. So here what functions
  8876. 5:47:03actually do is like there are lot of
  8877. 5:47:06functions in other programming language
  8878. 5:47:08like when we code you add on different
  8879. 5:47:10kinds of function like more than one
  8880. 5:47:12function you can add so you have a list
  8881. 5:47:16of functions into it but here you can
  8882. 5:47:19tell them when you need to run them and
  8883. 5:47:22you can pass informations to them and
  8884. 5:47:25expect the return value from them. For
  8885. 5:47:27example say you need to create a unique
  8886. 5:47:29name of a resource. So instead of
  8887. 5:47:31copying and pasting the same code to
  8888. 5:47:34generate the unique name, you can create
  8889. 5:47:36a function that makes the unique name.
  8890. 5:47:38For example, if a function called as
  8891. 5:47:40unique name with a parameter named
  8892. 5:47:43prefix returns a unique name using the
  8893. 5:47:46resource group ID. So here note this
  8894. 5:47:49name space value. So this value can be
  8895. 5:47:51anything you want. So here the functions
  8896. 5:47:53require a different name space value to
  8897. 5:47:56avoid a naming conflict with the regular
  8898. 5:48:00template function. Next is variables. So
  8899. 5:48:04variables are not much different in ARM
  8900. 5:48:06templates that you find in another
  8901. 5:48:08programming languages though. Here the
  8902. 5:48:11variables contains the values that are
  8903. 5:48:13used repeatedly throughout the template.
  8904. 5:48:16Like functions you can use variables to
  8905. 5:48:18create complicated expression. Like
  8906. 5:48:21functions, you can also use variables to
  8907. 5:48:24create complicated expression so that
  8908. 5:48:26you don't have to repeat them into the
  8909. 5:48:28same template. And like parameters,
  8910. 5:48:31variables have the same data type such
  8911. 5:48:33as strings, objects, and integers. So
  8912. 5:48:35you can define variables using colon as
  8913. 5:48:38assigned operator. For example, instead
  8914. 5:48:40of passing the Azure region as a
  8915. 5:48:42parameter, you can define it as a
  8916. 5:48:44variable. So you can just type down the
  8917. 5:48:47location and whichever uh required
  8918. 5:48:50location you need you can specify there.
  8919. 5:48:53Next are resources. So what are
  8920. 5:48:55resources basically? So the resources
  8921. 5:48:58defines the Azure resources to deploy
  8922. 5:49:01within the particular template. So the
  8923. 5:49:03resources can be anything as small as a
  8924. 5:49:05network security group all the way like
  8925. 5:49:08it can be virtual machine storage
  8926. 5:49:10account or functions or any other
  8927. 5:49:13services which are within the Azure
  8928. 5:49:16environment.
  8929. 5:49:17So when you specify a resource so you
  8930. 5:49:20have to give a couple of explanation in
  8931. 5:49:22each part like you need to specify the
  8932. 5:49:25name of the resource and then you also
  8933. 5:49:28need to give the type of the resource
  8934. 5:49:29you need to deploy whether you need to
  8935. 5:49:32like refer to the highle family of the
  8936. 5:49:34resource to deploy for example like
  8937. 5:49:37Microsoft compute Microsoft storage or
  8938. 5:49:41network so this will help you out to map
  8939. 5:49:43out these resources to deploy more
  8940. 5:49:46precisely Next you need to also specify
  8941. 5:49:48the API version that is like to check
  8942. 5:49:52the configuration of that particular
  8943. 5:49:54resource. So you also specify the
  8944. 5:49:57dependencies. So here dependencies
  8945. 5:49:59determine the order of Azure how Azure
  8946. 5:50:02should deploy these particular
  8947. 5:50:04resources. So for example if an ARM
  8948. 5:50:07template is deploying a virtual machine
  8949. 5:50:09and then a virtual network. So the
  8950. 5:50:12virtual machine will exist first before
  8951. 5:50:15creating a virtual network and then you
  8952. 5:50:18all then you start giving up the
  8953. 5:50:20properties. So here the properties
  8954. 5:50:22contain the configuration information
  8955. 5:50:24for the deployment and last is the
  8956. 5:50:28output. So the output section will
  8957. 5:50:30define the values and information
  8958. 5:50:32returned from the deployment. It is
  8959. 5:50:35helpful for the data that Azure
  8960. 5:50:36dynamically generates through the public
  8961. 5:50:40IP address.
  8962. 5:50:41So these are the key components that are
  8963. 5:50:43used in ARM templates and which will
  8964. 5:50:46help you to work with these Azure
  8965. 5:50:49resource manager.
  8966. 5:50:51Now that we have an overview on the ARM
  8967. 5:50:54ARM templates and all the key concepts
  8968. 5:50:58related to ARM templates, now let's have
  8969. 5:51:01a quick demo and let's see how do they
  8970. 5:51:03actually work. So for that let's quickly
  8971. 5:51:06move on to our Azure portal.
  8972. 5:51:09So we need to first log into our Azure.
  8973. 5:51:13So let's quickly sign in.
  8974. 5:51:17So this is our Azure portal. Now as you
  8975. 5:51:20discussed that there are different ways
  8976. 5:51:22like you can use the portal itself to
  8977. 5:51:26create your services. As you can see
  8978. 5:51:27here there are different services you
  8979. 5:51:29can opt for like create a resource group
  8980. 5:51:31or service bus, virtual machines,
  8981. 5:51:34application gateways etc.
  8982. 5:51:36And you also have your CLI that is your
  8983. 5:51:40cloud shell. So you can even run your
  8984. 5:51:42commands and uh you can create your
  8985. 5:51:45resource group. So let's see how are
  8986. 5:51:48these templates created while we create
  8987. 5:51:51a resource group or any resource through
  8988. 5:51:54Azure portal. So let's quickly create a
  8989. 5:51:57resource group first. So as you can see
  8990. 5:51:59we don't have any resource group yet. So
  8991. 5:52:02let's quickly create a resource group.
  8992. 5:52:06So we'll give any random name to it. So
  8993. 5:52:08as it is ARM let's give it a name as ARM
  8994. 5:52:13demo 1 2 3 and you can choose any of
  8995. 5:52:18your region as it's up to you like of
  8996. 5:52:21your choice based on your requirements.
  8997. 5:52:24So I'll take west US because that region
  8998. 5:52:28is more free. So let's review and create
  8999. 5:52:32and your validation is passed.
  9000. 5:52:35Let's create.
  9001. 5:52:37So when you see over here your resource
  9002. 5:52:40group has been created now. And now you
  9003. 5:52:43can also see your ARM demo has been
  9004. 5:52:46automatically created. Now we'll just go
  9005. 5:52:49inside. So now that we have created a
  9006. 5:52:51resource group. Now if I just go into
  9007. 5:52:54their properties like we just click onto
  9008. 5:52:56this resource group and we'll just go to
  9009. 5:52:59their export template. So here you can
  9010. 5:53:03see the template has been created. So
  9011. 5:53:06this is a snippet code where it shows
  9012. 5:53:08whatever whatever object you have
  9013. 5:53:10created. So under that what are the
  9014. 5:53:12parameters and what are the variables
  9015. 5:53:14you need to add. This happens in the
  9016. 5:53:16back end once you create any resource or
  9017. 5:53:19any resource group. So one of our folks
  9018. 5:53:22have a doubt the shwini has a doubt that
  9019. 5:53:25how does these template create. So
  9020. 5:53:28Tjishwini as we had discussed before
  9021. 5:53:31that whenever you create anything in the
  9022. 5:53:34Azure no matter if it is a resource
  9023. 5:53:37group or if you're using any services so
  9024. 5:53:40whatever resource you're creating either
  9025. 5:53:43it is through Azure portal or partial or
  9026. 5:53:46CLI. So in the back end it automatically
  9027. 5:53:50creates a JSON file. In the back end, it
  9028. 5:53:53automatically creates a JSON file which
  9029. 5:53:56then becomes a template. It is formed in
  9030. 5:53:59the backend process so that it goes to
  9031. 5:54:01the ARM that is our ARM API, Azure
  9032. 5:54:05resource manager API. Then it can
  9033. 5:54:07process the rest of the resources
  9034. 5:54:09accordingly. All right. So it is formed
  9035. 5:54:13automatically. So whenever you create
  9036. 5:54:15any resources or any services you're
  9037. 5:54:18applying to or you're utilizing any
  9038. 5:54:20resources and you create any resource so
  9039. 5:54:23it will create a template and that
  9040. 5:54:26template will then go to the our ARM and
  9041. 5:54:28from there the whole process of the
  9042. 5:54:31deployment starts. I hope you got an
  9043. 5:54:33answer to your question. So as we have
  9044. 5:54:36seen that we created a resource group
  9045. 5:54:38and as we go under their overview you
  9046. 5:54:41just come into these export template and
  9047. 5:54:44here you find out your template that is
  9048. 5:54:46the JSON file and you can even download
  9049. 5:54:49it or uh you can send it to deploy as
  9050. 5:54:52well. So now what we'll do we'll create
  9051. 5:54:54a resource within this resource group.
  9052. 5:54:57So you can take any resources. So I'll
  9053. 5:55:00just take up the storage account. Let's
  9054. 5:55:02create a storage account at first.
  9055. 5:55:05And our resource group is ARM demo 123.
  9056. 5:55:10And now let's name our storage account
  9057. 5:55:12as well.
  9058. 5:55:15And we'll change our location.
  9059. 5:55:20All right. And our performance would be
  9060. 5:55:22standard because as our subscription is
  9061. 5:55:27free and it is only for the demo
  9062. 5:55:29purpose. So we'll be keeping everything
  9063. 5:55:31as it is and we'll just review and
  9064. 5:55:34create.
  9065. 5:55:35All right. So here as you see they are
  9066. 5:55:39initializing the template deployment to
  9067. 5:55:41the resource group. So as I said
  9068. 5:55:44whatever resource you're creating it
  9069. 5:55:47automatically creates a template of that
  9070. 5:55:49particular resource within that
  9071. 5:55:50particular resource group. So now once
  9072. 5:55:54it gets deployed we'll see. So here you
  9073. 5:55:57see the overview, the input and outputs
  9074. 5:55:59and your template. So we'll just get
  9075. 5:56:03into this and you see this is the
  9076. 5:56:06template of our storage account. This is
  9077. 5:56:09how your ARM templates are created.
  9078. 5:56:19Let us understand what is Azure DevOps.
  9079. 5:56:22Now, Azure DevOps provides developer
  9080. 5:56:24services for support teams to plan work,
  9081. 5:56:28collaborate on code development, and
  9082. 5:56:30build and deploy applications. Azure
  9083. 5:56:32DevOps supports a culture and set of
  9084. 5:56:35processes that bring developers and
  9085. 5:56:37project managers and contributors
  9086. 5:56:39together to complete software
  9087. 5:56:41development. It allows organizations to
  9088. 5:56:44create and improve products at a very
  9089. 5:56:46fast pace than they can with traditional
  9090. 5:56:49software development approaches like the
  9091. 5:56:51waterfall approach. You can now work in
  9092. 5:56:53the cloud using Azure DevOps services or
  9093. 5:56:56on premises using Azure DevOps server.
  9094. 5:56:59So you have two options now. Azure
  9095. 5:57:02DevOps provides integrated features that
  9096. 5:57:04you can access through your web browser
  9097. 5:57:07or IDE client. Now you can use one or
  9098. 5:57:10more of the following standalone
  9099. 5:57:12services based on your business needs.
  9100. 5:57:15The first one that we'll be talking
  9101. 5:57:16about is Azure repos which provides git
  9102. 5:57:19repositories or team foundation version
  9103. 5:57:21control for source control of your code.
  9104. 5:57:24Azure pipelines on the other hand
  9105. 5:57:26provides build and release services to
  9106. 5:57:28support continuous integration and
  9107. 5:57:30delivery of your applications. Azure
  9108. 5:57:32boards delivers a suite of agile tools
  9109. 5:57:35to support planning and tracking work
  9110. 5:57:37code defects and issues using canban and
  9111. 5:57:40scrum methods. Azure test plans on the
  9112. 5:57:43other hand provides several tools to
  9113. 5:57:45test your applications including manual
  9114. 5:57:47or exploratory testing and continuous
  9115. 5:57:49testing. The last component is Azure
  9116. 5:57:52artifacts which allows teams to share
  9117. 5:57:54packages such as Maven, npm, nuette and
  9118. 5:57:58more from public and private sources and
  9119. 5:58:00integrate package sharing into your
  9120. 5:58:02pipelines. Now that we know what is
  9121. 5:58:04DevOps and Azure DevOps, let's
  9122. 5:58:07understand how to implement continuous
  9123. 5:58:09integration. Before that we have to
  9124. 5:58:11understand what is Azure pipelines. This
  9125. 5:58:13is really important. Now, Azure
  9126. 5:58:15Pipelines automatically builds and tests
  9127. 5:58:18code projects to make them available to
  9128. 5:58:20others. That's all it does. So, it works
  9129. 5:58:22with just about any language. It could
  9130. 5:58:25be Java, Python or project type. And
  9131. 5:58:28these pipelines combines continuous
  9132. 5:58:30integration and continuous delivery to
  9133. 5:58:32constantly and consistently test and
  9134. 5:58:35build your code and ship it to any
  9135. 5:58:37target eventually. Now, you must be
  9136. 5:58:39wondering what is continuous
  9137. 5:58:40integration? Continuous integration is
  9138. 5:58:42the practice used by development teams
  9139. 5:58:44to automate the merging and testing of
  9140. 5:58:47code. Implementing continuous
  9141. 5:58:49integration helps to catch bugs way
  9142. 5:58:51early in the development cycle which
  9143. 5:58:53makes them less expensive to fix.
  9144. 5:58:55Automated tests execute as part of the
  9145. 5:58:58continuous integration process to ensure
  9146. 5:59:00quality. Artifacts are produced from
  9147. 5:59:02continuous integration systems and fed
  9148. 5:59:05to release processes to drive frequent
  9149. 5:59:07deployments. The build service in TFS
  9150. 5:59:09helps you set up and manage continuous
  9151. 5:59:11integration for your applications. Now
  9152. 5:59:14continuous delivery on the other hand is
  9153. 5:59:16a process by which code is built, tested
  9154. 5:59:18and deployed to one or more test and
  9155. 5:59:21production environments. Deploying and
  9156. 5:59:23testing in multiple environments drives
  9157. 5:59:26quality. So continuous integration
  9158. 5:59:28systems produce the deployable artifacts
  9159. 5:59:30including infrastructure and
  9160. 5:59:32applications. Automated release
  9161. 5:59:34processes consume these artifacts to
  9162. 5:59:36release new versions and fixes to
  9163. 5:59:38existing systems. Monitoring and
  9164. 5:59:41alerting systems run continually to
  9165. 5:59:43drive visibility into the entire
  9166. 5:59:45continuous delivery process. The release
  9167. 5:59:48service in TFS helps you set up and
  9168. 5:59:50manage continuous delivery for your
  9169. 5:59:52applications. Azure also has continuous
  9170. 5:59:54testing on premises or in the cloud
  9171. 5:59:57which is the use of automated build
  9172. 5:59:59deploy test workflows and with the
  9173. 6:00:01choice of technologies and frameworks
  9174. 6:00:03that test your changes continuously in a
  9175. 6:00:05fast scalable and efficient manner.
  9176. 6:00:08Implementing CI/CD pipelines helps to
  9177. 6:00:10ensure consistent and quality code
  9178. 6:00:12that's readily available to users. And
  9179. 6:00:15Azure pipelines provides a quick, easy
  9180. 6:00:18and safe way to automate building your
  9181. 6:00:20projects and making them available to
  9182. 6:00:22users. The next question that arises is
  9183. 6:00:25why should one use Azure pipelines,
  9184. 6:00:27right? So the first and the most
  9185. 6:00:29important benefit of using Azure
  9186. 6:00:31pipelines is it works with any language,
  9187. 6:00:34any platform. That's one of the biggest
  9188. 6:00:36advantage. And the next advantage is
  9189. 6:00:38that it deploys to different types of
  9190. 6:00:40targets at the same time. It also
  9191. 6:00:43integrates with Azure deployments. It
  9192. 6:00:45builds on Windows, Linux or Mac
  9193. 6:00:47machines. That is it works on any OS.
  9194. 6:00:50And it also integrates with the biggest
  9195. 6:00:52and the most popular code hosting
  9196. 6:00:55website that is GitHub. It also works
  9197. 6:00:57with open-source projects. So, so this
  9198. 6:00:59is definitely why one should opt for
  9199. 6:01:02Azure to create the pipelines. Now,
  9200. 6:01:04let's move on and learn the differences
  9201. 6:01:07between continuous integration and
  9202. 6:01:09continuous delivery. Azure pipeline
  9203. 6:01:11supports continuous integration and
  9204. 6:01:13continuous delivery to constantly and
  9205. 6:01:15consistently test and build your code
  9206. 6:01:18and ship it to any target. Now you
  9207. 6:01:21accomplish this by defining a pipeline.
  9208. 6:01:23You define pipelines using the YML
  9209. 6:01:26syntax or through the user interface
  9210. 6:01:28that is the classic way. Continuous
  9211. 6:01:30integration. So in continuous
  9212. 6:01:32integration the tests are automated and
  9213. 6:01:34builds for your project. Continuous
  9214. 6:01:36integration also helps to catch bugs or
  9215. 6:01:38issues early in the development cycle
  9216. 6:01:40when they're easier and faster to fix.
  9217. 6:01:43Items known as artifacts are produced
  9218. 6:01:45from continuous integration systems.
  9219. 6:01:47They're used by continuous delivery
  9220. 6:01:49release pipelines to drive automatic
  9221. 6:01:51deployments. Continuous delivery on the
  9222. 6:01:53other hand automatically deploys and
  9223. 6:01:56test code in multiple stages to help
  9224. 6:01:58drive quality. Continuous integration
  9225. 6:02:01systems produce deployable artifacts
  9226. 6:02:03which include infrastructure and
  9227. 6:02:05applications. Automated release
  9228. 6:02:08pipelines consume these artifacts to
  9229. 6:02:10release new versions and fixes to the
  9230. 6:02:12target of your choice. Now that we know
  9231. 6:02:14the difference between continuous
  9232. 6:02:16integration and continuous delivery.
  9233. 6:02:17Let's move ahead and learn how to create
  9234. 6:02:19Azure pipelines. So the first way to
  9235. 6:02:22create Azure pipelines is to define
  9236. 6:02:24pipelines using Yml syntax. You define
  9237. 6:02:27your pipeline in a YML file called Azure
  9238. 6:02:29pipelines yimml with the rest of your
  9239. 6:02:31application. The pipeline is versionized
  9240. 6:02:34with your code and it follows the same
  9241. 6:02:36branching structure. So you can get a
  9242. 6:02:38validation of your changes through code
  9243. 6:02:40reviews in pull requests and branch
  9244. 6:02:42build policies. Every branch you use can
  9245. 6:02:45modify the build policy by modifying the
  9246. 6:02:47Azure pipelines.imml file. A change to
  9247. 6:02:50the build process might cause and break
  9248. 6:02:52or result in an unexpected outcome. So
  9249. 6:02:55be careful and this occurs because the
  9250. 6:02:57change is in version control with the
  9251. 6:02:59rest of your code base and you can
  9252. 6:03:00easily identify the issue. So the first
  9253. 6:03:03step is to configure Azure pipelines to
  9254. 6:03:05use your git repository where you're
  9255. 6:03:07going to edit your code where you're
  9256. 6:03:08going to really write where you're going
  9257. 6:03:10to really store your entire project and
  9258. 6:03:12then you're going to edit your Azure
  9259. 6:03:14pipelines.l file to define your build.
  9260. 6:03:17In the third step, you're going to push
  9261. 6:03:18your code to your version control
  9262. 6:03:20repository. And this action finally
  9263. 6:03:22kicks off the default trigger to build
  9264. 6:03:24and deploy and then eventually monitor
  9265. 6:03:27your results. So once the pipeline has
  9266. 6:03:29been created, your code has been now
  9267. 6:03:31updated, built, tested, and packaged, it
  9268. 6:03:34can then be deployed to any target that
  9269. 6:03:36you'd like. There's also another way to
  9270. 6:03:38create your Azure pipelines. That is to
  9271. 6:03:40define pipelines using the classic
  9272. 6:03:42interface. Now here you create and
  9273. 6:03:44configure pipelines in the Azure DevOps
  9274. 6:03:47web portal with a classic user interface
  9275. 6:03:50editor. So what you do is you define a
  9276. 6:03:52build pipeline to build and test your
  9277. 6:03:54code and then to publish artifacts. You
  9278. 6:03:57also define a release pipeline to
  9279. 6:03:59consume and deploy those artifacts to
  9280. 6:04:01deployment targets. So here the first
  9281. 6:04:03step is to configure Azure pipelines to
  9282. 6:04:06use your git repository. Then you use
  9283. 6:04:08the Azure pipelines classic editor to
  9284. 6:04:10create and configure your build and
  9285. 6:04:12release pipelines. Then you finally push
  9286. 6:04:15your code to your version control
  9287. 6:04:16repository. This action triggers your
  9288. 6:04:19pipeline and runs tasks such as building
  9289. 6:04:21or testing codes. The build creates an
  9290. 6:04:24artifact that's used by the rest of your
  9291. 6:04:26pipeline to run tasks such as deploying
  9292. 6:04:28to staging or even production. So the
  9293. 6:04:31tasks that are released is termed as
  9294. 6:04:33continuous delivery. And the part where
  9295. 6:04:35you're building tasks and testing them
  9296. 6:04:37is termed as continuous integration. Now
  9297. 6:04:40that we know how to create your own
  9298. 6:04:41Azure pipelines, let's go ahead and
  9299. 6:04:44learn to set up release management
  9300. 6:04:45workflow. So the first thing that we're
  9301. 6:04:47going to learn is how to design a
  9302. 6:04:49release strategy. So we have to
  9303. 6:04:50understand what is release pipelines.
  9304. 6:04:52Okay. So release pipelines enable teams
  9305. 6:04:55to continuously deploy their application
  9306. 6:04:57across different stages with lower risk
  9307. 6:04:59and with faster pace. Deployments to
  9308. 6:05:02each stage can be fully automated by
  9309. 6:05:04using jobs and tasks. Teams can also
  9310. 6:05:07take advantage of the approvals and
  9311. 6:05:10gates feature to control the workflow of
  9312. 6:05:12the deployment pipeline. Here, each
  9313. 6:05:14stage in a release pipeline can be
  9314. 6:05:16configured with pre-eployment and post-
  9315. 6:05:19deployment conditions that can include
  9316. 6:05:21waiting for users to manually approve or
  9317. 6:05:24reject deployments and checking with
  9318. 6:05:26other automated systems that specific
  9319. 6:05:28conditions are met. In addition, teams
  9320. 6:05:31can configure manual validations to
  9321. 6:05:33pause the deployment pipeline and prompt
  9322. 6:05:35users to carry out manual tasks, then
  9323. 6:05:38resume or reject the deployment by using
  9324. 6:05:40gates, approvals, and manual
  9325. 6:05:43intervention. You can take full control
  9326. 6:05:45of your releases to meet a wide range of
  9327. 6:05:47deployment requirements. You can also
  9328. 6:05:50release deployment control using gates.
  9329. 6:05:52Gates allow automatic collection of
  9330. 6:05:54health signals from external services
  9331. 6:05:57and then promote the release when all
  9332. 6:05:58the signals are successful at the same
  9333. 6:06:00time or stop the deployment on timeout.
  9334. 6:06:03Typically gates are used in connection
  9335. 6:06:05with incident management, problem
  9336. 6:06:07management, change management,
  9337. 6:06:09monitoring and external approval
  9338. 6:06:11systems. Some scenarios and use cases
  9339. 6:06:14for gates are incident and issue
  9340. 6:06:16management. Here you ensure the required
  9341. 6:06:19status for work items, incidents and
  9342. 6:06:21issues occur regularly. For example, now
  9343. 6:06:25you have to ensure deployment occurs
  9344. 6:06:27only if no priority zero bugs exist and
  9345. 6:06:31validation that there are no active
  9346. 6:06:33incidents take place after deployment.
  9347. 6:06:35Also another scenario would be to seek
  9348. 6:06:37approvals outside Azure pipelines. here.
  9349. 6:06:40Notify non- Aure pipeline users such as
  9350. 6:06:43legal approval departments, auditors or
  9351. 6:06:46IT managers about a deployment by
  9352. 6:06:49integrating with approval collaboration
  9353. 6:06:51systems such as Microsoft Teams or Slack
  9354. 6:06:54and waiting for the approval to
  9355. 6:06:56complete. In another scenario, there
  9356. 6:06:58could be quality validation query
  9357. 6:07:01metrics from tests on the build
  9358. 6:07:03artifacts such as pass rate or code
  9359. 6:07:06coverage and deploy only if they are
  9360. 6:07:08within a required threshold. There are
  9361. 6:07:10many other use cases like security scan
  9362. 6:07:12on artifacts, user experience relative
  9363. 6:07:14to baseline change management,
  9364. 6:07:16infrastructure health. There are many
  9365. 6:07:17scenarios that you can use gates for. So
  9366. 6:07:20this is a really important topic. Moving
  9367. 6:07:23on, let us learn how to implement
  9368. 6:07:25compilence and security. Firstly, we
  9369. 6:07:27will have to design a dependent
  9370. 6:07:29management strategy. Before we learn how
  9371. 6:07:32to design one, we will have to
  9372. 6:07:34understand what is dependency
  9373. 6:07:35management. Now, with modern software
  9374. 6:07:38architectures and development methods,
  9375. 6:07:40software dependencies can come
  9376. 6:07:42intertwined quickly with more online
  9377. 6:07:44repositories like GitHub, Docker Hub,
  9378. 6:07:46pre-built libraries and services can be
  9379. 6:07:49easily published and leveraged. Now
  9380. 6:07:51these projects can be managed by all
  9381. 6:07:53sorts of individuals and groups and have
  9382. 6:07:55a very wide range of work ethics from
  9383. 6:07:57well-maintained solutions with good
  9384. 6:08:00community and multiple contributors and
  9385. 6:08:02release schedules that is all the way to
  9386. 6:08:04the other end of the spectrum. Code is
  9387. 6:08:07also developed internally and is often
  9388. 6:08:09reused. Wherever the source comes from
  9389. 6:08:11the problem is the same. Once
  9390. 6:08:13implemented one project now has a
  9391. 6:08:16dependency on other. Now for example
  9392. 6:08:18when a team comes together to build a
  9393. 6:08:20solution they may decide for various
  9394. 6:08:22reasons to leverage code that already
  9395. 6:08:24exists. Now depending on the type and
  9396. 6:08:26language used for that particular
  9397. 6:08:27project there are different sources that
  9398. 6:08:29can be leveraged to accelerate
  9399. 6:08:31development. For example, let's say
  9400. 6:08:33you're running a net application that's
  9401. 6:08:35going to be processing JSON that you
  9402. 6:08:37retrieve from Azure to describe Azure
  9403. 6:08:39resources. Now, rather than having to
  9404. 6:08:41write all the logic to handle the JSON
  9405. 6:08:43file, your team decides to leverage a
  9406. 6:08:45popular package called Newtonsoft.json,
  9407. 6:08:49which is a publicly available package.
  9408. 6:08:51You could leverage the Nougat package
  9409. 6:08:53that's already been built and published
  9410. 6:08:55for consumption. By leveraging this
  9411. 6:08:57package in your code, you have created a
  9412. 6:08:59dependency on the package for your
  9413. 6:09:01solution. Now, you must be wondering
  9414. 6:09:03what is a package? A package is simply a
  9415. 6:09:05standardized way of distributing codes
  9416. 6:09:08that can be consumed by another
  9417. 6:09:09application or solution. Metadata is
  9418. 6:09:12used to help store and version and
  9419. 6:09:14identify these packages. So there are
  9420. 6:09:16different types of packages, right? So
  9421. 6:09:18these artifacts can be NG, npm, they can
  9422. 6:09:21also be Maven and all of these are part
  9423. 6:09:26of the packages. Okay, so we'll be
  9424. 6:09:28talking about NG. So, Nougat is a free
  9425. 6:09:31open-source package manager designed for
  9426. 6:09:33the Microsoft development platform used
  9427. 6:09:36innet since its introduction in 2010.
  9428. 6:09:40Nougat has evolved into a larger
  9429. 6:09:41ecosystem of tools and services. So, it
  9430. 6:09:44is distributed as a visual studio
  9431. 6:09:46extension. The Nougat packet has a nupg
  9432. 6:09:50suffix and as a zip file with a specific
  9433. 6:09:53folder structure. Maven packages on the
  9434. 6:09:55other hand are often used for Java
  9435. 6:09:57projects. Maven can also be used to
  9436. 6:09:59build and manage projects written in C,
  9437. 6:10:01Ruby, Scala and other languages. Now a
  9438. 6:10:04project object model file describing the
  9439. 6:10:06metadata of the project is also stored
  9440. 6:10:08within this package. npm on the other
  9441. 6:10:10hand is a package manager for JavaScript
  9442. 6:10:12programming language and it's primarily
  9443. 6:10:14used for runtime environments with
  9444. 6:10:16node.js and npm package contains a
  9445. 6:10:19package.json file describing the
  9446. 6:10:21metadata of that package. The Python
  9447. 6:10:24package index is a repository of
  9448. 6:10:26software for the Python programming
  9449. 6:10:28language. Python's packaging is built
  9450. 6:10:31for distributing reusable code called
  9451. 6:10:33libraries between developers. Now these
  9452. 6:10:35packages are libraries used as building
  9453. 6:10:38blocks to create applications and have a
  9454. 6:10:40tar.gz extension. Azure DevOps also has
  9455. 6:10:44the ability to store universal packages.
  9456. 6:10:46A universal package installed one or
  9457. 6:10:49more files together in a single package
  9458. 6:10:51that have a name and version which is
  9459. 6:10:53useful for many ad hoc situations where
  9460. 6:10:56you want diversion and track files.
  9461. 6:10:58Containerized workloads are becoming
  9462. 6:11:00more popular as platforms like
  9463. 6:11:02Kubernetes are becoming mainstream.
  9464. 6:11:04We'll be talking about Kubernetes later
  9465. 6:11:05on in the session. Docker images on the
  9466. 6:11:08other hand are generally complete
  9467. 6:11:09self-contained system. Azure artifacts
  9468. 6:11:12are available in Azure DevOps DevOps
  9469. 6:11:15servers as well as in team foundation
  9470. 6:11:17server 2017 and 2018. The sources allow
  9471. 6:11:21you to integrate packages seamlessly
  9472. 6:11:23into your CI/CD pipeline. Now there are
  9473. 6:11:26three concepts you need to understand
  9474. 6:11:27when managing these Azure artifacts that
  9475. 6:11:29we just talked about that is feeds,
  9476. 6:11:32views and upstream sources. Feeds are
  9477. 6:11:34the primary method for delivering
  9478. 6:11:35packages. Microsoft really recommends
  9479. 6:11:37one feed per project and to achieve this
  9480. 6:11:40we can utilize the feature of upstream
  9481. 6:11:42sources which allows you to combine
  9482. 6:11:44multiple sources into a single feed. Now
  9483. 6:11:47using this method allows you to control
  9484. 6:11:50sources in your project in the various
  9485. 6:11:52levels of access. Here we see two
  9486. 6:11:54options we have when adding upstream
  9487. 6:11:56sources. A public source and from an
  9488. 6:11:59existing Azure artifacts feed from
  9489. 6:12:02within your Azure DevOps organization.
  9490. 6:12:04When adding a public source, the only
  9491. 6:12:06supported package type is an npm source
  9492. 6:12:09which we've already talked about. Now,
  9493. 6:12:11when you're adding a source from within
  9494. 6:12:12your Azure DevOps organization, you can
  9495. 6:12:14target an Azure artifacts feed. This
  9496. 6:12:17allows you to use different package
  9497. 6:12:18types that is NuGet, Python, and Maven.
  9498. 6:12:20You can scope the visibility of your
  9499. 6:12:22package feed to your organization, which
  9500. 6:12:24is multiple projects. And this is by
  9501. 6:12:26default. Now, a benefit of bringing all
  9502. 6:12:28these packages together in one feed is
  9503. 6:12:31the copies are made of the sources. Now
  9504. 6:12:33if you're using sources and those
  9505. 6:12:34sources goes offline, you'll be able to
  9506. 6:12:36maintain your own version of this
  9507. 6:12:38packet. Upstream sources on the other
  9508. 6:12:40hand enable you to manage your products
  9509. 6:12:42dependencies in a single place. Using
  9510. 6:12:45upstream sources makes it easy to use
  9511. 6:12:47common packages in your solution. It has
  9512. 6:12:50the added benefit and gives you
  9513. 6:12:52protection against outages and corrupted
  9514. 6:12:54or compromised packages from upstream
  9515. 6:12:56sources and also as a copy of the
  9516. 6:12:59packages stored locally. Now let's move
  9517. 6:13:01on and understand how to manage security
  9518. 6:13:03and compliance. Whitesource Bold is a
  9519. 6:13:06lightweight open-source security and
  9520. 6:13:08management solution integrated within
  9521. 6:13:11Microsoft's Azure DevOps services and
  9522. 6:13:14Azure DevOps server formally that is DFS
  9523. 6:13:17products. It enables you to do many
  9524. 6:13:19things like detect and remedy vulnerable
  9525. 6:13:22open-source components. Also, you can
  9526. 6:13:25generate comprehensive open-source
  9527. 6:13:27inventory reports per project to build.
  9528. 6:13:29You can also enforce open-source license
  9529. 6:13:32compilence including dependencies
  9530. 6:13:34licenses and also you can identify
  9531. 6:13:37outdated open-source libraries with
  9532. 6:13:39recommendations to update. This is just
  9533. 6:13:42one solution to manage security and
  9534. 6:13:44compliance. Let's move on and understand
  9535. 6:13:46how to implement continuous feedback. So
  9536. 6:13:50you can design system feedback
  9537. 6:13:52mechanisms. The first one is to use
  9538. 6:13:55application insights metric dashboards.
  9539. 6:13:57Now, application insights has always
  9540. 6:13:59provided a summary overview pane to
  9541. 6:14:02allow quick at a glance assessment of
  9542. 6:14:04your application's health and
  9543. 6:14:05performance. The new overview dashboard
  9544. 6:14:08provides a faster, more flexible
  9545. 6:14:10experience. Dashboards are basically
  9546. 6:14:12customizable interactive signboards that
  9547. 6:14:15provide real-time information.
  9548. 6:14:17Dashboards are associated with the team
  9549. 6:14:19or a project and display configurable
  9550. 6:14:21charts and widgets. Charts on the other
  9551. 6:14:23hand are query based status or trend
  9552. 6:14:26charts derived from a work item query or
  9553. 6:14:29test results. Widgets on the other hand
  9554. 6:14:31display configurable information and
  9555. 6:14:33charts on dashboards. The widget catalog
  9556. 6:14:36provides brief descriptions of those
  9557. 6:14:38widgets available to you. Now in
  9558. 6:14:40addition, you can add widgets provided
  9559. 6:14:43through the Azure DevOps marketplace. In
  9560. 6:14:45context, reports are system generated
  9561. 6:14:47charts that support specific services.
  9562. 6:14:50Examples are team velocity, sprint
  9563. 6:14:52burndown, and the cumulative flow
  9564. 6:14:54diagram. These reports are displayed on
  9565. 6:14:56the analytics tab for a specific service
  9566. 6:14:59and derive data from analytics. PowerBI
  9567. 6:15:02reports allow users to create rich
  9568. 6:15:04customized PowerBI reports or other
  9569. 6:15:07reports using O data queries of
  9570. 6:15:09analytics data and the return JSON data.
  9571. 6:15:11If you see the fourth point, you can
  9572. 6:15:13also configure a burndown or burn up
  9573. 6:15:15widget. The burndown and burnup widgets
  9574. 6:15:18provide the flexibility to create charts
  9575. 6:15:20for any type of scope, any number of
  9576. 6:15:22teams and within specified time periods.
  9577. 6:15:25Burndown charts focus on remaining work
  9578. 6:15:28within a specified time period while
  9579. 6:15:30burnup charts focus on completed work.
  9580. 6:15:33In the last point, both lead time and
  9581. 6:15:34cycle time widgets are extremely useful
  9582. 6:15:36to teams as they indicate how long it
  9583. 6:15:39takes for work to flow through their
  9584. 6:15:40development pipeline. Lead time measures
  9585. 6:15:43the total time elapsed from the creation
  9586. 6:15:44of work items to their completion. Cycle
  9587. 6:15:47time on the other hand measures the time
  9588. 6:15:49it takes for your team to complete work
  9589. 6:15:51items once they begin actively working
  9590. 6:15:53on them. Moving on, let us understand
  9591. 6:15:55how to optimize feedback mechanisms. So
  9592. 6:15:58the application life cycle doesn't
  9593. 6:16:00finish with application deployment.
  9594. 6:16:02Feedback is a very important element of
  9595. 6:16:04refining an application. Whether that's
  9596. 6:16:06exception detection and diagnosis or
  9597. 6:16:09improving the user experience. You can
  9598. 6:16:11do this in various ways. You can analyze
  9599. 6:16:14alerts to establish a baseline. You can
  9600. 6:16:16analyze telemetry to establish a
  9601. 6:16:18baseline. You can also perform life site
  9602. 6:16:21reviews. And you can also perform
  9603. 6:16:22ongoing tuning to reduce non-actionable
  9604. 6:16:25alerts. Moving on to the next part of
  9605. 6:16:27the session. We'll be talking about some
  9606. 6:16:29of the Azure tools. The first one that
  9607. 6:16:31we're going to talk about is Azure
  9608. 6:16:32Kubernetes Service, which simplifies
  9609. 6:16:35deploying a managed Kubernetes cluster
  9610. 6:16:38in Azure by offloading much of the
  9611. 6:16:40complexity and operational overhead to
  9612. 6:16:42Azure. Now, as a hosted Kubernetes
  9613. 6:16:45service, Azure handles critical tasks
  9614. 6:16:47for you like health monitoring and
  9615. 6:16:49maintenance. Since the Kubernetes
  9616. 6:16:51masters are managed by Azure, you only
  9617. 6:16:53manage and maintain the agent nodes.
  9618. 6:16:55Thus, a managed Kubernetes service AKS
  9619. 6:16:58is free. You only pay for the agent
  9620. 6:17:00nodes within your clusters and not for
  9621. 6:17:02the masters. You can create an AKS
  9622. 6:17:05cluster using the Azure portal, the
  9623. 6:17:07Azure CLI, Azure PowerShell or even
  9624. 6:17:10using templated driven deployment
  9625. 6:17:12options such as resource manager
  9626. 6:17:13templates and Terraform. Now when you
  9627. 6:17:15deploy an AKS cluster, the Kubernetes
  9628. 6:17:18master and all nodes are deployed and
  9629. 6:17:20configured for you. Additional features
  9630. 6:17:22such as advanced networking, Azure
  9631. 6:17:24active directory integration and
  9632. 6:17:26monitoring can also be configured during
  9633. 6:17:28the deployment process. Windows server
  9634. 6:17:30containers are also supported in AKS.
  9635. 6:17:33Now there are some technologies used for
  9636. 6:17:35configuration management like ARM
  9637. 6:17:38templates, Terraform, Chef Puppet,
  9638. 6:17:40Ansible. ARM templates are a way to
  9639. 6:17:42declare the objects you want, the types,
  9640. 6:17:45names, and properties in a JSON file
  9641. 6:17:47which can be checked into source control
  9642. 6:17:49and managed like any other code file.
  9643. 6:17:52ARM templates are what really gives us
  9644. 6:17:54the ability to roll out Azure
  9645. 6:17:55infrastructure is code. Also, there is
  9646. 6:17:57Terapform which is an open-source tool
  9647. 6:17:59for provisioning and managing cloud
  9648. 6:18:01infrastructure. It codifies
  9649. 6:18:03infrastructure in configuration files
  9650. 6:18:05that describe the topology of cloud
  9651. 6:18:07resources. Now these resources include
  9652. 6:18:09virtual machines, storage accounts and
  9653. 6:18:11networking interfaces. The Terraform CLI
  9654. 6:18:14provides a simple mechanism to deploy
  9655. 6:18:16and version the configuration files to
  9656. 6:18:19Azure. Supported by Chef, the Chef
  9657. 6:18:21Automate Azure Marketplace solution
  9658. 6:18:24enables you to build, deploy and manage
  9659. 6:18:26your infrastructure and applications
  9660. 6:18:28collaboratively. Moving on to the last
  9661. 6:18:31part of the session, we have a case
  9662. 6:18:32study for you. So we'll be talking about
  9663. 6:18:35how Service Now want to make work easier
  9664. 6:18:38and more efficient for their customers
  9665. 6:18:40through its software as a service
  9666. 6:18:42workflow platform. Now to maximize the
  9667. 6:18:44value it can deliver, Service Now moved
  9668. 6:18:46its business critical SAP estate
  9669. 6:18:49including 50 essential applications,
  9670. 6:18:52more than 10 SAP landscapes, 50 database
  9671. 6:18:55instances and over 50 terabytes of
  9672. 6:18:57storage and other IT assets to Microsoft
  9673. 6:19:00Azure. Service Now relies on the high
  9674. 6:19:02level of security that Azure provides
  9675. 6:19:05along with the scalability and agility
  9676. 6:19:07that a rapidly growing company needs to
  9677. 6:19:09expand. Benefits of the migration
  9678. 6:19:11include an 80% reduction in deployment
  9679. 6:19:14cycle time and improved service level
  9680. 6:19:16agreement, better disaster protection,
  9681. 6:19:19improved SAP application performance,
  9682. 6:19:21and a 40% reduction in TCO. Service Now
  9683. 6:19:25helps some of the world's largest and
  9684. 6:19:27most influential companies work better.
  9685. 6:19:30It also helps customers in numerous
  9686. 6:19:31industries reduce costs, increase
  9687. 6:19:33productivity, streamline processes, and
  9688. 6:19:36accelerate digital transformation. It
  9689. 6:19:38does this by delivering a comprehensive
  9690. 6:19:40software as a service digital workflow
  9691. 6:19:43platform with native AI capabilities and
  9692. 6:19:46intuitive user experience. To support
  9693. 6:19:48its customers, Service Now must ensure
  9694. 6:19:50that its own internal systems and
  9695. 6:19:52processes are powerful, dependable, and
  9696. 6:19:54scalable. The company has long relied on
  9697. 6:19:57Ashure to keep its operations running.
  9698. 6:20:07So these are the components of Azure
  9699. 6:20:09DevOps. I mean you have Azure boards,
  9700. 6:20:11you have Azure artifacts, Azure
  9701. 6:20:13pipelines, Azure repos, Azure test
  9702. 6:20:16plans. Now basically these are different
  9703. 6:20:19services that kind of let you carry out
  9704. 6:20:21certain practices that concern DevOps.
  9705. 6:20:24If you're interested or if you wish to
  9706. 6:20:26create pipelines in which your products
  9707. 6:20:28would be built, tested and deployed, you
  9708. 6:20:30need Azour pipelines. Azure artifacts
  9709. 6:20:32let you keep track of all the artifacts
  9710. 6:20:34that you actually going to go ahead and
  9711. 6:20:36use in your DevOps approach. Azure repos
  9712. 6:20:38is similar to GitHub where you can
  9713. 6:20:40actually go ahead and have your in-house
  9714. 6:20:43repository or in-house orchestration
  9715. 6:20:46where you can actually go ahead and put
  9716. 6:20:47in your repositories, commit them, pull
  9717. 6:20:49them, basically branch them and do a
  9718. 6:20:52number of things with them. Test plans
  9719. 6:20:54as the name suggest it gives you plans
  9720. 6:20:56using which you can actually go ahead
  9721. 6:20:57and carry out the testing process when
  9722. 6:20:59you talk about Azure DevOps in
  9723. 6:21:01particular. Azure boards this is
  9724. 6:21:02something that we are going to discuss
  9725. 6:21:04in a little more detail today. So Azure
  9726. 6:21:06boards think of it as a one place that
  9727. 6:21:09basically unifies all these services or
  9728. 6:21:12brings in all these services together.
  9729. 6:21:14It is more of a dashboard that basically
  9730. 6:21:16lets you keep track of all the
  9731. 6:21:17activities that you do in this process.
  9732. 6:21:19So whether it's about building your
  9733. 6:21:21applications, deploying them, testing
  9734. 6:21:23them, kind of importing your
  9735. 6:21:25repositories, all these things can be
  9736. 6:21:28managed on a single platform or on a
  9737. 6:21:30single page. So that it creates
  9738. 6:21:33simplicity. I mean if you have a team of
  9739. 6:21:34maybe 25 people, if all of them can
  9740. 6:21:37interact with all these services on one
  9741. 6:21:39single page on one single dashboard,
  9742. 6:21:41that would be really good. And that is
  9743. 6:21:43what Azure DevOps exactly does. It is
  9744. 6:21:46not just a medium which brings in all
  9745. 6:21:48these things together. it does a lot
  9746. 6:21:49more. So as we move further, we would be
  9747. 6:21:52discussing that as well. But for now,
  9748. 6:21:53that is what the definition says or that
  9749. 6:21:55is what I would define it as by saying
  9750. 6:21:57that it is a place where you bring in
  9751. 6:21:59all these services together. So let us
  9752. 6:22:01move further and try to understand
  9753. 6:22:03something else. So what are the
  9754. 6:22:04components of Azure boards in
  9755. 6:22:06particular? So guys, these are the terms
  9756. 6:22:08that we would be more concerned about as
  9757. 6:22:10we move further into the demo part. So
  9758. 6:22:13let us try to understand these one by
  9759. 6:22:15one. calling them components. I'm not
  9760. 6:22:17sure how right an approach that is but
  9761. 6:22:19yeah these are more of the terminologies
  9762. 6:22:21that concern Azure boards. Now I've
  9763. 6:22:24already mentioned that it is a page that
  9764. 6:22:25brings in all the services together. So
  9765. 6:22:28basically what it does is it lets you
  9766. 6:22:30keep track of all the activities that
  9767. 6:22:32are happening. So whether there are
  9768. 6:22:34certain work items that you're dealing
  9769. 6:22:35with, whether you're dealing with
  9770. 6:22:36certain issues, certain tasks, whether
  9771. 6:22:39you're talking about different views in
  9772. 6:22:41which you wish to view all the data that
  9773. 6:22:43is there, whether you're keeping track
  9774. 6:22:45of all the repositories that are there,
  9775. 6:22:47whether you're keeping track of all the
  9776. 6:22:48sprints, if you wish to take a note of
  9777. 6:22:50what happens in a particular sprint, or
  9778. 6:22:53if you have certain queries that you
  9779. 6:22:54wish to throw into so that you can
  9780. 6:22:56understand your process or your working
  9781. 6:22:59much better in that case, you have your
  9782. 6:23:01Azure boards basically which lets you
  9783. 6:23:03take care of all these activities. So
  9784. 6:23:06what are these terms and what do they do
  9785. 6:23:08exactly? Let's try to understand those.
  9786. 6:23:10Now as I've already mentioned each
  9787. 6:23:12artifact that would go on your Azour
  9788. 6:23:14board. I mean whether it's an issue,
  9789. 6:23:16whether it's a task, whatever it is, it
  9790. 6:23:18comes under a particular classification.
  9791. 6:23:20I mean I want to make note of that
  9792. 6:23:23particular artifact in the form of some
  9793. 6:23:25entity. So that entity is my work item
  9794. 6:23:27as in whatever work is being done,
  9795. 6:23:29whatever action is being done on this
  9796. 6:23:30particular item that can be taken note
  9797. 6:23:33of by using this particular thing. Work
  9798. 6:23:35item is nothing but basically creating a
  9799. 6:23:37simple tab in which you keep track of
  9800. 6:23:39everything. Okay. If I have a particular
  9801. 6:23:41issue, say for example, I have some
  9802. 6:23:43issue with committing a change to a
  9803. 6:23:45particular repository. In that case, I
  9804. 6:23:47can create a work item or an issue
  9805. 6:23:49saying that okay, this is the stuff that
  9806. 6:23:50I'm working on or this is the stuff that
  9807. 6:23:52I need to keep note of. So this
  9808. 6:23:54basically is a work item boards. Now
  9809. 6:23:57again if you have a particular project
  9810. 6:23:58that you're working on now that project
  9811. 6:24:00would have its self-defined board in
  9812. 6:24:03this case you can think of it as a
  9813. 6:24:05convent board basically which is very
  9814. 6:24:07popular and it comes uh self integrated
  9815. 6:24:09with every project that you work on on
  9816. 6:24:11Azour boards specifically backlogs. Yes
  9817. 6:24:14the fact that you are working on sprints
  9818. 6:24:17I mean let me simplify this a little
  9819. 6:24:19more for you. Basically, Azour Boards
  9820. 6:24:21also lets you keep track or lets you
  9821. 6:24:24perform sprint management and agile
  9822. 6:24:27development and management as well. That
  9823. 6:24:28means you would be working on software
  9824. 6:24:31development in different phases. So, you
  9825. 6:24:33would be working in different sprints,
  9826. 6:24:35right? So, there might be a possibility
  9827. 6:24:36that you are working on a particular
  9828. 6:24:38software or developing a particular
  9829. 6:24:40software. In that case, you would be
  9830. 6:24:42having certain backlogs, certain issues
  9831. 6:24:44that need resolving. So in order to keep
  9832. 6:24:47a track of it, in order to keep an order
  9833. 6:24:50in the flow of your software
  9834. 6:24:51development, you can always have
  9835. 6:24:53backlogs which let you backtrack and
  9836. 6:24:55keep track of what has happened and what
  9837. 6:24:57has not. So for that you have backlogs.
  9838. 6:24:59Queries, we've already discussed that. I
  9839. 6:25:01mean you can always throw in queries to
  9840. 6:25:03understand what is happening on your
  9841. 6:25:04dashboard or on your board. Sprints I
  9842. 6:25:07believe we have fair bit of idea about
  9843. 6:25:08that as well. When you talk about
  9844. 6:25:10dashboards, yes, as I've already
  9845. 6:25:12mentioned, you have a separate board.
  9846. 6:25:14Azure ensures that you get that
  9847. 6:25:16simplicity. I mean you get everything on
  9848. 6:25:18one simple page. So as we move into the
  9849. 6:25:20demo part probably we would be
  9850. 6:25:22understanding these topics in a little
  9851. 6:25:24more detail. So let us quickly just do
  9852. 6:25:26one thing that let us quickly switch
  9853. 6:25:28into the Azure boards and let us get
  9854. 6:25:30started with the demo part so that
  9855. 6:25:32probably these terms make a lot more
  9856. 6:25:34sense to you people. So guys what I've
  9857. 6:25:37done is I've gone ahead and I've
  9858. 6:25:38switched into my Azour portal.
  9859. 6:25:40Technically I haven't switched into my
  9860. 6:25:42Azure portal. Azour portal is a one-time
  9861. 6:25:45place or a single place where you can
  9862. 6:25:47actually go ahead and implement or carry
  9863. 6:25:49out all the Azure practices. So that
  9864. 6:25:52happens with most of the cloud platforms
  9865. 6:25:53that are there in the market. So in case
  9866. 6:25:55if you wish to practice Azure, all you
  9867. 6:25:57have to do is go and search for Azure
  9868. 6:26:00portal or free tier for Azure and you
  9869. 6:26:03would be directed to a page where you
  9870. 6:26:05can create a free tier account on
  9871. 6:26:07Microsoft Azure. You'd be expected to
  9872. 6:26:09enter your credit card or debit card
  9873. 6:26:11details. This is because these services
  9874. 6:26:13have an upper limit or a cap on top of
  9875. 6:26:16that so that you cannot exceed those
  9876. 6:26:17limits because if you do exceed those
  9877. 6:26:19limits then Microsoft Azure would charge
  9878. 6:26:21you and that is why they need your
  9879. 6:26:23credit card or debit card details. But
  9880. 6:26:25if you are a beginner and you wish to
  9881. 6:26:27practice do not worry these resources
  9882. 6:26:28are more than enough for you to
  9883. 6:26:30practice. So I would suggest that you
  9884. 6:26:32actually go ahead and create a free tier
  9885. 6:26:33account. Okay, one more important point.
  9886. 6:26:35Once you create that free tier account,
  9887. 6:26:37you have certain credits which are
  9888. 6:26:39somewhere around $200 if I'm not wrong,
  9889. 6:26:41$200. And if you are from India, the
  9890. 6:26:44fact that I am conducting this session
  9891. 6:26:46in India, I have a credit if I create a
  9892. 6:26:48free tier account, I have a credit of
  9893. 6:26:50somewhere around 12 to 13,000 Indian
  9894. 6:26:52rupees, which is more than enough if I'm
  9895. 6:26:54not wrong for the practice sake. And you
  9896. 6:26:56have a validity of 1 month to practice
  9897. 6:26:58these services for free. Once you exceed
  9898. 6:27:01the one month part, your account would
  9899. 6:27:02be deactivated or you won't be given
  9900. 6:27:04access to the services. If you wish to
  9901. 6:27:06have an access to these services, you
  9902. 6:27:08would have to probably sign up to some
  9903. 6:27:09plan that they have. But meanwhile, you
  9904. 6:27:11can use these resources for free for a
  9905. 6:27:14month actually. So with AWS, it is for
  9906. 6:27:16one year with Azure it is for 1 month if
  9907. 6:27:18I'm not wrong. So once you do have that
  9908. 6:27:21free tier limit with you, you can visit
  9909. 6:27:23this particular link. As you can see on
  9910. 6:27:26the screen, you can actually go ahead
  9911. 6:27:27and search for this particular screen.
  9912. 6:27:30And once you do that guys, probably you
  9913. 6:27:32can actually go ahead and come to this
  9914. 6:27:33page where you can start free with the
  9915. 6:27:35boards. So let us see how can we get
  9916. 6:27:38started with this particular service. So
  9917. 6:27:40click on start boards. It would ask you
  9918. 6:27:43as in do you wish to continue? Just say
  9919. 6:27:45yes. It is an Azure DevOps service
  9920. 6:27:47basically. So it would ask you for the
  9921. 6:27:50name of the organization. I mean you
  9922. 6:27:52have a structured approach here where
  9923. 6:27:53you would be having an organization
  9924. 6:27:55under which you'd be having projects. So
  9925. 6:27:57let us call it say Azure boards guys I'm
  9926. 6:28:01giving a random name because most of the
  9927. 6:28:03names are taken. Azour boards 1 2 3 4 5
  9928. 6:28:07continue. Okay I just backtracked
  9929. 6:28:10accidentally. Let's say Azour Boards
  9930. 6:28:13sample 1 2 3 4 5 and I say continue. So
  9931. 6:28:18it creates an organization and it
  9932. 6:28:20redirects you there and then it says
  9933. 6:28:21that actually go ahead and create a
  9934. 6:28:23project. So I'm going to say demo
  9935. 6:28:24project
  9936. 6:28:26for this session and I'm going to keep
  9937. 6:28:30it public because I wish to add certain
  9938. 6:28:31users. So let's just keep it public for
  9939. 6:28:33now because if I create a private
  9940. 6:28:35account I would have to look into access
  9941. 6:28:37rights for the users that I'm creating.
  9942. 6:28:39And there you go your project is
  9943. 6:28:40created. So you can go through this
  9944. 6:28:42welcome guide if you want. I'm going to
  9945. 6:28:43skip it for now. So guys this is how the
  9946. 6:28:45interface looks like. And as you can
  9947. 6:28:47see, I've mentioned that you can take a
  9948. 6:28:49look at the backlogs if you've created,
  9949. 6:28:51which I haven't in this case. You can
  9950. 6:28:53create issues if you want. You can do
  9951. 6:28:55that as well. You have an option of
  9952. 6:28:57epics issues, which lets you basically
  9953. 6:28:59keep track of all the stuff that you're
  9954. 6:29:00doing. You have certain work items that
  9955. 6:29:02you can add if you want to. Here,
  9956. 6:29:05what boards are you using? Backlogs, you
  9957. 6:29:07can keep track of all the backlogs that
  9958. 6:29:09you do. Sprints and queries. So, if you
  9959. 6:29:12just come to boards and then you say add
  9960. 6:29:15a new item. Let's say sample item. There
  9961. 6:29:19you go. So guys, you can see that it
  9962. 6:29:21comes with these two options. You have a
  9963. 6:29:23particular state here. So for now, it
  9964. 6:29:24says to do what do you wish to do? It is
  9965. 6:29:26that phase. Okay. So you can actually go
  9966. 6:29:28ahead and change the state as well.
  9967. 6:29:30Saying once you do change the state, it
  9968. 6:29:32moves to the next part as you can see
  9969. 6:29:34here. So if you are working on a
  9970. 6:29:36particular action and you've actually
  9971. 6:29:38moving from one state to the other, you
  9972. 6:29:40can always make changes to that and
  9973. 6:29:41probably you would know that okay, what
  9974. 6:29:43state is the work item into? what state
  9975. 6:29:45is the issue into? So if I click on this
  9976. 6:29:48thing, it would probably go back again.
  9977. 6:29:49As you can see, you can add tasks here
  9978. 6:29:52saying that okay, this is a particular
  9979. 6:29:54subtask or a task that needs to be done.
  9980. 6:29:56Say for example, clear cache and there
  9981. 6:29:59you go, cache has been added. If I am
  9982. 6:30:02done with this particular task, say for
  9983. 6:30:03example, I move into doing phase and I
  9984. 6:30:08clear this task and I say I am done with
  9985. 6:30:11it. There you go. As you can see the
  9986. 6:30:13color here has changed indicating that
  9987. 6:30:15the flow is correct and my task has been
  9988. 6:30:17completed. So you can keep track of all
  9989. 6:30:19the resources that you're using here.
  9990. 6:30:21You can actually go ahead and add users.
  9991. 6:30:24You can do a lot of stuff that is there
  9992. 6:30:26with these projects. So come here and
  9993. 6:30:28take a look at the overview. You can
  9994. 6:30:30suppose if you name it say sample for
  9995. 6:30:33today maybe guys I'm going to go very
  9996. 6:30:35random with this session. I mean
  9997. 6:30:37whatever I feel is worth telling I'm
  9998. 6:30:39going to go ahead and share that with
  9999. 6:30:40you. I hope that flow is fine with you
  10000. 6:30:42people. So there you go. Let's see if we
  10001. 6:30:45can add a user from here. If not, we'll
  10002. 6:30:48create a user from somewhere.
  10003. 6:30:52Okay. So a user was added here. One user
  10004. 6:30:55is added and assigned an access level to
  10005. 6:30:57user one. You can view the status here
  10006. 6:30:59as well. It says for now it has failed
  10007. 6:31:01because probably I do not have the
  10008. 6:31:02license to actually go ahead and assign
  10009. 6:31:04users. But you can actually go ahead and
  10010. 6:31:06assign users as well. So that depends
  10011. 6:31:08upon the exercise that you have. Once
  10012. 6:31:10you do that, you can actually go ahead
  10013. 6:31:11and do a lot of stuff. You can just come
  10014. 6:31:14here probably you can visit your
  10015. 6:31:17dashboards and the demo projects that
  10016. 6:31:19you are creating. Maybe go to boards.
  10017. 6:31:22Once you do that, you can come here and
  10018. 6:31:23add backlogs as well. Suppose I have an
  10019. 6:31:26item here which is this or let's add a
  10020. 6:31:30new item. Take a look at this issue and
  10021. 6:31:35say add to top. There you go. I can come
  10022. 6:31:38and assign it to a particular user.
  10023. 6:31:40Let's say I assign it to this particular
  10024. 6:31:42individual. And there you go. The person
  10025. 6:31:45can actually go ahead and make change to
  10026. 6:31:47the issue. You can see the update is
  10027. 6:31:49here. And if it is done, it's going to
  10028. 6:31:50go to green again. And if I come back to
  10029. 6:31:53my boards, you can see that it is here.
  10030. 6:31:56Work items again. If I actually go ahead
  10031. 6:31:58and move it to the other state, that
  10032. 6:32:00won't be a problem. It would again go to
  10033. 6:32:02the green part. So, this is how it
  10034. 6:32:03works. You can actually go to the
  10035. 6:32:05project settings as well. You can come
  10036. 6:32:07here. You can do a lot of stuff here.
  10037. 6:32:09Say for example, you can manage your
  10038. 6:32:10teams. Take a look at the security
  10039. 6:32:12principles that are there. You can test.
  10040. 6:32:15Let's not get into the test part for
  10041. 6:32:16now. But let's say if you wish to have
  10042. 6:32:19GitHub connections, you can connect to
  10043. 6:32:21your GitHub account as well. Just come
  10044. 6:32:23here and probably
  10045. 6:32:25Okay. So, you can just go ahead. My
  10046. 6:32:27GitHub account is already added I
  10047. 6:32:28believe here. So, it shows that thing to
  10048. 6:32:30me. Else you required to sign up as
  10049. 6:32:32well. So you can just say save
  10050. 6:32:34and the repository gets added here. So
  10051. 6:32:37you can actually go ahead and move to
  10052. 6:32:39the repose part as well and take a look
  10053. 6:32:41at the stuff that has happened here. Say
  10054. 6:32:43for example, let me switch to some other
  10055. 6:32:45account that I have. This is the one or
  10056. 6:32:49AB dura boards. So if I go to samples,
  10057. 6:32:54there was something I was wanting to
  10058. 6:32:55tell you. Yeah, this is the part. So you
  10059. 6:32:57can enable your repos as well if you
  10060. 6:32:59want. Okay, you can enable your
  10061. 6:33:01pipelines even artifacts.
  10062. 6:33:05You can see that all these things are
  10063. 6:33:07available here as well. Now, because
  10064. 6:33:09I've actually gone ahead and enabled
  10065. 6:33:10those things. If you just enabled these
  10066. 6:33:12things, you can have access to these
  10067. 6:33:14resources here and here. So, if you have
  10068. 6:33:17any files or stuff, you can actually go
  10069. 6:33:18ahead and check if there is anything
  10070. 6:33:20that is there in your repos or in your
  10071. 6:33:23other services and you can clone those,
  10072. 6:33:25you can make changes to those services
  10073. 6:33:27that you've used. You can commit certain
  10074. 6:33:29changes to the code that is there. Say
  10075. 6:33:31for example, you have some index files
  10076. 6:33:33or some basic codes that are there. You
  10077. 6:33:34can actually go ahead and edit those
  10078. 6:33:36changes. Once you've actually edited
  10079. 6:33:38those changes, you can go ahead and
  10080. 6:33:39commit those. You can create branches as
  10081. 6:33:41well. So, uh you have your master
  10082. 6:33:43branch, you have your sub branch and you
  10083. 6:33:44can make changes and commit those
  10084. 6:33:46changes to the master as well. So, when
  10085. 6:33:48you talk about DevOps operations and
  10086. 6:33:49various activities that concern a
  10087. 6:33:51particular board, everything can be
  10088. 6:33:53taken care of when you talk about Azure
  10089. 6:33:54boards in particular. So, this is it
  10090. 6:33:56guys. There is not a lot to explore when
  10091. 6:33:58you talk about these services. These are
  10092. 6:34:00very important to use though because
  10093. 6:34:01they help you keep track of a lot of
  10094. 6:34:04things. I would suggest that you visit
  10095. 6:34:05Microsoft Azour's documentation as well
  10096. 6:34:08because there are quite a few other
  10097. 6:34:10activities that you can do with this
  10098. 6:34:12particular service. Some basic
  10099. 6:34:13activities which are simple but
  10100. 6:34:15something that are important and can be
  10101. 6:34:17done as well. So as far as you are
  10102. 6:34:19concerned, you can actually go ahead and
  10103. 6:34:21explore as many services as you want and
  10104. 6:34:23you can understand what all can you do
  10105. 6:34:24with Azure boots in particular. As far
  10106. 6:34:27as this session goes guys, I just wanted
  10107. 6:34:28you to get introduced to this particular
  10108. 6:34:30topic and I believe I've done justice to
  10109. 6:34:32that and I hope that you've understood
  10110. 6:34:35this particular topic to some extent
  10111. 6:34:36where you can take it further and
  10112. 6:34:38probably enhance your knowledge in this
  10113. 6:34:40particular domain.
  10114. 6:34:47Let us try to understand what is Azure
  10115. 6:34:50pipelines. Now, now basically this
  10116. 6:34:52particular service helps you carry out
  10117. 6:34:54following things or this is what the
  10118. 6:34:56definition has to say. Well, it is a
  10119. 6:34:58service that caters the need for
  10120. 6:35:00creating pipelines on Azure cloud
  10121. 6:35:02platform which is pretty much evident
  10122. 6:35:04and what it does is it lets you build,
  10123. 6:35:06test and deploy applications to Azure
  10124. 6:35:08cloud and other supported platforms. Let
  10125. 6:35:11me simplify this definition for you a
  10126. 6:35:13little more. Now basically what it does
  10127. 6:35:15is it lets you create a pipeline. Now
  10128. 6:35:17when I say a pipeline when you develop a
  10129. 6:35:19software it needs to be built. So there
  10130. 6:35:22are steps involved in it. You would be
  10131. 6:35:24picking up a piece of code or you'd be
  10132. 6:35:26creating a new code. Once that code is
  10133. 6:35:28there you would build that code. You
  10134. 6:35:30would probably run some tests on top of
  10135. 6:35:32it. If any changes are required you
  10136. 6:35:34would again build that code again test
  10137. 6:35:36it and once it is ready you would deploy
  10138. 6:35:38and deliver it to the end customer.
  10139. 6:35:40Right? So instead of doing these things
  10140. 6:35:43individually or doing these separately,
  10141. 6:35:45what if there was a channel in which you
  10142. 6:35:47could do all these things and keep a
  10143. 6:35:49track of all these at one single
  10144. 6:35:51location? Wouldn't that be nice? Well,
  10145. 6:35:53when you talk about Azour pipeline, that
  10146. 6:35:55is what it does. It basically lets you
  10147. 6:35:57bring in all these actions under one
  10148. 6:36:00umbrella. And these are some of the
  10149. 6:36:02features that Azure pipeline has to
  10150. 6:36:05offer to you. Let us take a look at
  10151. 6:36:06those one by one. Well, Azure pipelines
  10152. 6:36:09are basically platform and language
  10153. 6:36:10independent. What do I mean by this?
  10154. 6:36:13Well, if you have your application and
  10155. 6:36:14you wish to run it on particular
  10156. 6:36:16platform. Well, Azour gives you option
  10157. 6:36:18for that as well. You can run it on
  10158. 6:36:20maybe your Windows operating system, you
  10159. 6:36:22can run it on your Linux operating
  10160. 6:36:23systems, you can run it on your Mac
  10161. 6:36:25operating systems as well. Plus, it is
  10162. 6:36:28language independent. That means whether
  10163. 6:36:30you are building a NodeJS application,
  10164. 6:36:32you are building it in some other
  10165. 6:36:34programming language like Python or
  10166. 6:36:35stuff like that, you can definitely run
  10167. 6:36:37this piece of code or build your
  10168. 6:36:39applications using different programming
  10169. 6:36:41languages and you can run those on
  10170. 6:36:42different platforms as well. Freedom to
  10171. 6:36:45work with containers. Definitely true.
  10172. 6:36:48What do I mean by this? Well, containers
  10173. 6:36:50are something that let you simplify the
  10174. 6:36:53process of virtualization or in simple
  10175. 6:36:55words, they let you separate your piece
  10176. 6:36:57of code and binaries from the platform
  10177. 6:36:59on top of which you wish to run those.
  10178. 6:37:01So in simple words, your code is locked
  10179. 6:37:04into a container which can run anywhere.
  10180. 6:37:06There are containers like Kubernetes,
  10181. 6:37:08Docker. So basically what it does is it
  10182. 6:37:10lets you push your applications on top
  10183. 6:37:13of these containers. You have Azure
  10184. 6:37:15container registry as well. If I'm not
  10185. 6:37:17wrong, that is an Azure service for
  10186. 6:37:19containerization basically. So you have
  10187. 6:37:21the freedom to move your applications on
  10188. 6:37:23top of these containers or inside these
  10189. 6:37:25containers as well. Deployment to the
  10190. 6:37:28other cloud vendors. Definitely yes. Now
  10191. 6:37:31the fact being that this is an Azure
  10192. 6:37:33service and it lets you create pipelines
  10193. 6:37:35does not mean that it restricts your
  10194. 6:37:36applications to Microsoft Azure only. If
  10195. 6:37:39you have been using other cloud vendors
  10196. 6:37:41or your customers or whatever it is, I
  10197. 6:37:44mean your end goal is to move it to some
  10198. 6:37:46other cloud platform you can do that. If
  10199. 6:37:48you're talking about cloud platforms
  10200. 6:37:50like AWS which is popular, GCP which is
  10201. 6:37:52a very good competitor. If you wish to
  10202. 6:37:54move your codes or your applications to
  10203. 6:37:57these vendors will definitely deployment
  10204. 6:37:59to these vendors is also supported.
  10205. 6:38:01Support for open source. Yes, Microsoft
  10206. 6:38:04Azour has put in a lot of effort in
  10207. 6:38:05recent times to ensure that Azour is
  10208. 6:38:08open to open-source projects,
  10209. 6:38:09applications and tools as well. This
  10210. 6:38:12being said, it is very easy to integrate
  10211. 6:38:14open-source services with Azure these
  10212. 6:38:16days and that is why if you wish to keep
  10213. 6:38:18your project open source or you want it
  10214. 6:38:20to be accessible to others, you can take
  10215. 6:38:22care of that as well. So, these are some
  10216. 6:38:24of the features that make Azour
  10217. 6:38:26pipelines a must-have tool or a must-h
  10218. 6:38:29have service. So let us just quickly
  10219. 6:38:31move further now and quickly switch into
  10220. 6:38:34the demo part because I do not want to
  10221. 6:38:35stall any of your precious time. So let
  10222. 6:38:37us just quickly take a look at what
  10223. 6:38:39Azure pipelines can do for you. So guys
  10224. 6:38:42what I've done is I've actually gone
  10225. 6:38:43ahead and I've switched into the
  10226. 6:38:45console. Now if you talk about Microsoft
  10227. 6:38:47Azour they give you some free credits to
  10228. 6:38:50use Azure services for free for 1 month.
  10229. 6:38:54The credits are somewhere around 12 to
  10230. 6:38:5613,000 Indian rupees and somewhere
  10231. 6:38:57around $200 US if I'm not wrong. So you
  10232. 6:39:00can utilize these credits to use these
  10233. 6:39:03services because these services are
  10234. 6:39:05chargeable. But the fact that you have
  10235. 6:39:07free credits, you can utilize these
  10236. 6:39:08services for free for one complete month
  10237. 6:39:11so that you can test and practice what
  10238. 6:39:13these services have to offer to you. So
  10239. 6:39:15if you do not have a free tier account
  10240. 6:39:17just go ahead and sign in for Azour
  10241. 6:39:20portal and once you do that guys you
  10242. 6:39:22would be having this free tier account
  10243. 6:39:24which you can use. Once you do that
  10244. 6:39:26probably you would want to search for
  10245. 6:39:28Azure DevOps something that we are going
  10246. 6:39:30to use. Just type Azure DevOps in your
  10247. 6:39:32browser and you would be redirected to
  10248. 6:39:34this page and from here on I would be
  10249. 6:39:36taking you further. So let us take a
  10250. 6:39:38look at what you can do with Azour
  10251. 6:39:40pipelines guys. So I'm going to start
  10252. 6:39:41with start free. No sooner I click on
  10253. 6:39:44this icon guys, it would probably if you
  10254. 6:39:47are starting as a fresher or somebody
  10255. 6:39:50who hasn't worked on any project, it
  10256. 6:39:52would ask you to create an organization
  10257. 6:39:54and a project to start with. The fact
  10258. 6:39:56that I already have an organization or a
  10259. 6:39:59project, it has actually redirected me
  10260. 6:40:01to this particular page. So let me just
  10261. 6:40:04quickly see if I can just go ahead and
  10262. 6:40:06delete this particular project or
  10263. 6:40:08organization and see if you can start
  10264. 6:40:10fresh. How do you do that? Just come
  10265. 6:40:12here and say delete and this was the
  10266. 6:40:14name just going to copy it. Ctrl + Ctrl
  10267. 6:40:18+ V and delete. So guys when you click
  10268. 6:40:21on start fresh this is how it should
  10269. 6:40:24start if you started fresh. If not you
  10270. 6:40:27can continue from the interface where I
  10271. 6:40:29just left from. So it says do you want
  10272. 6:40:31to get started with DevOps? I would say
  10273. 6:40:33yes. Give it a name your organization.
  10274. 6:40:36I'm just going to say sample for today.
  10275. 6:40:39Okay. South India. I'm kind of based in
  10276. 6:40:42Bangalore right now. So that is why it
  10277. 6:40:43says South India and it will say create
  10278. 6:40:46a project. So the name should be demo
  10279. 6:40:49project for me. You can name it whatever
  10280. 6:40:51you want to. If the name is available,
  10281. 6:40:52you can use it. Do I want it private? Do
  10282. 6:40:55I want it public? I would say public for
  10283. 6:40:56now because I wish to import certain
  10284. 6:40:58repositories as well. And keeping it
  10285. 6:41:00public would make it easier for me to
  10286. 6:41:02get access to those repositories. No
  10287. 6:41:04other reason. So I'm just going to go
  10288. 6:41:05ahead and say create. So guys, we've
  10289. 6:41:07gone ahead and we have an organization
  10290. 6:41:09for our usage and under that we have a
  10291. 6:41:12project as well. So if I just scroll
  10292. 6:41:14down, I would see following options. I
  10293. 6:41:17can switch to these five services that
  10294. 6:41:19we've discussed and I can also have them
  10295. 6:41:21on one tab as well, which you can see it
  10296. 6:41:23here. I've already added those as
  10297. 6:41:24extensions to my dashboard. So we can
  10298. 6:41:27use it from here as well. Let's just say
  10299. 6:41:29create pipelines for now. There are no
  10300. 6:41:31pipelines here because I've deleted my
  10301. 6:41:33previous project as well. So I'm just
  10302. 6:41:35going to go ahead and say create a new
  10303. 6:41:36pipeline. So where is my code is what it
  10304. 6:41:38is asking me. Is it in Bitbucket? Is it
  10305. 6:41:40in Azure repositories? Is it in GitHub?
  10306. 6:41:43I have some pieces of code in GitHub. So
  10307. 6:41:45let's just go ahead and use a random
  10308. 6:41:46piece of code that is there in my
  10309. 6:41:48repository. Once you click here guys, if
  10310. 6:41:50you're not authorized to use your
  10311. 6:41:52repositories or use your GitHub, you
  10312. 6:41:54would be required to sign in here. It
  10313. 6:41:56would throw in a page where you can
  10314. 6:41:57actually login with your credentials to
  10315. 6:41:59GitHub and pick up your repositories if
  10316. 6:42:01you wish to use those. I have this one
  10317. 6:42:04here. It is available actually. You can
  10318. 6:42:05look for pipelines Python Django for
  10319. 6:42:07Azure and probably you would get these
  10320. 6:42:09anywhere. You can just fork it by
  10321. 6:42:11clicking here. If you do not have it, do
  10322. 6:42:13not worry. I would be sharing the link
  10323. 6:42:14for this as well. For now, let us just
  10324. 6:42:16go ahead and continue with the demo
  10325. 6:42:17part. So, I'm going to select this.
  10326. 6:42:20So guys, this is basically a piece of
  10327. 6:42:23code for Django framework supported by
  10328. 6:42:25Python. What it does, it tests a Django
  10329. 6:42:28project on multiple versions of Python.
  10330. 6:42:30It adds steps that help you analyze the
  10331. 6:42:32piece of code, save, build artifacts,
  10332. 6:42:35deploy and more. So basically you can
  10333. 6:42:37visit this particular link as well to
  10334. 6:42:39know more about this piece of code. So
  10335. 6:42:41this is what it does. You can see step
  10336. 6:42:43by step the information is here. What VM
  10337. 6:42:45it is going to use again what are the
  10338. 6:42:47versions that it is going to use? What
  10339. 6:42:49is the script that is here to export a
  10340. 6:42:51particular path source plus if you go
  10341. 6:42:53ahead these are some of the commands
  10342. 6:42:55that you would be wanting to take a look
  10343. 6:42:56at. These are nothing major. It just
  10344. 6:42:58basically goes ahead and builds a
  10345. 6:43:00particular project for you and deploys
  10346. 6:43:02it. So let us just go ahead and do that
  10347. 6:43:04as well. Let's just say run. So it would
  10348. 6:43:07configure your piece of code and once it
  10349. 6:43:10starts doing that you would get all the
  10350. 6:43:12information as in what is happening here
  10351. 6:43:14step by step. So bear with me. Let it
  10352. 6:43:17just configure the stuff and give you
  10353. 6:43:20the information. Probably might take
  10354. 6:43:21half a minute to get started. And there
  10355. 6:43:24you go guys. It has already started. The
  10356. 6:43:26agent is ready for the job is what it
  10357. 6:43:28says and it would start the connection.
  10358. 6:43:31Once it does that there would be a log
  10359. 6:43:33made available to you people.
  10360. 6:43:37So guys this is what has happened and
  10361. 6:43:39this is what is happening. You can see
  10362. 6:43:41it is getting logged step by step
  10363. 6:43:44whatever is happening and you can see
  10364. 6:43:46the commands and piece of code running
  10365. 6:43:47in the background and once it has
  10366. 6:43:49succeeded it would give you the status
  10367. 6:43:51succeeded. So it initialized an agent,
  10368. 6:43:54prepared a job, initialized the job,
  10369. 6:43:56checked out, then it used a Python
  10370. 6:43:58version. It did actually go ahead and
  10371. 6:44:00explore or export a particular project,
  10372. 6:44:03installed the prerequisite, it ran test
  10373. 6:44:05on top of it. It published the piece of
  10374. 6:44:07application or the result basically and
  10375. 6:44:10it actually did go ahead and check out
  10376. 6:44:11and finalize the job. So these are the
  10377. 6:44:13things it has actually gone ahead and
  10378. 6:44:15performed. You can take a look at the
  10379. 6:44:17summary part as well as in this is what
  10380. 6:44:20has happened step by step. tests. These
  10381. 6:44:22were the tests that were run and those
  10382. 6:44:24were successful. So you have the stats
  10383. 6:44:25for those as well. You can click on
  10384. 6:44:27release but there is nothing to release
  10385. 6:44:29for now. So yeah, so you can choose
  10386. 6:44:31where you wish to actually go ahead and
  10387. 6:44:32deploy your application. You can carry
  10388. 6:44:34out these steps as well. So these are
  10389. 6:44:36the options that you have and you can
  10390. 6:44:39just go back. Let me just leave it. Yep.
  10391. 6:44:43And if I overview it said pipelines, it
  10392. 6:44:46is 100% successfully built. member is
  10393. 6:44:49the account that I'm using. Pipelines,
  10394. 6:44:52if I go here, it would give me
  10395. 6:44:53information about that as well. This is
  10396. 6:44:55the master branch that I'm using. I can
  10397. 6:44:57actually go ahead and update my piece of
  10398. 6:44:59code as well if I wish to. So guys,
  10399. 6:45:01there are a lot of things that you can
  10400. 6:45:03do. You can actually go ahead and commit
  10401. 6:45:05certain pieces of codes here as well.
  10402. 6:45:07You can go to repose. You can decide
  10403. 6:45:09what piece of code you want. the
  10404. 6:45:11existing master branch that you're using
  10405. 6:45:13in the pipeline, you can actually go
  10406. 6:45:15ahead and fork that particular piece of
  10407. 6:45:18code. When I say fork, you make a copy
  10408. 6:45:19of it for your own sake. You make
  10409. 6:45:22changes in it and then you push it to
  10410. 6:45:23the master and if the master finds the
  10411. 6:45:26latest version doable with the proper
  10412. 6:45:29access admin rights, you can actually go
  10413. 6:45:31ahead and merge that piece of code
  10414. 6:45:32something called as commit. You can
  10415. 6:45:34commit your code to that particular
  10416. 6:45:36pipeline. So guys, this is how your
  10417. 6:45:38pipeline works. This is how your piece
  10418. 6:45:40of code works or this is how basically
  10419. 6:45:43you actually go ahead and use your Azure
  10420. 6:45:45pipelines. There are a lot of other
  10421. 6:45:46things that you can do. You can actually
  10422. 6:45:48go ahead and install certain extensions
  10423. 6:45:51to your Azure pipelines so that you get
  10424. 6:45:54quick sites or basically you get
  10425. 6:45:56analysis as in what was the process that
  10426. 6:45:58was implemented and what steps it took.
  10427. 6:46:00If you wish to know more about it, do
  10428. 6:46:02visit our YouTube channel and visit
  10429. 6:46:05Azure DevOps video where we've talked
  10430. 6:46:07about that. The video also talks about
  10431. 6:46:09how you can actually go ahead and add
  10432. 6:46:10batch to your particular piece of code
  10433. 6:46:12or your application suggesting that
  10434. 6:46:15whether all the builds were succeeded or
  10435. 6:46:17were successful or not. As far as this
  10436. 6:46:20session goes guys, I believe I've talked
  10437. 6:46:22enough about what Azure pipelines are.
  10438. 6:46:24I've shown you a sample as in how you
  10439. 6:46:25can actually go ahead and create a
  10440. 6:46:27sample piece of code using Azure
  10441. 6:46:29pipelines or not a piece of code or how
  10442. 6:46:31you can actually deploy a sample piece
  10443. 6:46:33of code using Azure pipelines. I believe
  10444. 6:46:36most of the parts here are covered but
  10445. 6:46:38let us quickly take a look at some of
  10446. 6:46:39the other pointers and then probably we
  10447. 6:46:41can rest this session. So here you'd be
  10448. 6:46:44having summary of what is happening.
  10449. 6:46:46Dashboards I don't think it would show
  10450. 6:46:48any dashboard. You can just go ahead and
  10451. 6:46:50add widgets if you want. So you can
  10452. 6:46:52click it or click on this particular
  10453. 6:46:53icon select a visit. You can add it here
  10454. 6:46:57and you can say add. So now if you go to
  10455. 6:47:01your dashboard
  10456. 6:47:04you can select a pipeline here. Let's
  10457. 6:47:06say this is the pipeline and I say save.
  10458. 6:47:09So it gives me the history as in what
  10459. 6:47:11has happened 4 minutes ago and whatever
  10460. 6:47:13changes happen those can be studied and
  10461. 6:47:16understood here.
  10462. 6:47:24What is Azure DevOps test plans? Azure
  10463. 6:47:27DevOps test plan is a service launched
  10464. 6:47:30by Azure DevOps that provides a
  10465. 6:47:32browserbased test management solution
  10466. 6:47:34for the exploratory plan, manual and
  10467. 6:47:38user acceptance testing. It provides
  10468. 6:47:41rich and powerful tools so that everyone
  10469. 6:47:44in the team can use to drive quality and
  10470. 6:47:46collaboration throughout the development
  10471. 6:47:48process. It is easy to use and it is
  10472. 6:47:52browserbased test management solution
  10473. 6:47:55which provides all the capabilities
  10474. 6:47:57required for a planned manual testing
  10475. 6:48:00and user acceptance testing or
  10476. 6:48:02exploratory testing and for gathering
  10477. 6:48:05feedback from the stakeholders as well.
  10478. 6:48:08So now that we have come to know what is
  10479. 6:48:09Azure DevOps test plans now let's deep
  10480. 6:48:12dive into the concept and understand
  10481. 6:48:15what are these test plans basically. So
  10482. 6:48:18first let us understand what do you mean
  10483. 6:48:19by a test plan. So a test plan is
  10484. 6:48:22nothing but a container for storing test
  10485. 6:48:24suits that are nothing but a collections
  10486. 6:48:26of test cases. So these test plan
  10487. 6:48:29function by allowing you to establish a
  10488. 6:48:31container in which you can group your
  10489. 6:48:34all test suits. So as you can see in
  10490. 6:48:37this diagram this is a container which
  10491. 6:48:39comprises of number of test suits uh
  10492. 6:48:43which are grouped and then stored into
  10493. 6:48:45these test plans. So test suits are
  10494. 6:48:48nothing but the collections of test
  10495. 6:48:50cases which then form a group and then
  10496. 6:48:53they are stored inside these test plans.
  10497. 6:48:55So there are three types of test suits
  10498. 6:48:57that is static based, requirement based
  10499. 6:49:00and query based. So static based test
  10500. 6:49:03suits are type of test suits that are
  10501. 6:49:06used either as a container to group
  10502. 6:49:08other test suits or to group a specific
  10503. 6:49:11set of test cases. So in Azure DevOps
  10504. 6:49:14test plan you can have nested test
  10505. 6:49:17suits. That means a static test suit
  10506. 6:49:20itself become a form of a container
  10507. 6:49:22where we can add different test suits
  10508. 6:49:25and then we can place or as a place to
  10509. 6:49:28create and test case adog. So as I said
  10510. 6:49:31it will be in a nested loop form. So
  10511. 6:49:34most of the time you will be using a
  10512. 6:49:36static test suits as you mean by
  10513. 6:49:38grouping test suits together. Next is
  10514. 6:49:42requirement based test suits. So
  10515. 6:49:44requirement based test suits are the
  10516. 6:49:46simplest and the most traceable test
  10517. 6:49:48suits. It is basically they pull all the
  10518. 6:49:50test cases for a given requirement. This
  10519. 6:49:54means when you go to build a test suit,
  10520. 6:49:55you will not be choosing test cases.
  10521. 6:49:58Instead you will simply choose the
  10522. 6:50:00requirements. So what happens next is
  10523. 6:50:03that any test cases that have already
  10524. 6:50:06been built or connected to that
  10525. 6:50:08particular requirement will get pulled
  10526. 6:50:10in and populate your test suits. So you
  10527. 6:50:14can then run all of the tests for that
  10528. 6:50:17particular given requirement. So if you
  10529. 6:50:20use a requirement based test suits your
  10530. 6:50:23team can create a traceability matrices
  10531. 6:50:25so that you not only see how your test
  10532. 6:50:29cases align with your requirements but
  10533. 6:50:31also you can see whether a particular
  10534. 6:50:34test case has passed or failed for that
  10535. 6:50:37particular given requirement. And next
  10536. 6:50:40comes the query based. So query based
  10537. 6:50:42test suits are the type of test suits
  10538. 6:50:44which pull in a group of tests from your
  10539. 6:50:48project irrespective of what requirement
  10540. 6:50:50the test cases are linked to. So it
  10541. 6:50:53afford teams that have the ability to
  10542. 6:50:56create a test suit using any criteria
  10543. 6:50:59available. What does this mean actually
  10544. 6:51:01is that when you are creating this type
  10545. 6:51:04of test suits, it asks you how you want
  10546. 6:51:06to pull these test cases and allows you
  10547. 6:51:09to construct an ad hoc query to do so.
  10548. 6:51:12So here you are not concerned with how
  10549. 6:51:15test cases are connected to specific
  10550. 6:51:17requirements and instead it allows you
  10551. 6:51:20to pull in the test cases that match a
  10552. 6:51:23specific criteria. So when do you use
  10553. 6:51:26these query based test cases is like
  10554. 6:51:29when the team will run these tests on
  10555. 6:51:31all the test cases that are currently in
  10556. 6:51:35a given iteration or run the test on
  10557. 6:51:38everything with a given tag. So the idea
  10558. 6:51:41behind the query based test suit is that
  10559. 6:51:43you can easily include test cases from
  10560. 6:51:46your project that you would like to test
  10561. 6:51:48irrespective of the affiliation to that
  10562. 6:51:51particular requirement.
  10563. 6:51:53So as I said a test suit is nothing but
  10564. 6:51:55a collections of these test cases. So
  10565. 6:51:58what are test cases? Test cases defines
  10566. 6:52:01to test a system software or any
  10567. 6:52:04application. It can be a singular set of
  10568. 6:52:07action or the instruction for a tester
  10569. 6:52:09for a test to perform that validates a
  10570. 6:52:12specific aspect of a product or the
  10571. 6:52:15application functionality. So here in
  10572. 6:52:18this particular test suit you can have
  10573. 6:52:20any number of test cases which can be
  10574. 6:52:23then grouped based on the different
  10575. 6:52:25types of test suits that is static
  10576. 6:52:27based, requirement based and query
  10577. 6:52:28based. Now that we have come to know
  10578. 6:52:31about the test plans, test suits and the
  10579. 6:52:34test cases. Now let us look onto some of
  10580. 6:52:37the key scenarios which will help us
  10581. 6:52:40understand why do we use Azure DevOps
  10582. 6:52:42test plan. So Azure DevOps test plan
  10583. 6:52:45provides software development teams some
  10584. 6:52:48of the key benefits such as they can
  10585. 6:52:50test on any platform. So this means that
  10586. 6:52:53with test plans web portal you can use
  10587. 6:52:56any supported browser to access all
  10588. 6:52:58manual testing capabilities. It enables
  10589. 6:53:01you to create and run manual test
  10590. 6:53:03through an easy to use browserbased
  10591. 6:53:06interface that users can access from all
  10592. 6:53:09major browsers on any platform. Next is
  10593. 6:53:13it has a rich diagnostic data
  10594. 6:53:15collection. So here using the web based
  10595. 6:53:18testr runner and testrunner client you
  10596. 6:53:21can collect rich diagnostic data during
  10597. 6:53:24your manual test. This includes your
  10598. 6:53:26screenshots, image action logs, screen
  10599. 6:53:29recordings, code coverage, intrace
  10600. 6:53:32traces and test impact data for your
  10601. 6:53:35apps under the test. And this data is
  10602. 6:53:38automatically included in all the bugs
  10603. 6:53:41you create during test making it easy
  10604. 6:53:43for the developers to reproduce this
  10605. 6:53:45issue. Next is end to end tracibility.
  10606. 6:53:49So Azure DevOps provide end toend
  10607. 6:53:51traceability of your requirement builds
  10608. 6:53:54test and bugs. You can create your
  10609. 6:53:56requirement qualities from cards on the
  10610. 6:53:59canban board and the bugs created while
  10611. 6:54:02testing are automatically linked to the
  10612. 6:54:04requirement and builds being tested
  10613. 6:54:07which helps you to track the quality of
  10614. 6:54:09the requirements and the builds. Next is
  10615. 6:54:12integrated analytics. So in this the
  10616. 6:54:15analytics service provides data that
  10617. 6:54:18feeds into built-in reports,
  10618. 6:54:20configurable dashboard widgets and
  10619. 6:54:23customizable reports using PowerBI. Data
  10620. 6:54:26tracks test plan progress and trends for
  10621. 6:54:28both manual and automated tests. The
  10622. 6:54:31test analytics then provides realtime
  10623. 6:54:34visibility into test data for builds and
  10624. 6:54:37releases. So teams can act on this data
  10625. 6:54:40to improve the test collateral to help
  10626. 6:54:43maintain healthy pipelines. Lastly is
  10627. 6:54:46the extensible platform. So you can
  10628. 6:54:49combine the tools and technologies you
  10629. 6:54:51already know with the development tools
  10630. 6:54:53that work best for you to integrate with
  10631. 6:54:56and extend Azure DevOps.
  10632. 6:54:59You can use the rest APIs and
  10633. 6:55:02contribution model available for the
  10634. 6:55:04test platform to create extensions that
  10635. 6:55:07provide the experiences you need for
  10636. 6:55:09your test management life cycles.
  10637. 6:55:12So these were some of the major key
  10638. 6:55:14benefits that makes Azure DevOps useful
  10639. 6:55:18for the development teams. Now let's
  10640. 6:55:20quickly understand how does these test
  10641. 6:55:22plans work. You can work on with the
  10642. 6:55:25test plans with two ways that is manual
  10643. 6:55:27testing and automated testing. In manual
  10644. 6:55:30testing, the Azure DevOps test plan uses
  10645. 6:55:33test specific work item types to plan
  10646. 6:55:36and author these tests. In addition, it
  10647. 6:55:39provides two test tools to support
  10648. 6:55:41running the test. Test plans, parameters
  10649. 6:55:44and configuration hubs provide the tools
  10650. 6:55:46to efficiently create manage the test
  10651. 6:55:49items, their settings and as well as
  10652. 6:55:52their configuration. Now in this the
  10653. 6:55:54test suits can be dynamic requirement
  10654. 6:55:56based or query based suits to help you
  10655. 6:56:00understand the quality of associated
  10656. 6:56:02requirement under these development or
  10657. 6:56:04static to help you cover regression
  10658. 6:56:07tests. Next is automated testing. So
  10659. 6:56:10automated testing is facilitated by
  10660. 6:56:12running the tests within the Azure
  10661. 6:56:14pipelines. So here the test analytics
  10662. 6:56:17provide you realtime visibility into
  10663. 6:56:19your test data for builds and releases.
  10664. 6:56:22It helps to improve the pipeline
  10665. 6:56:24efficiency by identifying repetitive
  10666. 6:56:27high impact quality issues.
  10667. 6:56:30So these are the two types in which the
  10668. 6:56:32test plans actually work. Now that we
  10669. 6:56:35have come to know what are test plans,
  10670. 6:56:37test suits, how do they work? So now
  10671. 6:56:39let's have a quick demo on these test
  10672. 6:56:41plans.
  10673. 6:56:43Now let's quickly work on some of the
  10674. 6:56:45demos where we'll create test plans,
  10675. 6:56:48test suits and see how it works. So for
  10676. 6:56:50that first we need to log into our Azure
  10677. 6:56:53portal.
  10678. 6:56:55So let's quickly log in. So for that
  10679. 6:56:57what do we need to do? First we need to
  10680. 6:56:59login.
  10681. 6:57:04Stay signed in.
  10682. 6:57:07All right. Now that we have come to our
  10683. 6:57:09dashboards here as you can see this is
  10684. 6:57:12the whole dashboard of the Azure portal
  10685. 6:57:14where you find all the different kinds
  10686. 6:57:16of services and resource group and all
  10687. 6:57:20other subscriptions and stuffs. So we'll
  10688. 6:57:22be directly moving ahead to our Azure
  10689. 6:57:24DevOps organization. Now let's go to my
  10690. 6:57:27DevOps organization.
  10691. 6:57:30So once we come here so this is the
  10692. 6:57:33dashboard of Azure DevOps where we can
  10693. 6:57:36see projects and uh we can also create
  10694. 6:57:39new organization. So it is basically you
  10695. 6:57:42need to create a new owner where under
  10696. 6:57:45which you have a different you can
  10697. 6:57:47create different projects. So I already
  10698. 6:57:50have one of the test plans but we'll
  10699. 6:57:53create a new project. So let's create a
  10700. 6:57:57new project first and let's name it as
  10701. 6:58:01Azure
  10702. 6:58:03test
  10703. 6:58:05commands
  10704. 6:58:07demo. Now we can give a descriptions to
  10705. 6:58:10our project or else you can leave it as
  10706. 6:58:13it is and it's just a demo for us. So
  10707. 6:58:16I'll be taking the private option and
  10708. 6:58:19now we can just create. So now our Azure
  10709. 6:58:23test plan has been created. So this is
  10710. 6:58:26our project overview. So in this we can
  10711. 6:58:29add boards, repos, pipelines, test plans
  10712. 6:58:32and artifacts. So let's quickly go to
  10713. 6:58:36our test plans. Now once we come here
  10714. 6:58:39now we need to first create a test plan.
  10715. 6:58:41So as we said a test plan is a container
  10716. 6:58:44where we have group of test suits. So
  10717. 6:58:48for that we need a container. So let's
  10718. 6:58:50quickly create one new test plan. So
  10719. 6:58:53let's name it as
  10720. 6:58:56Azure test
  10721. 6:58:58plan one. Okay, that would be cool. And
  10722. 6:59:04here you can choose the area path. So as
  10723. 6:59:06our project name is Azure DevOps test
  10724. 6:59:08plan. So we'll be keeping it under that.
  10725. 6:59:10And the iterations. So here the
  10726. 6:59:13iterations are nothing but our sprint.
  10727. 6:59:16So we can take or we can keep it as it
  10728. 6:59:19is later we can just change whenever to
  10729. 6:59:23sprint one. So let's quickly create.
  10730. 6:59:28So now that we have created our test
  10731. 6:59:31plan now under this we will be creating
  10732. 6:59:34the test suit. So now here we need to
  10733. 6:59:38see here we can create a test suit over
  10734. 6:59:42here. So this is our test plan. Under
  10735. 6:59:44this we'll be creating a new suit. So as
  10736. 6:59:47we discussed before we have three types
  10737. 6:59:49of test suits that is static,
  10738. 6:59:51requirement based and query based. So
  10739. 6:59:53we'll be taking here static suit. And
  10740. 6:59:57now let's name it
  10741. 6:59:59test suit
  10742. 7:00:02one. All right. Now our test plans are
  10743. 7:00:05created and our test suit is also
  10744. 7:00:07created. So if you go to our more option
  10745. 7:00:10so you can create one more under that
  10746. 7:00:14particular test suit you can create
  10747. 7:00:16another test suits based on your
  10748. 7:00:18requirements and you can also assign
  10749. 7:00:21testers to run the tests which are under
  10750. 7:00:23these test suits. So now that we have
  10751. 7:00:26created our test suits so let's quickly
  10752. 7:00:29go to our boards under that we'll go to
  10753. 7:00:31our sprints. So in this we'll see
  10754. 7:00:34whether our test plans are available or
  10755. 7:00:37no. So as you can see here Azure test
  10756. 7:00:40plan demo that is our test plan and
  10757. 7:00:43under that we have the test suit which
  10758. 7:00:46is under sprint one but currently we
  10759. 7:00:48don't have any test cases for that we
  10760. 7:00:51need to create test cases as well. So as
  10761. 7:00:55you have created these test suit so in
  10762. 7:00:58this you can either add new test suits
  10763. 7:01:00under the test suit one or else you can
  10764. 7:01:04assign the testers to the particular
  10765. 7:01:06suit. But before that we need to create
  10766. 7:01:09new test cases.
  10767. 7:01:12So now what do we need to do is we'll
  10768. 7:01:15first edit our test plan and we'll
  10769. 7:01:17choose our iteration that is our sprint
  10770. 7:01:22one. So we'll be choosing that and we'll
  10771. 7:01:26just save and close. So once we do that
  10772. 7:01:30we'll just go to our boards. So as you
  10773. 7:01:33can see this is our test suit and this
  10774. 7:01:35is our test plan. So and it is currently
  10775. 7:01:39active. So once you go to our sprints so
  10776. 7:01:43here you can see as said in sprint one
  10777. 7:01:46we have only one sprint but we don't
  10778. 7:01:48have any test cases. So now what do we
  10779. 7:01:52need to do now? We'll go back to our
  10780. 7:01:54test plans and here as you can see we
  10781. 7:01:58can have add test cases. So let's
  10782. 7:02:02quickly new test case.
  10783. 7:02:05So here we'll render the title for our
  10784. 7:02:08test case. So let's keep it quite
  10785. 7:02:11simple. So let's create a test case like
  10786. 7:02:15change the title
  10787. 7:02:20size
  10788. 7:02:21from H2 to H3.
  10789. 7:02:26Okay. So what do we need to do is like
  10790. 7:02:29we are changing the title size from H2
  10791. 7:02:32to H3. So here we'll provide the test
  10792. 7:02:36case stage that will be in the design
  10793. 7:02:38stage. So here what do we need to do
  10794. 7:02:41here? We need to add the steps. How to
  10795. 7:02:43change the title from H2 to H3. So let's
  10796. 7:02:48quickly add some steps.
  10797. 7:02:51All right. So we'll just give couple of
  10798. 7:02:54few steps that is open.
  10799. 7:02:58HTML
  10800. 7:03:00then go to
  10801. 7:03:03class
  10802. 7:03:05is equals to hello.
  10803. 7:03:08and then we will change from H2 to H3.
  10804. 7:03:17So these are couple of steps we can add
  10805. 7:03:20and based on that you can also give your
  10806. 7:03:22expected results. Here we'll write size
  10807. 7:03:27changes
  10808. 7:03:28that means the size gets changed. We
  10809. 7:03:31need to check that. So we'll just save
  10810. 7:03:33and close.
  10811. 7:03:36Now let's create one more test case.
  10812. 7:03:40Let's try one more. So we'll just create
  10813. 7:03:44one more test case that is new test
  10814. 7:03:46case. So in this test case we'll just
  10815. 7:03:50write something different. Now we'll say
  10816. 7:03:53change the title
  10817. 7:03:57size from
  10818. 7:04:00H2 to H1.
  10819. 7:04:04And here as we said we need to give our
  10820. 7:04:07steps. So we'll just follow the same
  10821. 7:04:10steps. Open home. HTML
  10822. 7:04:15then go to class
  10823. 7:04:20equals to
  10824. 7:04:22hello and then
  10825. 7:04:26change from
  10826. 7:04:29H2 to H1.
  10827. 7:04:33So we have also created our steps and
  10828. 7:04:36this will be size change as we are just
  10829. 7:04:38changing the size. So our expected
  10830. 7:04:42result should be same. Now here you can
  10831. 7:04:45also add the status means you can give
  10832. 7:04:48it the priority to our test cases. So
  10833. 7:04:51there are different types of priority
  10834. 7:04:53based on which you can create. So let's
  10835. 7:04:56keep it two. Let's not change anything
  10836. 7:04:59and we'll just quickly save and close.
  10837. 7:05:04So we have two test cases. Now in this
  10838. 7:05:07define section we are able to see the
  10839. 7:05:09different test cases which are assigned.
  10840. 7:05:12Now we'll go to our execute
  10841. 7:05:15and here you can see that your test
  10842. 7:05:18cases are also visible.
  10843. 7:05:21So you can select one or multiple test
  10844. 7:05:25cases. So let's quickly select one and
  10845. 7:05:28just run for web application.
  10846. 7:05:32So once we run the web application. So
  10847. 7:05:35here you can see the steps are specified
  10848. 7:05:37here. So now what I will do is go to
  10849. 7:05:40these web applications and I'll check
  10850. 7:05:43whether the changes have been done or
  10851. 7:05:45no. when I open the home. HTML if it is
  10852. 7:05:49running well so I'll just check mark or
  10853. 7:05:51else if it is not then I will just fail
  10854. 7:05:54the test step and then I go to the class
  10855. 7:05:58hello so once I go there so I tick mark
  10856. 7:06:02that and I change from H2 to to H3 so
  10857. 7:06:07I'll click that so once that is done
  10858. 7:06:10whereas here you can add some more steps
  10859. 7:06:13like here you can see insert new step
  10860. 7:06:16you can just create new steps or you can
  10861. 7:06:19delete the steps if you are not
  10862. 7:06:21requiring it. So here you can just add
  10863. 7:06:24any one new. All right.
  10864. 7:06:28So here you can also take screenshots or
  10865. 7:06:30you can just select the image action and
  10866. 7:06:33also create a video. Now once you have
  10867. 7:06:36done this we'll just save and close. So
  10868. 7:06:39as you can see here our test case that
  10869. 7:06:42is changed the title size from H2 to H3.
  10870. 7:06:46So here it shows past. Now we'll also do
  10871. 7:06:49with the second one. So let's run it
  10872. 7:06:52together. Let's see what happens.
  10873. 7:06:56Okay. So here you can change your test
  10874. 7:07:01like we have our first test and you can
  10875. 7:07:03switch your test cases. So currently our
  10876. 7:07:06one test has been done. So we'll do with
  10877. 7:07:09our second test as well. So we'll just
  10878. 7:07:11pass all the tests and we'll just save
  10879. 7:07:16and close.
  10880. 7:07:18All right, it shows active state. Let's
  10881. 7:07:21see whether it has been done or no.
  10882. 7:07:25All right. Okay. So what did we do? We
  10883. 7:07:28did it for the first one as well. So
  10884. 7:07:30we'll just quickly do for this as well
  10885. 7:07:35and just save and close. So as you can
  10886. 7:07:39see our both the test cases have passed.
  10887. 7:07:43So now that our test cases are run now
  10888. 7:07:46let's go to our chart section. So here
  10889. 7:07:49you can create a new chart. So here you
  10890. 7:07:53can either create a new test case chart
  10891. 7:07:56or the test result chart. So now first
  10892. 7:08:00let's create the rest test result chart.
  10893. 7:08:02So here you have different kind of
  10894. 7:08:05charts. So let's select bar as just to
  10895. 7:08:09make it simple and we can need to group
  10896. 7:08:12by you can choose as per your
  10897. 7:08:14requirement if you have number of suits
  10898. 7:08:17you can choose that or testers so I'll
  10899. 7:08:20take it as a per as the priority so now
  10900. 7:08:25here we'll just you can change the
  10901. 7:08:28colors of your bars and you can
  10902. 7:08:30customize it on your own requirement so
  10903. 7:08:33once that is done so Now this is the
  10904. 7:08:36test case. As we said we have only one
  10905. 7:08:39test suite. So based on that our chart
  10906. 7:08:42looks like this.
  10907. 7:08:44So now that we have just run both the
  10908. 7:08:46test cases and we also see the charts as
  10909. 7:08:49well. So there were two test cases that
  10910. 7:08:51had run successfully. Now we'll just go
  10911. 7:08:54to our boards and in that we'll just
  10912. 7:08:58select any one of the test cases. Now as
  10913. 7:09:02it has been run successfully we'll just
  10914. 7:09:05change the state. You can change the
  10915. 7:09:08state by ready closed anything. So it
  10916. 7:09:12will be just we'll close this and we'll
  10917. 7:09:14save it. All right. And now let's go
  10918. 7:09:19back to the work items and let's do the
  10919. 7:09:22same as well with the second test case
  10920. 7:09:26that is the change the title from H2 to
  10921. 7:09:29H1. So let's do ready and let's save it.
  10922. 7:09:37So what do we do is now we'll just go
  10923. 7:09:40back to our test plans and create a new
  10924. 7:09:43chart and see how our test case looks.
  10925. 7:09:47So let's check based on the states. So
  10926. 7:09:51here you can see one is in the ready
  10927. 7:09:53state and one is in the closed state. So
  10928. 7:09:56we had changed the state of one test
  10929. 7:09:58case as closed means the test has been
  10930. 7:10:01done and one as it is ready. As said you
  10931. 7:10:05can also change the colors based on your
  10932. 7:10:08choice. You can give any colors to your
  10933. 7:10:12charts and you can show to the people.
  10934. 7:10:16So in this test suits let's create a new
  10935. 7:10:19test case chart. So in this let's take a
  10936. 7:10:22pie chart itself and let's group it by
  10937. 7:10:25the states. So as we change the state of
  10938. 7:10:28each of the test cases based on that
  10939. 7:10:31we'll be seeing. So as you see one test
  10940. 7:10:33case was closed and I had changed one of
  10941. 7:10:36the test case to be ready. So we can see
  10942. 7:10:39the differentiation based on it. So
  10943. 7:10:42it'll be helpful for the team also to
  10944. 7:10:44understand that how many test cases are
  10945. 7:10:47closed under which states. So this is
  10946. 7:10:50for you can create. So this was under
  10947. 7:10:53the test suit one. Whereas you can also
  10948. 7:10:56do it for your test plans as well. So as
  10949. 7:10:59you can see here it is like you can
  10950. 7:11:01create new test cases over here and
  10951. 7:11:04based on that you can create a chart.
  10952. 7:11:06Now let's create one more suite and
  10953. 7:11:09let's see how does that chart look. So
  10954. 7:11:12let's create a test suit that is test
  10955. 7:11:16suit 2. And in this also we'll have a
  10956. 7:11:21test case. Let's create a new test case
  10957. 7:11:25like hello world. And we'll give couple
  10958. 7:11:29of steps. Open
  10959. 7:11:32hello world dot html.
  10960. 7:11:37go to class
  10961. 7:11:40and then print is equal to hello world.
  10962. 7:11:48All right. Now we'll just save and
  10963. 7:11:50close.
  10964. 7:11:52So this is our test case. So now we'll
  10965. 7:11:54not run this test case now. We'll just
  10966. 7:11:57create a chart and see how does it look
  10967. 7:11:59like. So we'll just go to our test plan
  10968. 7:12:02itself. So under this test plan we will
  10969. 7:12:05create a new test case. Okay. So here
  10970. 7:12:08you can see it automatically gets
  10971. 7:12:10changed. You don't have to like create a
  10972. 7:12:12new chart over there. It automatically
  10973. 7:12:15gets changed and you can see one is in
  10974. 7:12:17the design stage, one is in the ready
  10975. 7:12:19stage and close stage. Whereas you can
  10976. 7:12:21also edit it while if you want to change
  10977. 7:12:24the constraints based on like state or
  10978. 7:12:28anything. So you can change it
  10979. 7:12:30accordingly. So I'll just keep it as it
  10980. 7:12:33is. So this is how you do the manual
  10981. 7:12:36testing in DevOps test plan. Whereas I
  10982. 7:12:40said you can also do the automated
  10983. 7:12:41testing by building pipelines and with
  10984. 7:12:44those pipelines you need to connect it
  10985. 7:12:46with your test suits and through that
  10986. 7:12:48you can just automate all your test
  10987. 7:12:50plans.
  10988. 7:12:57What are Azure artifacts? So according
  10989. 7:13:00to the definition, Azure Artifacts is a
  10990. 7:13:04package management system integrated
  10991. 7:13:06with Azure DevOps that allows you to
  10992. 7:13:08develop and share packages like Maven,
  10993. 7:13:12npm and nugget etc. via public and
  10994. 7:13:15private feeds to any size business. So
  10995. 7:13:19basically Azure artifacts is kind of an
  10996. 7:13:22extension that makes it easy to
  10997. 7:13:24discover, install and publish packages
  10998. 7:13:27in Azure DevOps. It's deeply integrated
  10999. 7:13:30with other hubs like build so that
  11000. 7:13:33package management can become a seamless
  11001. 7:13:36part of your existing workflow. It
  11002. 7:13:39enables developers to share their code
  11003. 7:13:41efficiently and manage all their
  11004. 7:13:43packages from one place. Using Azure
  11005. 7:13:47DevOps artifacts, developers can publish
  11006. 7:13:50packages to their feeds and share it
  11007. 7:13:52within the same team, access
  11008. 7:13:55organizations and even publicly. So this
  11009. 7:13:58was all about what are Azure artifacts.
  11010. 7:14:02Let's quickly move on to the next that
  11011. 7:14:05is why Azure DevOps artifacts. So there
  11012. 7:14:08are three main features in Azure DevOps
  11013. 7:14:10artifact which makes it more special and
  11014. 7:14:14demanding. So let's quickly have a look
  11015. 7:14:16what are those three. So first is you
  11016. 7:14:19can keep your artifacts organized. So
  11017. 7:14:22what does it mean that you can share
  11018. 7:14:24code effortlessly by storing any
  11019. 7:14:27packages irrespective of whatever
  11020. 7:14:29programming language you are using like
  11021. 7:14:32Maven, npm, nugget and python etc. You
  11022. 7:14:36can just feed them all together in the
  11023. 7:14:39artifacts and keep it organized. Second
  11024. 7:14:42is protect your packages. So here it
  11025. 7:14:45means that you can keep every public
  11026. 7:14:47source package that you use including
  11027. 7:14:50packages from npmjs and nugget.org
  11028. 7:14:54safe in your feed where only you can
  11029. 7:14:57delete it and it is backed by the
  11030. 7:14:59enterprise grade Azure SLAs. So that
  11031. 7:15:02means that all your packages are safe
  11032. 7:15:05and secure. Third is integrated package
  11033. 7:15:09handling into your CI/CD pipeline. So
  11034. 7:15:12what does it mean that you can access
  11035. 7:15:14all your artifacts in builds and
  11036. 7:15:16releases in which artifact integrates
  11037. 7:15:19natively with the Azure pipeline or
  11038. 7:15:21CI/CD tool. So these were the three
  11039. 7:15:24benefits or we can say features that
  11040. 7:15:26makes Azure DevOps artifacts more
  11041. 7:15:28demanding and mostly helpful to users
  11042. 7:15:31basically like developers. So let's
  11043. 7:15:34quickly move on ahead. So next is Azure
  11044. 7:15:38Artifacts workflow. So let's see how
  11045. 7:15:41Azure artifact work. So it is a
  11046. 7:15:43three-step process in which makes it
  11047. 7:15:45easy to work. So like uh we can see the
  11048. 7:15:48first step is to create a package. So
  11049. 7:15:50basically what is it? A package feed is
  11050. 7:15:52a location you use to host packages you
  11051. 7:15:56want to deploy to the deployment
  11052. 7:15:58manager. So when you set up a deployment
  11053. 7:16:01manager, you need to choose a feed you
  11054. 7:16:03want to use to host your package. So
  11055. 7:16:07here what do you do? First you create a
  11056. 7:16:09package feed or a team feed. So once you
  11057. 7:16:12create a team feed then we move on to
  11058. 7:16:14the next step that is build integration.
  11059. 7:16:17So basically what do we do here is like
  11060. 7:16:19we connect to the feed in the Azure
  11061. 7:16:21DevOps and then we start building
  11062. 7:16:24integration. The main purpose of build
  11063. 7:16:26integration is to define the order in
  11064. 7:16:29which the components and subsystem
  11065. 7:16:31should be implemented which builds to
  11066. 7:16:33create when integrating the system and
  11067. 7:16:36how they are to be assessed. After this
  11068. 7:16:39we move on to the third step that is
  11069. 7:16:41consume from feed. So here what do we do
  11070. 7:16:44is that we pack and push packages to
  11071. 7:16:47your feed and then we consume feed by
  11072. 7:16:49running build and restoring packages
  11073. 7:16:51from team and setting up new solution
  11074. 7:16:54locally to consume the feed. So these
  11075. 7:16:56were the three easy steps or we can say
  11076. 7:16:59the whole workflow of Azure DevOps
  11077. 7:17:01artifact. So with no wait let's quickly
  11078. 7:17:04move on to our demo where we'll see how
  11079. 7:17:07do we work with the artifacts. So first
  11080. 7:17:10we need to open our terminal. Let's open
  11081. 7:17:12our terminal. And now what we'll do is
  11082. 7:17:16we'll create a folder where we'll be
  11083. 7:17:18storing our both the projects. So let's
  11084. 7:17:21quickly create the folder.
  11085. 7:17:26So here you can see our DevOps folder
  11086. 7:17:28has been created. Now let's just confirm
  11087. 7:17:31whether it has been created or no.
  11088. 7:17:33Documents. All right. So here you can
  11089. 7:17:36see this is our DevOps folder. So now
  11090. 7:17:38here we'll be adding our both the
  11091. 7:17:40projects whatever we'll be building. So
  11092. 7:17:42let's quickly build our projects. Let's
  11093. 7:17:45move to our visual studio.
  11094. 7:17:48Okay. So here we'll be creating our
  11095. 7:17:50project. So as I said I'll be using the
  11096. 7:17:53Java project. So let's quickly make it
  11097. 7:17:56control shiftp.
  11098. 7:17:58And this is the option create Java
  11099. 7:18:00project. So I'll just click on this. And
  11100. 7:18:03I'll be taking Maven. You can take any
  11101. 7:18:05other tools like gradal, spring boot,
  11102. 7:18:08caucus, microprofile, any of your
  11103. 7:18:10choice. For me, I'll be choosing Maven
  11104. 7:18:13and then Maven arch tag quick start. And
  11105. 7:18:17our version would be 1.4. And now here
  11106. 7:18:20we need to give a name to our group ID.
  11107. 7:18:23So let's keep it Azure
  11108. 7:18:27packs. All right. And now they ask for
  11109. 7:18:30the artifact ID. So we'll keep it very
  11110. 7:18:33simple. project one and here we need to
  11111. 7:18:36select the folder. So we'll be selecting
  11112. 7:18:38the DevOps folder which we had created.
  11113. 7:18:41So this would be our destination folder.
  11114. 7:18:43So here you can see it is executed.
  11115. 7:18:47All right. So here you can see your
  11116. 7:18:49group ID, artifact ID and the version.
  11117. 7:18:52So our version would be 1.0 snapshot. So
  11118. 7:18:56just copy this and paste it over here.
  11119. 7:18:59Hit enter. and they ask for the
  11120. 7:19:01confirmation of your properties. So our
  11121. 7:19:04group ID is Azure artifacts artifact ID
  11122. 7:19:07project 1 version 1.0 snapshot package.
  11123. 7:19:11Uh so here we must update the package
  11124. 7:19:14name. It should be similar to the
  11125. 7:19:16artifact ID. So let's just update it.
  11126. 7:19:19Snapshot our version is 1.0 snapshot and
  11127. 7:19:24package we'll name it as our artifact
  11128. 7:19:27ID. So project
  11129. 7:19:30one. Yes. And here you can see our
  11130. 7:19:34project one has been created
  11131. 7:19:35successfully. And here you get the
  11132. 7:19:38message. And we'll just open this. All
  11133. 7:19:40right. So here as you can see this is
  11134. 7:19:43project one. And you do have your source
  11135. 7:19:46files and pom.xml.
  11136. 7:19:48So this is the where you find all your
  11137. 7:19:52dependencies. So let's quickly build our
  11138. 7:19:55project two. We'll follow the same
  11139. 7:19:57process. Control shift P Java project
  11140. 7:20:01Maven type 1.4 and our group ID would be
  11141. 7:20:06same. So Azure
  11142. 7:20:09artifacts
  11143. 7:20:10and this will name it as project two.
  11144. 7:20:14Now we select the folder destination
  11145. 7:20:17folder. All right. So here we see our
  11146. 7:20:20group ID artifact ID project 2. Let's
  11147. 7:20:24keep the version same. We'll just copy
  11148. 7:20:27this. And we need to update our package.
  11149. 7:20:32So let's update it. Project two. Yes.
  11150. 7:20:37All right. So our project 2 has also
  11151. 7:20:39been successfully built. Here you get
  11152. 7:20:41the message. We'll just open this as
  11153. 7:20:44well. So here also you can see your
  11154. 7:20:46source file and your pom.xml file has
  11155. 7:20:50been created. So now both the projects
  11156. 7:20:53are created. Now what do we need to do
  11157. 7:20:55is to create the dependencies. So let's
  11158. 7:20:58create the dependencies. For this we'll
  11159. 7:21:02just maximize this. In project two we'll
  11160. 7:21:05come to this dependencies section and
  11161. 7:21:08we'll copy this dependency code. Copy
  11162. 7:21:12and just paste it below. And now what do
  11163. 7:21:15we do here is as we need to relate the
  11164. 7:21:18dependencies. So we'll change the group
  11165. 7:21:21ID, artifact ID and your versions. So
  11166. 7:21:25what would be our group ID is Azure
  11167. 7:21:28artifacts which we had created. So let's
  11168. 7:21:30just copy and paste and our artifact ID
  11169. 7:21:35is project one as we are making project
  11170. 7:21:39one dependent on project two. So let's
  11171. 7:21:42write it project
  11172. 7:21:46one. All right. Our version would be 1.0
  11173. 7:21:49snapshot code and our scope would be
  11174. 7:21:53system.
  11175. 7:21:57Now below this we need to give the
  11176. 7:21:59system path. So let's quickly give the
  11177. 7:22:03system path.
  11178. 7:22:07Okay. So our system path would be dollar
  11179. 7:22:12base star
  11180. 7:22:16like
  11181. 7:22:18shift
  11182. 7:22:201 Python 1. So here we get the option
  11183. 7:22:241.2 snapshot jar. So we'll quickly save
  11184. 7:22:29this and we'll open our terminal. So
  11185. 7:22:33let's open our terminal. So now to build
  11186. 7:22:36this Java file, we need to go to project
  11187. 7:22:40one. So let's go to project one. CV
  11188. 7:22:43project one. All right. So here what do
  11189. 7:22:47we do? We'll just hit the command maven
  11190. 7:22:51compile.
  11191. 7:22:55All right. So here it shows it has been
  11192. 7:22:58built successfully. After this we'll
  11193. 7:23:00just hit the command maven package.
  11194. 7:23:08All right. So your maven package command
  11195. 7:23:10has also been run successfully. Let's
  11196. 7:23:13quickly cross check it once. Let's go to
  11197. 7:23:15project one. Now here we see the tab
  11198. 7:23:18gate folder. So let's quickly check. So
  11199. 7:23:21here here you can see your project 1.0
  11200. 7:23:25snapshot.jar file has been created. Now
  11201. 7:23:29what do we need to do is we need to copy
  11202. 7:23:32this jar file and paste it in project 2.
  11203. 7:23:36So for this let's create a folder in
  11204. 7:23:38project 2.
  11205. 7:23:41Let's name it live and we'll copy this
  11206. 7:23:45jar file and paste it in.
  11207. 7:23:52Okay. Now what do we do? We'll run the
  11208. 7:23:54same commands that is maven compile and
  11209. 7:23:57maven package in project 2 as well. So
  11210. 7:24:01let's quickly go to project two.
  11211. 7:24:05Maven
  11212. 7:24:08compile.
  11213. 7:24:12All right. So here you can see it has
  11214. 7:24:13been built successfully. Let's run
  11215. 7:24:15another command that is maven package.
  11216. 7:24:22All right. So here you can see maven
  11217. 7:24:25package has also run successfully. So
  11218. 7:24:27this is how you create the dependencies
  11219. 7:24:29between the two projects. Now let's
  11220. 7:24:32quickly move on to our Azure
  11221. 7:24:36So we'll go to our Azure DevOps. Okay.
  11222. 7:24:40So here first we'll be creating a
  11223. 7:24:43project. Let's create a new project and
  11224. 7:24:46let's name it Azure DevOps
  11225. 7:24:50RT
  11226. 7:24:54and we'll make it private like you can
  11227. 7:24:57choose any one of the like you can
  11228. 7:24:59choose the visibility of your own
  11229. 7:25:01choice. So, but I will prefer private
  11230. 7:25:03and we'll create it. So, this is our new
  11231. 7:25:06project. Here you can see there are
  11232. 7:25:09different options like boards, ripples,
  11233. 7:25:11pipelines, test plans, artifacts. So,
  11234. 7:25:15first we'll go to reposs and here we'll
  11235. 7:25:19be uh like uploading our project
  11236. 7:25:21whatever we have created right now. For
  11237. 7:25:23this now what do we need to do? The
  11238. 7:25:26first step is like so let's go to our
  11239. 7:25:29project. Now we have created the
  11240. 7:25:31dependencies like we have created our
  11241. 7:25:33java files and our both the projects are
  11242. 7:25:36dependent on each other like so it is
  11243. 7:25:39basically typically for like one
  11244. 7:25:41developer environment but uh let us
  11245. 7:25:44assume like if you have two different
  11246. 7:25:46teams and then what you need to do that
  11247. 7:25:49you need to always come over here and
  11248. 7:25:51open the jar file and just uh update the
  11249. 7:25:54versions of the jar file every time. So
  11250. 7:25:57what do you need is to have a central
  11251. 7:25:59location where you have all these files
  11252. 7:26:02and then every time whenever you compile
  11253. 7:26:04these projects then it is going to go
  11254. 7:26:07ahead and the latest file and then it is
  11255. 7:26:10basically that you don't need any more
  11256. 7:26:12like you won't have to just come over
  11257. 7:26:14here and keep on updating your versions.
  11258. 7:26:17So it would be automatically done. So
  11259. 7:26:19for that what we'll do like uh we'll
  11260. 7:26:22just uh delete this jar files from here
  11261. 7:26:25so that only the code is like
  11262. 7:26:28transferred to our reports. So let's go
  11263. 7:26:32to our files
  11264. 7:26:34and go to project one and in target
  11265. 7:26:38there is our jar file. So we'll just
  11266. 7:26:40delete this jar file.
  11267. 7:26:48Same would be done in project two
  11268. 7:26:51project and we'll just delete this
  11269. 7:26:54folder.
  11270. 7:26:57All right. So now that is done. So let's
  11271. 7:27:01move on to our terminal. Now we need to
  11272. 7:27:04like move to our destination folder
  11273. 7:27:06where we have posted where we have built
  11274. 7:27:09our both the projects. So I've come here
  11275. 7:27:11to this devops folder. Now what we need
  11276. 7:27:14to do is we need to send these projects
  11277. 7:27:18these two projects into our g
  11278. 7:27:20repository. For that we'll get
  11279. 7:27:25in it
  11280. 7:27:27and then get add
  11281. 7:27:33and then get
  11282. 7:27:37comment
  11283. 7:27:44enter. So here you can see our both the
  11284. 7:27:48files have been gone into the
  11285. 7:27:50repository. Now what do we need to do is
  11286. 7:27:53we will go to our repository and we'll
  11287. 7:27:57just copy this get remote add origin. So
  11288. 7:28:01what do we need to do is we'll just copy
  11289. 7:28:03this link. Copy and get remote add
  11290. 7:28:08origin.
  11291. 7:28:11Get
  11292. 7:28:22And now we'll use the get push command.
  11293. 7:28:25So let's use it. Get
  11294. 7:28:29push
  11295. 7:28:32typing you.
  11296. 7:28:40All right. So our files are uploaded.
  11297. 7:28:43Now just let's refresh this repository.
  11298. 7:28:49Let's go repose.
  11299. 7:28:52Okay. So here you can see our both the
  11300. 7:28:55projects are uploaded over here. So it
  11301. 7:28:58has it is quite clean. We just have our
  11302. 7:29:00pomx.xml
  11303. 7:29:02and our source folder. We don't have our
  11304. 7:29:06java files or anything as such. Now
  11305. 7:29:09after this let's move on to our
  11306. 7:29:12artifacts. So here first is we need to
  11307. 7:29:17create a feed. So let's create a feed.
  11308. 7:29:21Let's name it project
  11309. 7:29:26aure
  11310. 7:29:29app. And here we can give the visibility
  11311. 7:29:32it's upon you like whatever choice you
  11312. 7:29:35need to give. So you can give the
  11313. 7:29:37visibility like only accessible to the
  11314. 7:29:39members of the organization or to the
  11315. 7:29:42specific people. So I'll select the
  11316. 7:29:44second option and and upstreaming
  11317. 7:29:47sources. So here we like from the public
  11318. 7:29:50sources where you include the packages
  11319. 7:29:52like no matter whatever languages you
  11320. 7:29:54are using and our scope would be
  11321. 7:29:57project. It can be either project or
  11322. 7:29:59organization. So for me I'll be
  11323. 7:30:01selecting the project and I'll just
  11324. 7:30:04create it. So yes as you can see here
  11325. 7:30:06our feed has been created. Now next what
  11326. 7:30:09do we need to do is connect to feed. So
  11327. 7:30:14here you can see all different languages
  11328. 7:30:18uh the packages which you need to like
  11329. 7:30:21connect and you need to feed onto the
  11330. 7:30:23artifacts. So here there are different
  11331. 7:30:26languages like net nugget visual studio
  11332. 7:30:29npm gradel python web. So you can choose
  11333. 7:30:33any one of your choice. For me, I'll be
  11334. 7:30:36choosing Maven as we have worked on
  11335. 7:30:39Maven. So let's uh what do we need to do
  11336. 7:30:43is here let's copy this repository and
  11337. 7:30:47we need to paste it onto our project
  11338. 7:30:49files. So let's go to project two and
  11339. 7:30:53let's search for our repository section.
  11340. 7:30:56So do we have any repositories?
  11341. 7:31:00So no, we don't have repository. We need
  11342. 7:31:02to create a new repository. So let's
  11343. 7:31:04create a repository just below our
  11344. 7:31:06dependencies.
  11345. 7:31:09So
  11346. 7:31:11repos
  11347. 7:31:21let's close it.
  11348. 7:31:23All right. Now what do we do? We will
  11349. 7:31:26just paste the code over here and just
  11350. 7:31:29save it. Now we can also copy this whole
  11351. 7:31:32code and paste it on project one as
  11352. 7:31:36well. So this is our project one. Let's
  11353. 7:31:40go and do the same thing under
  11354. 7:31:43repository. Sorry, under the
  11355. 7:31:45dependencies we place this repository
  11356. 7:31:50and save it. All right. So now you can
  11357. 7:31:54see this URL. So this URL is need some
  11358. 7:31:57authentication as this is private. So
  11359. 7:32:00how do we give the authentication? So
  11360. 7:32:02let's move on to our Azure DevOps. Here
  11361. 7:32:06we'll go to personal access key tokens
  11362. 7:32:09and here we'll be creating a new token.
  11363. 7:32:12So let's create a new token over here.
  11364. 7:32:14You can give any name to your token.
  11365. 7:32:17Let's keep it project
  11366. 7:32:21azure.app
  11367. 7:32:23app dot artifacts
  11368. 7:32:26artifact. All right. And let's give the
  11369. 7:32:31authentication. We'll give the packaging
  11370. 7:32:34read, write and manage. Once that is
  11371. 7:32:37done, let's create.
  11372. 7:32:40So as you can see your token is created
  11373. 7:32:42over here. And this is your password.
  11374. 7:32:45All right. So just copy this password.
  11375. 7:32:48Now where do we put this keyword so that
  11376. 7:32:50we can authenticate? So there is a
  11377. 7:32:53folder maven folder that is m2.m2.
  11378. 7:32:58So we'll go to that m2 and here you can
  11379. 7:33:01see the repository folder and there's a
  11380. 7:33:04settings.
  11381. 7:33:05So we'll go to the settings.xml file and
  11382. 7:33:09here you can see this is the code where
  11383. 7:33:12you can give the authentication to your
  11384. 7:33:14maven project. So here this is the code
  11385. 7:33:18server. Under this you have your project
  11386. 7:33:20ID project azure.app and your username
  11387. 7:33:24is your organization's name. Now let's
  11388. 7:33:27paste the password which we had copied.
  11389. 7:33:30So let's paste it over here and let's
  11390. 7:33:33save it. So now let's go to our Azure
  11391. 7:33:37DevOps and we'll go to the artifacts
  11392. 7:33:42connect to feed Maven and so here you
  11393. 7:33:46can see your the settings.xml file your
  11394. 7:33:51username is there and your personal
  11395. 7:33:53access token which we created previously
  11396. 7:33:56have been initiated. Now what do we need
  11397. 7:33:59to do is copy this repository as it has
  11398. 7:34:03been updated. Let's copy this and paste
  11399. 7:34:06it again to our both the projects. So
  11400. 7:34:10we'll just copy this repository. Paste
  11401. 7:34:14it over here and save it. Let's do the
  11402. 7:34:19same with our project one. So this is
  11403. 7:34:22our project one. All right. So we'll
  11404. 7:34:25save this as well.
  11405. 7:34:28Now what do we need to do is we need to
  11406. 7:34:30also have this distribution management
  11407. 7:34:33code. So let's find out if we have this
  11408. 7:34:36section. So we don't have it. Let's
  11409. 7:34:39paste it again to just below the
  11410. 7:34:41repositories.
  11411. 7:34:43Just close this.
  11412. 7:34:48Copy paste.
  11413. 7:34:52Now what do we need to do is copy the
  11414. 7:34:55same repository code and paste it just
  11415. 7:35:00inside this distribution management and
  11416. 7:35:03save it. All right. Now we'll just do
  11417. 7:35:06the same thing with this is for the
  11418. 7:35:08project one. We'll do it for project two
  11419. 7:35:10as well. Let's copy project two and
  11420. 7:35:15paste. All right. So we'll save it. So
  11421. 7:35:19now let's move on to the terminal of
  11422. 7:35:21project one and
  11423. 7:35:26deploy.
  11424. 7:35:33All right. So here you can see it has
  11425. 7:35:35been successfully built. Now let's just
  11426. 7:35:38check whether it has come or no. Let's
  11427. 7:35:42go back and
  11428. 7:35:45refresh this.
  11429. 7:35:48So here you can see your uh project one
  11430. 7:35:50artifact have been created. Just click
  11431. 7:35:53on this and here you see all your
  11432. 7:35:58details or your files
  11433. 7:36:00are already existent. Now what do we
  11434. 7:36:03need to do is just copy this dependency
  11435. 7:36:06and we'll paste it in our project. So
  11436. 7:36:10we'll just select this and paste it and
  11437. 7:36:15save. And let's
  11438. 7:36:19v
  11439. 7:36:20deploy
  11440. 7:36:26event this has been built successfully.
  11441. 7:36:29Let's check refresh.
  11442. 7:36:32So here you can see our both the
  11443. 7:36:34projects have been uploaded. And this is
  11444. 7:36:37how you push your packages into your
  11445. 7:36:39artifacts. I hope you all understood how
  11446. 7:36:43actually the Azure DevOps artifact
  11447. 7:36:45works. How do we push packages into our
  11448. 7:36:47artifacts?
  11449. 7:36:55So, first and foremost, let's try and
  11450. 7:36:56understand what Azure Kubernetes Service
  11451. 7:36:59is. Now, I'm not going to get into the
  11452. 7:37:01details of this service right away, but
  11453. 7:37:03just to give you an introduction, Azour
  11454. 7:37:05Kubernetes Service is a fully managed
  11455. 7:37:08container management service. It is
  11456. 7:37:10provided by Microsoft Azure obviously
  11457. 7:37:12which is a very popular cloud service
  11458. 7:37:14provider and recent stats also state
  11459. 7:37:16that it is one of the leading public
  11460. 7:37:18cloud service providers in the market.
  11461. 7:37:20So when you talk about Azure Kubernetes
  11462. 7:37:22it is basically managed by Microsoft
  11463. 7:37:24Azure what it does is it offers
  11464. 7:37:27serverless continuous integration and
  11465. 7:37:29deployment experience. Now what does
  11466. 7:37:32that mean? What we can do with it? We'll
  11467. 7:37:34discuss all those things as we get into
  11468. 7:37:36the details of Azure Kubernetes service.
  11469. 7:37:39For now, we need to understand quite a
  11470. 7:37:41few other concepts before we get to that
  11471. 7:37:42point. But to summarize few of its
  11472. 7:37:44benefits, what Azure Kubernetes service
  11473. 7:37:47does is what it offers is end to end
  11474. 7:37:50deployment, scalability and
  11475. 7:37:52availability. Now, how do these things
  11476. 7:37:54work? We'll discuss that. But before
  11477. 7:37:56that, let's try and understand what
  11478. 7:37:58evolution of software development and
  11479. 7:38:00deployment is and how it has evolved
  11480. 7:38:02with time, right? So, we all know how
  11481. 7:38:05applications were built and how they've
  11482. 7:38:07progressed with time, right? So if you
  11483. 7:38:09talk about the popular ways in which
  11484. 7:38:11software development and deployment has
  11485. 7:38:13evolved, we all think of waterfall
  11486. 7:38:15model, agile model and devops which is
  11487. 7:38:18the current way in which we basically go
  11488. 7:38:21ahead and deploy applications right or
  11489. 7:38:24basically not only develop but also
  11490. 7:38:26maintain monitor and deploy applications
  11491. 7:38:29right so let's try and understand all of
  11492. 7:38:31these one by one let's see how they
  11493. 7:38:33evolve with time so when you talk about
  11494. 7:38:36waterfall model agile model or devops
  11495. 7:38:39They all have these three things which
  11496. 7:38:41basically sets them apart right the
  11497. 7:38:43application architecture beat it their
  11498. 7:38:46deployment or packaging and finally the
  11499. 7:38:49application infrastructure that we can
  11500. 7:38:51think of. Now when you talk about the
  11501. 7:38:53application architecture the first one
  11502. 7:38:55that is your waterfall model is known
  11503. 7:38:57for its monolithic architectures right
  11504. 7:38:59something that we came away from. If you
  11505. 7:39:01talk about current generation we are
  11506. 7:39:03more into the microservices model that
  11507. 7:39:06is handled by a devops right. So when
  11508. 7:39:08you talk about waterfall we had
  11509. 7:39:10monolithic applications that means
  11510. 7:39:12everything was inside a single
  11511. 7:39:14application your servers right your
  11512. 7:39:17applications be it your management tools
  11513. 7:39:19and stuff like that everything was
  11514. 7:39:21inside a single application and these
  11515. 7:39:23kind of architectures were called as
  11516. 7:39:25monolithic architectures. Now with time
  11517. 7:39:28we had agile model where we had
  11518. 7:39:31multi-ter applications where some of
  11519. 7:39:33your applications or some of the
  11520. 7:39:35functionalities of your applications
  11521. 7:39:37were handed over to some other domain or
  11522. 7:39:39to some other tier right and hence we
  11523. 7:39:41had multiple tiers say for example you
  11524. 7:39:43would have your application tier in one
  11525. 7:39:45place and you'd have your basically your
  11526. 7:39:47database tier in other place right
  11527. 7:39:49something like that and when you talk
  11528. 7:39:51about devops they took this
  11529. 7:39:53functionality to a further classified I
  11530. 7:39:56would say architecture where we had
  11531. 7:39:58microservices or granular parts of your
  11532. 7:40:02application that could function
  11533. 7:40:04independently. Now why do we need these
  11534. 7:40:07kind of changes right? Why did we not
  11535. 7:40:10offer monolithic applications? Now when
  11536. 7:40:12you talk about monolithical applications
  11537. 7:40:14these were bulky and these were very
  11538. 7:40:16rigid not easy to basically go ahead and
  11539. 7:40:18modify. If you had to you had to change
  11540. 7:40:20the entire thing when you talk about
  11541. 7:40:22agile it gave you more flexibility. How
  11542. 7:40:24we had multi- tiers right? So if one of
  11543. 7:40:27the tiers is not functioning right. So
  11544. 7:40:30we could actually go ahead and work on
  11545. 7:40:31that tier and it would not affect the
  11546. 7:40:34remaining functionality. But when you
  11547. 7:40:36talk about DevOps or when you talk about
  11548. 7:40:38microservices in particular, it
  11549. 7:40:40basically breaks down your application
  11550. 7:40:42into granular chunks where each of these
  11551. 7:40:45applications performs as a whole. But
  11552. 7:40:48you can think of them as an individual
  11553. 7:40:50part which you can basically go ahead
  11554. 7:40:53and function or operate on individually
  11555. 7:40:55and also ensure that you can basically
  11556. 7:40:58make changes to these individual parts
  11557. 7:41:00individually without affecting the
  11558. 7:41:02functioning of the entire application.
  11559. 7:41:05Now when we talk about deployment and
  11560. 7:41:07packaging we have different ways in
  11561. 7:41:10which these applications are hosted
  11562. 7:41:11right or in which these different ways
  11563. 7:41:14of software development and deployment
  11564. 7:41:16work right. So when you talk about
  11565. 7:41:18deployment packaging your waterfall
  11566. 7:41:20model supported or supports your
  11567. 7:41:23physical servers right you have a
  11568. 7:41:24physical server. Similarly when you talk
  11569. 7:41:27about your devops or rather we have
  11570. 7:41:30agile first. So when you talk about
  11571. 7:41:31agile you had your virtual servers. Now
  11572. 7:41:34if you talk about cloud computing yes to
  11573. 7:41:37some extent it supports virtualization
  11574. 7:41:40but back in those days virtual servers
  11575. 7:41:42were a little different. So if you talk
  11576. 7:41:43about agile model it basically lies on a
  11577. 7:41:47deployment model which is based on
  11578. 7:41:48virtual servers. When you talk about
  11579. 7:41:50microservices on the other hand they are
  11580. 7:41:52more based on containers kind of an
  11581. 7:41:55deployment is what I would say.
  11582. 7:41:57Similarly if you go ahead and discuss
  11583. 7:41:58their application infrastructure. Now
  11584. 7:42:00for your waterfall models we had data
  11585. 7:42:03centers that basically had all these
  11586. 7:42:05applications being hosted right your
  11587. 7:42:07monolithic applications. Similarly, when
  11588. 7:42:09you talk about agile, we mostly move to
  11589. 7:42:12the hosted platforms, right? And when
  11590. 7:42:14you talk about current microservices or
  11591. 7:42:17your container infrastructure, we talk
  11592. 7:42:19about cloud hosting. And that is why
  11593. 7:42:22we've come up with this session where
  11594. 7:42:24we'd be understanding how containers
  11595. 7:42:26work on top of cloud. That is your
  11596. 7:42:28Kubernetes orchestration tool in this
  11597. 7:42:31case would be working on our Microsoft
  11598. 7:42:33Azure cloud platform. So I believe the
  11599. 7:42:36evolution of development and deployment
  11600. 7:42:39is clear to you all. Let us now go ahead
  11601. 7:42:41and understand or discuss some of the
  11602. 7:42:43other bits that are there on update. Now
  11603. 7:42:46before we actually go ahead and
  11604. 7:42:47understand how Kubernetes works, right?
  11605. 7:42:50And why are we talking about containers
  11606. 7:42:52and stuff, we need to understand how
  11607. 7:42:54containers are different from virtual
  11608. 7:42:56machines. Because virtual machines are
  11609. 7:42:58something that people have been using
  11610. 7:43:00and many of them have migrated to
  11611. 7:43:02containers. Why? because both of them
  11612. 7:43:04they have their benefits and reasons for
  11613. 7:43:07these benefits. So let us try and
  11614. 7:43:09understand how a container is different
  11615. 7:43:10from a virtual machine more than a
  11616. 7:43:13comparison. It is just understanding how
  11617. 7:43:15they're different from each other. Now
  11618. 7:43:17this image should give you an
  11619. 7:43:18understanding as to how these two things
  11620. 7:43:21are different. The one on the left hand
  11621. 7:43:22side you have your container and on the
  11622. 7:43:24right hand side you have your virtual
  11623. 7:43:26machine. Now when you talk about virtual
  11624. 7:43:28machine what a virtual machine does is
  11625. 7:43:31on top of your server it lets you host
  11626. 7:43:33your guest operating systems to give you
  11627. 7:43:36an example when you talk about a service
  11628. 7:43:38right or if you talk about a cloud
  11629. 7:43:40platform like Microsoft Azure where you
  11630. 7:43:42have Azure virtual machines which again
  11631. 7:43:45lets you spawn instances or virtual
  11632. 7:43:47machines. Now these virtual machines or
  11633. 7:43:49instances can have different guest oss.
  11634. 7:43:52Say for example, if you launch a virtual
  11635. 7:43:54machine that basically has a guest OS of
  11636. 7:43:56Linux and there's another virtual
  11637. 7:43:58machine that has a guest OS of your
  11638. 7:44:02Windows, right? So we are talking about
  11639. 7:44:04two different virtual machines or
  11640. 7:44:06entities which function on the same
  11641. 7:44:09server but they have different operating
  11642. 7:44:12systems. That means if I want an
  11643. 7:44:15application to run in Windows, I can do
  11644. 7:44:17that using my VM that is Windows in
  11645. 7:44:19nature. And similarly, if I want
  11646. 7:44:21something to run on top of Linux, I can
  11647. 7:44:23use the virtual machine that is Linux in
  11648. 7:44:25nature. Right? So that is what virtual
  11649. 7:44:28machines offer you. Okay? But there's a
  11650. 7:44:31catch here. When you talk about a
  11651. 7:44:33virtual machine, you're talking about a
  11652. 7:44:35server, right? On top of that server
  11653. 7:44:37you'd be having your host operating
  11654. 7:44:39system on which you'd be running a
  11655. 7:44:42hypervisor. Now this is more of a
  11656. 7:44:44middleware okay or a service that
  11657. 7:44:46supports all the applications that are
  11658. 7:44:48there on top of it including the
  11659. 7:44:50operating system the guest operating
  11660. 7:44:51system that we are talking about. Now
  11661. 7:44:53here the problem is as you can see the
  11662. 7:44:56virtual machines that you see on the
  11663. 7:44:57left hand side right they'll have
  11664. 7:44:59separate guest oss they'll have their
  11665. 7:45:01bins and then on top of that they'll be
  11666. 7:45:03having the applications that are
  11667. 7:45:05running. Now what is the disadvantage
  11668. 7:45:07here? Here what happens is each time you
  11669. 7:45:10have a virtual machine that is operating
  11670. 7:45:13we need to ensure that there's a guest
  11671. 7:45:14OS there. So there's a dependency on
  11672. 7:45:17this. And what this does is it makes it
  11673. 7:45:20difficult for you to basically break
  11674. 7:45:22this virtual machine from the existing
  11675. 7:45:25infrastructure or architecture and make
  11676. 7:45:27it run somewhere else. Right? Because
  11677. 7:45:30this is a complicated process. But when
  11678. 7:45:32you talk about your containers, this is
  11679. 7:45:35where the difference lies. Say for
  11680. 7:45:37example, I'll be having a docker engine
  11681. 7:45:39in this case, right? It can be anything.
  11682. 7:45:41I mean when you talk about docker
  11683. 7:45:42engine, it is a type of tool that
  11684. 7:45:45provides you containers. Okay? So
  11685. 7:45:47supports container spawning for you in
  11686. 7:45:49simple words. There other container
  11687. 7:45:52tools as well. We are not here to
  11688. 7:45:53discuss Docker but Docker is one of the
  11689. 7:45:56most popular container tools. That is
  11690. 7:45:58why you see Docker here. So think of it
  11691. 7:46:00as your container image what you see
  11692. 7:46:03there in the left hand side. So you can
  11693. 7:46:05see that there's a server host you have
  11694. 7:46:06your hypervisor you have your guest OS.
  11695. 7:46:10So guest OS here is common right. So
  11696. 7:46:12when you have a guest OS here what that
  11697. 7:46:15means is all the containers that would
  11698. 7:46:18be running on top of it would be running
  11699. 7:46:19on the same guest OS. So you do not have
  11700. 7:46:23a dependency where basically you have to
  11701. 7:46:26ensure that all the guest OS
  11702. 7:46:28requirements are also there in your
  11703. 7:46:30container. So your container is more
  11704. 7:46:32independent of the operating system.
  11705. 7:46:34Right? The only concern here though is
  11706. 7:46:37in case of containers you have to ensure
  11707. 7:46:40that if you have one hypervisor or one
  11708. 7:46:45docker engine that is running for you
  11709. 7:46:47right in that docker engine where
  11710. 7:46:49there's a single guest OS in that case
  11711. 7:46:51you'll be running all your containers
  11712. 7:46:53that are supported by that guest OS
  11713. 7:46:55right now if my guest OS is Windows I
  11714. 7:46:57cannot expect myself to run Linux
  11715. 7:47:00containers there I'm just giving you an
  11716. 7:47:01example okay so there's a drawback there
  11717. 7:47:04but The benefit here is right since your
  11718. 7:47:08applications, your bins and your library
  11719. 7:47:10files are independent, you can package
  11720. 7:47:12them in a container and move them across
  11721. 7:47:15easily. So you can run it on other
  11722. 7:47:17docker engines as well to support your
  11723. 7:47:19claim. What that does is since you have
  11724. 7:47:21this freedom here where you're not
  11725. 7:47:23dependent on your guest OS, right? Or
  11726. 7:47:25you do not have your guest OS inside
  11727. 7:47:27your container, you get certain
  11728. 7:47:28benefits. It makes your containers
  11729. 7:47:30faster. Okay? makes them reliable and at
  11730. 7:47:34the same time makes them efficient. So
  11731. 7:47:36that is what basically containers are
  11732. 7:47:39and that is how they're different from
  11733. 7:47:40virtual machine. So I hope by now the
  11734. 7:47:43point here is clear to you all as in how
  11735. 7:47:45do these things function. Okay, let us
  11736. 7:47:47now go ahead and understand the other
  11737. 7:47:49bits. So now let us try and understand
  11738. 7:47:52what Kubernetes is right because many of
  11739. 7:47:56us know that it is a container
  11740. 7:47:57orchestration tool. We always try to
  11741. 7:48:00compare it with Docker which may not be
  11742. 7:48:02the rightest things to do or the best
  11743. 7:48:04things to do rather. Why is that? Let's
  11744. 7:48:07try and understand that as in what is
  11745. 7:48:09Kubernetes? Why do we need it? And is it
  11746. 7:48:12same as Docker or not. Okay. Now here
  11747. 7:48:15are few things that would tell us why do
  11748. 7:48:17we need Kubernetes and how it is
  11749. 7:48:19different from Docker is something that
  11750. 7:48:21I would discuss in this bit itself. Now
  11751. 7:48:24when you talk about Kubernetes, it is
  11752. 7:48:26used for container communication. Now
  11753. 7:48:29this is where it is different from
  11754. 7:48:30Docker. When you talk about Docker, it
  11755. 7:48:33is something that lets you basically set
  11756. 7:48:36up containers and work with containers.
  11757. 7:48:39Okay. When you talk about Kubernetes, it
  11758. 7:48:43is something that lets you manage these
  11759. 7:48:46containers. Be it your Docker containers
  11760. 7:48:49or be it other kind of containers as
  11761. 7:48:52well. So that is what Kubernetes does
  11762. 7:48:55for you. Now let us try and understand
  11763. 7:48:58why do we need something like Kubernetes
  11764. 7:49:01to manage these containers. Be it a
  11765. 7:49:03docker container or be it any other
  11766. 7:49:05container. Now when you talk about
  11767. 7:49:07containers they cannot communicate with
  11768. 7:49:09each other. They need help to do that.
  11769. 7:49:12This is where a tool like Kubernetes
  11770. 7:49:14comes into picture. Apart from that, if
  11771. 7:49:17you go ahead, what containers do is they
  11772. 7:49:21basically can be deployed as
  11773. 7:49:23applications, right? As individual
  11774. 7:49:24applications. But since it is easier to
  11775. 7:49:28deploy these applications thanks to
  11776. 7:49:30containers, you cannot just go ahead and
  11777. 7:49:32deploy applications the way it suits
  11778. 7:49:34you. You cannot just go ahead and deploy
  11779. 7:49:35your containers the way it suits you,
  11780. 7:49:37right? There has to be a process behind
  11781. 7:49:39it. You need to understand what
  11782. 7:49:40containers to spawn, what to schedule,
  11783. 7:49:43what to release, right? I mean what to
  11784. 7:49:44deploy rather. So to do that this is
  11785. 7:49:47where Kubernetes again comes into
  11786. 7:49:48picture. Third bit here is careful
  11787. 7:49:51container management. Now what do you
  11788. 7:49:54mean by careful container management? It
  11789. 7:49:56again is similar to what we discussed
  11790. 7:49:58right as we talked about how deployment
  11791. 7:50:00works. Similarly we also need to
  11792. 7:50:02understand how container management
  11793. 7:50:04works. Right? When you talk about
  11794. 7:50:06containers there are quite a few
  11795. 7:50:08pointers that come into picture. Now at
  11796. 7:50:10the start when I talked about Azure
  11797. 7:50:13Kubernetes service you realized that
  11798. 7:50:14there were certain pointers that talked
  11799. 7:50:16about I mean there were some highlights
  11800. 7:50:17or features there on the first slide
  11801. 7:50:19that showed you it helps you in better
  11802. 7:50:22deployment right and quite a few other
  11803. 7:50:24things. So when you talk about those
  11804. 7:50:26pointers right what services like
  11805. 7:50:28Kubernetes do is they ensure that your
  11806. 7:50:32deployment is happening properly you are
  11807. 7:50:35able to deploy multiple applications
  11808. 7:50:37right and you are also able to track
  11809. 7:50:39whether these applications are up and
  11810. 7:50:41functioning whether one of these
  11811. 7:50:43applications is dead do you need to work
  11812. 7:50:45on it right so you get this kind of
  11813. 7:50:48management when you talk about
  11814. 7:50:50Kubernetes
  11815. 7:50:51enable autoscaling to give you an
  11816. 7:50:53example Let's assume that you have an
  11817. 7:50:57application that basically deals with
  11818. 7:50:58three servers. Now, let's assume that
  11819. 7:51:01that application does very well, right?
  11820. 7:51:03In this case, you might need to scale
  11821. 7:51:05that application. Is it easier just to
  11822. 7:51:07go ahead and scale these applications?
  11823. 7:51:09No. Right? Because there could be a
  11824. 7:51:11possibility that now you have to manage
  11825. 7:51:13not just three servers, but you're
  11826. 7:51:15required to manage like 100 servers. In
  11827. 7:51:17that case, using a tool or using an
  11828. 7:51:19orchestration tool rather like
  11829. 7:51:21Kubernetes would help you ensure that
  11830. 7:51:23all your containers running in different
  11831. 7:51:25100 servers on top of these different
  11832. 7:51:28100 servers are functioning properly. So
  11833. 7:51:30this is where autoscaling comes into
  11834. 7:51:32picture. What Kubernetes does is it
  11835. 7:51:35gives you an ability to autoscale your
  11836. 7:51:37applications in situations where manual
  11837. 7:51:40intervention is not needed and that is
  11838. 7:51:42what Kubernetes does for you. So these
  11839. 7:51:45are some of the reasons why Kubernetes
  11840. 7:51:47came into picture. So yes, we had
  11841. 7:51:49containers but these were some of the
  11842. 7:51:51drawbacks that containers had and this
  11843. 7:51:54is what something like Kubernetes lets
  11844. 7:51:56you do.
  11845. 7:51:58Okay, let us now go ahead and understand
  11846. 7:52:01what is Kubernetes, right? So I've
  11847. 7:52:04already explained what Kubernetes is.
  11848. 7:52:06There's not a lot of different pointers
  11849. 7:52:08that have left to be explained. So if
  11850. 7:52:11you talk about Kubernetes right it is an
  11851. 7:52:13open-source container management tool
  11852. 7:52:16which automates container deployment
  11853. 7:52:19container descaling and container load
  11854. 7:52:21balancing. So all the activities that we
  11855. 7:52:24discussed right be it managing multiple
  11856. 7:52:27servers ensuring that all the containers
  11857. 7:52:29are working together right they're able
  11858. 7:52:31to communicate with each other. So
  11859. 7:52:32basically all the container management
  11860. 7:52:34it happens all the orchestration it
  11861. 7:52:37happens using your Kubernetes and that
  11862. 7:52:39is what it does. Okay. What is one of
  11863. 7:52:41the benefits it offers? It works
  11864. 7:52:43brilliantly with all cloud vendors be it
  11865. 7:52:46your public hybrid or onremise. Okay.
  11866. 7:52:50And one of those popular cloud platforms
  11867. 7:52:51as I've mentioned is Microsoft Azure
  11868. 7:52:53which we'll be discussing as we move
  11869. 7:52:55further. So what do you need to know
  11870. 7:52:58more about Kubernetes? Now these are
  11871. 7:52:59some of the facts right? I mean some of
  11872. 7:53:01the things that might intrigue you. I'm
  11873. 7:53:03not very sure about that. But if you
  11874. 7:53:04talk about Kubernetes, it was developed
  11875. 7:53:07by Google. Okay. So Google as we know
  11876. 7:53:09brings in a big customer base, a big
  11877. 7:53:13audience, right? A big community to
  11878. 7:53:15discuss and that is why this in itself
  11879. 7:53:18is a big thing. Why? Because when you
  11880. 7:53:20talk about something like Kubernetes, it
  11881. 7:53:21is going to have a huge community and
  11882. 7:53:23that would mean that there's huge
  11883. 7:53:24support, huge documentation for you to
  11884. 7:53:27work with. It was developed using a
  11885. 7:53:29programming language called as Golang
  11886. 7:53:31and it entirely was built using it.
  11887. 7:53:35Apart from that to just to summarize
  11888. 7:53:37what Kubernetes is, you can think of it
  11889. 7:53:39as a number of containers that can be
  11890. 7:53:42put into one logical unit so that you
  11891. 7:53:45can simplify the process of managing
  11892. 7:53:47these containers and how they work.
  11893. 7:53:49Okay. So this is what Kubernetes is in a
  11894. 7:53:52nutshell. Let's try and understand how
  11895. 7:53:54the architecture of Kubernetes works and
  11896. 7:53:57what are the components that you should
  11897. 7:53:59know about Kubernetes. So this is what
  11898. 7:54:02the basic architecture of Kubernetes
  11899. 7:54:05looks like. Okay. So you have your APIs,
  11900. 7:54:08you have your Kubernetes master, you
  11901. 7:54:10have your image registry, then you have
  11902. 7:54:13your nodes which basically are nothing
  11903. 7:54:16but your applications. So let's try and
  11904. 7:54:18understand these one by one as in how do
  11905. 7:54:20these function. Okay. So when you talk
  11906. 7:54:23about the APIs, the CLI and the UI,
  11907. 7:54:27right? The first thing that you need to
  11908. 7:54:28do is you need to set up a Kubernetes
  11909. 7:54:31cluster. Right? So when you talk about a
  11910. 7:54:34Kubernetes cluster, a cluster would be
  11911. 7:54:36nothing but your central management
  11912. 7:54:38point using which you'll be managing all
  11913. 7:54:40your applications or your different
  11914. 7:54:42containers that host your applications,
  11915. 7:54:44right? So first what you do is you
  11916. 7:54:46create this cluster something that you
  11917. 7:54:48can do by using your CLI, right? And
  11918. 7:54:51then you can interact or others can also
  11919. 7:54:53interact with your cluster by using an
  11920. 7:54:56API server. Okay. So your API server is
  11921. 7:54:59nothing but that basically ensures the
  11922. 7:55:01authentication and the identification of
  11923. 7:55:04the people or the resources interacting
  11924. 7:55:06with your Kubernetes master or with your
  11925. 7:55:09Kubernetes cluster. Okay. Now if you
  11926. 7:55:12talk about Kubernetes cluster to start
  11927. 7:55:14with your Kubernetes cluster here what
  11928. 7:55:16you can see is you have your Kubernetes
  11929. 7:55:19master right Kubernetes master is
  11930. 7:55:21something that basically manages your
  11931. 7:55:24containers and what you see on the left
  11932. 7:55:27hand side the nodes and stuff right this
  11933. 7:55:30is nothing but your worker nodes. Now
  11934. 7:55:32this is where you'll be having your
  11935. 7:55:34applications that are actually running.
  11936. 7:55:37So your worker nodes would be
  11937. 7:55:38implementing or running your
  11938. 7:55:40applications. Your Kubernetes master on
  11939. 7:55:43the other hand would basically be
  11940. 7:55:46managing these applications and telling
  11941. 7:55:47you how to basically run these
  11942. 7:55:50applications on top of it. To understand
  11943. 7:55:52this better, let's go ahead and take a
  11944. 7:55:54look at this diagram that you have.
  11945. 7:55:55Okay. So what you see here is you see a
  11946. 7:55:57Kubernetes master, right? And inside
  11947. 7:56:00this Kubernetes master, there are quite
  11948. 7:56:02a few other things as well. We'll
  11949. 7:56:03discuss those. But what you see on the
  11950. 7:56:06screen are some key components that you
  11951. 7:56:08need to know. Okay. So inside your
  11952. 7:56:10Kubernetes master, you'd be having two
  11953. 7:56:13important pointers that is your
  11954. 7:56:15replication controller and your service.
  11955. 7:56:18Okay. So when you talk about a
  11956. 7:56:19replication controller, it is nothing
  11957. 7:56:22but a resource that is owned by your
  11958. 7:56:23master that is your Kubernetes master,
  11959. 7:56:25right? What it does is it ensures that
  11960. 7:56:28the requested number of ports are
  11961. 7:56:30running on nodes always. Okay? Okay, so
  11962. 7:56:33your replication controller is something
  11963. 7:56:35that controls the functioning not
  11964. 7:56:37controls it basically tells your worker
  11965. 7:56:39nodes that keep the nodes or the pods
  11966. 7:56:42running. Now what are the pods and what
  11967. 7:56:44do they do? We'll discuss that. Do not
  11968. 7:56:46worry about that. It's not very
  11969. 7:56:47complicated. But that is what your
  11970. 7:56:49replication controller does. Apart from
  11971. 7:56:51that you have your service which is
  11972. 7:56:54nothing but again an object on your
  11973. 7:56:56master node, right? or your Kubernetes
  11974. 7:56:58master rather that provides load
  11975. 7:57:00balancing across replicated groups of
  11976. 7:57:03pods. Now let me try and make sense for
  11977. 7:57:06these two terms by first explaining what
  11978. 7:57:08are your nodes, what are your pods,
  11979. 7:57:10right? So when you talk about your
  11980. 7:57:11nodes, these are nothing but your worker
  11981. 7:57:13nodes which would be holding your
  11982. 7:57:15application. Now in this case your node
  11983. 7:57:18can hold more than one application. What
  11984. 7:57:20we do is we basically classify our
  11985. 7:57:25worker nodes into parts. Now pods are
  11986. 7:57:28sub entities, right? These are logical
  11987. 7:57:31collections of the containers which need
  11988. 7:57:34to interact with each other for the
  11989. 7:57:37applications to keep running. Okay. And
  11990. 7:57:41inside these pods, you basically have
  11991. 7:57:44your containers. So that is what the
  11992. 7:57:46infrastructure looks like. You'll be
  11993. 7:57:48having parts and which would be holding
  11994. 7:57:50a logical set of containers that
  11995. 7:57:52probably result in a particular kind of
  11996. 7:57:54application right and you can have
  11997. 7:57:57multiple such ports. What you see here
  11998. 7:57:59is you see docker. So what it tells you
  11999. 7:58:01is a worker node is nothing but a
  12000. 7:58:03container right. So it can be other
  12001. 7:58:06container tool as well need not be
  12002. 7:58:08docker but again as I mentioned docker
  12003. 7:58:10is a popular tool. So you see it here.
  12004. 7:58:12So what you see here is basically a
  12005. 7:58:14docker container right which has
  12006. 7:58:17multiple pods and these multiple pods
  12007. 7:58:20are basically responsible for running
  12008. 7:58:22your application and who controls all
  12009. 7:58:25these applications your Kubernetes
  12010. 7:58:28master. So assume a situation where you
  12011. 7:58:31need to scale up a particular virtual
  12012. 7:58:34machine not a virtual machine in this
  12013. 7:58:36case a particular node. So what how do
  12014. 7:58:39you do that? To do that you basically
  12015. 7:58:41have something like a load balancer
  12016. 7:58:43which helps you balance your load right
  12017. 7:58:45either distribute it or in case if you
  12018. 7:58:47need scaling it helps you scale your
  12019. 7:58:49applications as well right and then you
  12020. 7:58:51have your replication controller that
  12021. 7:58:54basically ensures right your application
  12022. 7:58:57is running. So what your replication
  12023. 7:59:00controller does is it tells your node
  12024. 7:59:02that this application has to run. Okay.
  12025. 7:59:05And who makes it run? There's something
  12026. 7:59:07called as cublet. Now inside every node
  12027. 7:59:10there would be another entity called as
  12028. 7:59:12cublet. That cubelet is responsible for
  12029. 7:59:15running your application. So this is how
  12030. 7:59:17your cubernetes architecture looks like
  12031. 7:59:20and this is how it functions.
  12032. 7:59:23Now we've understood what Kubernetes is,
  12033. 7:59:25how it works, right? Let us now go ahead
  12034. 7:59:27and understand Azure Kubernetes service.
  12035. 7:59:31Now to give you a brief about Azure
  12036. 7:59:33Kubernetes service. As I've already
  12037. 7:59:35mentioned, it is a Kubernetes service
  12038. 7:59:38that is hosted on the Azure cloud
  12039. 7:59:40platform. Okay. So, let me just go back
  12040. 7:59:43to the slide one and explain that again
  12041. 7:59:45so that we can go ahead and understand
  12042. 7:59:46how working of Azure Kubernetes happens.
  12043. 7:59:50So, we've already seen this slide,
  12044. 7:59:52right? What is Azure Kubernetes service?
  12045. 7:59:55But now it would make lot more sense for
  12046. 7:59:57you. Okay? So, what can happen or what
  12047. 7:59:59Azure Kubernetes service offers to you?
  12048. 8:00:02Now if you talk about Azure to start
  12049. 8:00:03with it is a popular cloud service
  12050. 8:00:05provider. What that means is with Azure
  12051. 8:00:09Kubernetes or with Microsoft Azure you
  12052. 8:00:12can basically have various services that
  12053. 8:00:14help you in software development,
  12054. 8:00:16planning, management, right? Be it your
  12055. 8:00:19administrative practices, development
  12056. 8:00:20practices or architectural practices
  12057. 8:00:22related to a software. All these things
  12058. 8:00:24can be hosted on a public server in this
  12059. 8:00:26case which again can be your Microsoft
  12060. 8:00:29Azure cloud. Now what it does is it
  12061. 8:00:31basically gives you all the services
  12062. 8:00:33that are needed to carry out all the
  12063. 8:00:35actions that I just mentioned where you
  12064. 8:00:37can rent these resources or follow a pay
  12065. 8:00:40as you go model and use these services
  12066. 8:00:42to benefit your requirement. Okay. Now
  12067. 8:00:45when you talk about a platform like
  12068. 8:00:47Microsoft Azure which again is a cloud
  12069. 8:00:49platform as I've just mentioned the
  12070. 8:00:51possibility of dealing with applications
  12071. 8:00:54are plenty or the possibilities rather
  12072. 8:00:56are plenty. So you can do so many
  12073. 8:00:58things. So what that does is that gives
  12074. 8:01:01developers or application owners options
  12075. 8:01:05to work with these applications in
  12076. 8:01:07numerous ways. Okay, it simplifies their
  12077. 8:01:10complications. Right? Since if you're
  12078. 8:01:11talking about a platform like Microsoft
  12079. 8:01:13Azure, it helps you basically
  12080. 8:01:15orchestrate quite a lot of activities.
  12081. 8:01:18Be it managing your servers,
  12082. 8:01:20infrastructure, right? Be it basically
  12083. 8:01:22load balancing, be it autoscaling, all
  12084. 8:01:25these things can be controlled by using
  12085. 8:01:27the cloud platform. So what that does is
  12086. 8:01:30that gives developers this added benefit
  12087. 8:01:32okay or the application owners this
  12088. 8:01:34added benefit and that is why what these
  12089. 8:01:36cloud platforms are doing these days is
  12090. 8:01:38they are encroaching or basically
  12091. 8:01:40covering different domains be your big
  12092. 8:01:42data devops analytics right all these
  12093. 8:01:44things are or can be implemented using
  12094. 8:01:46these cloud platforms because when you
  12095. 8:01:48talk about these cloud platforms they're
  12096. 8:01:50already owning various markets of
  12097. 8:01:52software development and application
  12098. 8:01:54hosting okay so that is why having
  12099. 8:01:56something like Kubernetes
  12100. 8:01:58work on top of Azure is a benefit. Why?
  12101. 8:02:01Because some of the complications that
  12102. 8:02:04you'd find difficult to implement using
  12103. 8:02:06Kubernetes can be controlled by using
  12104. 8:02:09Microsoft Azure. And that is why you
  12105. 8:02:11have these added benefits be it your end
  12106. 8:02:13to end be your end to end deployment, be
  12107. 8:02:15it your availability or scalability. If
  12108. 8:02:18you talk about some of the benefits that
  12109. 8:02:20it actually offers, what it does is you
  12110. 8:02:23pay only for the nodes that you use.
  12111. 8:02:26That means last time I checked Microsoft
  12112. 8:02:28Azure did not charge you for your master
  12113. 8:02:31node. You only get charged for your
  12114. 8:02:33worker nodes that you use. Okay, your
  12115. 8:02:36cluster upgrades are easier. So you do
  12116. 8:02:38not have to worry about the patching
  12117. 8:02:39part and stuff like that. Integration
  12118. 8:02:41with various Azure and other tools and
  12119. 8:02:44services becomes easier. Not just that,
  12120. 8:02:47what you can also do is you can actually
  12121. 8:02:49go ahead and enforce various rules that
  12122. 8:02:51are under Azure policy across multiple
  12123. 8:02:54clusters to have uniformity if you need
  12124. 8:02:56to. Right? What you can also do is you
  12125. 8:02:59can scale Kubernetes and other nodes
  12126. 8:03:02using autoscaler that Microsoft Azure
  12127. 8:03:05supports and you can even expand your
  12128. 8:03:08scale even greater by scheduling your
  12129. 8:03:11containers on Azure containers. So that
  12130. 8:03:13is what Microsoft Azure Kubernetes
  12131. 8:03:16service provides you with. Okay. Let us
  12132. 8:03:19now move further in this Azure
  12133. 8:03:21Kubernetes service tutorial video and
  12134. 8:03:23let's try and understand some of the
  12135. 8:03:24other important pointers like how does
  12136. 8:03:27the architecture of Azure Kubernetes
  12137. 8:03:29services works.
  12138. 8:03:32Okay. To understand the working of AKS
  12139. 8:03:34or Azure Kubernetes service, right? You
  12140. 8:03:37can see this diagram on the screen. It's
  12141. 8:03:39a fairly simple diagram and it tells you
  12142. 8:03:41what Azure Kubernetes service does.
  12143. 8:03:44Okay. So, uh we've already seen how
  12144. 8:03:46Azure Kubernetes architecture works,
  12145. 8:03:49right? I mean, we know what all
  12146. 8:03:51components it has and stuff like that.
  12147. 8:03:52This is a more detailed view. So, what
  12148. 8:03:55you'll have is you'll have again a
  12149. 8:03:57Kubernetes master node or cluster is
  12150. 8:04:01what you can call it. Okay. So, in this
  12151. 8:04:03master node the functionality would be
  12152. 8:04:05same. It would be controlling how the
  12153. 8:04:07deployment and how the management of
  12154. 8:04:10your containers work. So basically Azure
  12155. 8:04:13will manage your master node. It will
  12156. 8:04:16basically help you control quite a few
  12157. 8:04:18activities that are there. As a
  12158. 8:04:19customer, you'd be managing the
  12159. 8:04:20applications only. There too you would
  12160. 8:04:22have support from Microsoft Azure. How
  12161. 8:04:25we would understand that? Now if you
  12162. 8:04:27talk about the control plane, what you
  12163. 8:04:29have here is you have your API server.
  12164. 8:04:32Now when you talk about your API server,
  12165. 8:04:35what it does is it basically tells you
  12166. 8:04:38how the underlying Kubernetes APIs are
  12167. 8:04:40exposed. Okay, what this component
  12168. 8:04:43basically does is it provides the
  12169. 8:04:44interaction for your management tools,
  12170. 8:04:46be it your cubectal or the Kubernetes
  12171. 8:04:50dashboard. Similarly, you have your etc.
  12172. 8:04:53Now, etc. basically what it does is it
  12173. 8:04:55maintains the state of your Kubernetes.
  12174. 8:04:58When I say the state of Kubernetes, I'm
  12175. 8:04:59talking about the Kubernetes cluster and
  12176. 8:05:02basically it helps you control all the
  12177. 8:05:04configuration that is there. This thing
  12178. 8:05:06is highly available and it is key value
  12179. 8:05:09based in nature. Okay. What you also
  12180. 8:05:11have here is basically you have a
  12181. 8:05:14scheduleuler. What auler does is it lets
  12182. 8:05:16you create and scale your applications
  12183. 8:05:19to basically determine which nodes can
  12184. 8:05:21run on what workload and stuff like
  12185. 8:05:23that. Okay. And finally, you have your
  12186. 8:05:26controller manager. Now this is an
  12187. 8:05:28important bit again what it does is it
  12188. 8:05:30controls or oversees a number of smaller
  12189. 8:05:32controllers whether they're performing
  12190. 8:05:34the actions or not and what it also
  12191. 8:05:37helps you in doing is replicating the
  12192. 8:05:38parts that you have and handling your
  12193. 8:05:40nodal operations as well. So this is
  12194. 8:05:43what your control plane does and it is
  12195. 8:05:46basically managed by your Azure. Now
  12196. 8:05:48what is the benefit of having Azure
  12197. 8:05:50manage it right? Since Azure is managing
  12198. 8:05:53it, you do not have to worry about the
  12199. 8:05:55configuration part, setting up part,
  12200. 8:05:57right? Your cluster node is basically
  12201. 8:05:59set up by Microsoft Azure. And that is
  12202. 8:06:01what it simplifies. Then the other bit
  12203. 8:06:03is your customer managed bit. Be it your
  12204. 8:06:06cube, right? Cube proxy, your container
  12205. 8:06:09and container runtime. To understand
  12206. 8:06:10this better, I think this diagram should
  12207. 8:06:13draw a clearer or a better picture for
  12208. 8:06:15you. Okay. So basically when you talk
  12209. 8:06:18about your customer part now there are
  12210. 8:06:20quite a few things that you need to
  12211. 8:06:21know. I've mentioned cubelet which
  12212. 8:06:22basically lets you run your pods right
  12213. 8:06:25your pods are run by your cublet that is
  12214. 8:06:27what your cubelet does. Okay there are
  12215. 8:06:29other things as well that you need to
  12216. 8:06:30know here you have your Azure virtual
  12217. 8:06:33network interface. Now it is something
  12218. 8:06:34that takes care of all the interface
  12219. 8:06:37requirements that you might otherwise
  12220. 8:06:38have. Okay. And similarly you have your
  12221. 8:06:42cube proxy. Right. Qroxy again works
  12222. 8:06:45together with your virtual network
  12223. 8:06:47interface, right? Or basically your
  12224. 8:06:49Azure virtual network and tells you what
  12225. 8:06:51needs to be done. Okay. Now all these
  12226. 8:06:54things they reside on a virtual machine
  12227. 8:06:57again. So we've discussed all the
  12228. 8:06:59differences and benefits of it. So what
  12229. 8:07:01Azour does is it basically launches a
  12230. 8:07:03virtual machine for you on top of which
  12231. 8:07:05your containers would reside. Okay. So
  12232. 8:07:08when you talk about these containers
  12233. 8:07:10again these are nothing but your
  12234. 8:07:11applications that are running for you.
  12235. 8:07:12Okay. And these are the services that
  12236. 8:07:14would help you actually implement or
  12237. 8:07:17control all these applications that are
  12238. 8:07:18there. You can actually go ahead and
  12239. 8:07:20scale up your virtual machines to meet
  12240. 8:07:22the requirements of your application in
  12241. 8:07:25different ways. So this is how the
  12242. 8:07:27working of AKS is. I mean this is how
  12243. 8:07:29the master node works and this is how
  12244. 8:07:31your basically customer node or your
  12245. 8:07:34worker nodes work when you talk about
  12246. 8:07:36AKS. We'll see these as we get into the
  12247. 8:07:39demo part. But before that let's go
  12248. 8:07:40ahead and understand a use case or see a
  12249. 8:07:43use case as to how vehicle safety with
  12250. 8:07:45AKS is supported. Now when we say
  12251. 8:07:47vehicle safety we are talking about a
  12252. 8:07:50use case that was set forth by Bosch.
  12253. 8:07:54Okay. Bosch as we all know is a very
  12254. 8:07:57popular company which has numerous
  12255. 8:07:59thousands of employees working across
  12256. 8:08:01the globe for meeting different
  12257. 8:08:03technological needs of the world. Okay.
  12258. 8:08:06In this particular use case, what they
  12259. 8:08:08thought of was the amount of accidents
  12260. 8:08:11that happened due to wrongway driving.
  12261. 8:08:14Okay. And what they thought was could we
  12262. 8:08:16find a solution that could basically
  12263. 8:08:18help us overcome this bit of problem.
  12264. 8:08:20Okay. So what were the problems that
  12265. 8:08:23they were facing? Right? When you talk
  12266. 8:08:25about wrongway driving problems, right?
  12267. 8:08:28What are the issues that we face? Okay.
  12268. 8:08:30because of wrongway driving, there could
  12269. 8:08:32be a lot of accidents, unplanned
  12270. 8:08:34casualties and stuff like that. But if I
  12271. 8:08:37am to avoid wrongway driving using
  12272. 8:08:39technology, it's a very tedious task.
  12273. 8:08:42The reason for that is what I can try
  12274. 8:08:45and do here is I can basically set up an
  12275. 8:08:47application that notifies me of wrongway
  12276. 8:08:49driving, right? But then for that to
  12277. 8:08:52happen, I have to have a lot of data
  12278. 8:08:54that is in real time. And when I'm
  12279. 8:08:56driving, my only way of fetching data is
  12280. 8:08:58by using cell phones and GPS, right? But
  12281. 8:09:01then again, there are problems with
  12282. 8:09:03these things. When you talk about cell
  12283. 8:09:04phones, they basically function very
  12284. 8:09:07well in a radius of 5 m distance when
  12285. 8:09:10you talk about their operational
  12286. 8:09:12radiance or radius rather or their
  12287. 8:09:14limitations when you talk about range on
  12288. 8:09:16exchanging this data. Okay. So you can
  12289. 8:09:19transfer data to a larger audiences. We
  12290. 8:09:22see that through WhatsApp and stuff. But
  12291. 8:09:25if you talk about GPS kind of data, we
  12292. 8:09:28are talking about multiple points or
  12293. 8:09:30multiple data that we are dealing with
  12294. 8:09:31and to deal with them parallelly can be
  12295. 8:09:33a difficult task. So because of that,
  12296. 8:09:36Bosch felt was that this was an
  12297. 8:09:37impossible task to deal with. Why? In
  12298. 8:09:40order to get the last piece of
  12299. 8:09:42information out of the noisy sensor data
  12300. 8:09:44can be a problem and in order to develop
  12301. 8:09:46a highly scalable and ultra flexible
  12302. 8:09:48service to process this data in real
  12303. 8:09:50time can also be a tedious task. What
  12304. 8:09:53they also figured out was to solve this
  12305. 8:09:55problem, they needed this data in real
  12306. 8:09:57time and in very short duration. If we
  12307. 8:10:00could do that, we could actually go
  12308. 8:10:01ahead and save accidents and we could
  12309. 8:10:04save these wrongway driving incidents.
  12310. 8:10:07And that is why they decided to work
  12311. 8:10:09with Microsoft Azure which was their
  12312. 8:10:11already supporting partner. What they
  12313. 8:10:13also did was they ensured that they did
  12314. 8:10:16go ahead and accommodate Azure
  12315. 8:10:18Kubernetes service in their
  12316. 8:10:20infrastructure. What this did was it
  12317. 8:10:22ensure that Bosch would get repeatable,
  12318. 8:10:26manageable clusters of containers and
  12319. 8:10:28since they work in such shorter
  12320. 8:10:30durations do not have latencies in
  12321. 8:10:32minutes but rather in seconds they
  12322. 8:10:34offered a simple form of services for
  12323. 8:10:37them to work with and what that ensured
  12324. 8:10:39was they had the average time to
  12325. 8:10:41calculate whether a driver is going the
  12326. 8:10:43wrong way or not in milliseconds. So
  12327. 8:10:46around 60 milliseconds they could figure
  12328. 8:10:48out that is around a second where they
  12329. 8:10:50could figure out whether a driver was in
  12330. 8:10:52the wrong way or not and that is what
  12331. 8:10:54basically your Azure Kubernetes service
  12332. 8:10:56enabled them to do their major problem
  12333. 8:10:58that is they had the time constraint
  12334. 8:11:00that is something it helped them solve
  12335. 8:11:02and because of that they could come up
  12336. 8:11:03with this wrong way driving problem
  12337. 8:11:06solution where they basically use
  12338. 8:11:08Microsoft Azure to host their data and
  12339. 8:11:10basically Azure Kubernetes service to
  12340. 8:11:13basically help them in simple
  12341. 8:11:15provisioning
  12342. 8:11:16scaling of applications and ensuring
  12343. 8:11:17that the real-time data is made
  12344. 8:11:20available to the drivers within a span
  12345. 8:11:22of 60 milliseconds which again is a big
  12346. 8:11:25achievement. So that is what AKS or
  12347. 8:11:27Azure Kubernetes service had to offer.
  12348. 8:11:30If you go to Microsoft Azour's website,
  12349. 8:11:32there's so many good use cases that talk
  12350. 8:11:35about AKS. So you might want to go ahead
  12351. 8:11:37and take a look at that as well. as far
  12352. 8:11:39as the session goes, we would go ahead
  12353. 8:11:40and take a look at the demo and
  12354. 8:11:41understand how we can actually go ahead
  12355. 8:11:43and set up an Azure Kubernetes cluster
  12356. 8:11:46and a lot more.
  12357. 8:11:48Okay, so guys, let's go ahead and get
  12358. 8:11:50into the demo part. Now, this is how the
  12359. 8:11:52Azure portal looks like. Okay, I've
  12360. 8:11:55signed into the Azure portal. Now, for
  12361. 8:11:56people who are new to Microsoft Azure,
  12362. 8:11:58what Microsoft Azure does is it gives
  12363. 8:12:00you an Azure portal where you can
  12364. 8:12:03implement all the cloud related
  12365. 8:12:05activities that concern Microsoft Azure.
  12366. 8:12:07Okay. So if you want to practice from
  12367. 8:12:09scratch, it also offers a free tier
  12368. 8:12:11account where you have a number of
  12369. 8:12:13services available free of cost. Okay.
  12370. 8:12:16Or rather in case of Azure, it works
  12371. 8:12:18differently. For AWS, you have those
  12372. 8:12:20free services. With Azure, you have this
  12373. 8:12:23$200 of credit that it gives you. So you
  12374. 8:12:26can spend those $200 on creating
  12375. 8:12:28resources for 11 months duration. Post
  12376. 8:12:31that those will expire. So if you do not
  12377. 8:12:33have an account, you can just go ahead
  12378. 8:12:34and create a free tier account. Fill in
  12379. 8:12:36the details, right? And you should have
  12380. 8:12:37this free Azure portal for your usage.
  12381. 8:12:40Okay? In my case, this is a paid
  12382. 8:12:43account. This is the company's account.
  12383. 8:12:44So, it's called as pay as you go. In my
  12384. 8:12:46case, in your case, it would be a free
  12385. 8:12:47tier account. But the functionality
  12386. 8:12:49would be similar for you as well. The
  12387. 8:12:51only thing is with the paid account, you
  12388. 8:12:53have more services available to you and
  12389. 8:12:56uh even the larger instances is
  12390. 8:12:57something that you can actually go ahead
  12391. 8:12:59and spawn and um use because you're
  12392. 8:13:02paying for those, right? under free tier
  12393. 8:13:04you don't have to worry about paying for
  12394. 8:13:05them right so there are certain
  12395. 8:13:07restrictions and limits there so do go
  12396. 8:13:09ahead and register to Microsoft Azour's
  12397. 8:13:12portal okay now coming back to the demo
  12398. 8:13:15part what we are going to do now is we
  12399. 8:13:18are going to create a Kubernetes cluster
  12400. 8:13:21and on top of that we are going to
  12401. 8:13:22deploy an application and the
  12402. 8:13:24application would be a basic pre-built
  12403. 8:13:26app by Microsoft Azure we are not going
  12404. 8:13:28to create a new app I'll be sharing the
  12405. 8:13:30code for the application so do not worry
  12406. 8:13:33about that. So we are just going to go
  12407. 8:13:35ahead and use that pre-built code and we
  12408. 8:13:37are going to deploy that code on top of
  12409. 8:13:39Kubernetes cluster that we have. Okay.
  12410. 8:13:42So the main thing to note here is we
  12411. 8:13:44have to see how easily the cluster is
  12412. 8:13:45created. We are not concerned about the
  12413. 8:13:48orchestration process at all here.
  12414. 8:13:50Everything is taken care by your
  12415. 8:13:52Microsoft Azure and that is what we are
  12416. 8:13:54going to look into. So let's not waste
  12417. 8:13:55any time just quickly go ahead and get
  12418. 8:13:58an instance in place rather a cluster in
  12419. 8:14:00place. Okay. So to do that we are going
  12420. 8:14:02to click on this icon and say create a
  12421. 8:14:05resource. Okay. Here you can see all the
  12422. 8:14:07service domains that are there for
  12423. 8:14:09offering. So I'm going to click on the
  12424. 8:14:11containers one and click on Kubernetes
  12425. 8:14:14service. Once you do that you see you'll
  12426. 8:14:16be brought to this page and you'll get
  12427. 8:14:18all the details right. AKS manages your
  12428. 8:14:20hosted Kubernetes environment making it
  12429. 8:14:22quick and easy for you to manage
  12430. 8:14:24containerized applications. The main
  12431. 8:14:26point is without having to container,
  12432. 8:14:28orchestrate or have any expertise in
  12433. 8:14:30that. Okay, it eliminates the burden of
  12434. 8:14:33ongoing operations and maintaining,
  12435. 8:14:34provisioning, upgrading, scaling your
  12436. 8:14:36resources rather, which happens on
  12437. 8:14:38demand here. So you don't have to worry
  12438. 8:14:39about those things. So let's just go
  12439. 8:14:41ahead and create a resource group. So
  12440. 8:14:43for people who do not know what resource
  12441. 8:14:45groups are, resource group is nothing
  12442. 8:14:47but you can think of it as a small
  12443. 8:14:49container or a folder where you put
  12444. 8:14:51forth all the necessary things that are
  12445. 8:14:54important for your resource to work. Now
  12446. 8:14:56in this case our resources Kubernetes.
  12447. 8:14:58So quite a few other nitty-g gritties
  12448. 8:15:00related to it would be in the resource
  12449. 8:15:02group. Okay. So let's just go ahead and
  12450. 8:15:03create one. So I'm going to click on
  12451. 8:15:06create new. Let's just say we have RG
  12452. 8:15:12for demo.
  12453. 8:15:14I'm going to give a simple name so that
  12454. 8:15:15I can remember that. Okay. So I'm going
  12455. 8:15:18to say okay. I'm going to create a
  12456. 8:15:21cluster. I'm going to call it cube
  12457. 8:15:23cluster. Okay. This is enough. So cube
  12458. 8:15:26let's call it cube cluster. Okay. And
  12459. 8:15:30this is in place. Where do I want it? If
  12460. 8:15:32you're using a pay as you go model there
  12461. 8:15:34won't be any restrictions here. If
  12462. 8:15:36you're using free tier there might be
  12463. 8:15:37some okay so just select any region that
  12464. 8:15:40you want to do I'm going to randomly
  12465. 8:15:41select a region now what region it
  12466. 8:15:43should be my region would be
  12467. 8:15:47okay let's pick this one and it would
  12468. 8:15:49ask me how many nodes do you want to
  12469. 8:15:51create let's create one since it's a
  12470. 8:15:53very simple demo we do not need more
  12471. 8:15:55nodes okay we've discussed what nodes
  12472. 8:15:57are right so that is what we are doing
  12473. 8:16:00we are creating a node here where our
  12474. 8:16:02application would run basically so I'm
  12475. 8:16:03going to say review or let's Just go
  12476. 8:16:05ahead and see if we have all the
  12477. 8:16:07settings. Node pools
  12478. 8:16:10authentication. You have two options
  12479. 8:16:11whether you want your server or rather
  12480. 8:16:14your cloud platform to manage your
  12481. 8:16:17identity pools and um basically create
  12482. 8:16:20resources accordingly. You can do that
  12483. 8:16:22or you can select a service principle
  12484. 8:16:24which is an older way to do it where uh
  12485. 8:16:26you use an Azure active directory to do
  12486. 8:16:28that. So there's no rule here. You can
  12487. 8:16:30go for this one as well. I'm just going
  12488. 8:16:31to do this just because I've thought of
  12489. 8:16:34showing it to you. I selected that it
  12490. 8:16:36does not hold a lot of impact on our
  12491. 8:16:37demo. Okay, just going to say create and
  12492. 8:16:40review. Okay, so for creating this thing
  12493. 8:16:42now it will review all the requirements.
  12494. 8:16:44If the requirements are in place, what
  12495. 8:16:47it will do is it will just go ahead and
  12496. 8:16:49um create your cluster and put
  12497. 8:16:51everything in place. Okay, so it says do
  12498. 8:16:54you want to create it now? I'll say yes
  12499. 8:16:55create. Okay, let's just refresh and see
  12500. 8:16:58whether our u application is done.
  12501. 8:17:02Now it's still deploying. Let's wait for
  12502. 8:17:04this deployment to get in place and once
  12503. 8:17:06it's done, we'll just go ahead and uh
  12504. 8:17:09get these things in place. After this,
  12505. 8:17:11the process is very simple. Okay, we are
  12506. 8:17:14going to just go ahead and put in
  12507. 8:17:15certain set of commands and a job would
  12508. 8:17:18be done. So, you don't have to wait for
  12509. 8:17:20too long. Post that. Okay, let's just
  12510. 8:17:24refresh it again and see whether it's in
  12511. 8:17:25place. Normally, it takes a couple of
  12512. 8:17:27minutes. So, could take longer, right?
  12513. 8:17:30But it's a very easy deployment process.
  12514. 8:17:32So let me give you an idea as in what
  12515. 8:17:34happens when you say that the deployment
  12516. 8:17:36is happening. So first your Kubernetes
  12517. 8:17:38will actually go ahead and launch a
  12518. 8:17:41Linux instance to start. Okay. So once
  12519. 8:17:44the Linux instance is in place that is
  12520. 8:17:47when we'll actually go ahead and u put
  12521. 8:17:50forth all our resources on top of it. In
  12522. 8:17:52that Linux instance we'll set up a
  12523. 8:17:54cluster right all the integrities that
  12524. 8:17:55we need and on top of that cluster our
  12525. 8:17:57application would start working. here in
  12526. 8:18:00this case it would probably set up a
  12527. 8:18:01cache could be a radius as well we'll
  12528. 8:18:04have to go ahead and look into it
  12529. 8:18:05whether it's that one okay and then
  12530. 8:18:07accordingly we can go ahead and
  12531. 8:18:10implement everything on top of that but
  12532. 8:18:12we don't have to get into the
  12533. 8:18:13complications of things it's a fairly
  12534. 8:18:15simple process for us okay let's just go
  12535. 8:18:18ahead and refresh it once more
  12536. 8:18:25okay it's done your deployment has been
  12537. 8:18:28complete is what it says is that means
  12538. 8:18:29we are good to go ahead and use a
  12539. 8:18:31resource. You can do other things as
  12540. 8:18:33well. On top of it, it is suggesting
  12541. 8:18:34what all you can do. Okay. So, we are
  12542. 8:18:36going to do one of these things. Do not
  12543. 8:18:38worry. So, just go to the resource in
  12544. 8:18:39our case. Okay. And in this resource,
  12545. 8:18:43you can see there's all the information
  12546. 8:18:44that you need. Okay. You'll get to know
  12547. 8:18:46where it is hosted and stuff like that.
  12548. 8:18:48What kind of instance it is, where it is
  12549. 8:18:50located, everything. One node pool is
  12550. 8:18:52what you have, right? So, you have all
  12551. 8:18:54the information to actually go ahead and
  12552. 8:18:56connect to it. So in your case, I'm
  12553. 8:18:58hopeful that it would happen faster than
  12554. 8:19:00what you see in my case or on my screen
  12555. 8:19:03rather.
  12556. 8:19:04You see cloud shell is up and running.
  12557. 8:19:07So let's just go ahead now and um
  12558. 8:19:10basically get credentials
  12559. 8:19:13right here. Let's get the credentials or
  12560. 8:19:16merge a cluster. Okay. So that we can
  12561. 8:19:19start using it. So how do we do that? We
  12562. 8:19:21use this command. we say aks.
  12563. 8:19:25Okay. And in this case what we are going
  12564. 8:19:28to do is we are going to say get
  12565. 8:19:30credentials.
  12566. 8:19:34Okay. Now the next thing is what do we
  12567. 8:19:37need resource group details. So I'm
  12568. 8:19:40going to say resource dash group and I'm
  12569. 8:19:44going to give the resource group name
  12570. 8:19:46which I am certain that we should see if
  12571. 8:19:50we just scroll up. Okay, so the resource
  12572. 8:19:53name is RG for demo that we used. Okay,
  12573. 8:19:56RG
  12574. 8:19:57for demo. And what we also need is we
  12575. 8:20:02need the name of the cluster and in that
  12576. 8:20:06case it is cube cluster. So you can do
  12577. 8:20:08it vice versa as well. You don't have to
  12578. 8:20:10go this order. You can start by giving
  12579. 8:20:13in the details for your cluster and then
  12580. 8:20:17the detail for your resource group. I'm
  12581. 8:20:18just going to hit the enter button. Now
  12582. 8:20:22merge group cluster as a current context
  12583. 8:20:26in this path is what it says. Okay. Now
  12584. 8:20:29let's just go ahead and get the details
  12585. 8:20:31for the node. In this case we know
  12586. 8:20:33there's only one node but you could be
  12587. 8:20:34working on multiple nodes, right? So in
  12588. 8:20:36that case you have to use this command.
  12589. 8:20:39You say cubectl. Now it is basically a
  12590. 8:20:42clientside interactive tool for
  12591. 8:20:44interacting with your cubernetes. Okay.
  12592. 8:20:46So that is what cubectl is all about.
  12593. 8:20:48Okay. And you say get nodes.
  12594. 8:20:52If there are multiple nodes, it will
  12595. 8:20:54give you multiple nodes. If there's only
  12596. 8:20:56one node, it will give you only one
  12597. 8:20:57node. So there you go. You can see that
  12598. 8:21:00there's one node that we have with us.
  12599. 8:21:02Okay. We have all the details. It's been
  12600. 8:21:04running for 5 minutes. It says right
  12601. 8:21:06because that is when we started the
  12602. 8:21:07node. Okay. Now the next thing is we are
  12603. 8:21:10going to go ahead and select the YAML
  12604. 8:21:12file where we've actually put forth the
  12605. 8:21:14details for our application. Right. So
  12606. 8:21:17how do we do that? For that we are going
  12607. 8:21:19to go ahead and use this command. Okay.
  12608. 8:21:22Nano.
  12609. 8:21:23Okay. Space Azure. The name of the
  12610. 8:21:27application is or the application rather
  12611. 8:21:29is related to voting. So that is why I'm
  12612. 8:21:31going to use this name and I'm going to
  12613. 8:21:33say
  12614. 8:21:35yamel. Okay.
  12615. 8:21:39Okay. So guys, I've already pasted a
  12616. 8:21:41piece of code here because I was I tried
  12617. 8:21:45implementing this demo before. So you'll
  12618. 8:21:48see that there's code here. Okay. So in
  12619. 8:21:50this case, what we are going to do is we
  12620. 8:21:52are going to remove this code just to be
  12621. 8:21:55safe. I'm going to just paste the code
  12622. 8:21:57again. So basically this is where you'll
  12623. 8:21:59have all the details. What is the API
  12624. 8:22:01that is being used? What is the
  12625. 8:22:02container port? Right? What is the
  12626. 8:22:04memory that you are using? What call are
  12627. 8:22:07you making? Right? All those details are
  12628. 8:22:09here. Do not worry. I'll share the link
  12629. 8:22:11to this piece of code in the
  12630. 8:22:12description. If not, you can just look
  12631. 8:22:14for Azure demos or getting started with
  12632. 8:22:17Azure on your browser and you'll find
  12633. 8:22:20this piece of code. It's available
  12634. 8:22:21everywhere. You'll get this code on uh
  12635. 8:22:23GitHub as well. I do not own this code.
  12636. 8:22:26So I will not take any right in saying
  12637. 8:22:29that this is something that I've
  12638. 8:22:30created. It is a code that has been used
  12639. 8:22:33and it is somebody else's work. Okay. So
  12640. 8:22:36you may check out online the details.
  12641. 8:22:37I'll also pass in the details in the
  12642. 8:22:39description. Okay. So everything is
  12643. 8:22:42removed. Now I'm just going to go ahead
  12644. 8:22:43and paste my piece of code here. Okay.
  12645. 8:22:47Going to say paste. And all the same
  12646. 8:22:49code is again here with us. Okay. Now,
  12647. 8:22:52how do I go ahead with it? In this case,
  12648. 8:22:55I'm going to say justify, cut, uncut. Do
  12649. 8:22:59I want to replace? I'm just going to say
  12650. 8:23:01exit for now. So, it's Ctrl X in my
  12651. 8:23:03case. And I'm going to say no will
  12652. 8:23:06discard the changes. So, we'll say yes.
  12653. 8:23:08So, Y. That means it will save my code.
  12654. 8:23:11Okay. I'm going to hit enter now. So, it
  12655. 8:23:13will take me back to my cluster. Okay.
  12656. 8:23:16The next step is now what we are going
  12657. 8:23:18to do is we are going to go ahead and
  12658. 8:23:22call out this YAML file. Okay. So once
  12659. 8:23:24we do that, this is how we are going to
  12660. 8:23:26do it. We're going to say cubectl again.
  12661. 8:23:28Okay. And
  12662. 8:23:33slashf
  12663. 8:23:35azure. What was the name again? / vote.
  12664. 8:23:41Yl.
  12665. 8:23:43Going to hit the enter button.
  12666. 8:23:46And there you go. What it has done is it
  12667. 8:23:48has created a voteback application. Its
  12668. 8:23:51front is created. Its back is created.
  12669. 8:23:53Right? So we need to see how it looks
  12670. 8:23:56like. Right? So we are going to find out
  12671. 8:23:58all the details as in if you want to
  12672. 8:24:00watch this app working. We need the
  12673. 8:24:02details for it. So we we are just going
  12674. 8:24:04to go ahead and use a command called as
  12675. 8:24:05get service. Okay. So get services in
  12676. 8:24:08place. And in this case again my app
  12677. 8:24:12name is your port but this time I want
  12678. 8:24:16the front. Okay. So I'm going to say
  12679. 8:24:18front and I'm going to say watch
  12680. 8:24:22and hit the enter button.
  12681. 8:24:26I basically made a blunder here and that
  12682. 8:24:28blender is we have to call this command
  12683. 8:24:31through cubectl. Right? So in this case
  12684. 8:24:35again we'll have to type the remaining
  12685. 8:24:37command again. So, I'm just going to do
  12686. 8:24:38it quickly. Okay. Get service
  12687. 8:24:42Azure what
  12688. 8:24:46dash front
  12689. 8:24:47watch
  12690. 8:24:51and there you go. You have your external
  12691. 8:24:53IP here. So guys at times what you see
  12692. 8:24:55here your external IP if your system is
  12693. 8:24:58very slow which is in my case but I
  12694. 8:25:00don't know how it happened. It age is
  12695. 8:25:01only 85 seconds is what it says. So
  12696. 8:25:04normally it takes time for you to see
  12697. 8:25:06this external IP. Okay. But luckily we
  12698. 8:25:09can see it. So I'm going to just copy it
  12699. 8:25:11here. Okay. And I'm going to paste it
  12700. 8:25:13here. And this way we should be able to
  12701. 8:25:15see the application that we've created.
  12702. 8:25:17Okay. So you can see you can vote here.
  12703. 8:25:19And let me vote for dogs twice thrice.
  12704. 8:25:23And I can just go ahead and reset it as
  12705. 8:25:25well. Okay. So guys actually go ahead
  12706. 8:25:28and create a cluster. Okay. A suggestion
  12707. 8:25:31here.
  12708. 8:25:33You delet that is there. Delete this
  12709. 8:25:35one. delete the resource group and also
  12710. 8:25:36the Azure active directory. So if you
  12711. 8:25:40want to see what all we did here, right,
  12712. 8:25:42and how the performance went on a lets
  12713. 8:25:45you track all if you want to take a look
  12714. 8:25:47at the insights and stuff, if you click
  12715. 8:25:49here, you'll have all all those details
  12716. 8:25:51as well.
  12717. 8:25:54So there you go. If I just refresh it,
  12718. 8:25:56you should have all how long did we use
  12719. 8:25:59the cluster. This is where the usage
  12720. 8:26:00started. Okay, so you'll get all these
  12721. 8:26:02details.
  12722. 8:26:04So you can do that. So that's it. I
  12723. 8:26:07believe it's clear to you people and you
  12724. 8:26:10got to know what things we've worked on,
  12725. 8:26:13how we've used
  12726. 8:26:15these things and your Kubernetes cluster
  12727. 8:26:18works. Okay. So we've created a simple
  12728. 8:26:21Kubernetes cluster and explored it.
  12729. 8:26:23Ensure when you go back you just delete
  12730. 8:26:25just go to the resources and the
  12731. 8:26:27resource group, the cluster and the
  12732. 8:26:29active directory if any. Okay.
  12733. 8:26:37Today% of all business solutions and
  12734. 8:26:40services have moved to the cloud.
  12735. 8:26:44Most are happening by utilizing cloud
  12736. 8:26:46platforms which include software as a
  12737. 8:26:48service infrastructure
  12738. 8:26:50as a as a service. With projects being
  12739. 8:26:53hosted on the cloud architecture, it
  12740. 8:26:55makes perfect sense to solutions to
  12741. 8:26:58continuously deliver value for
  12742. 8:27:00enterprises. Building upon that
  12743. 8:27:03Microsoft A400 exam or the Microsoft
  12744. 8:27:07certified DevOps engineer expert. But
  12745. 8:27:11what is the A400 exam? As described by
  12746. 8:27:15Microsoft A400 certification training is
  12747. 8:27:18an intermediate level course from
  12748. 8:27:20Microsoft for professionals who want to
  12749. 8:27:23gain knowledge of designing and
  12750. 8:27:25implementing DevOps processes and
  12751. 8:27:27practices for an enterprise. This 5-day
  12752. 8:27:30a400 training course is ideal for
  12753. 8:27:33professionals who combine people,
  12754. 8:27:35processes, and technologies to deliver
  12755. 8:27:37value to the organization. Some of the
  12756. 8:27:40skills that are outlined by this
  12757. 8:27:41curriculum include developing an
  12758. 8:27:44instrumentation strategy which carries a
  12759. 8:27:46weightage of about 5 to 10%, developing
  12760. 8:27:49an SR which again carries a weightage of
  12761. 8:27:515 to 10%. Then you have development
  12762. 8:27:55on compliance plan which carries the
  12763. 8:27:58weightage of 10 to 15%. As
  12764. 8:28:02managing source control which has the
  12765. 8:28:04same weightage. Apart from that, you
  12766. 8:28:06also learn how to facilitate
  12767. 8:28:08communication and collaboration between
  12768. 8:28:11your teammates, stakeholders and vendors
  12769. 8:28:13and define and implement continuous
  12770. 8:28:16integration or CI which has the majority
  12771. 8:28:19of the weightage which is about 20 to
  12772. 8:28:2125% and finally you learn how to define
  12773. 8:28:25and implement a continuous delivery and
  12774. 8:28:28release management strategy which again
  12775. 8:28:30carries a weightage of 10 to 15%. Now
  12776. 8:28:33this is the entire skill set. But before
  12777. 8:28:36you get ready to take on the world with
  12778. 8:28:38your newly certified skill set, a
  12779. 8:28:40candidate for this exam must be familiar
  12780. 8:28:43with both Azure administration and
  12781. 8:28:46development and must be an expert in at
  12782. 8:28:49least one of these areas. Furthermore,
  12783. 8:28:52there are other prerequisites that you
  12784. 8:28:54should keep in mind before appearing for
  12785. 8:28:56the A400 exam. Now even though these are
  12786. 8:28:59not mandatory prerequisites, these are
  12787. 8:29:01the ones which can improve your chances
  12788. 8:29:03of qualifying the exam such as
  12789. 8:29:05proficiency in agile practices the
  12790. 8:29:07ability for designing and implementing
  12791. 8:29:10DevOps practices for version control,
  12792. 8:29:12configuration management, build
  12793. 8:29:14compliance, release and testing. All of
  12794. 8:29:16this by leveraging Azure technologies.
  12795. 8:29:19Now that you know how you can qualify to
  12796. 8:29:21give this exam, let's go ahead and look
  12797. 8:29:24at who is this exam most beneficial for
  12798. 8:29:26or who can take up a 400. First of all,
  12799. 8:29:30this course is designed for
  12800. 8:29:32professionals who are aspiring to clear
  12801. 8:29:34the Microsoft certified DevOps engineer
  12802. 8:29:36expert exam. Right? So individuals
  12803. 8:29:39looking to establish their credibility
  12804. 8:29:41and value in the market as experienced
  12805. 8:29:44DevOps practitioners, agile
  12806. 8:29:46practitioners and cloud computing
  12807. 8:29:48professionals. Apart from that, this
  12808. 8:29:50course is also meant for system
  12809. 8:29:53administrators, software developers,
  12810. 8:29:55project managers and technical leads and
  12811. 8:29:58practically anybody that wishes or
  12812. 8:30:00aspires to lead a DevOps team. So now
  12813. 8:30:03that you understand who can take up this
  12814. 8:30:05exam, the main question arises why
  12815. 8:30:08should you take this exam? What are the
  12816. 8:30:10benefits of taking the A400 examination?
  12817. 8:30:14Now the DevOps market is expected to
  12818. 8:30:16grow from $3.42 billion in 2018 and 19
  12819. 8:30:21to 10.3 billion by 2023 at a compound
  12820. 8:30:25annual growth rate of nearly 25%. Which
  12821. 8:30:28means this industry is going to grow
  12822. 8:30:31more than threefold in the next few
  12823. 8:30:33years alone. Out of which Azure holds
  12824. 8:30:3619% of the total global cloud
  12825. 8:30:38infrastructure market which
  12826. 8:30:40automatically qualifies you for a
  12827. 8:30:42majority of the MNC's in the industry
  12828. 8:30:45today. Not just that, this also has
  12829. 8:30:48proven to give you a huge boost in your
  12830. 8:30:50salary as a mid-level Azure DevOps
  12831. 8:30:53engineer earns on an average of $145,000
  12832. 8:30:58per year. Whereas a senior level Azure
  12833. 8:31:00DevOps engineer can make up to $185,000
  12834. 8:31:04per year. Apart from that, the Azure
  12835. 8:31:06infrastructure is very ideal for DevOps,
  12836. 8:31:09which is why a lot of companies are
  12837. 8:31:11quickly moving to DevOps, which makes
  12838. 8:31:13you a frontr runner in the race for all
  12839. 8:31:15of these companies. Now, talking of
  12840. 8:31:17companies, here are a few aggressively
  12841. 8:31:20hiring for Azure certified DevOps
  12842. 8:31:22professionals, including but not limited
  12843. 8:31:25to Amazon, Ernston Young, Dell,
  12844. 8:31:28Accenture, Microsoft, Google, and
  12845. 8:31:30VMware. Now that you know what all is
  12846. 8:31:33there in store for you. I'm sure you're
  12847. 8:31:34curious to know what does the curriculum
  12848. 8:31:37outline look like. So here it is. First
  12849. 8:31:40of all, you shall be introduced to Azure
  12850. 8:31:43DevOps and understand the important
  12851. 8:31:44aspects of Azure as well as DevOps.
  12852. 8:31:47Along with this, you also learn the role
  12853. 8:31:49of a DevOps professional in an
  12854. 8:31:51organization. Then you learn about
  12855. 8:31:54implementing continuous integration
  12856. 8:31:56followed by building containers with
  12857. 8:31:58Azure DevOps where you learn to create
  12858. 8:32:00and deploy a multicontainer application
  12859. 8:32:03for your DevOps pipeline. Followed by
  12860. 8:32:05that, you learn how to design a
  12861. 8:32:07dependency management strategy as well
  12862. 8:32:10as managing artifact versioning. Next
  12863. 8:32:12up, you learn how to set up a release
  12864. 8:32:14management workflow where you learn how
  12865. 8:32:16to configure a CI/CD pipeline using YAML
  12866. 8:32:19and manage your secrets using the Azure
  12867. 8:32:21WA followed by which you implement
  12868. 8:32:24deployment models and services where you
  12869. 8:32:27configure infrastructure as a service
  12870. 8:32:29and platform as a service on Azure.
  12871. 8:32:31Followed by which you learn how to
  12872. 8:32:33implement and optimize a continuous
  12873. 8:32:36feedback mechanism. Next is the meaty
  12874. 8:32:39part where you learn a bunch of
  12875. 8:32:41different Azure tools for infrastructure
  12876. 8:32:43configuration as well as a few
  12877. 8:32:45third-party tools. And finally, you
  12878. 8:32:48learn how to implement compliance and
  12879. 8:32:50security where you learn how to manage
  12880. 8:32:52and check code quality with Sonar Cloud
  12881. 8:32:54on Azure DevOps. You also learn how to
  12882. 8:32:57integrate Azour Key WA with Azure DevOps
  12883. 8:32:59to access secrets in the Azure pipeline.
  12884. 8:33:02And that was all about the course
  12885. 8:33:04outline of the A400 curriculum. This
  12886. 8:33:08certification exam not just enhances
  12887. 8:33:10your skills as well as demonstrates it
  12888. 8:33:13to your employers, thus making you gain
  12889. 8:33:15that edge in the industry. The time is
  12890. 8:33:18right to upskill and DevOps and cloud
  12891. 8:33:21are two of the biggest domains in the
  12892. 8:33:23industry to take advantage of the career
  12893. 8:33:25opportunities that come your way.
  12894. 8:33:35Let's move on and compare AWS DevOps
  12895. 8:33:38versus Azure DevOps.
  12896. 8:33:40So let's talk about the services that it
  12897. 8:33:43provides. The Amazon Web Services code
  12898. 8:33:46pipeline is a continuous delivery
  12899. 8:33:48service for fast and reliable
  12900. 8:33:50application updates. Code pipeline
  12901. 8:33:53builds, tests, and deploys your code
  12902. 8:33:55every time there is a code change based
  12903. 8:33:57on the release process models you
  12904. 8:33:59define. On the other hand, Azure DevOps
  12905. 8:34:01services for teams to share code, track
  12906. 8:34:04work, and ship software. Azure DevOps
  12907. 8:34:07provides unlimited private git hosting,
  12908. 8:34:09cloud bill for continuous integration,
  12909. 8:34:12agile planning and release management
  12910. 8:34:14for continuous delivery to the cloud and
  12911. 8:34:16onremise. It also includes a broad
  12912. 8:34:19integrated development environment
  12913. 8:34:21support. In the next comparison, we will
  12914. 8:34:24talk about what category of tech stack
  12915. 8:34:26do they belong to. As you can see,
  12916. 8:34:28Amazon web services code pipeline
  12917. 8:34:30belongs to continuous deployment
  12918. 8:34:32category of the tech stack while Azure
  12919. 8:34:34DevOps can be primarily classified under
  12920. 8:34:37integrated development environment
  12921. 8:34:39tools. Now let's talk about the features
  12922. 8:34:42of Amazon Web Services and Azure. As you
  12923. 8:34:45can see, Amazon Web Services provides
  12924. 8:34:47workflow modeling, AWS integration and
  12925. 8:34:50it also has some pre-built plugins in
  12926. 8:34:52it. Whereas Azure on the other hand
  12927. 8:34:54provides agile tools like cananband
  12928. 8:34:57boards, backlogs, scrum boards. And it
  12929. 8:34:59also provides reporting tools like
  12930. 8:35:01dashboards, widgets, PowerBI, etc. And
  12931. 8:35:05it also allows you to integrate with git
  12932. 8:35:07which provides free private repositories
  12933. 8:35:09and pull requests. Now why do people
  12934. 8:35:12like AWS is because it is extremely
  12935. 8:35:15simple to set up. Whereas Azure on the
  12936. 8:35:18other hand is a complete package. It's
  12937. 8:35:20full and it's very powerful.
  12938. 8:35:23Now let's move on and check out the
  12939. 8:35:25users of AWS and Azure. As I've already
  12940. 8:35:28mentioned, AWS is extremely simple to
  12941. 8:35:31set up. It also has several managed
  12942. 8:35:33services. It can be easily integrated
  12943. 8:35:36with GitHub and it also has parallel
  12944. 8:35:38execution. Deployment is completely
  12945. 8:35:41automatic and there are manual steps
  12946. 8:35:43available so you're never lost. Azure on
  12947. 8:35:46the other hand supports open-source. It
  12948. 8:35:48also has several integrations that is it
  12949. 8:35:51can be easily integrated with GitHub and
  12950. 8:35:53Genkins. It also has several project
  12951. 8:35:55management features and the most
  12952. 8:35:58important plus point of Azure is that it
  12953. 8:36:00is free for stakeholders. I hope the
  12954. 8:36:02uses between AWS and Azure are extremely
  12955. 8:36:05clear. Now let's move on and talk about
  12956. 8:36:07AWS and Azure clients. So Amazon web
  12957. 8:36:10services is used by companies like Play
  12958. 8:36:13HQ, Affirm, Curo Education, UP, Ready
  12959. 8:36:16for and Bitbank Incorporation. Whereas
  12960. 8:36:19Azure has clients like Microsoft,
  12961. 8:36:21Kingsman Software, Evotech Digital,
  12962. 8:36:24Muse, Energy to Market and QRPoint.
  12963. 8:36:27Now the next important difference is
  12964. 8:36:29with what tools that these cloud
  12965. 8:36:32services can be integrated with. Amazon
  12966. 8:36:34Web Services as you can see on the
  12967. 8:36:36screen can be easily integrated with
  12968. 8:36:38GitHub, Genkins, Amazon EC2, Amazon S3,
  12969. 8:36:42AWS Elastic Beantock, Run Scope and
  12970. 8:36:45CloudB. Azure on the other hand can be
  12971. 8:36:47easily integrated with Git and GitHub,
  12972. 8:36:49Docker, Slack, Genkins, Trello and
  12973. 8:36:52Visual Studio. Now let's move on and
  12974. 8:36:55compare the salary of an AWS DevOps
  12975. 8:36:58engineer and Azure DevOps Engineer. As
  12976. 8:37:00you can see on the screen already, the
  12977. 8:37:02median salary for an AWS DevOps engineer
  12978. 8:37:05is rupees 4 lak 67,000 rupees. Whereas
  12979. 8:37:09the median salary for an Azure DevOps
  12980. 8:37:11engineer is about rupees 6 lakhs 4,000
  12981. 8:37:15rupees a year.
  12982. 8:37:22Let's quickly jump on to some of the
  12983. 8:37:25Azure DevOps interview questions. So the
  12984. 8:37:27first question is what is DevOps? Of
  12985. 8:37:30course, this is one of the first
  12986. 8:37:32Microsoft Azure DevOps interview
  12987. 8:37:34question that you will be asked. So the
  12988. 8:37:36answer to this is DevOps is a set of
  12989. 8:37:39cultural ideas, practices and
  12990. 8:37:41technologies that improves an
  12991. 8:37:43organization's capacity to provide
  12992. 8:37:45applications and services at high
  12993. 8:37:48velocity by changing and enhancing
  12994. 8:37:50products at a quicker rate than
  12995. 8:37:52traditional software development and
  12996. 8:37:54infrastructure management methods. In
  12997. 8:37:57simple terms, DevOps essentially speeds
  12998. 8:37:59up the process of delivery of
  12999. 8:38:01application and software services.
  13000. 8:38:04Coming with our second question, why use
  13001. 8:38:07DevOps? So this is a common Azure DevOps
  13002. 8:38:10interview question. So how do we answer
  13003. 8:38:12it? DevOps is significant because it is
  13004. 8:38:15a software development and operation
  13005. 8:38:17methodology that allows for faster
  13006. 8:38:19product creation and simpler maintenance
  13007. 8:38:22of existing installations. When problem
  13008. 8:38:25arises, the DevOps team is able to
  13009. 8:38:27listen to the user and provide the
  13010. 8:38:29necessary features and repairs. It also
  13011. 8:38:33facilitates the delivery of smaller
  13012. 8:38:35features to clients in a quick and
  13013. 8:38:37efficient manner and allows seamless
  13014. 8:38:39software delivery. So this was the
  13015. 8:38:41answer to why use DevOps. Let's quickly
  13016. 8:38:44move on to our next question. How does
  13017. 8:38:47DevOps work? So DevOps is about breaking
  13018. 8:38:50down barriers between previously
  13019. 8:38:52compartmentalized departments such as
  13020. 8:38:54development and operations. These
  13021. 8:38:56development and operations team
  13022. 8:38:58collaborate across the whole software
  13023. 8:39:00application life cycle from development
  13024. 8:39:02and testing to deployment and operations
  13025. 8:39:05under the DevOps paradigms. Going ahead,
  13026. 8:39:08what is Azure DevOps? So, as I said
  13027. 8:39:11before, Azure DevOps is a Microsoft
  13028. 8:39:14application as a service platform that
  13029. 8:39:16offers an end toend DevOps tool chain
  13030. 8:39:19for building and distribution software.
  13031. 8:39:21It also interfaces with the majority of
  13032. 8:39:24the market's main products and is an
  13033. 8:39:26excellent choice for coordinating a
  13034. 8:39:28DevOps tool chain. This process includes
  13035. 8:39:31testing automation, continuous
  13036. 8:39:33integration as well as continuous
  13037. 8:39:35delivery. People with both development
  13038. 8:39:37and the operation skill work together
  13039. 8:39:40and implement various tools for CI/CD
  13040. 8:39:43and monitoring for quick response to
  13041. 8:39:46customers requirement and fixing issues
  13042. 8:39:48and bugs. Moving ahead, what are the
  13043. 8:39:51benefits of DevOps? So there are five
  13044. 8:39:54benefits of DevOps which we'll
  13045. 8:39:56understand one by one. So first is team.
  13046. 8:40:00DevOps practices let you move at a
  13047. 8:40:02velocity you need to innovate faster,
  13048. 8:40:05adapt to changing marketing better and
  13049. 8:40:07become more efficient at driving
  13050. 8:40:09business results. Second benefit is
  13051. 8:40:12rapid delivery. So when you increase the
  13052. 8:40:14pace of the releases, you can improve
  13053. 8:40:17your product faster and build
  13054. 8:40:19competitive advantage. Third is
  13055. 8:40:21reliability. In this DevOps practices
  13056. 8:40:24like continuous integration and
  13057. 8:40:27continuous delivery can ensure the
  13058. 8:40:29quality of application updates and
  13059. 8:40:31infrastructure changes so you can
  13060. 8:40:33reliably deliver at more rapid pace
  13061. 8:40:36while maintaining an optimum experience
  13062. 8:40:39for end users. At number four, improved
  13063. 8:40:42collaboration. Under DevOps model,
  13064. 8:40:44developers and operation teams
  13065. 8:40:46collaborate closely, share
  13066. 8:40:48responsibilities and combine their
  13067. 8:40:50workflows. This reduces inefficiency and
  13068. 8:40:53saves time as well. And finally, number
  13069. 8:40:57five, we have security. So you can adopt
  13070. 8:41:00a DevOps model without sacrificing
  13071. 8:41:03security by using automated integrated
  13072. 8:41:06security testing tools. So these were
  13073. 8:41:08the five benefits of DevOps which makes
  13074. 8:41:10it more demanding. Let's move on to
  13075. 8:41:13number six. So the number six question
  13076. 8:41:15is name a few DevOps tools. So the
  13077. 8:41:18answer to this is some of the popular
  13078. 8:41:20DevOps tools are Git, Selenium, Jenkins,
  13079. 8:41:24Puppet, Chef, Anible, Negios, Docker. So
  13080. 8:41:28you can answer any of the four DevOps
  13081. 8:41:31tools which are easy to remember. Moving
  13082. 8:41:34ahead with the next question. What are
  13083. 8:41:36the popular DevOps tools for continuous
  13084. 8:41:39integration and continuous deployment?
  13085. 8:41:42So, Azure pipeline support Mac OS,
  13086. 8:41:45Windows and Linux. So, some of the
  13087. 8:41:48popular DevOps tools for continuous
  13088. 8:41:50integration and continuous deployment
  13089. 8:41:52are genkins and team. These two are the
  13090. 8:41:55DevOps tools which provide you both
  13091. 8:41:57continuous integration and continuous
  13092. 8:41:59deployment. Quickly moving ahead with
  13093. 8:42:01the next question. Question number eight
  13094. 8:42:04that is what are Azure boards? So Azure
  13095. 8:42:08board is a user interface that allows
  13096. 8:42:10you to keep a track of task defects and
  13097. 8:42:13features in your software project. It
  13098. 8:42:15enables you to monitor all your ideas to
  13099. 8:42:18each development stage in order to keep
  13100. 8:42:21your team on track with all the
  13101. 8:42:23essential code modification related to
  13102. 8:42:26your work procedure. Azure boards
  13103. 8:42:28include features like boards, sprints,
  13104. 8:42:31work items, dashboards, backlogs,
  13105. 8:42:34queries, etc. Going ahead, what is Azure
  13106. 8:42:39repos? This is a basic Azure DevOps
  13107. 8:42:41interview question, but it can be
  13108. 8:42:43difficult to answer. So, the answer to
  13109. 8:42:46this is Azure repos is a collection of
  13110. 8:42:48version control tools for managing your
  13111. 8:42:51code. Using version control as soon as
  13112. 8:42:54visible whether your software project is
  13113. 8:42:56huge or little is a smart idea. Version
  13114. 8:42:59control systems are a piece of software
  13115. 8:43:01that allow you to keep a track of
  13116. 8:43:03changes to your code over time. Azure
  13117. 8:43:06repos offer centralized version control
  13118. 8:43:08system as well as the distributed
  13119. 8:43:11version control system that is git. At
  13120. 8:43:14number 10, what are containers?
  13121. 8:43:17Containers are software packages that
  13122. 8:43:19include all the components required to
  13123. 8:43:21execute in any environment. Containers
  13124. 8:43:24virtualize the operating system in this
  13125. 8:43:26fashion, allowing them to operate
  13126. 8:43:29anywhere from private data center to a
  13127. 8:43:32public cloud or even a developer's own
  13128. 8:43:35laptop. Containers also provide the
  13129. 8:43:37means to package software code, its
  13130. 8:43:40configuration, dependencies and packages
  13131. 8:43:43into a single unit or object. Multiple
  13132. 8:43:46containers can run on the same machine
  13133. 8:43:48or share OS with containers for running
  13134. 8:43:51fast, reliable and consistent deployment
  13135. 8:43:54anywhere. Moving ahead, what containers
  13136. 8:43:57does Azure DevOps support? So, Azure
  13137. 8:44:00DevOps support the following containers
  13138. 8:44:03such as Docker, Azure Kubernetes
  13139. 8:44:06Service, ASP.NET with containers, Azure
  13140. 8:44:09service fabric application with Docker
  13141. 8:44:12support. So these are the containers
  13142. 8:44:14which are supported by Azure DevOps.
  13143. 8:44:16Moving ahead, what are Azure pipelines?
  13144. 8:44:20Azure pipeline is a cloud service that
  13145. 8:44:22allows us to automatically create and
  13146. 8:44:24test our code projects. The Azure
  13147. 8:44:27pipeline includes several features such
  13148. 8:44:29as continuous integration and continuous
  13149. 8:44:32delivery that allow us to test and build
  13150. 8:44:34our code on regular and consistent basis
  13151. 8:44:37and ship to any destination. It
  13152. 8:44:40automatically develops and tests the
  13153. 8:44:42code projects. It is a service on the
  13154. 8:44:44Azure cloud that offers well with most
  13155. 8:44:47project types and languages. Going ahead
  13156. 8:44:50at number 13. What is the use of
  13157. 8:44:53Selenium in DevOps? Selenium is widely
  13158. 8:44:56used browser automation technology and
  13159. 8:44:58testing teams heavily rely on it in
  13160. 8:45:01DevOps pipeline. It is an open-source
  13161. 8:45:04solution that saves money for testing
  13162. 8:45:07teams and functional testers that are in
  13163. 8:45:10charge of UI testing. It specializes in
  13164. 8:45:13the form of regression and functional
  13165. 8:45:15testing. At number 14, what are Azure
  13166. 8:45:18test plans? This is another one of the
  13167. 8:45:21popular interview questions asked in
  13168. 8:45:23Azure DevOps. So the answer to this is
  13169. 8:45:26Azure test plans is a service provided
  13170. 8:45:29by Azure DevOps that offers a
  13171. 8:45:31browserbased test management solution
  13172. 8:45:34for exploratory scheduled manual and
  13173. 8:45:37user acceptance testing. In addition,
  13174. 8:45:40Azerest plans includes a browser
  13175. 8:45:42extension for exploratory testing and
  13176. 8:45:45getting feedbacks for the stakeholders.
  13177. 8:45:48Additionally, it also focuses on
  13178. 8:45:50automated testing. It combines the
  13179. 8:45:53contribution from developers, managers,
  13180. 8:45:55testers, product owners and user
  13181. 8:45:58experience advocates and enhance the
  13182. 8:46:01quality of the project. Moving ahead,
  13183. 8:46:04what are the some important features of
  13184. 8:46:06meme cachade? So, meme cashachade offers
  13185. 8:46:08a wide variety of features. Some of them
  13186. 8:46:11are like it is an open-source, it's a
  13187. 8:46:14UDP or TCP server client program, it
  13188. 8:46:18works as a standalone service. The
  13189. 8:46:20caching nodes are very ignorant. So they
  13190. 8:46:23don't have other nodes involved. They're
  13191. 8:46:25also under the license of Blay software
  13192. 8:46:28distribution and it reduces the database
  13193. 8:46:30load. So these were some of the
  13194. 8:46:32important features of meme caching.
  13195. 8:46:35Quickly moving ahead at number 16. What
  13196. 8:46:38is a dockpile effect and how can you
  13197. 8:46:40prevent it? So a dopile effect refers to
  13198. 8:46:43an effect that occurs when a cache
  13199. 8:46:46expires and websites are attacked by
  13200. 8:46:48several requests sent by the client at
  13201. 8:46:51the same time. It indicates the expiry
  13202. 8:46:53of cachier followed by the website being
  13203. 8:46:55simultaneously hit by numerous respects.
  13204. 8:46:58In simple terms, it indicates the expiry
  13205. 8:47:01of cache followed by the website being
  13206. 8:47:03simultaneously hit by numerous requests.
  13207. 8:47:06This impact can be avoided by employing
  13208. 8:47:09semaphore log. When a log expires in
  13209. 8:47:12this system, the first process gains the
  13210. 8:47:14lack and begins creating the fresh
  13211. 8:47:16value. At number 17, what is continuous
  13212. 8:47:19testing? What is the use of test
  13213. 8:47:22automation in DevOps? As we know, DevOps
  13214. 8:47:25is all about people, culture, and
  13215. 8:47:27automation. In this continuous testing
  13216. 8:47:29is the process of running automated
  13217. 8:47:31tests as a part of the software delivery
  13218. 8:47:34pipeline to get feedback on the business
  13219. 8:47:37risks associated with a software release
  13220. 8:47:40candidate as soon as visible. DevOps use
  13221. 8:47:44test automation to use the test cases to
  13222. 8:47:46find the flaws and save time. Unlike
  13223. 8:47:49manual testing, automation test cases
  13224. 8:47:52accelerate testing allowing you to get
  13225. 8:47:55products to market faster. Moving ahead
  13226. 8:47:58number 18. What is a forking workflow?
  13227. 8:48:02So before we get to know what is forking
  13228. 8:48:04workflow, let us know what is forking.
  13229. 8:48:06So forking is a git clone process that
  13230. 8:48:09is performed on server copy of the
  13231. 8:48:12project's repository. The forking method
  13232. 8:48:14supports open-source projects and
  13233. 8:48:16isolates changes from the main
  13234. 8:48:18repository until they are ready to be
  13235. 8:48:20integrated. What is forking workflow?
  13236. 8:48:23Poking workflow is a git clone process
  13237. 8:48:25that is performed on a server copy of a
  13238. 8:48:28project's repository. This method
  13239. 8:48:31supports an open-source projects and
  13240. 8:48:33isolates changes from the main
  13241. 8:48:35repository until they are ready to be
  13242. 8:48:38integrated.
  13243. 8:48:40Moving ahead, what are some of the
  13244. 8:48:42useful plugins in Genkins? So, it has a
  13245. 8:48:45very simple answer. So there are many
  13246. 8:48:48useful Jenkin plugins out of which would
  13247. 8:48:50be describing few. So among them are
  13248. 8:48:54Amazon EC2, Maven 2 project, HTML
  13249. 8:48:58publisher, join, copy artifact, green
  13250. 8:49:01balls and many more. So these are few
  13251. 8:49:04useful Genkin plugins and it will be
  13252. 8:49:06very easy for you to remember it.
  13253. 8:49:09Quickly moving ahead with number 20. Can
  13254. 8:49:12we move or copy Genkins from one server
  13255. 8:49:16to another? So the answer to this is
  13256. 8:49:18yes, it is possible. Genkins can be
  13257. 8:49:21removed from one server to another just
  13258. 8:49:23by cloning the job directory from the
  13259. 8:49:25previous server to the new or the
  13260. 8:49:27current one and later you can rename it.
  13261. 8:49:30This enables moving an installation by
  13262. 8:49:34copying the corresponding job title. So
  13263. 8:49:36these were the top 20 Azure DevOps
  13264. 8:49:38interview questions. So let's look on to
  13265. 8:49:40some scenario based Azure DevOps
  13266. 8:49:42interview questions. So the first one is
  13267. 8:49:45we have 50 commits in develop branch out
  13268. 8:49:48of which only five commits need to be
  13269. 8:49:50pushed in the release branch which will
  13270. 8:49:53eventually deployed in the production.
  13271. 8:49:56Okay. So the question is we have around
  13272. 8:49:5850 commits in the develop branch which
  13273. 8:50:01is mostly used for development
  13274. 8:50:03activities. So in that we have multiple
  13275. 8:50:06comets and the release branch is used to
  13276. 8:50:09release your changes into your proper
  13277. 8:50:11environments like your stage production.
  13278. 8:50:14So here out of 50 only five commits need
  13279. 8:50:17to be posted into the release branch. So
  13280. 8:50:20the best way to achieve it is through
  13281. 8:50:23git cherrying. Git cherry picking is the
  13282. 8:50:25act of picking a commit from a branch
  13283. 8:50:28applying it to another. Git cherrypick
  13284. 8:50:30can be useful for undoing changes. For
  13285. 8:50:34example, say a commit is accidentally
  13286. 8:50:36made to the wrong branch. So what you
  13287. 8:50:38can do? You can switch to the correct
  13288. 8:50:40branch and cherrypick the commit to
  13289. 8:50:42where it should belong. More simply, it
  13290. 8:50:45would be like a box of cherry in which
  13291. 8:50:48you have to pick five best cherries out
  13292. 8:50:50of it. So you start picking the best
  13293. 8:50:52cherries and if you want to run this
  13294. 8:50:54cherry picking, you need to use the g
  13295. 8:50:57console. So using the gitline command,
  13296. 8:50:59you can initiate the cherry picking. So
  13297. 8:51:02let's move on to our second scenario. So
  13298. 8:51:05in the second scenario, a developer has
  13299. 8:51:08created an ASP.NET core application and
  13300. 8:51:11now he wishes to automate the entire
  13301. 8:51:13build and release process through Azure
  13302. 8:51:16DevOps. Guide the developer with the
  13303. 8:51:18entire end toend process and deploy the
  13304. 8:51:21application on Azure web app using IA
  13305. 8:51:24methodology. Okay. So guys as you can
  13306. 8:51:27see that we have multiple questions and
  13307. 8:51:30in this entire scenario which we are
  13308. 8:51:32talking about. The first question is
  13309. 8:51:34that there is a developer which is very
  13310. 8:51:37much new to DevOps and he has reached
  13311. 8:51:39out of the reaches of uh DevOps engineer
  13312. 8:51:42and now he asked how to automate the
  13313. 8:51:45entire build and release process and in
  13314. 8:51:47the another scenario we need to deploy
  13315. 8:51:50this on the Azure web app using the IA
  13316. 8:51:54methodology. So the first step is to be
  13317. 8:51:57taken by the developer to build the
  13318. 8:51:58application locally. After that we
  13319. 8:52:01create a Azure repos and push the source
  13320. 8:52:04code in the remote repository along with
  13321. 8:52:06the IA configuration file. And lastly we
  13322. 8:52:10create a build pipeline classic or YL
  13323. 8:52:13based in which we can build the solution
  13324. 8:52:15using MS build or VS build. Run the code
  13325. 8:52:18analysis through sonar cube vera code
  13326. 8:52:21etc. Run code coverage. copy ARM or
  13327. 8:52:25Terraform configuration files also
  13328. 8:52:27publish the artifact either on
  13329. 8:52:29fillershare or Azure pipeline drop
  13330. 8:52:32location. So this was the answer to the
  13331. 8:52:34scenario. Moving ahead with the next
  13332. 8:52:37scenario. Here the developer named Ram
  13333. 8:52:40has few comets changes in his local
  13334. 8:52:43branch and now he has to empty the
  13335. 8:52:46current work directory to accommodate
  13336. 8:52:48emergency change. So how can Ram handle
  13337. 8:52:51such scenario without losing his
  13338. 8:52:53uncommit changes? So to achieve this he
  13339. 8:52:57used get stash. What is get stash? Git
  13340. 8:53:00stash is a command that takes your
  13341. 8:53:02uncommitted changes that is both staged
  13342. 8:53:04and upstaged and save them away from and
  13343. 8:53:08save them away for later use and then
  13344. 8:53:11reverts them from your working copy. So
  13345. 8:53:13there are commands like get stash which
  13346. 8:53:15stashes the uncommit changes and next is
  13347. 8:53:19get stash list. So you can list all the
  13348. 8:53:22stashed changes. Then there are other
  13349. 8:53:25commands like get statch pop to reapply
  13350. 8:53:28the most re recent stat changes and get
  13351. 8:53:32stat drop to drop the most recent stat
  13352. 8:53:35changes. So this is how he can overcome
  13353. 8:53:37this scenario without losing any of his
  13354. 8:53:40uncommit changes. Let's quickly look on
  13355. 8:53:43to our next scenario that is a developer
  13356. 8:53:46has developed a micros service
  13357. 8:53:48application that is ASP.NET code and it
  13358. 8:53:51automates the entire end to-end process
  13359. 8:53:53to deploy the application on Azure
  13360. 8:53:56Kubernetes service. Make sure to use
  13361. 8:53:59pipeline as a code methodology for the
  13362. 8:54:01entire build and release. So for this he
  13363. 8:54:05needs the first step to be taken is by
  13364. 8:54:07the developer to build the application
  13365. 8:54:10locally. Then he needs to create an
  13366. 8:54:12Azure report and push the source code in
  13367. 8:54:14a remote repository along with the IAC
  13368. 8:54:17configuration file. Then again he needs
  13369. 8:54:20to create a build pipeline classic or
  13370. 8:54:23EML based as we had discussed in the
  13371. 8:54:26previous scenarios. Then after that he
  13372. 8:54:29needs to use an ARM template or a
  13373. 8:54:32Terraform configuration to create an
  13374. 8:54:34Azure web app. later he can create a
  13375. 8:54:37release pipeline and run the ARM
  13376. 8:54:40template task and post web app creation
  13377. 8:54:43he can run ASP.NET application
  13378. 8:54:46deployment task. So this was the answer
  13379. 8:54:48to this scenario. So let's check on to
  13380. 8:54:52our last scenario that is a developer
  13381. 8:54:54has developed an application module and
  13382. 8:54:56while developing he made around 100
  13383. 8:54:59commits locally. Now he needs to push
  13384. 8:55:03all his changes into a remote develop
  13385. 8:55:06branch as a single commit. We don't want
  13386. 8:55:09the developers messy history in the
  13387. 8:55:11develop branch. So the answer to this
  13388. 8:55:14question is get squash. So what is g
  13389. 8:55:17squash? G squash is a technique that
  13390. 8:55:20helps you take a series of comet and
  13391. 8:55:22condense it to the few comets. That
  13392. 8:55:26means you can condense into one single
  13393. 8:55:28commit and those 100 commits will be
  13394. 8:55:31condensed and converted into one single
  13395. 8:55:34commit. So you can use the get command
  13396. 8:55:37line that is get rebase-en
  13397. 8:55:40I head three where I represents
  13398. 8:55:43interactive. So it is interactive head
  13399. 8:55:46and three means it will take the last
  13400. 8:55:49three commits you want to try on your
  13401. 8:55:51console or get command or get command
  13402. 8:55:55line. So this was the answer to this
  13403. 8:55:57scenario. I hope this will help you out
  13404. 8:55:59to crack your interviews. And with this
  13405. 8:56:02we have come to an end to this full
  13406. 8:56:04course on Azure DevOps. If you enjoyed
  13407. 8:56:07listening to this full course please be
  13408. 8:56:09kind enough to like it and you can
  13409. 8:56:11comment on any of your doubts and
  13410. 8:56:12queries. We will reply to them at the
  13411. 8:56:14earliest. And do look out for more
  13412. 8:56:16videos and playlist and subscribe to
  13413. 8:56:18Edureka's YouTube channel to learn more.
  13414. 8:56:20Thank you for watching and happy
  13415. 8:56:22learning.

About this transcript

This page contains the full transcript of Azure DevOps Full Course in 8 Hours [2025] | Azure DevOps Tutorial For Beginners | Edureka Live by edureka!, generated from the public captions YouTube serves with the video. The transcript has 89,532 words across 13,415 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.