Azure DevOps Full Course in 8 Hours [2025] | Azure DevOps Tutorial For Beginners | Edureka Live — Transcript
Full transcript
- 0:08Hello everyone and welcome to the Azure
- 0:10DevOps full course. In today's
- 0:12fast-paced development world, Azure
- 0:14DevOps is a purple suit of tools that
- 0:17helps team plan, develop, test, and
- 0:20deliver software efficiently. This
- 0:22course is designed to give you a
- 0:23complete understanding of DevOps
- 0:25practices using Microsoft Azure. You
- 0:28will learn how to manage code with Git,
- 0:30set up CI/CD pipelines, automate
- 0:32deployments, track work with Azure
- 0:34boards, manage test plans, and use
- 0:37artifacts efficiently. We will also dive
- 0:39into Azure repositories, pipelines, and
- 0:42integrate tools with Docker and
- 0:44Kubernetes. Whether you're a developer,
- 0:46tester or IT professional, this course
- 0:49equips you with the practical skills
- 0:50needed to implement DevOps on the Azure
- 0:53platform and prepare for roles like
- 0:55Azure DevOps engineer or pass
- 0:57certification exams like AZ 400. So
- 1:00before we begin, please like, share and
- 1:02subscribe to Edureka's YouTube channel
- 1:04and hit the bell icon to stay updated on
- 1:06the latest content from Edureka. Also
- 1:09check out Edureka's Microsoft Azure
- 1:11DevOps certification course designed by
- 1:13experts to meet current industry
- 1:15standards. This comprehensive training
- 1:17prepares you for the Microsoft certified
- 1:19DevOps engineer expert certification.
- 1:22You will gain hands-on skills in
- 1:23designing and implementing DevOps
- 1:25strategies including collaboration,
- 1:27source control, security, compliance,
- 1:30continuous integration, continuous
- 1:32delivery and monitoring. So check out
- 1:34the course link given in the description
- 1:36box below. Now let's get started with
- 1:38our first topic that is what is Azure.
- 1:42>> Let's get started with the video. Let's
- 1:44kick things off by talking about why
- 1:47businesses and everybody for that matter
- 1:49need cloud computing. Here's an example.
- 1:52Meet John who is an entrepreneur who has
- 1:55a brilliant idea for an app which solves
- 1:57a problem and has a great user
- 1:59experience. So what does John need? John
- 2:02will need developers to build his app.
- 2:05But other than that in terms of
- 2:07infrastructure he will need servers then
- 2:10he will need storage devices a dedicated
- 2:13network security systems and of course
- 2:16he will need a dedicated IT operations
- 2:18team to monitor the whole infrastructure
- 2:21and make sure everything is working
- 2:22properly. John figured that there would
- 2:25be four major problems with this setup.
- 2:27And what are those? Let's take a look.
- 2:29So the first problem is that owning his
- 2:32own infrastructure would require a huge
- 2:34amount of money and because of a huge
- 2:37investment in setup of the
- 2:38infrastructure this would also greatly
- 2:41increase the risk if the app fails.
- 2:44Second problem is that he noticed that
- 2:46the infrastructure would take too long
- 2:48to set up as he would have to buy all
- 2:50the components required for his
- 2:51infrastructure. Then hire IT technicians
- 2:54to install all the components and
- 2:56connect everything up so that everything
- 2:59is talking to each other and working
- 3:00nicely. So that means more money and
- 3:03more time. Next, he realized that even
- 3:06after the expensive setup of the
- 3:07infrastructure, he would have to hire a
- 3:09team of IT operations to work around the
- 3:12clock for the upkeep of the
- 3:14infrastructure. This would include
- 3:16things like resolving issues with the
- 3:18hardware or software, replacing broken
- 3:20pieces of the infrastructure so he would
- 3:22need to have spare parts on hand,
- 3:24switching to backup servers if the
- 3:26server goes down, preventative
- 3:28maintenance and so on means more money
- 3:31and more headaches when the issues crop
- 3:34up. Another problem has to do with the
- 3:36inability of the infrastructure to
- 3:38scale. So what if the traffic on the
- 3:40servers increases or decreases abruptly?
- 3:43Well, if the traffic increases, he will
- 3:45have to scale the infrastructure to meet
- 3:47that demand, which means expanding the
- 3:49infrastructure. So, buying more
- 3:51components, probably renting more office
- 3:53spaces, hiring more IT staff to monitor
- 3:56the expanded infrastructure, and so on.
- 3:59But what if there's a sudden drop in the
- 4:01demand? All of this extra infrastructure
- 4:03and resources will sit idle. What about
- 4:06the extra people he hired? He will have
- 4:08to let them go. Well, it's terrible, but
- 4:11he may have to. Well, now let me tell
- 4:13you John was smart. He did not opt for
- 4:15this setup. He opted for cloud computing
- 4:18because he was studying up on cloud
- 4:20computing and he found that all big and
- 4:22small companies that are at the top in
- 4:24their domains are using cloud computing.
- 4:26And this research into cloud computing
- 4:28was a real eye opener as he found that
- 4:31all these issues that he would face with
- 4:33the infrastructure that we just talked
- 4:35about could be solved by using the
- 4:37cloud. So obviously he opted for cloud.
- 4:40This is because there was almost no
- 4:43initial setup cost required and it could
- 4:45be done in a few minutes or hours by
- 4:47using a single computer and he wouldn't
- 4:50need a dedicated team to take care of
- 4:51the physical machines because that is
- 4:54taken care of by the cloud provider. And
- 4:58finally to John's relief, infrastructure
- 5:00in the cloud scales automatically as the
- 5:03demand changes. Isn't that freaking
- 5:05amazing? So why don't we find out more
- 5:08about cloud computing in this next
- 5:10section. What is cloud computing? Cloud
- 5:13computing is the delivery of the
- 5:14computing services like servers,
- 5:17storage, databases, networking,
- 5:19software, analytics, intelligence and so
- 5:22on over the internet which we call
- 5:25colloally the cloud. Okay. So let's
- 5:28understand that John takes a computer
- 5:31that is connected to the internet. Then
- 5:33he accesses the resources on cloud
- 5:35platform. So these resources that John
- 5:38needs are running on physical machines
- 5:41in the data center that are owned by
- 5:42cloud providers. So like I said before,
- 5:45all John needs is a computer that is
- 5:47connected to the internet and the
- 5:49remainder of the infrastructure is
- 5:50actually provided by the cloud provider
- 5:53and he can access the resources that he
- 5:55needs from the data center using the
- 5:58cloud platform. So how does this work?
- 6:01Well, first John goes to the cloud
- 6:03provider whichever one he likes the
- 6:05most. Amazon web services, Microsoft
- 6:08Azure, Google Cloud, these are the top
- 6:11cloud providers. So after going to the
- 6:13cloud provers website, he signs up for
- 6:16an account and then he signs up for the
- 6:18services as per his requirements and
- 6:20configures the resources that he will
- 6:22need for the app to run on. And the
- 6:25amazing thing is that he only pays for
- 6:27the services that he uses and for the
- 6:30amount of time that the services were up
- 6:32for. Isn't that amazing? Of course it
- 6:35is. So let's now talk about what is
- 6:37Azure. Azure is a cloud platform that is
- 6:40provided by the company Microsoft from
- 6:43which you can rent your resources and
- 6:45services. So you can grab a computer
- 6:47that is connected to internet then go to
- 6:50Azure portal on your web browser and
- 6:52then access the resources that you need
- 6:54by signing up with Microsoft Azure. So
- 6:57now it's time to find out which cloud
- 6:59platform did John choose. It's kind of a
- 7:01no-brainer, but here's what John says.
- 7:04The developers of my app and I we all
- 7:07use Windows OS and other Microsoft
- 7:10products. So we wanted a cloud service
- 7:12that is best compatible with them. Can
- 7:15you guess which one this is? Of course
- 7:17it is Microsoft Azure because it is most
- 7:20compatible with the Microsoft products.
- 7:22So before we talk about the services,
- 7:24why don't we find out some of the
- 7:25interesting things about Azure. Just
- 7:27like every other cloud platform, Azure
- 7:30provides five distinct type of services.
- 7:34infrastructure as a service, platform as
- 7:36a service, software as a service,
- 7:39container as a service, and functions as
- 7:41a service. Apart from that, Azure has 22
- 7:44main categories of products which we
- 7:46will take a look at later on. Next,
- 7:49Azure is operating globally in 60 plus
- 7:51regions and provides its services to 140
- 7:55countries and counting. So, just like
- 7:58the major cloud platforms, Azure
- 8:00provides pay as you go plans and free
- 8:02plan. So there are actually no upfront
- 8:05fees for signing up with Azure and you
- 8:07can pay as you go and only pay for the
- 8:09time your services are running and just
- 8:12like every other cloud platform, Azure
- 8:14provides free basic plan which is
- 8:15surprisingly good and it is valid for 12
- 8:18months. So you can tinker around and see
- 8:22if you like it. Okay, so what about the
- 8:24languages that are supported on
- 8:25Microsoft Azure? They are C, F, Java,
- 8:29TypeScript and Python. Now let's move on
- 8:32to the next section where we discussed
- 8:34the services offered on Azure. So in the
- 8:37previous section you probably remember
- 8:38that I mentioned that Azure has 22
- 8:41categories of products. But what I did
- 8:43not mention is that it has over 600
- 8:46services. So obviously we are not going
- 8:48to be able to have enough time to
- 8:50discuss all 600 services. So here's your
- 8:53homework. Go to Azure's website and
- 8:55check out each of these categories and
- 8:57read up on them. If you have any
- 8:59questions, come back to this video and
- 9:01comment down in the section and we will
- 9:03be more than happy to answer any of
- 9:05those for you. So, I hope that you got a
- 9:08picture of all the categories of
- 9:09services provided by Microsoft Azure.
- 9:12So, let's now go back to John. John
- 9:14needed three services. They were
- 9:16compute, networking, and storage. So,
- 9:19let's take a look at each one of these
- 9:22in a little bit of a detail and then
- 9:23move on. So the first product that he's
- 9:26going to need to build his
- 9:27infrastructure in the cloud is compute.
- 9:29He can use this to deploy and manage
- 9:32virtual machines, containers, and batch
- 9:34jobs as well as support remote
- 9:37application access. Compute resources
- 9:39created within the cloud can be
- 9:41configured with either public IP
- 9:43addresses or private IP addresses
- 9:46depending on whether the resource needs
- 9:48to be accessible to the outside world.
- 9:50So some of the services that are offered
- 9:52within compute product are virtual
- 9:54machine, containers, kubernetes service,
- 9:57cloud services, mobile apps. Let's move
- 10:00on to talk about the next which is
- 10:02networking. So after setting up the
- 10:04virtual machines using the compute
- 10:06product, he will require networking in
- 10:09order to connect those virtual machines
- 10:10up so they can talk to each other and
- 10:13form a network. So this product gives
- 10:15you the ability to set up virtual
- 10:17networks, dedicated connections and
- 10:20gateways and it also gives you services
- 10:23for traffic management and diagnosis,
- 10:26load balancing, DNS hosting and network
- 10:30protection against some of the attacks
- 10:32like DDoS.
- 10:34Next one that John needs is storage
- 10:36obviously for his virtual machines so
- 10:39that they can store customer data and
- 10:41use backup storage for all of the
- 10:44infrastructure. So there are various
- 10:46services that are offered within storage
- 10:48like Azure disc storage, blob storage,
- 10:51Azure backup, Q storage and many more.
- 10:55This category of services provides
- 10:57scalable cloud storage for structured
- 11:00and unstructured data. It also supports
- 11:03big data projects, persistent storage
- 11:06and archival storage. Similarly, there
- 11:09are 19 more categories that provide
- 11:11services that can cater to all needs of
- 11:14any organization or company, which
- 11:16brings us to our next section, which is
- 11:19companies using Azure. Let's see which
- 11:21companies use Azure. So, hundreds of big
- 11:24companies use Azure, but these are the
- 11:27ones that I picked for you guys because
- 11:29each one of these use Azure for a
- 11:31different purpose. So, let's check that
- 11:34out. eBay has been using Azure for app
- 11:37development and hosting since 2010,
- 11:39which is the same year Microsoft
- 11:41announced Azure to the world. Boeing
- 11:44mainly uses Azure for its data analytics
- 11:47services for things like crew planning,
- 11:50maintenance optimization, fuel
- 11:52optimization, and crew training by
- 11:54building predictive models on the
- 11:57platform. BMW uses Azure's Internet of
- 12:01Things to make manufacturing process
- 12:04within their factories more efficient by
- 12:06connecting all different machines,
- 12:08sensors, and other devices. On the other
- 12:11hand, Samsung has used Azure for its
- 12:14smart TV infrastructure. The entire
- 12:17smart TV infrastructure is actually on
- 12:19the Azure platform. By choosing Azure,
- 12:22Samsung was able to achieve a
- 12:24significant reduction in costs and
- 12:26increased capacity in order to meet its
- 12:29rapidly growing customer base.
- 12:37Now let us understand what is Azure
- 12:39certification. Azure certification is a
- 12:42level of Microsoft cloud expertise that
- 12:44an individual obtains by passing one or
- 12:47more certification exams. Microsoft
- 12:49Azour certification validates an
- 12:51individual cloud expertise and skills.
- 12:54Now let us move on to our next topic and
- 12:56see some of the benefits of Azure
- 12:57certification.
- 12:59With an Azure certification, you
- 13:01validate your cloud skills in your
- 13:02selected domain. You will earn the
- 13:04credibility and your present or your
- 13:06future employee will know for sure that
- 13:08you have worked on Azure and have the
- 13:10skill as you mentioned. The next
- 13:12advantage is you'll have higher salary
- 13:14packages. Business wire has estimated
- 13:16that Azure course certification have
- 13:19raised their wages by 20 to 40%.
- 13:22bayscale.com also announced that based
- 13:24on the position and job description
- 13:26those credited by Microsoft Azure could
- 13:28get a salary of $128,000
- 13:31peranom with the Azure certification you
- 13:34can pursue a wide range of career
- 13:36options you can become a cloud architect
- 13:38a developer or solution architect or
- 13:41even AI engineer there are many options
- 13:43and in addition to this the
- 13:45certification enables you to work with
- 13:47different industry at different
- 13:48locations
- 13:50the next advantage would be it provides
- 13:52a proof of commitment. To get an Azour
- 13:55certification, you should be able to
- 13:56commit yourself to it. You would have to
- 13:59sign up for a course, study and then
- 14:01only pass the exam. That would imply
- 14:03that you can commit your time and
- 14:05resources towards achieving your goal
- 14:07and that you're dedicated to improving
- 14:08your career objectives in the long term.
- 14:11These were some of the benefits of Azure
- 14:13certification. Now, let us move on to
- 14:15our next topic and see what are the
- 14:16types of Azure certification.
- 14:19First we'll take a look at different
- 14:20Azure certification based on job roles.
- 14:23So first we have developer certification
- 14:25who designs build and test cloud
- 14:27solutions. Second a system administrator
- 14:30who implements monitors and maintains
- 14:32Microsoft solution. Third is solution
- 14:34architect who expertise in compute
- 14:37network storage and security. Fourth we
- 14:39have the data engineer who designs and
- 14:41implement the management monitoring
- 14:43security and privacy of data using the
- 14:45full stack of data services. Fifth is
- 14:48data scientist who applies machine
- 14:50learning techniques to train, evaluate
- 14:52and deploy models that solve business
- 14:54problems. And then sixth we have the AI
- 14:57engineer who use cognitive services,
- 14:59machine learning and knowledge mining to
- 15:01architect and implement Microsoft AI
- 15:03solutions. On seventh we have DevOps
- 15:06engineer who combines people, process
- 15:08and technologies to continuously deliver
- 15:11valuable products and services to his
- 15:12company. ETH is a security engineer who
- 15:15implements security control and thread
- 15:17protection. He also manages identity and
- 15:20access and protects data application and
- 15:22networks. And last we have the
- 15:24functional consultant who leverages
- 15:26Microsoft Dynamics 365 and Microsoft
- 15:29Power Platform to anticipate and plan
- 15:31for customer needs. Microsoft Azure
- 15:34certification have four level of
- 15:36certification. First is the fundamental
- 15:38level. Second is the associate level.
- 15:41Third is expert and we have specialtity.
- 15:44Now specialtity certification is a
- 15:46certification based on a particular
- 15:47domain. Now let us move on to our next
- 15:50topic and see some of the major job role
- 15:52based certification. Now before we get
- 15:54into any major role-based certification,
- 15:56I would like to talk about a fundamental
- 15:58certification which is Microsoft
- 16:00certified Azure fundamentals or a900.
- 16:04Now this certification is intended for
- 16:06candidates who are just beginning to
- 16:08work with cloud-based solution and
- 16:09services or who are new to Azure
- 16:11platform. This certification will
- 16:13provide an opportunity to prove your
- 16:15knowledge of cloud concepts, Azure
- 16:17services, Azure workloads, security and
- 16:19privacy in Azure as well as Azure
- 16:21pricing and support. Candidate who take
- 16:24the certification should be familiar
- 16:25with general technology concepts
- 16:27including concepts of networking,
- 16:29storage, compute, application support
- 16:32and application development. The AZ900
- 16:35certification is a fundamental
- 16:37certification which can be used to
- 16:38prepare for any other Azure role-based
- 16:40or specialtity certification but it is
- 16:43not a prerequisites for any of them. Now
- 16:46let us see some of the major role-based
- 16:47Azure certification. We have the Azure
- 16:50administrator associate or A 104.
- 16:53Candidates for the Azure administrator
- 16:55associate certification should have
- 16:57subject matter expertise in
- 16:59implementing, managing and monitoring an
- 17:01organization's Microsoft Azure
- 17:03environment. The responsibility include
- 17:06implementing, managing and monitoring
- 17:08the identity, governance, storage,
- 17:11compute and virtual network in a cloud
- 17:13environment. They also have to monitor
- 17:15and adjust resources wherever and
- 17:16whenever needed. They often serve as a
- 17:19part of larger team dedicated to
- 17:21implementing an organization's cloud
- 17:22infrastructure. For this certification,
- 17:25a candidate should have at least 6
- 17:27months of hands-on experience
- 17:28administrating Azure. Along with that,
- 17:30they should also have strong
- 17:31understanding of core Azure services,
- 17:34Azure workloads, security and
- 17:35governance. The next certification is
- 17:38Azure Developer Associate or A24.
- 17:42Candidates for the Azure Developer
- 17:43Associate Certification should have
- 17:45subject matter expertise in designing,
- 17:48building, testing and maintaining cloud
- 17:50application and services on Microsoft
- 17:52Azure. The responsibilities include
- 17:54participating in all phases of cloud
- 17:56development from requirements definition
- 17:58and design to development, deployment
- 18:01and maintenance to performance tuning
- 18:03and monitoring. Azure developers should
- 18:05participate with cloud solution
- 18:07architect, cloud administrator and
- 18:09clients to implement solutions. A
- 18:11candidate appearing for this
- 18:12certification should have at least one
- 18:14or two years professional development
- 18:16experience and experience with Microsoft
- 18:18Azure. Next, we have an expert level
- 18:21certification which is Azure solutions
- 18:23architect expert or a3 or 3.4.
- 18:27Candidates for the Azure solution
- 18:28architect expert certification should
- 18:31have subject matter expertise in
- 18:32designing and implementing solution that
- 18:34run on Microsoft Azure which would
- 18:36include aspects like compute, network,
- 18:39storage and security. The
- 18:41responsibilities include advising
- 18:42stakeholders and also translating
- 18:45business requirements into secure,
- 18:47scalable and reliable cloud solutions.
- 18:49They should partner with cloud
- 18:51administrator, cloud DBAs and clients to
- 18:53implement solutions. A candidate
- 18:56appearing for the certification should
- 18:57have advanced experience and knowledge
- 18:59of IT operation and also know how
- 19:01decision in each area affects an overall
- 19:04solution.
- 19:05These were some of the major role-based
- 19:07certification. Now let us move on to our
- 19:09next topic and see an overview of the
- 19:11exam guide. First we have the exam
- 19:14format or question types. Microsoft
- 19:17continuously introduces innovative
- 19:19testing technologies and question types.
- 19:21Your exam might contain questions like
- 19:23multiple choices, repeated answer
- 19:25choices, short answers, mark review,
- 19:28drag and drop labs and so on. The time
- 19:31limit for different examination is for
- 19:34associate and expert job ro exams you
- 19:36have 130 minutes to complete it. For job
- 19:39ro fundamental exams you have 60 minutes
- 19:41to complete it. For associate and expert
- 19:44job ro exam that contains lab you have
- 19:46150 minutes to complete it. Now talking
- 19:48about the cost for the exam for the
- 19:50fundamental exam it would cost you $99.
- 19:54For the associate and the expert level
- 19:56exams, the cost is $165
- 19:59and you can write the certification
- 20:01exams in either English, Chinese, Korean
- 20:03or Japanese. Now the fundamental
- 20:05certification can also be written in
- 20:07Spanish, German or French. Now let us
- 20:10move on to a last and important topic
- 20:12which is how can you prepare for the
- 20:13certification.
- 20:15First start with the basics. So if
- 20:17you're not 100% sure which certification
- 20:20to start with, I would recommend you to
- 20:22start small by taking the A900 Azure
- 20:25fundamental certification exam. This
- 20:27will help you understand how Microsoft
- 20:29exam work but not being too deep into
- 20:31technologies. And after you have
- 20:33experienced taking the Microsoft exam,
- 20:35this will help you understand how
- 20:37Microsoft exam work while not being too
- 20:39deep into the technology. Having
- 20:41experience taking the Microsoft exam, it
- 20:43will also help you focus on the actual
- 20:45topic and not on the testing process.
- 20:48The next step is to understand the exam
- 20:50content. The first thing to do after you
- 20:52decide which exam you're going to write
- 20:54is to see what you're asked during the
- 20:56exam. Every Microsoft exam page has the
- 20:59skill measured in the exam. This list is
- 21:02very accurate and helps you focus and
- 21:04study the right content. The page will
- 21:06also have some training and courses to
- 21:07prepare for the exam. You should also
- 21:10understand the different question types
- 21:11asked in the exam which will help you in
- 21:13the certification. The next step is to
- 21:16take hands-on learning courses on
- 21:18Microsoft Learn for free. Microsoft
- 21:20Learn is a free learning platform for a
- 21:22lot of different Microsoft technologies.
- 21:25It provides you with various learning
- 21:26paths depending on your job roles or the
- 21:28skills you're looking for. Most of the
- 21:31learning paths gives you hands-on
- 21:32learning opportunity so that you can
- 21:34develop practical skills through
- 21:35interactive training. The next and the
- 21:38most important step is hands-on
- 21:40experience. The best way to learn and
- 21:42pass the Microsoft Azure exams is by
- 21:44having real hands-on experience working
- 21:46with the technology. While Microsoft
- 21:48learn gives you some free hands-on
- 21:50learning modules, there is also Azure
- 21:52free account. The Azure free account
- 21:54will provide you with 12 months of free
- 21:56Azure services. So you can work on
- 21:58various Azure services for free. Now the
- 22:01next step which will help you prepare
- 22:02for the certification is reading the
- 22:04Microsoft documentation.
- 22:06It will help you understand the topic
- 22:07better which might appear in the exam.
- 22:09As I've mentioned before, read the
- 22:11skills measured on the exam page. Look
- 22:14up for the specific Microsoft
- 22:15documentation pages and read through
- 22:17them and then try them out in the
- 22:19tutorials. You can also refer some books
- 22:22for Microsoft press. You can find
- 22:24Microsoft Azure documentation and
- 22:26Microsoft press in Microsoft Azure
- 22:28certification official page. After this
- 22:31step, you can also take up a practice
- 22:33exam. Some of the Azure certification
- 22:35have practice examination along with it
- 22:38which is very similar to the actual
- 22:39certification examination.
- 22:48Now let us understand what you'll get
- 22:50after you sign up for Azure free
- 22:52account. So basically you get many
- 22:54things for one year which includes $200
- 22:58credits for first 30 days, popular
- 23:00services free for 12 months, more than
- 23:0340 other services which are free all the
- 23:06time and 750 hours of virtual machines
- 23:09which includes Windows and Linux and you
- 23:12can create up to 250GB SQL database.
- 23:16Apart from this, you can get other
- 23:18services like free dev test labs, free
- 23:21load balancers, free batch jobs, free
- 23:24SQL server, etera.
- 23:28Now we'll see how to create an Azure
- 23:30free account. For this, you require a
- 23:33phone number, a credit card, a GitHub or
- 23:36a Microsoft account to create your Azure
- 23:38free account. The best way is you can
- 23:41create a Hotmail or Outlook email ID.
- 23:45then you can use the same email ID and
- 23:47password to sign up for the Azure free
- 23:50account. So firstly you need to sign in
- 23:52to the Microsoft account using your
- 23:55outlook outmail or any ID and after that
- 23:59you need to follow the couple of steps
- 24:01that is you need to first fill out about
- 24:04you and then you'll go through a
- 24:06verification by phone and then you go
- 24:09through the verification by card and
- 24:12finally you sign up. In the first step
- 24:15that is about you. Here you fill up your
- 24:18basic details that is first name, last
- 24:20name, email id and phone number. Then
- 24:23followed by next step that is identity
- 24:25verification by phone. So here you give
- 24:28your phone number and you will receive
- 24:30an OTP and you need to just like type
- 24:34your one type password and just verify
- 24:36your phone number. So once you verified
- 24:39you move on to the next step that is
- 24:41identity verification by card. Here you
- 24:44fill up your all credit card details
- 24:47followed by card hold number then credit
- 24:49card number it's expiry and CV and your
- 24:53address. Once all it is done then they
- 24:56charge you around 2 rupees just for your
- 24:59verification. They charge you 2 rupees
- 25:01and it is deducted. Once it is deducted
- 25:04you move to the next step that is like
- 25:06accepting the agreements. So you need to
- 25:09just stick all the agreements and
- 25:11finally you sign up. So once all this
- 25:14process is done then you are ready to
- 25:16start with Azure. So this is how you
- 25:19create your Azure free account. It's
- 25:22very simple and super easy. So now let
- 25:25us know how to create an Azure free
- 25:27account without a credit card. So can we
- 25:30do this? So the answer is yes. Yes you
- 25:34can. You can create an Azure free
- 25:36account without a credit card. But for
- 25:39this you need to have an a school
- 25:41account or a required school email id.
- 25:45So you basically log in as a student. In
- 25:48this case, if you log in through a
- 25:50student account, so you will receive
- 25:52only 100 credit points and you also get
- 25:55various other services like 750 Windows
- 25:59virtual machine and you can create up to
- 26:02250GB SQL database and um you also get
- 26:06machine learning free workspaces, SQL
- 26:09server developer edition that is also
- 26:11for free and lots of AI and machine
- 26:15learning features. This is how you
- 26:17create your Azure free account without a
- 26:20credit card. Now let's move on to the
- 26:23next topic that is can we delete a
- 26:26credit card. So many of us had a doubt
- 26:29that can we actually delete our credit
- 26:32card. So here in this picture you could
- 26:36see that I have a payment method and
- 26:39here the delete option is disabled. So
- 26:42why is this so? In this case, you cannot
- 26:44delete a credit card as it is there is
- 26:47only one payment method option. If you
- 26:49really want to delete a credit card
- 26:51detail, then you need to add one more
- 26:53payment method. So you can click onto
- 26:56this add icon and you can add your new
- 27:00payment method. Once the payment method
- 27:03is added, then your delete option gets
- 27:06enabled. Then after that you get the
- 27:08access to delete any one of your credit
- 27:11card details. So this is how you delete
- 27:14a credit card detail.
- 27:16Next, how to cancel subscription.
- 27:19So it is very easy to cancel the Azure
- 27:22subscription. So for this you just need
- 27:25to go to cost management section. There
- 27:28you get go to subscription option. Once
- 27:31you click on to the go to subscription
- 27:33you get all the details of your current
- 27:35subscription. So and you can also find
- 27:38the cancel subscription option there. So
- 27:41once you click on to the cancel
- 27:43subscription they will ask you the type
- 27:46of subscription name and you need to
- 27:48provide a reason why are you canceling
- 27:51the subscription. So you just give the
- 27:54reason prescribed reason of your own and
- 27:57then just click on cancel subscription.
- 28:00So once you click on to the cancel
- 28:02subscription they will ask you the type
- 28:04of subscription and the reason why you
- 28:06want to cancel the subscription.
- 28:09So you can give your details accordingly
- 28:12and click on cancel subscription.
- 28:14So this is how you can cancel your Azure
- 28:17subscription.
- 28:25So let us just go ahead and take a look
- 28:27at what this Azure portal does. Before I
- 28:29start about Azure portal, I would like
- 28:31to inform you that we would be opening
- 28:33Azour's portal and then we'd be
- 28:35understanding what this portal is, what
- 28:37are the services it helps you with and
- 28:38how it actually relates or combines all
- 28:41the stuff that cloud has to offer to
- 28:42you. So to do that, let me just quickly
- 28:45switch into the console part and we can
- 28:47just get started with the remaining part
- 28:49as well. So guys, what I've done is I've
- 28:51gone ahead and I've switched into
- 28:53Microsoft Azure portal. So for people
- 28:55again who are completely new to cloud
- 28:57computing, they might ask as in what is
- 28:58this Azure portal and how do I get to
- 29:00this portal. So this is what the link
- 29:03is. It is portal.azour.com.
- 29:06If you are completely new person to this
- 29:08particular page or this website, you
- 29:11would be required to sign in and create
- 29:12an account. Now as you can see, I
- 29:14already have an account here. It is a
- 29:16fresh account. The reason I've chosen a
- 29:18fresh account is I wanted this dashboard
- 29:20to be clean so that we could go through
- 29:22certain pointers. However, there are
- 29:24certain applications that are running
- 29:26which would help us to understand
- 29:28certain pointers which otherwise you
- 29:29wouldn't have. So this is a perfect
- 29:31account for me. Apart from that, if you
- 29:33need to have this account, as I've
- 29:34already mentioned, you would have to go
- 29:36ahead and create a particular account.
- 29:38How do you do that? You visit this link
- 29:40that is portal.azure.com.
- 29:43Once you do that, it would ask you to
- 29:45sign in and put in certain details. So
- 29:47when you do sign in or sign up, you
- 29:49would have to enter certain details like
- 29:50your email ID, contact details and why
- 29:53do you want to use this account. One
- 29:55pointer you need to consider is
- 29:56Microsoft Azure would ask you to enter
- 29:58your credit or debit card details. Now
- 30:01do not worry they do not charge you
- 30:02unnecessarily. What happens is this is a
- 30:05free tier account where Microsoft Azure
- 30:07would give you certain credit limit
- 30:09maybe 12,000 15,000 something like that.
- 30:11I do not remember the exact number but
- 30:13it is somewhere around 10 to 15,000 in
- 30:14that range 10 to 15,000 Indian rupees
- 30:17because I am based in India right now so
- 30:19I'm talking about Indian rupees when you
- 30:21talk about $10 I think it is somewhere
- 30:23around $200 so based on where your
- 30:26account exists in that local currency
- 30:28you'd be given certain amount which you
- 30:30can spend for 1 month and use all these
- 30:32services for free so yes you have
- 30:35sufficient time to explore all the
- 30:37resources what Microsoft Azure does is
- 30:39it asks you to enter your credit card or
- 30:41debit card details that is once you
- 30:43exceed these limits you might be charged
- 30:46because all these services have a
- 30:47certain cap on that. Don't mistake it
- 30:49for the fact that you'd be charged
- 30:51because these limits are fairly high and
- 30:53probably you won't be charged in any way
- 30:55but still you would be wanting to get
- 30:57through the documentation as in how much
- 30:59would you be charged but before that I
- 31:01would suggest that you actually go ahead
- 31:02and enter in all these details create an
- 31:04account and once you have an account
- 31:05probably you can go through the pricing
- 31:07models as well to avoid getting build in
- 31:09case if you actually go ahead and exceed
- 31:11these limits which is very less likely
- 31:13to happen. So that being said, we have
- 31:15an account. If you do create an account
- 31:17and sign in, this is what your interface
- 31:19would look like. And this is something
- 31:21we call it as the Microsoft Azure
- 31:23portal. So let us try to understand what
- 31:25does this portal has to offer. What are
- 31:27the components that are there? Now as
- 31:29you can see on the screen on your left
- 31:31hand side, you have all the services
- 31:33that are listed. Now these are the most
- 31:35commonly used services. When I say
- 31:37services, most of them are domains as in
- 31:39these domains have more services under
- 31:41them. So domains and the services that
- 31:44you can see here on this part there is
- 31:45an option called as create a resource
- 31:47using which you can actually create
- 31:48these resources as well. Then you have
- 31:51this dashboard. It is blue in color for
- 31:53now. Let me see whether the color
- 31:55changes. Yep, as you can see the color
- 31:57has changed. So if you double click on
- 31:59this dashboard the color would change.
- 32:01So you can probably customize it to meet
- 32:03the needs. For now let me just stick to
- 32:05the standard version which is this. So
- 32:08you have the freedom of changing the
- 32:09color and all the stuff that happens the
- 32:12applications you launch. You can
- 32:14actually go ahead and have a picture of
- 32:15these things on your dashboard. How do
- 32:18you do that? Probably you can choose
- 32:20first of all which dashboard do you want
- 32:21to use. If you have multiple dashboards
- 32:23you can do that. As you can see this is
- 32:25one dashboard which has certain things
- 32:27pinned here. You can unpin those things
- 32:29and you can pin in all your applications
- 32:31to this dashboard. You can click on
- 32:33those applications and you have an
- 32:34option of pinning them to the dashboard.
- 32:36Next thing that you can do here is when
- 32:38you actually launch an application there
- 32:40is this notification panel where you
- 32:42would be notified as in what has
- 32:44happened if you've launched an instance
- 32:45maybe and you want your virtual machine
- 32:47or your application that is running on
- 32:49top of it to be on your dashboard. Here
- 32:51you'd be given an option do you want to
- 32:52pin it to the dashboard and you can say
- 32:54yes and immediately it gets pinned on
- 32:56the dashboard. Now what benefit does
- 32:58this particular thing serve? I mean what
- 33:00would I get if I actually go ahead and
- 33:01pin it here? The thing is based on your
- 33:04business model I mean this is a fairly
- 33:05simple demo. So we do not have too many
- 33:07applications that we are talking about
- 33:09but as your business grows probably you
- 33:11might be dealing with a number of
- 33:12servers a number of applications. So you
- 33:15might want particular information which
- 33:16is readily accessible to you. So you can
- 33:18probably pin those things on your
- 33:20dashboard. You get stats on those
- 33:22dashboards. If there are certain
- 33:23insights you can actually have a plug-in
- 33:25for analytics which gives you reports
- 33:28and all those things. It readily
- 33:30integrates with PowerBI which is a very
- 33:32powerful data visualization tool using
- 33:34which you can actually have all the
- 33:36insights that you need. So yes, this is
- 33:38what the dashboard is. You have all the
- 33:39options here. You can create a new
- 33:40dashboard. You can upload files,
- 33:42download files. You can edit it, share
- 33:44the stuff that is there on your
- 33:45dashboard. You can probably maximize the
- 33:47screen size as well. Clone certain
- 33:49dashboards and delete it here and here.
- 33:51So when you talk about dashboards, you
- 33:53have all the features. Now this is your
- 33:55cloud shell guys. So what does a cloud
- 33:57shell do basically? So when I say a
- 34:00cloud shell, as I've already mentioned,
- 34:02you have your portal using which you can
- 34:03launch applications and you can do all
- 34:05the stuff right away. But at times you
- 34:07might be required to use command prompt.
- 34:09You might be required to hardcode
- 34:10certain things. And how do you do that?
- 34:13You click on cloud shell where you can
- 34:14use it through the command prompt medium
- 34:16as well. Cloud shell is the command
- 34:18prompt which is provided by Microsoft
- 34:20Azure. Apart from that you have settings
- 34:23where you can actually go ahead and
- 34:24modify the settings. As you can see this
- 34:26is the theme. You can change the theme
- 34:27here as well if you want. Some other
- 34:29features which you do want to explore.
- 34:31You can just go ahead and explore all
- 34:32the settings. Delete certain settings.
- 34:34Private dashboards as well. That boils
- 34:36down to your requirement. If you are
- 34:38unable to figure certain things on
- 34:40yourself or on your own, you want to
- 34:42actually go ahead and check in what the
- 34:43support has to offer to you as well.
- 34:45Feedback. You can submit feedback
- 34:47whether you're happy or not. And this is
- 34:49your account. If you click on this link
- 34:51whether changing your passwords and
- 34:52stuff like that all those things would
- 34:54be taken care of here. So guys yeah this
- 34:56is pretty much the dashboard. I mean you
- 34:58can click on these services and you can
- 34:59just explore those services. If you have
- 35:01a particular requirement you can type it
- 35:03here. Say if I type Azure bot service if
- 35:06there is something or any service that
- 35:08is related to this any documents as well
- 35:11that would be popping up here and you
- 35:12can actually go ahead and direct or
- 35:14redirect yourself to those services from
- 35:16this mode as well. So, yep. This is
- 35:19pretty much the interface, guys. The
- 35:20portal which I wanted you people to see,
- 35:23but let's not keep it this basic for
- 35:25now. What I'm going to do is I'm going
- 35:27to go ahead and create something. So, if
- 35:29I click on this create option, it gives
- 35:31me an option of the stuff. I mean, I can
- 35:34choose say for example for now it says
- 35:36Windows Server VM, which means that it
- 35:39would launch a virtual machine guys
- 35:40which is Windows Server 2016 VM. Now let
- 35:44me tell you what a VM is for people who
- 35:46are completely new. This might be basic
- 35:48for people who have some experience of
- 35:50cloud computing and they might wonder as
- 35:52in why am I talking about these small
- 35:54little things but probably we have
- 35:55people around who are completely new. So
- 35:57for them I might get into the details of
- 35:59certain basic topics as well. So when
- 36:01you talk about a virtual machine what we
- 36:03do is suppose I am running a particular
- 36:05application and it is supported by a
- 36:07particular operating system say Windows
- 36:09in this case. So I want my architecture
- 36:12to support that particular operating
- 36:14system. Right? But when you talk about
- 36:16larger applications, you might not
- 36:17always work on a particular environment.
- 36:19Your environment might change. So what
- 36:22cloud computing does is it readily lets
- 36:24you launch these virtual machines that
- 36:26can deal with different environments.
- 36:28And yet all these virtual machines can
- 36:30be under one network and they can stay
- 36:32connected under one VPC or one virtual
- 36:34network basically. So yes, you can run
- 36:37multiple environments. You can have
- 36:38multiple applications running on
- 36:39different platforms and stuff like that.
- 36:41So this is one service that lets you do
- 36:43that. That is virtual machines offered
- 36:46by Microsoft Azure. And you have
- 36:48something called as web app which lets
- 36:49you launch web applications. It is more
- 36:52platform as a service kind of an
- 36:53application. So what is a platform as a
- 36:57service application? Here a complete
- 36:59platform is provided to you by a vendor.
- 37:01You just enter in certain details and it
- 37:03does everything for you. It launches
- 37:05virtual machines. I talked about having
- 37:07different environments, right? So when
- 37:09you click on a virtual machine and
- 37:11create one using Microsoft Azure, you
- 37:13have to specify details like the
- 37:15security group, IM users, what network
- 37:18it lies under and then you have to go
- 37:20ahead and manually install softwares,
- 37:22run your applications on top of it. But
- 37:24when you use something as platform as a
- 37:27service, what it does is it launches all
- 37:29this platform already. So your VM
- 37:32basically which I talked about is your
- 37:34infrastructure as a service where just
- 37:35the infrastructure is given to you and
- 37:37on top of it you do everything but in
- 37:39pass your vendor does everything for
- 37:42you. They launch this instance in the
- 37:44background. All the services that I
- 37:46mentioned as in assigning security
- 37:47groups security IM users assigning it in
- 37:51network all these things are taken care
- 37:52by your vendor. Even the platform that
- 37:54you choose that is set up by your
- 37:56vendor. All you do is you just put in
- 37:58your data there. So this is platform as
- 38:01a service. So when you talk about
- 38:02Microsoft Azure your web apps basically
- 38:04when you create a web app it is a pass
- 38:06service. All you have to do is just go
- 38:08ahead and enter a name say sample
- 38:12app for me. You have to select the
- 38:14subscription for now it is the company's
- 38:16account that I'm using. It would create
- 38:18a resource group on its own as you can
- 38:20see and then all I have to say is
- 38:22create. So it has selected an operating
- 38:24system whether it wants to use a code or
- 38:27a docker image it is up to it right. So
- 38:29it would take care of everything that is
- 38:30happening here guys. My application
- 38:33would be launched right away. As you can
- 38:35see I have been notified already that
- 38:37the deployment is in progress. It might
- 38:39take maybe half a minute or minute and a
- 38:42half maybe for this deployment to
- 38:44complete. I mean all the processes that
- 38:46I talked about those are happening in
- 38:48the background right now. And once those
- 38:50process complete I can actually go ahead
- 38:52and launch my application. So this would
- 38:54be a very basic application guys and as
- 38:57I've already mentioned when you have a
- 38:58dashboard it would ask you do you want
- 39:00to pin your application to the dashboard
- 39:02and if I say yes it would pin it there
- 39:04directly. Let's hope that it happens
- 39:06quicker. See it says pin to the
- 39:08dashboard. I would say yes. And there
- 39:10you go it has been pinned to the
- 39:12dashboard. I can delete it unpin it and
- 39:14do whatever I want to. I can click on it
- 39:16and the application would open for me.
- 39:19So this is what the interface does. It
- 39:20gives me certain options guys. I can
- 39:22check in the activity log what all has
- 39:24happened in this application. If I click
- 39:26on this icon it would give me the
- 39:28information the operations. See this is
- 39:31the operation name that is right sides.
- 39:33So it has return a site
- 39:36access controls who gets to control this
- 39:38application in particular. If you need a
- 39:40quick start guide you can come here.
- 39:41Deployment slots you can take a look at
- 39:43that as well. Application settings you
- 39:45can click on this and you'd be getting
- 39:47all the settings. If you want to make a
- 39:49change to that you can do that as well.
- 39:51the version, what application are you
- 39:53using and stuff like that. Configuration
- 39:55preview, click on this, certain other
- 39:57details would be given. So what
- 39:59framework are you using and stuff like
- 40:00that authentication process guys if you
- 40:03click on this icon
- 40:05it would give me details about that as
- 40:07well. So if I scroll down I come here I
- 40:09have quite a few other things which I
- 40:11can actually look at. So if you are
- 40:12interested in these things you can just
- 40:14come here and explore as in what is
- 40:16happening here. So this is pretty much
- 40:18it. I mean the application has been
- 40:20launched. So if you take a look at it,
- 40:21it would give you details. What is the
- 40:23resource group that you're using? What
- 40:24is the URL? Where is it located? It is
- 40:26located in central US guys. So see I'm
- 40:28based in India right now and I've
- 40:30launched an application at a data center
- 40:32based in USA. So that is what you can
- 40:34do. And if you click on this link, it
- 40:36would tell you that your application is
- 40:38up and ready. So yes, a simple
- 40:40application has been created. So this
- 40:43interface that is Microsoft Azour's
- 40:46portal is fairly easy to use, fairly
- 40:48nice to use and there are quite a few
- 40:50things which you can do. I've talked
- 40:52about certain basic things only there
- 40:54are quite a few things that you can
- 40:55explore. I would suggest that you do go
- 40:57ahead and explore all these resources.
- 40:59As you can see that this has been done.
- 41:01If you want to take a look at some of
- 41:03the services here, you can actually go
- 41:05ahead and say all services and it would
- 41:07give you details about all the services,
- 41:09all the resources. Yes, you click here
- 41:11and you have all the resources that are
- 41:13available to you. You can actually go
- 41:15ahead and modify your search as well.
- 41:16You can decide which resource group you
- 41:18want to view your data into. For now, I
- 41:21have these many resource groups that are
- 41:23there which are running because this is
- 41:25an account that belongs to someone else.
- 41:27So, this is my resource group. I can
- 41:29actually go ahead and select which
- 41:31resource groups I want to use to
- 41:33shortlist this data. Here's the
- 41:35information about all the resources. You
- 41:36can modify them, delete them, work on
- 41:38those and do all the stuff that is
- 41:40required. If you go back to the
- 41:42dashboard, you would be taken here. If
- 41:44you open, you have all the other
- 41:45information again. Diagnosis,
- 41:47application insights. You can install
- 41:48certain plugins that give you all these
- 41:50insights as well. For now, one more
- 41:53thing that you need to know is if there
- 41:54are certain applications that might
- 41:56charge you on the longer run, you'd want
- 41:57to get rid of those resources. Once your
- 41:59usage is done, you can just go ahead and
- 42:01delete those resources as well. Type the
- 42:04name of the app. It says it is sample
- 42:06app for me if I'm not wrong.
- 42:08There you go. You can just go ahead and
- 42:10delete this application and it will
- 42:12delete that application for you guys.
- 42:14It's very simple guys. The application
- 42:15has been deleted as well.
- 42:24What is DevOps?
- 42:26DevOps is basically a combination of two
- 42:28words development and operations. So
- 42:31what do we get when we combine these
- 42:33two? Simply speaking, DevOps is a
- 42:36culture that implements technology in
- 42:38order to promote collaboration between
- 42:40development and operations team to
- 42:42deploy code to production faster in an
- 42:46automated and repeatable way. The goal
- 42:48of DevOps is to increase an
- 42:50organization's speed when it comes to
- 42:52delivering applications and services.
- 42:55Many companies have successfully
- 42:57implemented DevOps to enhance their user
- 42:59experience. Let's take for example
- 43:02Facebook's mobile app which is updated
- 43:04every 2 weeks effectively telling users
- 43:07you can have what you want and you can
- 43:09have it now. Ever wondered how Facebook
- 43:12is able to do this so smoothly? It's the
- 43:14DevOps philosophy that helps Facebook
- 43:17ensure that its apps aren't outdated and
- 43:19that its users get the best experience.
- 43:22Facebook accomplishes this through a
- 43:24code ownership model that makes its
- 43:26developers responsible. That includes
- 43:29testing and supporting through
- 43:31production and delivery for each kernel
- 43:33of code they write and update. It's
- 43:36through policies like this that Facebook
- 43:38has developed a DevOps culture and has
- 43:41successfully accelerated its development
- 43:43life cycle. Industries have started to
- 43:45gear up for the digital transformation
- 43:47by shifting their needs to weeks and
- 43:49months instead of years while
- 43:51maintaining high quality. As a result,
- 43:54we will soon see that DevOps engineers
- 43:57have more access and control of the end
- 43:59user than any other person in the
- 44:01enterprise. So, what are you waiting
- 44:03for? Don't be in the sidelines when that
- 44:05happens. Do master your skills, enroll
- 44:08in Edurea's DevOps certification
- 44:10program, and become a leader. Until next
- 44:12time, happy learning.
- 44:25Why do we need DevOps? The birth of
- 44:28DevOps occurred when there were some
- 44:29drawbacks with the existing software
- 44:31development models for application
- 44:33development. The first model we'll be
- 44:36addressing today is the waterfall model.
- 44:38So the waterfall model is a model of
- 44:40software development which is pretty
- 44:42straightforward and linear. So this
- 44:44model follows a top down approach as you
- 44:46can see in the image. It has various
- 44:48phases starting with requirements
- 44:50gathering and analysis. So the first
- 44:52phase is where you get the requirements
- 44:54from the client for developing an
- 44:56application. So after this you try to
- 44:58analyze these requirements that you've
- 45:00acquired. Next comes the design phase
- 45:03where you prepare a blueprint of the
- 45:04software. So in this phase you think
- 45:07about how the software is actually going
- 45:09to look like. Once the design is ready
- 45:11you proceed further with the
- 45:12implementation phase where you begin
- 45:14with the coding for the application. So
- 45:17here the team of developers work
- 45:19together on various components of the
- 45:21application and once the application is
- 45:23developed it is tested in the
- 45:25verification phase that is the fourth
- 45:27phase. Here there are various tests
- 45:29conducted on the application such as
- 45:31unit testing, integration testing,
- 45:33performance testing etc. After all of
- 45:36these tests on the applications are
- 45:38done, it is finally deployed on the
- 45:40production servers. At last that is the
- 45:42fifth phase is the maintenance phase. So
- 45:45in this phase the application is
- 45:47monitored for performance. So any issues
- 45:49related to the performance of the
- 45:51application are resolved in this phase.
- 45:54But unfortunately this model that is the
- 45:56waterfall model has some major
- 45:58drawbacks. So the first drawback is
- 46:00gathering and documenting your
- 46:01requirements each step of the way can be
- 46:04extremely time consuming. Not to also
- 46:06mention difficult. It is hard to assume
- 46:09things about your product so early into
- 46:11the project and because of the same
- 46:13reason your assumptions might be flawed
- 46:16and different from what the customer
- 46:17expects. The second drawback is that now
- 46:20if the above case is true your customers
- 46:23are basically dissatisfied with your
- 46:25delivered product. Adding changes to the
- 46:28product can be expensive and most of all
- 46:30difficult to implement. So the third
- 46:32drawback is that in general the risk is
- 46:35extremely high with the waterfall
- 46:36approach because the scope for mistakes
- 46:38is extremely high. If things go wrong,
- 46:41fixing them can be hard as you have to
- 46:43go a couple of steps back. The next
- 46:46model is the agile model. So agile is an
- 46:49iterative based software development
- 46:51approach where the software project is
- 46:53broken down into various iterations or
- 46:55sprints. So every iteration has phases
- 46:58like the waterfall model such as
- 47:00requirements gathering, design,
- 47:01development, testing and maintenance.
- 47:03You can see each of these iteration in
- 47:05the image. So each of this iteration
- 47:07generally lasts for about 2 to 8 weeks.
- 47:10So the difference between agile and
- 47:12waterfall model is that you release the
- 47:14application with some high priority
- 47:16features in the first iteration. After
- 47:19its release, the end users or the
- 47:20customers can give you feedback about
- 47:22the performance of the application. So
- 47:24the necessary changes are made to the
- 47:26application along with some new features
- 47:29and once these features are added to
- 47:31this application, it is again released
- 47:33which is in the second iteration. This
- 47:35procedure is repeated until the desired
- 47:37software quality is finally achieved.
- 47:39Now in spite of being used often the
- 47:42agile method has a few disadvantages.
- 47:45The first one is that for the approach
- 47:47to work all the members of the team must
- 47:49be completely dedicated to the project.
- 47:51That is everyone must be involved
- 47:53equally. If you want the whole team to
- 47:55learn and do better on the next run and
- 47:58this is mainly because agile focuses on
- 48:00quick delivery there might be an issue
- 48:02with hitting deadline. The second
- 48:04drawback is that the approach may seem
- 48:05extremely simple but it is hard to
- 48:07execute. So it requires commitment and
- 48:10for everyone to be on the same page
- 48:12ideally in the same physical space. The
- 48:15third drawback is that documentation can
- 48:17sometimes be ignored. Because agile
- 48:20methodology focuses on working software
- 48:22over comprehensive documentation, things
- 48:25might sometimes get lost through each
- 48:26stage and iteration. As a result, the
- 48:29final product can feel different from
- 48:31what it was first planned. So these are
- 48:33the few drawbacks that the agile model
- 48:35or the agile methodology gives us. So in
- 48:38delivering valuable software to
- 48:40customers, development and operation
- 48:42teams are always in conflict with each
- 48:44other. While development wants to
- 48:46deliver its changes to customers
- 48:48quickly, operations want stability,
- 48:51which means not changing the production
- 48:52systems too often. So the gap between
- 48:55the development and operations team
- 48:57occurs on three different levels. The
- 48:59first one is the incentives gap. This is
- 49:02because of different goals of
- 49:03development and operations. The second
- 49:06one is the process gap which is the
- 49:08result from different approaches of
- 49:09development and operations and how to
- 49:12manage changes bring them to production
- 49:14and maintain them there. The third one
- 49:16is the tools gap which results from the
- 49:18fact that development and operations
- 49:19often use their own tools to do their
- 49:21own work and this is resulting from the
- 49:24fact that development and operations
- 49:26often use their own tools to do their
- 49:28work. As a result from all of these
- 49:30reasons, development and operations
- 49:32often act like silos as there are two
- 49:35distinct teams. So the conflict between
- 49:37development and operations is because of
- 49:39two reasons. The first one is need for
- 49:42change. This is because development
- 49:44results in change. That is they're
- 49:46always working on new features, bug
- 49:47fixes, etc. It wants the change to
- 49:50quickly roll out to production. And the
- 49:52second one is fear of change. Once the
- 49:55software is finally delivered, the
- 49:57operations department avoids making
- 49:59changes to the software to ensure
- 50:00stability. This is the major conflict
- 50:03between both of these teams. So this is
- 50:05where DevOps comes into picture. DevOps
- 50:07links software development to
- 50:09operations. I hope that is clear. That
- 50:12is DevOps bridges the gap between agile
- 50:14software development and operations
- 50:16experiences. It is important to know
- 50:19that DevOps is a set of principles to
- 50:21break down silos. Specifically DevOps is
- 50:24all about culture, automation,
- 50:27measurement and sharing. So the first
- 50:29one is culture. So in culture, people
- 50:32and processes comes first. If you don't
- 50:35have a culture, all automation attempts
- 50:37will be fruitless. The relationship is
- 50:39important in culture because its
- 50:41functions include engage early, engage
- 50:43often, destroy silos, be open to
- 50:46options, and stop blaming. And the
- 50:48second one is automation. So once you
- 50:50understand your culture you can simply
- 50:52start with automation right now you can
- 50:54finalize various tools to achieve
- 50:56automation for DevOps that is tools for
- 50:59release management provisioning
- 51:01configuration management systems
- 51:03integration monitoring and control and
- 51:06orchestration becomes extremely
- 51:07important pieces for DevOps. The third
- 51:10is measurement. So if you cannot measure
- 51:13you cannot improve. Makes sense right? A
- 51:15successful DevOps implementation will
- 51:17always measure everything it can as
- 51:19often as it can. Performance metrics,
- 51:22process metrics, people metrics,
- 51:24capacity planning, trend analysis, fault
- 51:27finding, etc. All of these have to
- 51:29always be measured. So the last one is
- 51:32DevOps is about sharing. Sharing is a
- 51:35loop back in the cycle. So creating a
- 51:37culture where people share ideas and
- 51:39problems is extremely critical. So
- 51:41exposing ideas can create great open
- 51:44feedback that in the end it helps to
- 51:46improve, share ideas, share metrics,
- 51:48give DevOps shell access, see what
- 51:51technology can be leveraged etc. So
- 51:53DevOps is all about these four
- 51:56particular features. I hope this is
- 51:58clear. So now let's move on to the next
- 52:00part of today's session that is
- 52:02introduction to DevOps. So finally we
- 52:04will address what is DevOps. DevOps is
- 52:07simply a combination of two words. You
- 52:09can see that one is the software
- 52:11development and the second one is
- 52:12operations. So this allows a single team
- 52:15to handle the entire application life
- 52:18cycle that is from development to
- 52:20testing, deployment and finally
- 52:22operations. So DevOps really helps you
- 52:25to reduce the disconnection between
- 52:26software developers, quality assurance
- 52:29engineers and system administrators.
- 52:31That is it basically promotes
- 52:33collaboration between the development
- 52:35and operations team to deploy code to
- 52:37production faster in an automated and
- 52:40repeatable way. So DevOps basically
- 52:42helps to increase organization speed to
- 52:45deliver applications and services. It
- 52:48also allows organizations to serve their
- 52:50customers better and compete more
- 52:52strongly in the market. It can be also
- 52:55defined in another way that is it is
- 52:57also a sequence of development and IT
- 52:59operations with better communication and
- 53:01collaboration. So in the market it has
- 53:04become one of the most valuable business
- 53:06disciplines for enterprises or
- 53:08organizations. With the help of DevOps
- 53:10the quality and speed of the application
- 53:12delivery has improved to an extremely
- 53:15great extent. Organizations that have
- 53:17adopted DevOps noticed a 22% improvement
- 53:20in software quality and a 17%
- 53:23improvement in application deployment
- 53:25frequency. They have also achieved a 22%
- 53:28hike in customer satisfaction. Overall,
- 53:31a 19% of revenue hikes as a result of
- 53:34the successful DevOps implementation has
- 53:37been achieved. Moving on, DevOps
- 53:40workflow is another important concept.
- 53:42So what is a DevOps workflow? So it
- 53:44basically provides a visual overview of
- 53:46the sequence in which input is provided.
- 53:49Also it tells about which one action is
- 53:52performed and output is generated for an
- 53:54operations process. So basically DevOps
- 53:57workflow allows the ability to separate
- 53:59and arrange the jobs which are top
- 54:01requested by the users. Also this
- 54:04workflow gives the ability to mirror
- 54:06their ideal process in the configuration
- 54:08jobs. Moving on, let's see some of the
- 54:10DevOps principles. So the main
- 54:13principles of DevOps are continuous
- 54:14delivery, automation and fast reaction
- 54:17to the feedback. But there are six other
- 54:20principle that we'll be discussing
- 54:21today. The first one is the end to-end
- 54:23responsibility. So DevOps teams need to
- 54:26provide performance support until they
- 54:28become the end of life. It enhances the
- 54:30responsibility and the quality of the
- 54:32products engineered. The second one is
- 54:35continuous improvement. DevOps culture
- 54:37focuses on continuous improvement to
- 54:39minimize waste. that is it continuously
- 54:42speeds up the growth of the products or
- 54:44the services that has been offered. The
- 54:46third one is automate everything.
- 54:48Automation is an essential part of the
- 54:50DevOps process. We'll be discussing
- 54:52about this later on in this session.
- 54:55This is for the software development and
- 54:57also for the entire infrastructure
- 54:59landscape. The fourth one is
- 55:01customercentric action. So the DevOps
- 55:03team must be customercentric so that
- 55:05they should continuously invest in
- 55:07products and services. The fifth one is
- 55:10monitor and test everything. The DevOps
- 55:12team needs to have robust monitoring and
- 55:15testing procedures. The last one is work
- 55:18as one team. In the DevOps culture role
- 55:20of the designers, developers and testers
- 55:23are already defined. So all they need to
- 55:25do is work as one team with complete
- 55:28collaboration. These principles are
- 55:30achieved through several DevOps
- 55:31practices which include frequent
- 55:33deployments, quality assurance,
- 55:35automation, continuous delivery,
- 55:38validating ideas as early as possible
- 55:40and in team collaboration. Now let's
- 55:43move on to the third topic of today's
- 55:45session. Companies using DevOps.
- 55:48By now you must have figured out that
- 55:49DevOps helps to increase an
- 55:51organization's speed to deliver
- 55:53applications and services. This is
- 55:55exactly why many organizations such as
- 55:58Amazon, Netflix, Etsy, HP, Adobe and
- 56:02many other organizations are adopting
- 56:04DevOps and its practices. We will now
- 56:07discuss how Amazon makes use of DevOps
- 56:09to increase their work efficiency. You
- 56:11must be aware that Amazon is one of the
- 56:13biggest e-commerce companies in the
- 56:15world. But way back in time, the website
- 56:18followed a traditional monolithic
- 56:19architecture. So in this type of
- 56:21architecture all the processes are
- 56:23coupled together and run as a single
- 56:25service. Over time as the code and the
- 56:28source files grew it became hard to
- 56:30scale maintain and upgrade the
- 56:32applications on physical servers. So
- 56:35what did Amazon do? Amazon simply solved
- 56:38the problem of the monolithic
- 56:39architecture by moving from physical
- 56:42servers to cloud-based Amazon web
- 56:44services. You all must have heard of
- 56:46AWS. Currently AWS follows a micros
- 56:49service architecture. In Amazon there
- 56:51basically three types of microservices.
- 56:54They are users, threads and posts.
- 56:56Developers here apply frequent but small
- 56:59changes over their code via version
- 57:01control tools like Git and GitHub.
- 57:03Practices like code deployment help fix
- 57:05bugs and adds new features to improve
- 57:08the underlying software application. AWS
- 57:10code deploy is one such service that
- 57:13keeps track of deployments and
- 57:15simplifies the entire software release
- 57:17process. Amazon also uses Apollo. Apollo
- 57:21is a simple one-click internal
- 57:23deployment tool. So Apollo's job is to
- 57:25deploy a specified set of software
- 57:27across a group of hosts. On the other
- 57:29hand, practices like configuration
- 57:31management and infrastructure escode
- 57:34help to monitor and make changes in the
- 57:36software. It keeps track of the systems
- 57:38performance and resources used by
- 57:40developers. So in this way the testing
- 57:42team can identify problems way before in
- 57:45hand and fix them immediately. So this
- 57:47is how Amazon implement DevOps and its
- 57:50practices. Now let's move on and
- 57:52understand one major concept of DevOps
- 57:54that is the DevOps life cycle. So if
- 57:57you're into DevOps from quite some time
- 57:59now, you must have heard at least one of
- 58:01these DevOps phases that is continuous
- 58:03development, continuous integration,
- 58:05continuous testing, continuous
- 58:07deployment, and continuous monitoring.
- 58:09So all of these phases that I just
- 58:11mentioned make up the DevOps life cycle.
- 58:14As you can see on the screen and as I've
- 58:16already mentioned, all of these phases
- 58:18make up the DevOps life cycle. The first
- 58:21phase is the continuous development
- 58:23phase. So this is the phase that
- 58:24involves planning and coding of the
- 58:26software. So the vision of the project
- 58:28is decided during the planning phase and
- 58:31the developers begin developing the code
- 58:33for the application. There are no DevOps
- 58:35tools that are required for planning but
- 58:37there are a number of tools for
- 58:39maintaining the code. The code can be
- 58:41written in any language but it is mainly
- 58:43maintained by using version control
- 58:45tools. So here maintaining the code is
- 58:48referred to as source code management.
- 58:50So some of the most popular version
- 58:53control tools are git, svn, mercural,
- 58:55CVS etc. Also tools like ant, maven,
- 58:59gradal can be used in this phase for
- 59:01building or packaging the code into an
- 59:03executable file that can eventually be
- 59:06forwarded to any of the next phases. The
- 59:09next phase in the DevOps life cycle is
- 59:11continuous testing. So this is the stage
- 59:13where the develop software is
- 59:15continuously tested for bugs. for
- 59:17continuous testing automation testing
- 59:19tools like Selenium, TestNG, JUnit, etc.
- 59:23are used. So basically the tools that I
- 59:25just mentioned right now allow quality
- 59:28asurances to test multiple code bases
- 59:31thoroughly in parallel to ensure there
- 59:33are no flaws in the functionality. So
- 59:35what automation testing does is it saves
- 59:38a lot of time, effort and labor for
- 59:40executing the test instead of doing this
- 59:43manually. Right? Also in this phase
- 59:45docker containers can be used for
- 59:47simulating the test environment.
- 59:49Selenium here does the automation
- 59:51testing and the reports are generated by
- 59:53testng. So this entire testing phase can
- 59:57be automated with the help of a
- 59:58continuous integration tool called
- 1:00:00genkins. We'll talk about genkins later
- 1:00:02on in this session. So now let me
- 1:00:04explain you this with an example.
- 1:00:07Suppose you've written a selenium code
- 1:00:08in Java to test your application. Now
- 1:00:11what you can do is you can build this
- 1:00:12code using ant or maven and once the
- 1:00:15code is built it is tested for user
- 1:00:17acceptance testing. So this entire
- 1:00:20process can be automated using genkins.
- 1:00:22Besides that the report generation is a
- 1:00:25very big plus point. The task of
- 1:00:27evaluating the test cases that failed in
- 1:00:29a test suite gets simpler. We can also
- 1:00:32schedule the execution of test cases at
- 1:00:34predefined times. Once the entire
- 1:00:36testing is done, the code is
- 1:00:38continuously integrated with the
- 1:00:39existing code. The third phase of this
- 1:00:42life cycle is continuous integration. So
- 1:00:45now this stage is the heart of the
- 1:00:47entire DevOps life cycle. It is a
- 1:00:49software development practice in which
- 1:00:51the developers require to commit changes
- 1:00:54to the source code more frequently. This
- 1:00:56may be on a daily or a weekly basis. So
- 1:00:59every commit is then built and this
- 1:01:01allows early detection of problems if
- 1:01:03they're present. Building code does not
- 1:01:06involve compilation but it also includes
- 1:01:08code review, unit testing, integration
- 1:01:11testing and packaging. The code that is
- 1:01:13supporting new functionality is
- 1:01:15continuously integrated with the
- 1:01:17existing code. Since there is continuous
- 1:01:20development of software, the updated
- 1:01:22code needs to be integrated continuously
- 1:01:25as well as smoothly with the systems to
- 1:01:27reflect changes to the end users. As
- 1:01:29I've already said in the previous slide,
- 1:01:31Genkins is a very popular tool used in
- 1:01:34this phase. So whenever there is a
- 1:01:36change in the git repository, Genkins
- 1:01:38simply fetches the updated code and it
- 1:01:40prepares a build of that code which is
- 1:01:43in an executable file. So once this
- 1:01:46entire build is performed, it is then
- 1:01:48forwarded to the test server or the
- 1:01:50production server. Now let's move on to
- 1:01:52the fourth phase of the cycle that is
- 1:01:54the continuous deployment phase. So this
- 1:01:56is the stage where the code is deployed
- 1:01:58to the production servers. It is very
- 1:02:01important to ensure that the code is
- 1:02:03correctly deployed on all the servers.
- 1:02:05Now before moving on, let us understand
- 1:02:07a few things about configuration
- 1:02:09management and containerization tools.
- 1:02:11Now these set of tools help in achieving
- 1:02:14continuous deployment. Firstly, I will
- 1:02:16talk about configuration management. It
- 1:02:18is basically the act of establishing and
- 1:02:21maintaining consistency in an
- 1:02:22application's functional requirements
- 1:02:24and performance. So let me put this in
- 1:02:27simple words. It is the act of releasing
- 1:02:29deployments to servers, scheduling
- 1:02:31updates and most importantly keeping the
- 1:02:34configurations consistent across all the
- 1:02:36servers. Since the new code is deployed
- 1:02:39on a continuous basis, configuration
- 1:02:41management tools play an extremely
- 1:02:43important role in executing tasks
- 1:02:45quickly and frequently. Now some popular
- 1:02:47tools that are used here are Puppet,
- 1:02:49Chef, Salt Stack and Anible.
- 1:02:52Containerization tools also play an
- 1:02:54equally important role in the deployment
- 1:02:56stage. Docker is one of the most popular
- 1:02:59tool used for this purpose. Basically,
- 1:03:01these tools help produce consistency
- 1:03:03across development, test, staging and
- 1:03:06production environments. Besides this,
- 1:03:09they also help in scaling up and scaling
- 1:03:12down of instances very swiftly.
- 1:03:14Basically containerization tools help in
- 1:03:17maintaining consistency across the
- 1:03:19environments where the application is
- 1:03:21deployed, developed and tested. Using
- 1:03:24these tools, there is no scope of errors
- 1:03:26or failures in the production
- 1:03:27environment as they package and
- 1:03:29replicate the same dependencies and
- 1:03:31packages used in the development or
- 1:03:34testing or staging environment.
- 1:03:36Basically, it makes your application
- 1:03:38easy to run on different computers. The
- 1:03:41next stage is the continuous monitoring
- 1:03:42stage. This is the last stage in the
- 1:03:44DevOps life cycle. This is a very
- 1:03:47crucial stage where you continuously
- 1:03:49monitor the performance of your
- 1:03:50application. So here vital information
- 1:03:53about the use of the software is
- 1:03:55recorded. This information is processed
- 1:03:58to recognize the proper functionality of
- 1:04:00the application. The system errors such
- 1:04:02as low memory, server not reachable etc
- 1:04:05are resolved in this phase. The root
- 1:04:07cause of any issue is determined in this
- 1:04:10phase. It also maintains security and
- 1:04:12availability of the services also. If
- 1:04:15there are any network issues, they are
- 1:04:18resolved in this phase. That is, it
- 1:04:20helps us automatically fix the problem
- 1:04:22as soon as they're detected. So now this
- 1:04:25practice involves the participation of
- 1:04:27the operations team who will monitor the
- 1:04:30user activity for bugs or any improper
- 1:04:33behavior of the system. Your most
- 1:04:35popular tools used for this phase is
- 1:04:37Splunk, Elk Stack, NGIOS, New Relic and
- 1:04:40Sensu. So what these tools do is they
- 1:04:43help you monitor the application's
- 1:04:45performance and the servers very closely
- 1:04:48and they also eventually enable you to
- 1:04:49check the health of the system
- 1:04:51proactively. Now using these tools, they
- 1:04:54can also improve productivity and
- 1:04:56increase the reliability of the systems
- 1:04:58which in turn reduces IT support costs.
- 1:05:01Any major issues if found are reported
- 1:05:04to the development team so that it can
- 1:05:06be fixed in the continuous development
- 1:05:07phase. This also leads to a faster
- 1:05:10resolution of the problems. These stages
- 1:05:12are carried out on loop continuously
- 1:05:15till you achieve the desired product
- 1:05:16quality. Therefore, almost all of the
- 1:05:19major IT companies have shifted to
- 1:05:21DevOps for building their products.
- 1:05:24Moving on, if you want to become a
- 1:05:26DevOps engineer or be a part of this
- 1:05:28ideology, it is extremely important for
- 1:05:31you to be familiar with some DevOps
- 1:05:33related tools. Today I will be talking
- 1:05:35about seven important DevOps tools. Now
- 1:05:38before we understand the tools DevOps
- 1:05:40engineers use, it is important to
- 1:05:42understand containers. So what are
- 1:05:44containers? Containers allow you to
- 1:05:47package your application and its
- 1:05:48dependencies together into one manifest
- 1:05:51that can be version controlled, allowing
- 1:05:54for easy replication of your application
- 1:05:56across developers on your team and
- 1:05:59machines in your cluster. This is
- 1:06:01exactly why containerbased microservices
- 1:06:04architectures have profoundly changed
- 1:06:06the way development and operation teams
- 1:06:08test and deploy software. Containers
- 1:06:11really help companies modernize by
- 1:06:13making it easier to scale and deploy
- 1:06:16applications. But they have also
- 1:06:18introduced new challenges and complexity
- 1:06:20by creating an entirely new
- 1:06:22infrastructure ecosystem. IT companies
- 1:06:25are now deploying thousands of container
- 1:06:27instances daily and that's a complexity
- 1:06:30of scale they have to manage. How do
- 1:06:32they do it? Here is where Kubernetes
- 1:06:35comes to the rescue. Kubernetes is a
- 1:06:38container management technology
- 1:06:40developed in Google to manage
- 1:06:42containerized applications in different
- 1:06:44kinds of environments like physical,
- 1:06:46virtual, cloud infrastructure etc. So it
- 1:06:49really is just an open-source system
- 1:06:52which helps in creating and managing
- 1:06:54containerization of applications. Its
- 1:06:57container management responsibilities
- 1:06:59include container deployment, scaling
- 1:07:01and descaling of containers and
- 1:07:03container load balancing. It is
- 1:07:05extremely important to remember that
- 1:07:07Kubernetes is not a containerization
- 1:07:10platform. It is a multicontainer
- 1:07:12management solution. Now let's move on
- 1:07:14and discuss some of the features of
- 1:07:16Kubernetes. The first one is automated
- 1:07:18scheduling. So Kubernetes provides an
- 1:07:21advanced scheduleuler to launch
- 1:07:23containers on cluster nodes based on
- 1:07:25their resource requirements and other
- 1:07:27constraints while not sacrificing
- 1:07:29availability. The second feature is
- 1:07:32self-healing capabilities. So,
- 1:07:34Kubernetes allows you to replace and
- 1:07:36reschedu containers when nodes die. It
- 1:07:40also kills containers that do not
- 1:07:41respond to userdefined health checks and
- 1:07:44does not advertise them to clients until
- 1:07:46they are ready to serve. The third
- 1:07:48feature is automated rollouts and roll
- 1:07:51back. So, what Kubernetes does is it
- 1:07:53rolls out changes to the application or
- 1:07:56its configuration while monitoring your
- 1:07:58application health to ensure it does not
- 1:08:01kill all your instances at the same
- 1:08:02time. So if something goes wrong with
- 1:08:05Kubernetes, you can simply roll back the
- 1:08:07change. The fourth feature is horizontal
- 1:08:10scaling and load balancing. Kubernetes
- 1:08:12can scale up and scale down the
- 1:08:14application as per the requirements with
- 1:08:16a simple command using a user interface
- 1:08:19or automatically based on CPU usage. Now
- 1:08:23let us understand the architecture. The
- 1:08:25Kubernetes architecture has two main
- 1:08:28components. The first one is the master
- 1:08:30node. The second one is the worker node.
- 1:08:32So the master node is responsible for
- 1:08:34the management of Kubernetes cluster. It
- 1:08:37is mainly the entry point for all
- 1:08:39administrative tasks. There can always
- 1:08:42be more than one master node in the
- 1:08:44cluster to check for fall tolerance. So
- 1:08:46there are few components in the master
- 1:08:48node that I'd like to discuss. The first
- 1:08:51one is the API server. So here the API
- 1:08:54server is the entry point for all the
- 1:08:56rest commands used to control the
- 1:08:58cluster. The second one is the
- 1:09:00controller manager. It is a damon that
- 1:09:03regulates the Kubernetes cluster and
- 1:09:05manages different non-terminating
- 1:09:07control loops. The third one is the
- 1:09:09scheduleuler. So the scheduleuler
- 1:09:11schedules the task to worker nodes. So
- 1:09:14what it really does is it stores the
- 1:09:15resource usage information for each
- 1:09:18worker node. The fourth one is the etc.
- 1:09:21So the etc is simple distributed
- 1:09:24consistent key value store. So what it
- 1:09:27mainly is used for is to share
- 1:09:29configuration and service discovery. Now
- 1:09:32that we know how the master nodes work,
- 1:09:34let's move on to the worker nodes. So
- 1:09:36these worker nodes contain all the
- 1:09:38necessary services to manage the
- 1:09:40networking between the containers,
- 1:09:42communicate with the master node and
- 1:09:44assign resources to the scheduled
- 1:09:46containers. So the first component that
- 1:09:48I'll be talking about in this worker
- 1:09:50node is the docker container. So docker
- 1:09:53runs on each of the worker nodes and
- 1:09:55runs the configured parts. The second
- 1:09:57one is the cublet. The cubelet gets the
- 1:10:00configuration of a pod from the API
- 1:10:02server and ensures that the describe
- 1:10:05containers are up and running. The third
- 1:10:07one is cube proxy. So cube proxy acts as
- 1:10:11a network proxy and a load balancer for
- 1:10:13a service on a single worker node. The
- 1:10:16fourth one is pods. So a pod is one or
- 1:10:19more containers that logically run
- 1:10:21together on nodes. With this we come to
- 1:10:24the end of the first tool in DevOps
- 1:10:26tool. Let's move on to the second tool
- 1:10:28that is Docker. So what is a Docker?
- 1:10:31Docker is simply a containerization
- 1:10:33platform that packages your application
- 1:10:35and all its dependencies together in the
- 1:10:38form of containers to ensure that your
- 1:10:40application works seamlessly in any
- 1:10:42environment. So each application here
- 1:10:45will run on a separate container and
- 1:10:47will have its own set of libraries and
- 1:10:49dependencies. It must be really
- 1:10:51convenient to move around these
- 1:10:53containers, right?
- 1:10:54So containers also ensures that there is
- 1:10:57a process level isolation meaning each
- 1:11:00application is independent of other
- 1:11:02applications giving developers shity
- 1:11:04that they can build applications that
- 1:11:06will not interfere with one another. Now
- 1:11:09the quality assurance team need not
- 1:11:12install all the dependent software and
- 1:11:14applications to test the code and this
- 1:11:16helps them save lots and lots of time
- 1:11:18and energy. This also ensures that the
- 1:11:21working environment is consistent across
- 1:11:23all the individuals involved in the
- 1:11:26process starting from development to
- 1:11:28deployment. So here the number of
- 1:11:30systems can be scaled up easily and the
- 1:11:32code can be deployed on them
- 1:11:34effortlessly. There are some basic
- 1:11:36concepts of docker you must be aware of
- 1:11:38that is docker file, docker image and
- 1:11:41docker container. So a docker image is
- 1:11:43created by the sequence of commands
- 1:11:45written in a file called docker file.
- 1:11:48When this docker file is executed using
- 1:11:50a docker command, it results into a
- 1:11:52docker image with a name. So finally
- 1:11:54when this image is executed by docker
- 1:11:56run command, it will by itself start
- 1:11:59whatever application or service it must
- 1:12:01start on its execution. So I hope docker
- 1:12:04file, docker images and docker
- 1:12:06containers are clear. We'll understand
- 1:12:08what is docker hub now. So docker hub is
- 1:12:11basically a cloud registry where you can
- 1:12:13find docker images uploaded by different
- 1:12:15communities. Also, you can develop your
- 1:12:18own image and upload on DockerHub. But
- 1:12:20first, you need to create an account to
- 1:12:22Docker Hub. So, let's move on and
- 1:12:24understand what a Docker engine is. So,
- 1:12:27the Docker engine is the heart of the
- 1:12:29system. It is simply the application
- 1:12:31that is installed on your host machine.
- 1:12:34Basically, it works like a client server
- 1:12:36application. It uses a server which is a
- 1:12:38type of a longunning program called a
- 1:12:40Damon process. It also uses a command
- 1:12:43line interface client. And finally, it
- 1:12:46uses an RD API which is used for
- 1:12:49communication between the CLI client and
- 1:12:52docker Damon. As per the image in a
- 1:12:55Linux operating system, there is a
- 1:12:57client which can be accessed from the
- 1:12:59terminal and a host which runs the
- 1:13:01Damon. We build our images and run
- 1:13:03containers by passing commands from the
- 1:13:06CLI client to the Damon. However, in the
- 1:13:09case of Windows or Mac, there is an
- 1:13:11additional toolbox component inside the
- 1:13:13Docker host. So this Docker toolbox is
- 1:13:15an installer to quickly and easily
- 1:13:17install and set up a Docker environment
- 1:13:20on your Windows or your MacBook. So this
- 1:13:22toolbox installs Docker client machine
- 1:13:25compose which is only present in Mac and
- 1:13:27Virtual Box. With this we come to the
- 1:13:30end of Docker. We'll move on to the
- 1:13:32third tool of DevOps tools that is Git.
- 1:13:34So Git is an extremely important tool
- 1:13:36for software developers. It is a free
- 1:13:39open-source distributed version control
- 1:13:41system designed to handle everything
- 1:13:43from small to very large projects with
- 1:13:46speed and efficiency. It was created by
- 1:13:48Lennis Travels in 2005 to develop Linux
- 1:13:52kernel. Git has the functionality,
- 1:13:54performance, security and flexibility
- 1:13:56that most teams and individual
- 1:13:58developers need. It also serves as an
- 1:14:01important distributed version control
- 1:14:03DevOps tool. So, git is primarily used
- 1:14:06to manage your project comprising a set
- 1:14:08of code or text files that may change
- 1:14:10over time. Now, before we go further,
- 1:14:12let us take a step back to learn about
- 1:14:14version control systems and how git came
- 1:14:17into existence. So, version control is
- 1:14:20the management of changes to documents,
- 1:14:22computer programs, large websites and
- 1:14:25other collection of information. There
- 1:14:27are basically two types of version
- 1:14:29control systems. The first one being
- 1:14:31centralized version control system. The
- 1:14:33second one is distributed version
- 1:14:35control system. So git is a distributed
- 1:14:37version control system where every
- 1:14:40contributor that is the user has a local
- 1:14:42copy or clone of the main repository.
- 1:14:45What is a repository? A repository is
- 1:14:47simply a storage space for your project
- 1:14:49files. Here everyone maintains a local
- 1:14:52repository of their own which contains
- 1:14:54all the files and metadata present in
- 1:14:56the main repository. So the local
- 1:14:58repository is usually on the local
- 1:15:00machine of the user. So every programmer
- 1:15:03maintains a local repository which is
- 1:15:05actually the copy or clone of the
- 1:15:07central repository on their hard drive.
- 1:15:09The central repository may be present on
- 1:15:11a web hosting platform like GitHub. They
- 1:15:14can commit and update the local
- 1:15:16repository without any interference.
- 1:15:18They can also update the local
- 1:15:20repositories with new data from the
- 1:15:22central server by an operation called
- 1:15:24pull and affect changes to the main
- 1:15:26repository by an operation called push
- 1:15:29from the local repository. So I hope
- 1:15:31everyone understood how git works. Now
- 1:15:34moving on let us understand the role of
- 1:15:35git in devops. So git plays a very vital
- 1:15:39role when it comes to managing the code
- 1:15:40that the collaborators contribute to the
- 1:15:42shared repository. So this code is then
- 1:15:45extracted for performing continuous
- 1:15:47integration to create a build and test
- 1:15:49it on the test server and eventually
- 1:15:51deploy it to the production. Tools like
- 1:15:54get enable communication between the
- 1:15:56development and the operations team.
- 1:15:58When you're developing a large project
- 1:16:00with a huge number of collaborators, it
- 1:16:02is extremely important to have
- 1:16:04communication between the collaborators
- 1:16:06while making changes within the project.
- 1:16:09Commit messages in git play a very
- 1:16:11important role in communicating among
- 1:16:13the team. The bits and pieces that we
- 1:16:16all deploy lies in the version control
- 1:16:18system like git. To succeed in devops,
- 1:16:21you need to have all of the
- 1:16:22communication in version control. Hence,
- 1:16:25Git plays a very vital role in
- 1:16:27succeeding at DevOps. Now, let's move on
- 1:16:30to the next tool that is Selenium.
- 1:16:32Selenium is one of the most widely used
- 1:16:35open-source web user interface
- 1:16:37automation testing suite. It was
- 1:16:40originally developed by Jason Hoggins in
- 1:16:422004 as an internal tool at Thought
- 1:16:45Works. So, Selenium supports automation
- 1:16:47across different browsers, platforms,
- 1:16:49and programming languages. So this tool
- 1:16:52can be easily deployed on platforms such
- 1:16:54as Windows, Linux, Solaris, and
- 1:16:56Macintosh. Moreover, it supports
- 1:16:58operating systems for mobile
- 1:17:00applications like Windows and Android.
- 1:17:03Selenium supports a wide variety of
- 1:17:04programming languages through the use of
- 1:17:07drivers specific to each language.
- 1:17:09Languages supported by Selenium include
- 1:17:11C, Java, Pearl, PHP, Python, and Ruby.
- 1:17:15Currently, Selenium web driver is the
- 1:17:18most popular with Java and C. Selenium
- 1:17:21test strips can be coded in any of the
- 1:17:23supported programming languages and can
- 1:17:25be run directly in most modern web
- 1:17:27browsers. Browsers supported by Selenium
- 1:17:30include Internet Explorer, Mozilla,
- 1:17:32Firefox, Google Chrome, and Safari. So
- 1:17:35basically, it can be used to automate
- 1:17:37functional tests and can be integrated
- 1:17:39with automation test tools such as
- 1:17:42Maven, Genkins, and Docker to achieve
- 1:17:44continuous testing. It can be also
- 1:17:47integrated with tools such as testng and
- 1:17:50junit for managing test cases and
- 1:17:52generating reports. So now moving on,
- 1:17:55what are the advantages of selenium? Why
- 1:17:57should we choose selenium? Since
- 1:17:59selenium is open-source, there is no
- 1:18:01licensing cost involved which is a major
- 1:18:04advantage over other testing tools.
- 1:18:06There are many other reasons behind
- 1:18:08selenium's ever growing popularity. The
- 1:18:10first one is that test scripts can be
- 1:18:12written in any of the programming
- 1:18:14languages that is Java, Python, C#, PHP,
- 1:18:17Ruby, Pearl, Net etc. Tests can also be
- 1:18:20carried out in any of the operating
- 1:18:22systems that is Windows, Mac or Linux.
- 1:18:24Tests can also be carried out using any
- 1:18:27browser that is Mosella, Firefox,
- 1:18:29Internet Explorer, Google, Chrome,
- 1:18:31Safari, Oprah. We've all discussed this
- 1:18:33in the previous slide. And the last use
- 1:18:35is that it can be integrated with Maven,
- 1:18:38Genkins and Docker to achieve continuous
- 1:18:40testing. So in short, Selenium can be
- 1:18:43used for automated testing. Also because
- 1:18:46it has cross browsers compatibility, it
- 1:18:48is more preferred and it also increases
- 1:18:51test coverage and reduces test execution
- 1:18:54time. Now moving on, let us understand
- 1:18:56an important concept in Selenium that is
- 1:18:58the selenium grid. Selenium grid was
- 1:19:01developed by Patrick Light body and
- 1:19:03initially called it hosted QA. It was
- 1:19:06used in a combination with remote
- 1:19:07control to run tests on remote machines.
- 1:19:10In fact, with grid, multiple test
- 1:19:12scripts can be executed at the same time
- 1:19:14on multiple machines. Parallel execution
- 1:19:17is achieved with the help of hub node
- 1:19:19architecture. One machine will assume
- 1:19:21the role of hub and the others will be
- 1:19:23the nodes. Hub controls the test scripts
- 1:19:26running on various browsers inside
- 1:19:28various operating systems. Test scripts
- 1:19:30being executed on different nodes can be
- 1:19:32written in different programming
- 1:19:34languages. Grid is still in use and
- 1:19:36works with both web driver and remote
- 1:19:39control. So we'll be learning about the
- 1:19:41web driver in the next slide. However,
- 1:19:43maintaining a grid with all required
- 1:19:45browsers and operating systems is a very
- 1:19:47huge challenge. For this, there are
- 1:19:50multiple online platforms that provide
- 1:19:52an online selenium grid that lets you
- 1:19:54access to run your Selenium automation
- 1:19:56scripts. For example, you can use Lambda
- 1:19:58Test. It has more than 2,000 browser
- 1:20:01environments over which you can run your
- 1:20:02test and truly automate cross browser
- 1:20:05testing. Now, let's understand what is
- 1:20:07Selenium Web Driver. Selenium Web Driver
- 1:20:10is a web-based automation testing
- 1:20:12framework that can test web pages
- 1:20:15initiated on various web browsers and
- 1:20:17various operating systems. In fact, you
- 1:20:20also have the freedom to write test
- 1:20:22scripts in different programming
- 1:20:23languages like Java, Pearl, Python, etc.
- 1:20:27It is important to remember that Mozilla
- 1:20:29Firefox is Selenium Web Driver's default
- 1:20:31browser. Now, some benefits of Selenium
- 1:20:34Web Driver are that they support seven
- 1:20:36programming languages. They test on
- 1:20:38various browsers and they work on
- 1:20:40different operating systems. Also, it
- 1:20:42overcomes limitations of Selenium
- 1:20:44version one like file upload, download,
- 1:20:47popups, and dialog barrier. Now, let's
- 1:20:50move on to the next most important tool
- 1:20:52that is genkins. Continuous integration
- 1:20:55is the most important part of DevOps
- 1:20:57that is used to integrate various DevOps
- 1:21:00stages. Genkins is the most popular
- 1:21:03continuous integration tool. It is an
- 1:21:05open-source automation tool written in
- 1:21:07Java with plugins built for continuous
- 1:21:10integration purposes. Genkins is
- 1:21:12basically used to build and test your
- 1:21:15software projects continuously making it
- 1:21:17easier for developers to integrate
- 1:21:19changes to the project and making it
- 1:21:22easier for users to obtain a fresh
- 1:21:24build. It also allows you to
- 1:21:26continuously deliver your software by
- 1:21:28integrating with a large number of
- 1:21:30testing and deployment technologies. So
- 1:21:33basically with Genkins organizations can
- 1:21:36accelerate the software development
- 1:21:38process through automation. Genkins
- 1:21:41integrates development life cycle
- 1:21:42processes of all kinds including build,
- 1:21:46document, test, package, stage, deploy,
- 1:21:50static analysis and much more. So this
- 1:21:53tool also achieves continuous
- 1:21:55integration with the help of plugins.
- 1:21:57Plugins are extremely important. It
- 1:21:59allows the integration of various DevOps
- 1:22:01stages. If you want to integrate a
- 1:22:04particular tool, you need to install
- 1:22:06that particular plug-in for that tool.
- 1:22:08For example, Git, Maven to project,
- 1:22:11Amazon EC2, HTML publisher, etc. There
- 1:22:14are many advantages of Genkins and I
- 1:22:17want to discuss each one of them in
- 1:22:19detail. So, the first one is it is an
- 1:22:21open-source tool with a great community
- 1:22:23support. The second one is it is
- 1:22:26extremely easy to install. The next one
- 1:22:29is it has more than thousand plugins to
- 1:22:31ease your work. Now if a plug-in does
- 1:22:33not exist, you can simply code it and
- 1:22:35share it with the community. The fourth
- 1:22:38advantage is it is free of cost. The
- 1:22:41last one is it is built with Java. Now
- 1:22:43if you have been coding for some time
- 1:22:45now, you must be knowing that Java is
- 1:22:47portable to all the major platforms. So
- 1:22:50this gives an added advantage to
- 1:22:51Genkins. So what makes Genkins different
- 1:22:55from the other continuous integration
- 1:22:57tools? There are two reasons. The first
- 1:22:59one is adoption. The second one is
- 1:23:01plugins. So Genkins is widespread with
- 1:23:04more than 1 lakh 47,000 active
- 1:23:07installations and over 1 million users
- 1:23:09around the world. The adoption of
- 1:23:11Genkins is extremely high. The second
- 1:23:14one is that Genkins is interconnected
- 1:23:16with well over thousand plugins that
- 1:23:18allow it to integrate with most of the
- 1:23:20development, testing and deployment
- 1:23:22tools. So these two features that is
- 1:23:24adoption and plugins make it one of the
- 1:23:27best continuous integration tools
- 1:23:28currently available in the market. Now
- 1:23:31let's move on to the next tool of DevOps
- 1:23:33tools that is Puppet. Today the most
- 1:23:36mature tool for configuration management
- 1:23:38is Puppet. But I know you must be
- 1:23:40wondering why puppet is so popular and
- 1:23:42what makes it unique when compared to
- 1:23:44other configuration management tools.
- 1:23:47Puppet is a configuration management
- 1:23:49tool that is used for deploying,
- 1:23:51configuring and managing servers. So now
- 1:23:54let's understand the functions of
- 1:23:55puppet. So the first one is it helps in
- 1:23:58defining distinct configurations for
- 1:24:00each and every host and it also
- 1:24:03continuously checks and confirms whether
- 1:24:05the required configuration is in place
- 1:24:07and is not altered on the host. The
- 1:24:10second function is dynamic scaling up
- 1:24:12and scaling down your machines. The last
- 1:24:15one is it provides control over all your
- 1:24:18configured machines. So a centralized
- 1:24:20change gets propagated to all
- 1:24:22automatically. Puppet basically uses a
- 1:24:25master slave architecture in which the
- 1:24:27master and slave communicate through a
- 1:24:30secure encrypted channel with the help
- 1:24:32of SSL. Now let's see this architecture
- 1:24:35in detail. So as you can see the diagram
- 1:24:37on the screen. The puppet agent sends
- 1:24:39the facts to the puppet master. Facts
- 1:24:42are basically key value data pair that
- 1:24:44represents some aspect of the slave
- 1:24:46state such as its IP address, uptime,
- 1:24:49operating system or whether it's a
- 1:24:51virtual machine. Puppet master uses the
- 1:24:54facts to compile a catalog that defines
- 1:24:56how the slave should be configured.
- 1:24:59Catalog is a document that describes the
- 1:25:01desired state for each resource that
- 1:25:03puppet master manages on a slave. Puppet
- 1:25:06slave reports back to the master
- 1:25:08indicating that the configuration is
- 1:25:10finally complete which is visible in the
- 1:25:12puppet dashboard. Now with this we come
- 1:25:15to the last tool of DevOps, Nag IOS. Nag
- 1:25:19iOS monitors your entire IT
- 1:25:21infrastructure to ensure systems,
- 1:25:24applications, servers and business
- 1:25:26processes are functioning properly. It
- 1:25:28is an integral to the DevOps life cycle.
- 1:25:31So it is basically used for continuously
- 1:25:33monitoring of systems, applications,
- 1:25:35servers and business processes in a
- 1:25:38DevOps culture. So in the event of a
- 1:25:40failure, Nag iOS can alert technical
- 1:25:43staff of the problem, allowing them to
- 1:25:45begin remediation processes before
- 1:25:47outages affect business processes, end
- 1:25:50users, or customers. With this tool, you
- 1:25:53don't really have to explain why an
- 1:25:54unseen infrastructure outage affects
- 1:25:57your organization's bottom line. Now iOS
- 1:26:00runs on a server, usually as a damon or
- 1:26:02a service. It periodically runs plugins
- 1:26:05residing on the same server. The contact
- 1:26:08hosts or servers on your network or on
- 1:26:10the internet. One can view the status
- 1:26:13information using the web interface. You
- 1:26:15can also receive email or SMS
- 1:26:17notification if something happens. The
- 1:26:20Nag iOS damon behaves like a
- 1:26:22scheduleuler that runs certain scripts
- 1:26:24at certain moments. It stores the
- 1:26:26results of those scripts and will run
- 1:26:28other scripts if these result changes.
- 1:26:31Nag iOS also use plugins. So these are
- 1:26:34compile executables or scripts that can
- 1:26:36be run from a command line to check the
- 1:26:38status or a host or a service. Nag iOS
- 1:26:42also uses the results from the plugins
- 1:26:44to determine the current status of the
- 1:26:46host and services on your network. Nag
- 1:26:49iOS is built on a server or agents
- 1:26:52architecture. Usually on a network a nag
- 1:26:54iios server is running on a host and
- 1:26:57plugins interact with local and all the
- 1:26:59remote hosts that need to be monitored.
- 1:27:02So these plugins will send information
- 1:27:04to the scheduleuler which displays that
- 1:27:06in a graphical user interface. With this
- 1:27:09we come to the end of DevOps tools.
- 1:27:11Let's move on to the next part of the
- 1:27:13session that is DevOps automation.
- 1:27:15Automation is the crucial need for
- 1:27:17DevOps practices and automating
- 1:27:20everything is the fundamental principle
- 1:27:21of DevOps. We discussed this initially
- 1:27:24in the session. Automation kickstarts
- 1:27:26from the code generation on the
- 1:27:28developer machine until the code is
- 1:27:30pushed to the code and after that to
- 1:27:32monitor the application and system in
- 1:27:34the production. Automating
- 1:27:36infrastructure setup and configurations.
- 1:27:39Software deployment is the key highlight
- 1:27:41of DevOps practice. DevOps practice is
- 1:27:45dependent on automation to make
- 1:27:46deliveries over a few hours and make
- 1:27:49frequent deliveries across platforms.
- 1:27:52Automation and DevOps boosts speed,
- 1:27:55consistency, higher accuracy,
- 1:27:57reliability and increases the number of
- 1:28:00deliveries. Automation and DevOps
- 1:28:02encapsulates everything right from the
- 1:28:04building, deploying and monitoring in
- 1:28:07large DevOps team that maintain
- 1:28:08extensive massive IT infrastructure. The
- 1:28:11tools can be classified into six
- 1:28:13categories that is infrastructure
- 1:28:16automation, configuration management,
- 1:28:18deployment automation, performance
- 1:28:21management, log management and
- 1:28:23monitoring. So for infrastructure
- 1:28:25automation, a great example is the
- 1:28:28Amazon web services. Being a cloud
- 1:28:30service, you don't really need to be
- 1:28:32physically present in the data center.
- 1:28:34They're easy to scale on demand and
- 1:28:36there are no upfront hardware costs. It
- 1:28:39can also be configured to provide more
- 1:28:41servers based on traffic automatically.
- 1:28:43For the second one, Chef is a great
- 1:28:45example. Chef is a handy DevOps tool for
- 1:28:48achieving speed, scale, and consistency.
- 1:28:51It can be used to ease up complex tasks
- 1:28:53and perform configuration management.
- 1:28:56With the help of this tool, the DevOps
- 1:28:58team can avoid making changes across
- 1:29:0010,000 servers. Rather, they need to
- 1:29:03make changes in one place which is
- 1:29:05automatically reflected in other
- 1:29:07servers.
- 1:29:08For deployment automation, Genkins is a
- 1:29:11great example. As we have already
- 1:29:13discussed before, it helps facilitate
- 1:29:15continuous integration and testing. It
- 1:29:18integrates project changes more
- 1:29:20efficiently by quickly finding issues as
- 1:29:22soon as builds are deployed. For the
- 1:29:25fourth one that is performance
- 1:29:26management, application dynamic is a
- 1:29:28great example. It offers real-time
- 1:29:31performance monitoring. The data that is
- 1:29:33collected by this tool help developers
- 1:29:35to debug whenever an issue occurs.
- 1:29:38The fifth one that is for log
- 1:29:39management. Splunk is a great example.
- 1:29:42This DevOps tool solves issues such as
- 1:29:44storing, aggregating and analyzing all
- 1:29:47logs in one place. So for the last one
- 1:29:50that is monitoring, Nag iOS is a great
- 1:29:53example. It notifies people when
- 1:29:56infrastructure and related services go
- 1:29:58down. It is a tool for this purpose
- 1:30:00which helps the DevOps team to find and
- 1:30:02correct problems immediately. Okay. Now
- 1:30:05moving on, let's talk about Azure and
- 1:30:08AWS DevOps. Azure DevOps is also known
- 1:30:11as Microsoft Visual Studio Team
- 1:30:14Services. It is basically a set of
- 1:30:16collaborative development tools built
- 1:30:18for the cloud. VSTS was commonly used as
- 1:30:22a standalone term and Azure DevOps is a
- 1:30:25platform which is made up of a few
- 1:30:27different products. Some of the products
- 1:30:29are Azure test plans, Azure boards,
- 1:30:31Azure repos, Azure pipelines, and Azure
- 1:30:34artifacts. So, Azure DevOps is
- 1:30:37everything that needs to turn an idea
- 1:30:39into a working piece of software. You
- 1:30:41can plan a project with Azure tools. The
- 1:30:44Azure pipeline is the continuous
- 1:30:46integration component of Azure DevOps.
- 1:30:49The Azure pipeline is Microsoft's
- 1:30:51cloudnative continuous integration
- 1:30:53server which allows teams to
- 1:30:55continuously build, test and deploy all
- 1:30:57from the cloud. An Azure pipeline can
- 1:31:00connect to any number of source code
- 1:31:02repositories such as Azure repos, GitHub
- 1:31:05tests to grab code and artifacts for
- 1:31:08application delivery. Now let me talk
- 1:31:10about Azure DevOps server. So this
- 1:31:13server is a Microsoft product that
- 1:31:14provides version control, requirements
- 1:31:17management, reporting, lab management
- 1:31:19and other release management
- 1:31:21capabilities. It basically covers the
- 1:31:23entire application of life cycle and
- 1:31:26enables DevOps capabilities.
- 1:31:28Azure DevOps can be used as a backend to
- 1:31:31the numerous integrated development
- 1:31:33environments, but it is modified for
- 1:31:35Microsoft Visual Studio and Eclipse on
- 1:31:38all platforms.
- 1:31:40Now that we discussed Azure DevOps
- 1:31:42server, let me talk about Azure DevOps
- 1:31:44services. So Microsoft announced the
- 1:31:47release of the software as a service
- 1:31:49offering of Visual Studio on the
- 1:31:51Microsoft Azure platform. At the time,
- 1:31:53Microsoft called it as a Visual Studio
- 1:31:55online. Microsoft offers Visual Studio
- 1:31:59basic and stakeholder subscriber access
- 1:32:01levels for the Ashure DevOps services.
- 1:32:04Now let's learn about AWS DevOps. AWS
- 1:32:07that is Amazon Web Services is the best
- 1:32:10cloud service provider and DevOps is the
- 1:32:12implementation of the software
- 1:32:14development life cycle. Here are some
- 1:32:16reasons which makes AWS DevOps a very
- 1:32:19highly popular combination such as AWS
- 1:32:22cloud formation, AWS EC2, AWS cloudatch
- 1:32:26and AWS pipeline. So let me talk about
- 1:32:29AWS cloud formation. Here the DevOps
- 1:32:31team is required to create and release
- 1:32:33cloud instances and services more
- 1:32:35frequently in comparison to development
- 1:32:38teams. Templates of AWS resources such
- 1:32:41as EC2 instances, ECS containers and S3
- 1:32:45storage buckets lets you set up the
- 1:32:48entire stack without having to bring
- 1:32:50together everything. So in the AWS EC2
- 1:32:53you can run containers inside EC2
- 1:32:55instances. Hence you can leverage the
- 1:32:58AWS security and management features.
- 1:33:01The third one that is AWS cloudatch. So
- 1:33:03the AWS cloudatch is a monitoring tool
- 1:33:06that tracks every resource that AWS has
- 1:33:09to offer. That is it makes it easy to
- 1:33:11use third party tools for monitoring
- 1:33:13such as sumo logic etc. The fourth one
- 1:33:16that is AWS code pipeline is an
- 1:33:18essential feature from AWS which highly
- 1:33:22simplifies the way you manage your
- 1:33:23continuous integration and continuous
- 1:33:25deployment tools. It basically
- 1:33:27integrates with tools such as genkins,
- 1:33:29GitHub and code deploy that enable you
- 1:33:32to visually control the flow of
- 1:33:33application updates from build to
- 1:33:35production. With this we've reached the
- 1:33:38last topic of today's session. DevOps
- 1:33:40certification. DevOps training
- 1:33:42certification helps anyone to make a
- 1:33:44career as a DevOps engineer. So the
- 1:33:47DevOps certifications are available from
- 1:33:49Red Hat, Amazon Web Services, DevOps
- 1:33:52Institution, Microsoft Academy, and
- 1:33:54Edureka.
- 1:33:56Edureka's DevOps certification training
- 1:33:58program will provide you with an
- 1:34:00in-depth knowledge of various DevOps
- 1:34:02tools including Git, Genkins, Docker,
- 1:34:05Puppet, Kubernetes, etc. This training
- 1:34:08is completely hands-on and designed in a
- 1:34:10way to help you become a certified
- 1:34:12practitioner through best practices in
- 1:34:14continuous development, continuous
- 1:34:16testing, configuration management,
- 1:34:19continuous integration, and finally
- 1:34:21continuous monitoring of software
- 1:34:23throughout its development life cycle.
- 1:34:32Let's start out with what's version
- 1:34:35control. So to understand what is
- 1:34:37version control system, we need to
- 1:34:39understand first why we need a version
- 1:34:41control system. So we'll see why do we
- 1:34:43exactly need a version control system.
- 1:34:45So for that let's take a scenario where
- 1:34:48there are three developers working
- 1:34:50remotely on a web application or a
- 1:34:52mobile application. Now for simplicity
- 1:34:55sake let's just assume that it is a
- 1:34:58streaming application and one of them is
- 1:35:01working on a streaming page. Let's call
- 1:35:04them developer one. Developer two is
- 1:35:06working on a user information page and
- 1:35:10developer 3 is creating the payment
- 1:35:12portal. Now all three of them are done
- 1:35:15with their respective pages at 10:00,
- 1:35:1811:00 and 12:00 respectively. Now the
- 1:35:21thing is all three developers are
- 1:35:23working in isolation. There may be their
- 1:35:26own changes. There may be changes in
- 1:35:29somebody's else's page. They're all kind
- 1:35:32of adding some new files or modifying
- 1:35:35older files, changing the source code or
- 1:35:38something like that throughout the
- 1:35:39course of this project. But how exactly
- 1:35:42are they going to collaborate
- 1:35:44considering that they are working
- 1:35:46remotely? The solution to this is a
- 1:35:48version control system. With this
- 1:35:50system, I'll tell you what happens. At
- 1:35:5310:00, developer 1 uploads all the files
- 1:35:56regarding the streaming page. With a
- 1:35:59version control system, this
- 1:36:01modification is recorded and updated to
- 1:36:04one central directory or folder. So
- 1:36:07every time you're modifying an older
- 1:36:10file or adding a new file, it creates a
- 1:36:13snapshot of the latest version or the
- 1:36:16latest update of the changes that you've
- 1:36:19made or all the files that you've
- 1:36:20uploaded. So the snapshot of your update
- 1:36:24at 10:00 is saved. And then when
- 1:36:27developer 2 adds their user info page,
- 1:36:32this modification is also saved as a
- 1:36:34snapshot. Now there are two snapshots
- 1:36:36saved. And finally, the payment portal
- 1:36:39page is added. And this is the last
- 1:36:41modification done at 12:00 and this is
- 1:36:44the most recent snapshot saved along
- 1:36:47with other snapshots of other updates
- 1:36:49and modifications done throughout the
- 1:36:52course of this project. Every change in
- 1:36:54your project, a snapshot is created and
- 1:36:56your entire project is saved that way.
- 1:36:59And these snapshots are actually known
- 1:37:02as different versions, which are
- 1:37:04basically the state of your project at a
- 1:37:07particular time or at the current time.
- 1:37:10It means that it'll contain the kind of
- 1:37:12files your project is storing at one
- 1:37:14particular time and what kind of changes
- 1:37:17you have made so far between the
- 1:37:20previous version and this particular
- 1:37:22version. And this is exactly how a
- 1:37:24version control system works. So version
- 1:37:27control system basically is a system
- 1:37:29that records changes to a file or a set
- 1:37:32of files over time so that you can
- 1:37:35record specific versions later. These
- 1:37:37versions are recorded in a repository
- 1:37:40and they can be recalled any time from
- 1:37:42these repositories during the course of
- 1:37:44your project. So version control system
- 1:37:47essentially are of three types. Now the
- 1:37:50local version control system is one of
- 1:37:52the simplest forms of VCS and has a
- 1:37:55database that keeps all the changes of
- 1:37:58the files under revision control. So all
- 1:38:01the files are saved by this one user and
- 1:38:05they manage all of the files. But it's
- 1:38:08actually really hard to maintain the
- 1:38:10changes of the file and you can
- 1:38:11accidentally replace one or the other
- 1:38:13file that you need. It also needs
- 1:38:15something known as RCS or revision
- 1:38:18control system which keeps patch sets or
- 1:38:21the differences between updates in a
- 1:38:24special format on your disk. All of this
- 1:38:27your local version control systems
- 1:38:29maintains all the track of all the files
- 1:38:31within your local system. As a user, you
- 1:38:33can track specifically uh versions later
- 1:38:36and it basically works as an independent
- 1:38:38standalone system for an application. So
- 1:38:41your applications like spreadsheets and
- 1:38:43word processors have this control
- 1:38:45mechanism. So that's one type. Apart
- 1:38:49from this, you also have your
- 1:38:50centralized version control system which
- 1:38:53basically uses a central server to store
- 1:38:56all the files and enables team
- 1:38:58collaboration. So it's not one local
- 1:39:01system but multiple systems which work
- 1:39:04on a single repository to which users
- 1:39:07can directly access as a central server.
- 1:39:10So the repository is a central server
- 1:39:13that could be local or remote which is
- 1:39:16directly connected to each of the
- 1:39:18programmer's workstation. And the third
- 1:39:20kind of VCS is a distributed version
- 1:39:23control system. Now these systems do not
- 1:39:26necessarily rely on a central server to
- 1:39:29store all the versions of a project
- 1:39:30file. In a distributed version control
- 1:39:33system, every contributor has a local
- 1:39:35copy or a clone of the main repository.
- 1:39:38So everyone maintains their own local
- 1:39:40repository which contains all the files
- 1:39:42and the metadata present in the main
- 1:39:44repository and they can push or commit
- 1:39:47or update the main repository if and
- 1:39:51when required. Now we are going to cover
- 1:39:53more on the latter two version control
- 1:39:57systems further in the session. So now
- 1:40:00let's try and understand in depth what's
- 1:40:03the difference between a centralized
- 1:40:04version control system and a distributed
- 1:40:07version control system. As I had
- 1:40:09mentioned before in a centralized
- 1:40:10version control system each programmer
- 1:40:13working on a branch on a project has
- 1:40:16absolute access to the central server.
- 1:40:19So the centralized version control
- 1:40:21system uses a central server to store
- 1:40:23all the files and everybody on the team
- 1:40:26can directly access the central server
- 1:40:28as it is one single repository. So if
- 1:40:31you have three workstations, workstation
- 1:40:33one, workstation 2, workstation 3, all
- 1:40:36of them can directly commit to the
- 1:40:38repository and get updates from the
- 1:40:41repository which is your central server.
- 1:40:43The repository here indicates a server
- 1:40:47that could be local or remote directly
- 1:40:50connected to each programmer's
- 1:40:52workstation. Every programmer can
- 1:40:54extract or update their workstations
- 1:40:58with the data present in the repository
- 1:41:00or can make changes or updates or commit
- 1:41:03in the repository and every operation is
- 1:41:06performed directly on this repository.
- 1:41:09Even though this seems pretty convenient
- 1:41:11when we are just talking about three
- 1:41:13people to maintain a single repository
- 1:41:15like this has some major drawbacks. One
- 1:41:18of them is that it's not locally
- 1:41:20available. Meaning every change that you
- 1:41:22have to make you will have to be
- 1:41:24connected to a network to perform any
- 1:41:26action. Also in any case the central
- 1:41:29server getting crashed or corrupted will
- 1:41:32result in losing the entire data of the
- 1:41:35project. Also another small thing which
- 1:41:38is revertible but is if one person
- 1:41:41accidentally makes some unwanted updates
- 1:41:45instead of his or her local system they
- 1:41:47will be making that changes directly in
- 1:41:49the central server. So recovering that
- 1:41:52part back will be again a timeconuming
- 1:41:55process. This is where distributed
- 1:41:57version control systems come to the
- 1:41:59rescue. Now these systems do not
- 1:42:01necessarily rely on a central server to
- 1:42:05store all the versions of a project
- 1:42:07file. In the distributed version control
- 1:42:09system, each and every contributor has a
- 1:42:12local copy or a local workstation clone
- 1:42:15of the main repository. That is
- 1:42:17everybody maintains a local repository
- 1:42:19of their own which contains all the
- 1:42:21files and metadata present in the main
- 1:42:23repository. You will understand it
- 1:42:25better if you take a look at the
- 1:42:27diagram. As you can see, every
- 1:42:29programmer maintains a local repository
- 1:42:32or a local copy on its own, which is
- 1:42:35actually the copy or clone of the
- 1:42:36central repository on their local hard
- 1:42:39drive. They can commit and update their
- 1:42:42local repository without any
- 1:42:44interference from one another and then
- 1:42:46they can update their local repositories
- 1:42:48with new data from the central server by
- 1:42:51an operation called pull. Once they are
- 1:42:54done with their bit of the code, they
- 1:42:55can affect the changes of the main
- 1:42:58repository by an operation called push
- 1:43:00from their local repository.
- 1:43:03Now, this system or this act of cloning
- 1:43:06an entire repository to your workstation
- 1:43:08and making all the changes on a local
- 1:43:10repository gives you a couple of
- 1:43:12advantages over a centralized version
- 1:43:14control system. First of all, all the
- 1:43:17operations except push and pull are very
- 1:43:19fast because the tool only needs access
- 1:43:22to the hard drive and not a remote
- 1:43:24server. Hence, you do not always need to
- 1:43:27be connected via a network connection or
- 1:43:30you always do not need an internet
- 1:43:31connection. Committing new change sets
- 1:43:34can be done locally without manipulating
- 1:43:37the data on the main repository. Once
- 1:43:40you have a group of change sets ready,
- 1:43:42you can push them all at once. So you
- 1:43:45complete your set of code on your local
- 1:43:48system and then you push all the files
- 1:43:50once and for all into the main
- 1:43:52repository. Third, since every
- 1:43:55contributor has a full copy of the
- 1:43:57project repository, they can share
- 1:43:59changes with one another on wanting to
- 1:44:01get some feedback before affecting the
- 1:44:03changes in the main repository. So this
- 1:44:06enhances the essence of collaboration
- 1:44:09amongst a development team. And finally,
- 1:44:12if the server gets crashed at any point
- 1:44:14in time, the lost data can be easily
- 1:44:16recovered from one of the contributors
- 1:44:18local repository. And that is why
- 1:44:21distributed version control system has
- 1:44:23been picking up popularity over the past
- 1:44:25decade. So why version control is
- 1:44:28important? First of all, it helps
- 1:44:31collaboration. It allows remote
- 1:44:33development, shared workspace and
- 1:44:36realtime updates. All versions of your
- 1:44:39code are preserved. Hence, it helps you
- 1:44:41manage versions of the same code. Easy
- 1:44:44roll back from current version. Suppose
- 1:44:47a part of your project has been headed
- 1:44:49to a wrong direction, you can easily
- 1:44:52roll back from the current version to
- 1:44:55the last version which was stable. Now,
- 1:44:58because you can reverse faulty updates,
- 1:45:01you can save time and hence it reduces
- 1:45:03downtime of your project development.
- 1:45:06And finally, it improves visibility. You
- 1:45:09can analyze and compare different
- 1:45:11versions and that gives you like a 50-ft
- 1:45:14top view of your entire project which
- 1:45:17just accelerates your product delivery.
- 1:45:20So now that you have a bare sense of
- 1:45:23what is version control and why do you
- 1:45:25need version control, let's understand
- 1:45:28one of the most popular version control
- 1:45:31systems that exists today and that is
- 1:45:34git. So, Git is a distributed version
- 1:45:37control tool that supports distributed
- 1:45:40nonlinear workflows by providing data
- 1:45:44assurance from developing quality
- 1:45:46software. So, basically what it does is
- 1:45:49that it lets you and your team of
- 1:45:50developers work together on the same
- 1:45:52project remotely from anywhere across
- 1:45:55the world. Your team members can work
- 1:45:57efficiently on files and easily merge
- 1:46:00their changes into one source without
- 1:46:02the fear of losing or deleting anything
- 1:46:06of importance due to the easy roll back
- 1:46:09feature. Git is primarily used to manage
- 1:46:12your project comprising of a set of code
- 1:46:15or text files that you may want to
- 1:46:17change from time to time. Now, Git is an
- 1:46:20integral part of DevOps. DevOps as most
- 1:46:23of you might have the idea of is the
- 1:46:26practice of bringing agility to the
- 1:46:28process of development and operations. A
- 1:46:30couple years ago, it was this entirely
- 1:46:32revolutionary ideology which swept IT
- 1:46:35organizations worldwide, boosting
- 1:46:38project life cycles and in turn
- 1:46:40increasing profits. DevOps promoted
- 1:46:43communication between development
- 1:46:45engineers and operations participating
- 1:46:47together in the entire life cycle from
- 1:46:50design through development process to
- 1:46:52production support. Now in the entire
- 1:46:55life cycle of DevOps starting from
- 1:46:57planning of the projects to its
- 1:46:59deployment and monitoring git plays a
- 1:47:02vital role when it comes to managing the
- 1:47:04code that collaborators contribute to
- 1:47:06the shared repository. This code is
- 1:47:09extracted for performing continuous
- 1:47:11integration to create a build and test
- 1:47:14it on the test server and eventually
- 1:47:16deploy it to production. Tools like git
- 1:47:19enable communication between the
- 1:47:21development and operations team. When
- 1:47:24you are developing a large project with
- 1:47:26a huge number of collaborators, it is
- 1:47:28extremely important to have
- 1:47:30communication between the collaborators
- 1:47:32between the developers while making
- 1:47:34changes in the project. Comet messages
- 1:47:37in git play a very important role in
- 1:47:40this particular collaboration or
- 1:47:41communication amongst the team. The bits
- 1:47:44and pieces that we deploy or update lies
- 1:47:47in this version control system such as
- 1:47:49git. To succeed in DevOps, you need to
- 1:47:51have all the communication in version
- 1:47:54control. Hence, git plays an extremely
- 1:47:57vital role in succeeding at DevOps. And
- 1:48:00due to this very reason, git has earned
- 1:48:02way more popularity compared to other
- 1:48:05version control tools available in the
- 1:48:07market such as Apachi subversion,
- 1:48:09concurrent version systems and
- 1:48:10mercurial. If you compare the interest
- 1:48:13of git by time with other version
- 1:48:15control systems, you shall realize that
- 1:48:18larger companies products are generally
- 1:48:20developed by developers using git all
- 1:48:23around the globe. And some famous names
- 1:48:25out of them are Facebook, Yahoo, Zingga,
- 1:48:29Kora, Twitter, eBay, Salesforce,
- 1:48:31Microsoft, and many, many more. Now,
- 1:48:34lately, all of Microsoft's new
- 1:48:36development work has been in Git
- 1:48:39features. Microsoft Migrating.NET and
- 1:48:41many of its open-source projects on
- 1:48:44GitHub, which are managed by Git. One of
- 1:48:47such projects is the light GBM. It's a
- 1:48:49fast distributed high performance
- 1:48:51gradient boosting framework based on the
- 1:48:54decision tree algorithms which is used
- 1:48:56for ranking classification and many
- 1:48:58other machine learning tasks. Here git
- 1:49:01plays an important role in managing this
- 1:49:04distributed version of light GBM by
- 1:49:07providing speed and accuracy. So
- 1:49:10basically to enable version control gate
- 1:49:13is your go-to solution. It's fast and
- 1:49:16suitable for handling massive code bases
- 1:49:18scattered across multiple developers
- 1:49:21which makes it the most popular tool
- 1:49:23used today. Now that you know about Git,
- 1:49:26a terminology we'll be using a lot while
- 1:49:29talking about Git and GitHub is a
- 1:49:31repository. Now repository or a repo as
- 1:49:34it's most commonly known as is a
- 1:49:37directory or a storage space where your
- 1:49:40projects can basically live. It can be
- 1:49:42local to a folder or your computer or it
- 1:49:45can be a storage space in another online
- 1:49:48host such as your GitHub. And in this
- 1:49:50particular space, in this particular
- 1:49:52directory, you can keep your code files,
- 1:49:54text files, images, you name it, all of
- 1:49:57it inside a repository. Through the
- 1:50:00course of this, we shall also be talking
- 1:50:02about something known as GitHub, which
- 1:50:05is nothing but a central repository. The
- 1:50:07kind that we spoke about when we
- 1:50:09discussed centralized versus distributed
- 1:50:13version control systems. There's a
- 1:50:14central repository and that is where all
- 1:50:17of your code will live. You have your
- 1:50:19local repository where you'll make the
- 1:50:21changes and there you have the central
- 1:50:22repository to which you will push all of
- 1:50:24the changes. Yeah. And the central
- 1:50:27repository is something that all of the
- 1:50:29developers involved in this particular
- 1:50:31project in a certain project have access
- 1:50:34to. All right, moving on. Let's discuss
- 1:50:37a few Git features which make it so
- 1:50:39popular amongst organizations as well as
- 1:50:42individuals. First of all, it's
- 1:50:44economical. It's free and open-source.
- 1:50:47Git is released under GPL's general
- 1:50:50public licenses open source license. So
- 1:50:53you don't need to purchase Git. It is
- 1:50:55absolutely free and since it's open
- 1:50:58source you can modify the source code as
- 1:51:00per your requirement. Second is its
- 1:51:03speed. Now since you do not have to
- 1:51:06connect to any network for performing
- 1:51:08all of the operations, it completes all
- 1:51:11the tasks really fast. Performance tests
- 1:51:14done by Mozilla showed it was an order
- 1:51:17of magnitude faster than other version
- 1:51:20control systems. Fetching version
- 1:51:22history from locally stored repository
- 1:51:25can be 100 times faster than fetching it
- 1:51:29from the remote server. So the core part
- 1:51:31of git is written in C which avoids
- 1:51:34runtime overheads associated with other
- 1:51:37highle languages which makes it
- 1:51:40extremely fast compared to other version
- 1:51:42control systems. Next is that git
- 1:51:45supports nonlinear development. It
- 1:51:48supports rapid branching and merging and
- 1:51:51includes specific tools for
- 1:51:52visualization and navigation of a
- 1:51:55nonlinear development history. A core
- 1:51:58assumption in git is that a change will
- 1:52:00be merged more often than it's written
- 1:52:03as it is passed around various
- 1:52:05reviewers. Hence branches in git are
- 1:52:07very very lightweight and is only a
- 1:52:10reference to a single comet. With its
- 1:52:12parental comets the full branch
- 1:52:14structure can be constructed. Next,
- 1:52:17let's talk about the robustness.
- 1:52:20Nearly every single task in Git is
- 1:52:23undoable. Git gives each developer a
- 1:52:26local copy of the entire development
- 1:52:28history and the changes copied from one
- 1:52:31repository to another. These changes are
- 1:52:33imported as additional development
- 1:52:35branches and can be merged and deleted
- 1:52:39and recovered the same way as a locally
- 1:52:42developed branch. Next is the snapshots
- 1:52:46which are recorded changes made to a
- 1:52:48file rather than the file itself
- 1:52:52followed by which you have integrity
- 1:52:54which means no changes can be made
- 1:52:56without git recording it. Since every
- 1:52:59contributor has their own local
- 1:53:01repository on the events of a system
- 1:53:04crash the lost data can be recovered
- 1:53:06from any of the local repositories. You
- 1:53:08will always have a backup of all of your
- 1:53:10files and none of the changes made to
- 1:53:13the central repository will go unlocked
- 1:53:16by git. Git uses the sa1 or the secure
- 1:53:19hash function to name and identify
- 1:53:22objects within its repository and every
- 1:53:24file every comet is check summed and
- 1:53:26retrieved by its check sum at the time
- 1:53:29of the checkout. The git history is
- 1:53:31stored in such a way that the ID of a
- 1:53:34particular version. A comet in git's
- 1:53:36terms depends upon the complete
- 1:53:38development history leading up to that
- 1:53:40comet. Once it's published, it's not
- 1:53:43possible to change the old versions
- 1:53:45without it being recorded. Then it's a
- 1:53:48distributed system which means every
- 1:53:50user has their own copy of the
- 1:53:52repository and the data is stored
- 1:53:54locally. Git gives each developer a
- 1:53:57local copy of the entire development
- 1:53:59history and the changes are copied from
- 1:54:02one such repository to another. These
- 1:54:05changes are imported as additional
- 1:54:07development branches and can be merged
- 1:54:09in the same way as a locally developed
- 1:54:11branch. And finally, it's easy
- 1:54:14branching. Now, branch management with
- 1:54:16Git is very simple. It only takes a few
- 1:54:19seconds to create, delete, and merge
- 1:54:21branches. Feature branches provide an
- 1:54:23isolated environment for each change to
- 1:54:27your codebase. So when a developer wants
- 1:54:29to start working on something, no matter
- 1:54:31how big or small, they can create a
- 1:54:33fresh new branch which is not
- 1:54:35interfering with the main branch which
- 1:54:38ensures that the master branch or the
- 1:54:39main branch always contains production
- 1:54:42quality code. So any little
- 1:54:44experimentation that you want to do or
- 1:54:46little things that you want to try out
- 1:54:48can always be on a separate feature
- 1:54:50branch instead of the changes made to
- 1:54:53your master branch because ultimately
- 1:54:55your master branch should contain your
- 1:54:57publishable product. So now that you
- 1:55:00know the basic features of git, let's
- 1:55:03try and understand what the basic
- 1:55:05workflow of git is or how does git work.
- 1:55:08So the basic overview of how git works
- 1:55:11goes like this. You basically create a
- 1:55:14repository or a project with a git
- 1:55:16hosting tool like Git or Bitbucket. You
- 1:55:20copy or clone the repository to your own
- 1:55:22local machine or your working directory.
- 1:55:25You add a file to your local repository
- 1:55:28and commit the changes which basically
- 1:55:30means you save the changes. Then you
- 1:55:32push the changes to your master branch.
- 1:55:36Then you make changes to your file and
- 1:55:38commit. Then you pull the changes to
- 1:55:41your local machine. You create a branch
- 1:55:44or a version. Make a change, commit the
- 1:55:47change. Same process. Open a pull
- 1:55:49request and merge your branch to the
- 1:55:52master branch. Now, this is a little
- 1:55:54complicated listening to it like this.
- 1:55:56But once we get on to our demonstration,
- 1:55:59I think things will be way more clear.
- 1:56:02You can still take a good look at this
- 1:56:04diagram.
- 1:56:05But if you don't get it, don't worry. I
- 1:56:07will be explaining these operations one
- 1:56:10by one when we get to the demonstration
- 1:56:12part of this Git tutorial. Moving on,
- 1:56:14let's get to the good part, the hands-on
- 1:56:17section. Starting with the installation
- 1:56:20and setup of Git. Now, there are two
- 1:56:23ways in which this goes. First of all,
- 1:56:25for Windows users, you need to install
- 1:56:28Git Bash for Windows. And for Linux
- 1:56:31users, you'll have to start by updating
- 1:56:34the package index and then install git
- 1:56:36using the terminal. So first of all, for
- 1:56:39our learners using Windows, you'll have
- 1:56:42to log on to git sem.com/d
- 1:56:46downloads and then click on downloads
- 1:56:48for Windows button and then run the
- 1:56:51executable file and follow through till
- 1:56:54you finally install git bash. I'm not
- 1:56:57going to install it completely as I
- 1:56:59already have git bash downloaded but I'm
- 1:57:02still going to open the page to show you
- 1:57:05guys. All right. So the latest source
- 1:57:08release is get 2.30.1
- 1:57:12on the 8th of Feb. And you can just
- 1:57:15click on this button. The moment you
- 1:57:17click on this button it's going to start
- 1:57:20downloading it for you. And once you
- 1:57:23have the executable file, all you have
- 1:57:25to do is open it or run it in your own
- 1:57:28system. Right. Next, for people using
- 1:57:33Linux, this is an example considering
- 1:57:36you are using Ubuntu. If you're using
- 1:57:39CentOS, a lot of the commands don't
- 1:57:42change, but instead of apt install, you
- 1:57:45will be using Yum install for CentOS. So
- 1:57:49for that now I'm going to open my
- 1:57:52terminal on a virtual machine. So here I
- 1:57:56have running an Ubuntu machine using the
- 1:57:59Oracle virtual box.
- 1:58:02So I'm going to start by running an
- 1:58:08update.
- 1:58:10All right, this is going to take a
- 1:58:12while. Kindly be patient.
- 1:58:16So here I have my Ubuntu running on a
- 1:58:19virtual machine. So to install git on
- 1:58:22your Ubuntu machine, you have to start
- 1:58:24by updating. So this will take some
- 1:58:28time. If you're going to use pseudo apt
- 1:58:31update. If you're using CentOS, you will
- 1:58:34be using Yum instead of apt.
- 1:58:39Let's clear that out. And
- 1:58:42then we're going to install git
- 1:58:51and then you can look for the git
- 1:58:53version. Yeah. All right. Now that we
- 1:58:56have our git installed, let's go ahead
- 1:59:00and look at the operations and commands
- 1:59:03that we are going to take a look at
- 1:59:05today. You have your repository setup
- 1:59:08which include the commands init, clone,
- 1:59:11config and alias. Then you have your
- 1:59:14save changes operations which have your
- 1:59:17add, commit, diff, and stash. All of
- 1:59:20these commands we going to go on and off
- 1:59:23and um look at collectively mostly. Then
- 1:59:27we going to look at the inspect
- 1:59:29operations. Your inspect repository
- 1:59:31operations of which the get status
- 1:59:34command is something we are also going
- 1:59:36to look at throughout this demonstration
- 1:59:39right from the beginning. So apart from
- 1:59:41that you have your git log get tag and
- 1:59:43get blame commands. So you have your
- 1:59:46merge rebase command. So let's move on
- 1:59:49to our first set of git operations.
- 1:59:52First of all, you have your gin init
- 1:59:54command which basically creates a new
- 1:59:57empty git repository. Now, this can be
- 1:59:59used to convert an existing inversion
- 2:00:02project to a git repository or initiate
- 2:00:05an absolute fresh git repository. Now,
- 2:00:08most other git commands are not
- 2:00:10available outside of the initialized
- 2:00:12repository. So, this is usually the
- 2:00:14first command that you will run in a new
- 2:00:18project. That is if you're using git
- 2:00:20bash. So when I run git in it, it
- 2:00:24reinitializes an existing git repository
- 2:00:27which I already have here. Now what this
- 2:00:29does is it reinitialized my existing git
- 2:00:34repository in this particular directory
- 2:00:37in this.git directory. Yeah. What git
- 2:00:41init does is that it creates an empty
- 2:00:43git repository or reinitializes an
- 2:00:47existing one like it did for me right
- 2:00:49now. It basically creates a doggit
- 2:00:51directory with subdirectories and
- 2:00:54template files. And when you run the git
- 2:00:57init command in an existing repository,
- 2:01:00it will not overwrite the things that
- 2:01:02are already there. It'll rather pick up
- 2:01:05the newly added templates. So that's the
- 2:01:09repository initialized. You can go ahead
- 2:01:12and create some files in the directory
- 2:01:14or repository whatever you call it. Now
- 2:01:16that is about initialization. Now, what
- 2:01:19about if there was an existing
- 2:01:22repository on Git that you had to act
- 2:01:24upon, that you had to make updates to,
- 2:01:26that you had to add files to, things
- 2:01:29like that. That's where you use the git
- 2:01:31clone utility. Yeah. Now, you have the
- 2:01:34git clone utility which you use to
- 2:01:36target an existing repository and create
- 2:01:39a clone or copy of this particular
- 2:01:42repository on your local machine. Now
- 2:01:45this is one of the features provided to
- 2:01:46you by a distributed version control
- 2:01:49system as we had discussed before. So
- 2:01:52this is a blank file called edureka rep
- 2:01:54with just the readme text file. Let me
- 2:01:58just go ahead and copy this.
- 2:02:03And then I can just get clone and paste
- 2:02:08its HTTPS
- 2:02:11URL.
- 2:02:15And as you can see, it's cloning this
- 2:02:18into Edureka rep.
- 2:02:22And now if I change directory
- 2:02:25to edure rep, you can see the readme
- 2:02:29file is right there. Yeah.
- 2:02:34So we're basically going to work off of
- 2:02:38this particular repository today. Edure
- 2:02:41rep. Yeah. So now that we created a
- 2:02:44clone, moving on, we have the git config
- 2:02:48command which basically is a convenience
- 2:02:50function that is used to set up your git
- 2:02:52configuration values on your global or
- 2:02:55local project level. This command is
- 2:02:58basically used to modify your
- 2:02:59configuration text file. So if I typed
- 2:03:03get config
- 2:03:05global user email and here
- 2:03:09I type
- 2:03:14so there I given my email id as the
- 2:03:18global user email id. So if I ask for
- 2:03:21what the global user email id is it will
- 2:03:25return my ID back to me. Yeah.
- 2:03:30Basically these configuration levels
- 2:03:32like your username and your user ID
- 2:03:35correspond to your doggget config text
- 2:03:37files. Now executing this basically will
- 2:03:41help you modify the configuration text
- 2:03:44file. Git uses this series of
- 2:03:46configuration files to determine
- 2:03:48non-default behavior that you may want.
- 2:03:51Yeah. So the first place git looks for
- 2:03:53these values is in the systemwide
- 2:03:57configuration file which contains
- 2:03:59settings that are applied to every user
- 2:04:02on this system. So basically if you pass
- 2:04:04the option to your git config it will
- 2:04:07read and write from this file
- 2:04:09specifically and the next place the git
- 2:04:12looks is the config/git config file
- 2:04:15which is specific to each user. Now you
- 2:04:18can make get read or write to this file
- 2:04:21by passing your global option which is
- 2:04:23what I did.
- 2:04:25And the final command in the setup
- 2:04:28operations that we going to look at is
- 2:04:30an alias. Now alias as the name suggests
- 2:04:33is basically used to create shorter
- 2:04:35commands that map to longer commands.
- 2:04:37They enable more efficient workflows
- 2:04:40when you obviously have to use lesser
- 2:04:43key strokes to execute a command. There
- 2:04:45are these lengthy commands which
- 2:04:48obviously kill a lot of your time. So
- 2:04:51these aliases you can use to shorten
- 2:04:54those commands and these are also
- 2:04:56something that you will create via the g
- 2:04:59config command. There isn't really a
- 2:05:02direct way or a direct command of
- 2:05:04creating aliases. Yeah, this is just
- 2:05:07something I wanted to add in here along
- 2:05:08with the git config command. Like a very
- 2:05:11common alias created is co for checkout
- 2:05:14or anything else ek for checkout. So
- 2:05:17yeah this is something that you can do
- 2:05:20using the get config command just
- 2:05:23creating aliases. Moving on let's look
- 2:05:26at operations that you use to add
- 2:05:29changes and save changes to your git
- 2:05:32repository. Now the first two commands
- 2:05:35here that we're going to look at are git
- 2:05:37add and git commit. Now this combination
- 2:05:40is basically used to create these
- 2:05:43snapshots that I was talking about
- 2:05:44initially in the session. Right? So
- 2:05:47basically what you do is first you use
- 2:05:50the git add command to add a change in
- 2:05:53your current directory or your working
- 2:05:55directory and you add that to the
- 2:05:57staging area. It tells g that you want
- 2:06:00to include a particular set of updates
- 2:06:03or changes in a particular file in the
- 2:06:06next commit. Then what you do is you
- 2:06:09move on to get commit after making the
- 2:06:12changes to your working tree. Then you
- 2:06:14use the git commit command which
- 2:06:16captures a snapshot of your project's
- 2:06:20current state. So basically you use add
- 2:06:24to update the index using the current
- 2:06:26content found in your working tree and
- 2:06:29then you basically prepare the content
- 2:06:32in the staging area for the next comet.
- 2:06:34Then you run the commit command to take
- 2:06:37that snapshot of your project's current
- 2:06:40status. Now remember this is very
- 2:06:42important and you have to do it each
- 2:06:44time. You must use the add command to
- 2:06:47add any new modified files to the index.
- 2:06:51You can't directly commit anything
- 2:06:53without adding it to the stage area
- 2:06:55first. Now what I did was I quickly went
- 2:06:58ahead and added three files to my
- 2:07:01repository edure rep. So
- 2:07:06if I go into this repository you can see
- 2:07:09there are three files edure file one
- 2:07:11file two file three. Now let's see if
- 2:07:13these files are in my index or not using
- 2:07:17the command get status. Now g status
- 2:07:20basically displays the state of the
- 2:07:23working directory and the staging area.
- 2:07:26It will list all the modified files
- 2:07:28which are ready to be added to the local
- 2:07:30repository. It lets you see which
- 2:07:33changes have been staged and which
- 2:07:36haven't, which files are being tracked
- 2:07:38by git and not. So if I typed get
- 2:07:42status,
- 2:07:45you can see on your main branch
- 2:07:48you have three unttracked files, which
- 2:07:50are the three files that I just added,
- 2:07:52edure file 1, 2, and three. These are
- 2:07:56not added to the index yet. This means I
- 2:07:58cannot commit these changes unless I
- 2:08:01added them explicitly to the index. So
- 2:08:05now we're going to add these three
- 2:08:07files. This command will update the
- 2:08:10index using the current content which is
- 2:08:12found in your working tree as you can
- 2:08:14see in front of you and then it'll
- 2:08:16prepare the content in the staging area
- 2:08:18for the next comet. So either I can just
- 2:08:22get add and put in the directory name or
- 2:08:26I can just use get add with an extension
- 2:08:29of a which means all. And this will add
- 2:08:32all of these files to the index which
- 2:08:34are in the directory but not updated in
- 2:08:36the index yet. Yeah. Now I've done that.
- 2:08:40Let me go ahead and use get status
- 2:08:42again. And you can see all of these file
- 2:08:44names are written in green. And you can
- 2:08:47see changes to be committed
- 2:08:50written here which means all of these
- 2:08:52changes are ready to be committed. They
- 2:08:54are added to the index. Now these files
- 2:08:57are added to the index. You're ready to
- 2:08:59commit them. Now as I had mentioned
- 2:09:01before, we're going to commit them. And
- 2:09:04committing refers to recording the
- 2:09:05snapshots of the repository at any given
- 2:09:08time. So your committed snapshots will
- 2:09:10never change unless it's done
- 2:09:13explicitly. So, I'm going to clear this
- 2:09:16and we're going to commit this by typing
- 2:09:18get commit and then adding a tag or a
- 2:09:22message called
- 2:09:24committing
- 2:09:27three files. Let's try this out. As you
- 2:09:31can see, three files changed, three
- 2:09:33insertions. You can see our Edureka
- 2:09:36files 1 2 3 have been committed. The get
- 2:09:39commit command has committed the changes
- 2:09:41in the three files in your local
- 2:09:43repository. Now, if you want to commit a
- 2:09:46snapshot of all of the changes in your
- 2:09:48working directory at once, you can
- 2:09:50always go with commit-
- 2:09:53a. Now, let me add a couple more files
- 2:09:56to my directory just to show you the
- 2:09:58difference between your files added to
- 2:10:00the index versus the ones that are not.
- 2:10:11If I type ls again, you can see there
- 2:10:13are two more files over here. As you can
- 2:10:17see, I have two other files.
- 2:10:26I'm just going to add the edureka file 4
- 2:10:30and not the file five. And then I'm just
- 2:10:33going to get commit
- 2:10:37committing files. And as you can see,
- 2:10:39only one file changed. Only one
- 2:10:42insertion happened. And that only
- 2:10:44happened because Edureka file 5 is not
- 2:10:49added to the index.
- 2:10:52And even if I use the extension A, I
- 2:10:56cannot add E edureka file 5 because that
- 2:11:00has not been added to your index.
- 2:11:04Now if I just go ahead and add EDA file
- 2:11:085,
- 2:11:12voila,
- 2:11:13the change has occurred in our Git
- 2:11:16repository. Now if I typed get status
- 2:11:22there are no more files to add or
- 2:11:24commit. Our branch is ahead of the
- 2:11:26origin or main branch by three commits
- 2:11:29and you can use git push to publish your
- 2:11:31local commits. Now what is git push?
- 2:11:33This is something we will cover later in
- 2:11:36this session. Now understand that before
- 2:11:38you affect the changes made to the
- 2:11:40central repository, you should always
- 2:11:42pull changes from the central repository
- 2:11:45to your local repository just to get the
- 2:11:47most updated version of your branch.
- 2:11:50You'll get all the work of your
- 2:11:52collaborators that have been
- 2:11:54contributing in the central repository.
- 2:11:57For that you use the pull command. Now
- 2:12:00as you can see there's nothing to commit
- 2:12:02and you're working very clean.
- 2:12:04There are other commands like the get
- 2:12:06status command which you could use for
- 2:12:09similar purposes. For example, you have
- 2:12:12the git log command which only operates
- 2:12:14on committed history. It basically will
- 2:12:17display to you the committed snapshots
- 2:12:19and will let you list the project
- 2:12:21history, filter it and search for
- 2:12:23specific changes. So if you typed get
- 2:12:26log, it's going to show you all the
- 2:12:28commits that have happened since we
- 2:12:31started with this git file.
- 2:12:34Okay, here you can see at the bottom
- 2:12:36your original main. There's your initial
- 2:12:39commit, right? Then our first comet
- 2:12:43where we committed three files. Then we
- 2:12:45committed the fourth file and finally
- 2:12:47when we committed file number five,
- 2:12:50right? These are all the commits
- 2:12:52including the initial commit the first
- 2:12:54one. Yeah. Along with the author and the
- 2:12:58date and time. Remember when I told you
- 2:13:01about everything is recorded when you're
- 2:13:04using git? This is what I meant. You
- 2:13:07will can always access who made commits
- 2:13:10at what time and what commits were made
- 2:13:13when you use a version control system
- 2:13:16such as git. Now at a point like this, I
- 2:13:18think it's crucial to mention uh one
- 2:13:21more command which is the git tag. And
- 2:13:23it's used to basically capture a tag in
- 2:13:26history or a point in history that is
- 2:13:28used for a marked version release.
- 2:13:31Right? So it's basically uh like a
- 2:13:33branch that doesn't change and after
- 2:13:36being created they have no further
- 2:13:38history of commits. Yeah. So that is one
- 2:13:42and another one is get blame. Now the
- 2:13:46get blame function displays of the
- 2:13:49author's metadata attached to a specific
- 2:13:52committed line in a file. It's used to
- 2:13:54examine specific points in a files
- 2:13:57history and get context as to who the
- 2:14:00last author was that modified that line.
- 2:14:04So if I went back and typed get blame
- 2:14:09adure file 5.xt, txt
- 2:14:14it's going to show who the person is
- 2:14:17that is to blame who committed this
- 2:14:21particular file or made this particular
- 2:14:23change right it'll also if you paid
- 2:14:27attention give you the commit number as
- 2:14:31you can see this E9 D6 3E FO commit
- 2:14:36number this also has this E9 D6 3E FO
- 2:14:41which is the first few characters of
- 2:14:43this particular commit number. Yeah.
- 2:14:47So now that you know how to check the
- 2:14:50status of the changes and see who made
- 2:14:54the changes, it's time that you
- 2:14:56understand how you fetch changes from
- 2:14:59your remote repository to a local
- 2:15:01repository and how you push comets from
- 2:15:05your local repository to your remote
- 2:15:07repository. So here we going to look at
- 2:15:09two commands called pull and push. Now
- 2:15:12first of all you have the get pull
- 2:15:14command which fetches changes from your
- 2:15:16remote repository to a local repository.
- 2:15:18Basically it merges upstream changes in
- 2:15:21your local repository which is a common
- 2:15:24task in git based collaborations.
- 2:15:26But at first you need to set your
- 2:15:28central repository as the origin using
- 2:15:32the command get remote add origin. And
- 2:15:35I'm going to add the link to my central
- 2:15:37repository which is this.
- 2:15:42And as it says the remote origin already
- 2:15:45exists
- 2:15:47now that your origin is set. And now
- 2:15:49we're going to pull our main branch. So
- 2:15:53I'm just going to type get pull origin
- 2:15:55main.
- 2:15:56And it says we are already up to date.
- 2:15:59Now certain number of tutorials or
- 2:16:01documents that you might be following
- 2:16:03might even give you the command gp pull
- 2:16:06origin master in which case you're
- 2:16:09working on the master branch. Now to
- 2:16:11know which branch you're at you can just
- 2:16:14use a command get branch
- 2:16:18v. Yeah I'll tell you which branch are
- 2:16:22you working on. Yeah. So yeah, we are
- 2:16:25working on the main branch and we are
- 2:16:28already up to date with the branch since
- 2:16:32my local repository was already updated
- 2:16:34with files from the main branch. This is
- 2:16:36the message of an upto-date branch. Now
- 2:16:40you can also like use git pull origin
- 2:16:46and your whatever branch name. Here I'm
- 2:16:48using main.
- 2:16:50That's a mistake on my part. Maybe I was
- 2:16:52trying to clear the screen.
- 2:16:54All right. So here, even if I pull from
- 2:16:58the branch using get pull origin and the
- 2:17:01branch name to my local git repository,
- 2:17:04you can see it's already up to date. So
- 2:17:06now my local git repository is now all
- 2:17:09updated with the recent changes. So now
- 2:17:12it's time to make the changes to your
- 2:17:13central repository by using the push
- 2:17:15command. So we're going to use the push
- 2:17:18command. This command transfers commits
- 2:17:20from your local repository to your
- 2:17:22remote repository and it is basically
- 2:17:24the opposite of your pull operations.
- 2:17:27Pulling will import come commits to your
- 2:17:29local repositories whereas pushing will
- 2:17:31export comets to your remote
- 2:17:32repositories.
- 2:17:34It's going to ask you for your
- 2:17:38username
- 2:17:44and password before it lets you push
- 2:17:47into your main branch there. So I've put
- 2:17:50in the username and password for my
- 2:17:52GitHub account. And with that, this has
- 2:17:55pushed the changes from my local
- 2:17:57repository to the remote repository
- 2:17:59along with all the necessary commits and
- 2:18:01internal objects. Now this has created a
- 2:18:04local branch in your destination
- 2:18:06repository. The use of git push is to
- 2:18:09publish your local changes to a central
- 2:18:11repository. After you've accumulated
- 2:18:13several local comets and are ready to
- 2:18:15share them with the rest of the team,
- 2:18:17you can then push them to your central
- 2:18:19repository by using the get push
- 2:18:21command. Now the files which have
- 2:18:23already been committed previously in the
- 2:18:25commit section and they were all push
- 2:18:28ready. You will use git push origin
- 2:18:31master to reflect these files in the
- 2:18:34master branch of your repository.
- 2:18:37All right. So let's go ahead to our
- 2:18:40repository and see
- 2:18:44if changes have been made. And yes you
- 2:18:47can see all of our files on our GitHub
- 2:18:50repository. You have edureka file 1 2 3
- 2:18:524 and 5. All the five files that we had
- 2:18:55created on our local repository. Yeah,
- 2:18:59you have all these five files and the
- 2:19:01readme file here. Here also you have the
- 2:19:03readme file and all the five files that
- 2:19:06we had created.
- 2:19:08Now at this point in this git tutorial,
- 2:19:10I hope you have understood the basic
- 2:19:13commands of git. You have pulling,
- 2:19:16pushing, adding, committing, things like
- 2:19:18that. Now let's take a step further and
- 2:19:21understand the three basic commands of
- 2:19:23parallel development. Here I'm going to
- 2:19:25be talking about branching, merging and
- 2:19:29rebasing. So first of all let's talk
- 2:19:32about merging. Now merging is a way to
- 2:19:35combine the work of different branches
- 2:19:37together. This will basically allow you
- 2:19:39to branch off, develop a new feature and
- 2:19:42then combine it back in. As you can see
- 2:19:44in the diagram, it shows you two
- 2:19:47basically different branches. New branch
- 2:19:50and master. Now when we merge the work
- 2:19:53of the new branch into the master, it
- 2:19:56creates a new comet which contains all
- 2:19:58the work of the master and new branch.
- 2:20:01Now if we merge the two branches with
- 2:20:04the merge command,
- 2:20:06as I had mentioned before, git allows
- 2:20:08you for easy branching, which means you
- 2:20:10have parallel branches with your master
- 2:20:13branch that help you carry on your
- 2:20:16individual work while not interrupting
- 2:20:18your main product which is your master
- 2:20:22branch or your main branch. So branches
- 2:20:24in git are nothing but pointers to
- 2:20:27specific comets. Yeah. So, Git generally
- 2:20:29prefers to keep its branches as
- 2:20:32lightweight as possible. Now, there are
- 2:20:34basically two kinds of branches. VR
- 2:20:36local and remote tracking branches. A
- 2:20:39local branch is just not the path of
- 2:20:41your working tree. On the other hand,
- 2:20:43the remote tracking branches have
- 2:20:45special purposes. Some of them are
- 2:20:48linking your work from your local
- 2:20:50repository to your central repository
- 2:20:52and automatically detecting which remote
- 2:20:55branches to get changes from when you do
- 2:20:57a git pull. So you can check what your
- 2:21:00local branch is by using git
- 2:21:04branch. So you know you are at your main
- 2:21:07branch and the one thing you should
- 2:21:09understand one thing is like a main
- 2:21:11mantra of people who use git are branch
- 2:21:14early and branch often. Yes. So to
- 2:21:17create a new branch, you're going to use
- 2:21:20a command get
- 2:21:23branch and your branch name. And in this
- 2:21:26case, I'm just going to use a branch
- 2:21:28name edurea images. All right. And here
- 2:21:31you can see this diagram shows the
- 2:21:33workflow of a new branch that is
- 2:21:36created. When we create a new branch, it
- 2:21:38originates from the master branch
- 2:21:40itself. So since there is no storage or
- 2:21:43memory overhead with making many
- 2:21:45branches, it's usually easier to
- 2:21:47logically divide your work up than
- 2:21:49having big chunky branches. Hence the
- 2:21:52branch often part. Now let's see how to
- 2:21:55commit using branches. Now branching
- 2:21:57includes the work of a particular comet
- 2:22:00along with all parent commits, right? So
- 2:22:03as you see the new branch has detached
- 2:22:06itself from the master or the main
- 2:22:08branch and hence it'll create a
- 2:22:10different path. So we are going to get
- 2:22:16check out the branch name which in our
- 2:22:19case is edureka images
- 2:22:23and then we are going to get commit. So
- 2:22:27you have unttracked files, edurea images
- 2:22:29and nothing added.
- 2:22:35So you made that branch. Now merging is
- 2:22:39a way to combine the work of different
- 2:22:42branches together. So basically what
- 2:22:44this does is now that we've branched off
- 2:22:46to something known as edureka images,
- 2:22:48you can go ahead add files to it,
- 2:22:50develop a new feature, and then combine
- 2:22:52it back into your main branch. Here you
- 2:22:54can see two different branches. You have
- 2:22:56your new branch and your main branch.
- 2:22:59And when we merge the work of a new
- 2:23:02branch into the main branch, it creates
- 2:23:04a new comet which contains all the work
- 2:23:07of the main branch and the new branch.
- 2:23:09So now if we merge
- 2:23:12this branch, as you can see, it's
- 2:23:14already up to date. It's important to
- 2:23:17know that the branch name here should be
- 2:23:20the branch that you want to merge into
- 2:23:21the branch that you're currently
- 2:23:23checking out. So make sure that you are
- 2:23:25checked out of this destination branch.
- 2:23:28So let's just merge all the work of the
- 2:23:31branch edureka images into your main
- 2:23:34branch. For that I will first check out
- 2:23:37my main branch
- 2:23:40and then merge edureka images with get
- 2:23:45merge
- 2:23:46edureka images. And as you can see all
- 2:23:50the data from the branch edurea images
- 2:23:54has merged into the main branch. Now
- 2:23:57notice that merging in git creates a
- 2:23:59special commit that has two unique
- 2:24:01parents. Now this is one way of merging
- 2:24:04into the main branch. There's also
- 2:24:06another way of combining the work
- 2:24:08between two branches which is called
- 2:24:11rebasing. Now rebasing takes a set of
- 2:24:14comets, copies them and stores them
- 2:24:16outside your repository. The advantage
- 2:24:18of rebasing is that it can also be used
- 2:24:21to make linear sequence comets. The
- 2:24:24comet log or the history of the
- 2:24:26repository stays clean if rebasing is
- 2:24:28done. Now our work from the new branch
- 2:24:31is placed right after master and we have
- 2:24:34this nice linear sequence of commits.
- 2:24:37This command doesn't copy but moves all
- 2:24:40our work from the current branch to the
- 2:24:42master or the main branch. they look
- 2:24:44like they've been developed sequentially
- 2:24:47instead of having developed parallelly.
- 2:24:53So if I just did another
- 2:24:57branch called get branch edurea images 2
- 2:25:01and then maybe get checkout.
- 2:25:12Okay, then we get commit this
- 2:25:16and then I could just get rebase main
- 2:25:19and your current branch will be up to
- 2:25:21date. This command basically moves all
- 2:25:24of your work from your current branch to
- 2:25:25your master branch and it'll basically
- 2:25:27look like it has been developed
- 2:25:29sequentially instead of having developed
- 2:25:32parallelly. Now apart from these there
- 2:25:35are certain operations that you ought to
- 2:25:37know. Firstly, archiving your
- 2:25:39repository. You can use this command. It
- 2:25:42stores all of your files and data in a
- 2:25:44zip file rather than agit
- 2:25:47directory. This creates only a single
- 2:25:50snapshot omitting version control
- 2:25:52completely. Though this comes in handy
- 2:25:54when you want to send these files to a
- 2:25:56client for review who doesn't have git
- 2:25:58installed in their computers. Apart from
- 2:26:00this, you can also bundle your
- 2:26:02repository which basically turns your
- 2:26:05entire repository into a single file.
- 2:26:07This pushes the master branch or the
- 2:26:09main branch to a remote branch only
- 2:26:12contained in a file instead of a
- 2:26:14repository. You could alternately change
- 2:26:17the repository, clone the repo bundle,
- 2:26:20create a copy and use gitlog, but that
- 2:26:23is like five commands instead of one.
- 2:26:25Why not just use one command? And
- 2:26:28finally, stashing uncommitted changes.
- 2:26:31When you want to undo adding a feature
- 2:26:34or any kind of added data temporarily,
- 2:26:37we can always stash them temporarily.
- 2:26:40You can use git status stash status and
- 2:26:43then you want to reapply the changes you
- 2:26:46stashed using git stash apply. Having
- 2:26:49said that, let's move on to another very
- 2:26:51important topic in this git tutorial.
- 2:26:55Let's go through a brief introduction to
- 2:26:57SSH. Now, what is SSH? What is an SSH
- 2:27:00key? Now, an SSH key is an access
- 2:27:04credential for secure shell network
- 2:27:06protocol. It's basically an
- 2:27:09authenticated and encrypted secure
- 2:27:11network protocol and is used for remote
- 2:27:13communications between machines on an
- 2:27:16unsecured open network for remote file
- 2:27:20transfer, network management, and remote
- 2:27:22operating system access. So basically
- 2:27:25it's typically used to log into a remote
- 2:27:27machine and execute commands in it. But
- 2:27:30this also supports tunneling, forwarding
- 2:27:32TCP ports and X11 conditions. It can
- 2:27:36transfer files using associated SSH file
- 2:27:39transfer or secure copy protocols. It
- 2:27:42provides you several alternative options
- 2:27:45for strong authentication and protects
- 2:27:48the communication security and integrity
- 2:27:51with very strong encryption. It's a
- 2:27:53secure alternative to the nonprotected
- 2:27:55login protocols and insecure file
- 2:27:58transfer methods such as FTP. So
- 2:28:01basically how do you create SSH keys?
- 2:28:04You start by using the command SSH key
- 2:28:08gen and then you'll be prompted to enter
- 2:28:10a file in which to save the key.
- 2:28:14So home addere
- 2:28:19then we're going to enter a passphrase.
- 2:28:21I'm just going to leave it empty again.
- 2:28:24And you can see our identification has
- 2:28:27been saved in the file that we
- 2:28:29specified. And we have something known
- 2:28:32as a key fingerprint.
- 2:28:35And finally, what we have to do is add
- 2:28:37the new SSH key to the SSH agent.
- 2:28:42And then you will see identity added.
- 2:28:46And that's it. You have created an SSH
- 2:28:48key.
- 2:28:57The need for GitHub. It is extremely
- 2:29:00important for software developers to
- 2:29:02work on a web-based platform to share
- 2:29:04their projects and collaborate with
- 2:29:06other developers. This platform must be
- 2:29:09a version control system. That is, it
- 2:29:12must enable multiple people to
- 2:29:13simultaneously work on a single project.
- 2:29:16Each person edits his or her own copy of
- 2:29:20the files and chooses when to share
- 2:29:22those changes with the rest of the team.
- 2:29:24This application must also be capable of
- 2:29:27hosting millions of programmers and
- 2:29:29hobbyists that download and evaluate
- 2:29:31each other's work. GitHub is one such
- 2:29:34platform of choice for developers that
- 2:29:36can host multiple programmers and review
- 2:29:39their code.
- 2:29:41GitHub has several competitors. For
- 2:29:44instance, GitLab. GitLab is an
- 2:29:46open-source web interface and source
- 2:29:49control platform based on Git. Whereas
- 2:29:52Microsoft Team Foundation server is an
- 2:29:55enterprisegrade server for teams to
- 2:29:57share code, track work, and ship
- 2:30:00software for any language all in a
- 2:30:02single package. Bitbucket on the other
- 2:30:05hand stores all of your Git and Mercural
- 2:30:08source code in one place with unlimited
- 2:30:11private repositories.
- 2:30:13So what really makes GitHub so powerful
- 2:30:16and popular among developers? GitHub is
- 2:30:19an open-source platform and the
- 2:30:21community is really what fuels it.
- 2:30:24Moreover, GitHub is the platform of
- 2:30:26choice for developers from various large
- 2:30:29corporations too. Microsoft is the
- 2:30:31number one contributor to the system,
- 2:30:34but there are also Google, SAP, Airbnb,
- 2:30:38IBM, PayPal and many others. Exposure
- 2:30:42and insight that you can get on GitHub
- 2:30:44are simply unmatched by any other
- 2:30:46platform. Here you can discover code
- 2:30:48written by others, learn from it and
- 2:30:51even use it for your own projects.
- 2:30:54Versions control on GitHub works very
- 2:30:56much like Microsoft Office or Google
- 2:30:59Drive. It simply tracks all the changes
- 2:31:01made to your code and who makes them.
- 2:31:04You can always review the detailed
- 2:31:06change log that neatly hosts all of the
- 2:31:08relevant information. Using GitHub
- 2:31:11eliminates the need for complex
- 2:31:13corporate security solution because
- 2:31:15everything is on cloud. The platforms
- 2:31:18protects code branches, verifies commit
- 2:31:21signing and controls access.
- 2:31:24Now that we know why we need GitHub, let
- 2:31:26us understand what is GitHub. GitHub is
- 2:31:29a Git repository hosting service that
- 2:31:32provides a web-based graphical interface
- 2:31:34with many features. A repository is
- 2:31:37usually used to organize a single
- 2:31:39project. Repositories can contain
- 2:31:41folders, files, images, videos,
- 2:31:44spreadsheets, anything your project
- 2:31:46needs. Let's say for example a team
- 2:31:49wants to work on a particular project.
- 2:31:52Here they can simultaneously write and
- 2:31:54update the code to a central repository
- 2:31:56which is present on GitHub. So, GitHub
- 2:31:59is a highly used software that is
- 2:32:01typically used for version control. It
- 2:32:03is helpful when more than just say one
- 2:32:05person is working on a project. For
- 2:32:08example, a software development team
- 2:32:10wants to build a website and everyone
- 2:32:13has to update their codes simultaneously
- 2:32:15while working on this project. In this
- 2:32:18case, GitHub helps them to build a
- 2:32:20centralized repository where everyone
- 2:32:22can upload, edit, and manage the code
- 2:32:24files. Most software projects have a bug
- 2:32:28tracker of some kind. GitHub's tracker
- 2:32:30is called issues and has its very own
- 2:32:33section in every repository. Issues
- 2:32:36basically are a great way to keep track
- 2:32:38of tasks, enhancements, and bugs for
- 2:32:41your project.
- 2:32:42Moving on, people often get confused
- 2:32:45between the terms Git and GitHub. Now,
- 2:32:48let me clearly explain the difference
- 2:32:50between them. Git is simply a version
- 2:32:53control system that lets you manage and
- 2:32:55track changes within your project.
- 2:32:57Whereas GitHub is a cloud-based service
- 2:33:00that lets you manage git repositories.
- 2:33:03So basically Git is the tool and GitHub
- 2:33:05is the service. Now that we know the
- 2:33:08difference between Git and GitHub, let
- 2:33:10us move on and understand how these two
- 2:33:12work hand in hand. We already know that
- 2:33:15git is a version control tool that will
- 2:33:18allow you to perform all kinds of
- 2:33:19operations to fetch data from the
- 2:33:21central server or push data to it.
- 2:33:24Whereas GitHub is a code hosting
- 2:33:27platform for version control
- 2:33:28collaboration.
- 2:33:30GitHub is basically a company that
- 2:33:32allows you to host a central repository
- 2:33:34in a remote server. Now without any
- 2:33:37further ado, let's get started with the
- 2:33:39demonstration on how to use GitHub. So
- 2:33:42for this demonstration, we're working on
- 2:33:44the website version of GitHub. There's
- 2:33:46another version of GitHub that is the
- 2:33:48desktop version which you can download
- 2:33:49it to your personal computer. So we're
- 2:33:52simply going to search for GitHub in our
- 2:33:55search engine. The first link will lead
- 2:33:57you to the official website of GitHub.
- 2:33:59So I'm going to click on that. So this
- 2:34:02will redirect me to the main homepage of
- 2:34:04GitHub. As you can see, there is a
- 2:34:06search GitHub option. There are also two
- 2:34:08buttons that says sign in and sign up.
- 2:34:10If you're new to GitHub, you can simply
- 2:34:12enter in your credentials, that is a
- 2:34:14username, email, password, and sign up
- 2:34:16for GitHub. But if you already have an
- 2:34:19account like I do, I'm simply going to
- 2:34:21click on the sign in button. And it'll
- 2:34:23redirect me to a page where I have to
- 2:34:25enter the credentials. That is my email
- 2:34:27address and password. I'm going to do
- 2:34:29that now. And I'm going to click on the
- 2:34:32sign in button. Now, this is the main
- 2:34:34page of my account. As you can see, I
- 2:34:37have no repositories. It's all new. It's
- 2:34:39all fresh. But if you're not new to
- 2:34:41GitHub, you can view all of your
- 2:34:43repositories on the left hand corner.
- 2:34:45Now before we move on, I'm going to
- 2:34:47explain you all the features that are
- 2:34:50present within GitHub. So you can see a
- 2:34:53search bar here. So the search bar will
- 2:34:55allow you to look for profiles, certain
- 2:34:58keywords, look for different kinds of
- 2:34:59projects that are available on GitHub.
- 2:35:01All of those can be done using this bar
- 2:35:03here. And you can see four options next
- 2:35:05to the bar that says pull request issues
- 2:35:08marketplace explore. Pull request we'll
- 2:35:10learn later on in this session. But the
- 2:35:12issues in marketplace we won't be
- 2:35:13discussing in this video for now. The
- 2:35:16explore button on the other hand is an
- 2:35:18extremely important and interesting
- 2:35:20button. So once I click on that it'll
- 2:35:22redirect me to a page with some
- 2:35:25activities that are going on around in
- 2:35:27GitHub. You can see here they're
- 2:35:29trending repositories, they're trending
- 2:35:31developers. Basically, this is a feed
- 2:35:33that will allow you to interact with
- 2:35:35developers and other people,
- 2:35:37collaborators from all around the world.
- 2:35:39Basically, in Instagram 2, you have an
- 2:35:41explore button which will allow you to
- 2:35:43interact with different people from all
- 2:35:45around the world. So, the same concept
- 2:35:47is implied in the GitHub explore button
- 2:35:50too. So, you can explore topics, you can
- 2:35:52explore tending repositories,
- 2:35:54developers. Basically, it's an
- 2:35:56interaction with other people from
- 2:35:57different parts of the world. So, I hope
- 2:35:59that's clear. Now the most important
- 2:36:02part of the session are the three
- 2:36:05buttons that are available in the right
- 2:36:06hand corner of the navigation bar. So
- 2:36:08you can see there's a bell icon, there's
- 2:36:10a plus icon, there's a pixelated icon on
- 2:36:13the right hand corner. So the bell icon
- 2:36:16allows you to read notifications of your
- 2:36:18activities that occur in GitHub. So
- 2:36:20that's what it really is. You can see
- 2:36:22the inbox will allow you to view all of
- 2:36:25the notifications. You can also view the
- 2:36:27100 notifications by clicking on this un
- 2:36:30button. As of now, I don't have any
- 2:36:32notifications, so there's nothing
- 2:36:33available. You can also group these
- 2:36:35notifications by the date or repository
- 2:36:38by clicking on this group by button
- 2:36:39here. You can also view your save
- 2:36:41notifications by clicking on here. And
- 2:36:44the done button on the other hand will
- 2:36:46let you mark all of your notifications
- 2:36:48that you're done with, your previous
- 2:36:50notifications. So these are the three
- 2:36:53important buttons you'll have to know in
- 2:36:55this bell icon. And the filters are not
- 2:36:57necessary as of now. So I'm not going to
- 2:36:59discuss that. This button on the other
- 2:37:01hand will allow you to manage not your
- 2:37:02notification settings and your
- 2:37:04subscriptions too. So that's all for
- 2:37:06this bell icon. The next important
- 2:37:08button is this plus icon. As you can see
- 2:37:11there are five drop-own options that
- 2:37:13appear here. The first one being new
- 2:37:15repository followed by import
- 2:37:16repository, new gist, new organization,
- 2:37:19new project. So new repository we've
- 2:37:21already discussed previously in this
- 2:37:23session. A repository is a place where
- 2:37:26you create your files for your project.
- 2:37:28It's basically a storage space, right?
- 2:37:30So your repository can directly interact
- 2:37:33with your git, right? So the new
- 2:37:35repository option will allow you to make
- 2:37:38files a repository to your GitHub
- 2:37:41account. Right? The git on the other
- 2:37:43hand the tool that which we use to make
- 2:37:45local repositories in our personal
- 2:37:47computer can be directly pushed on the
- 2:37:50local repositories can directly be
- 2:37:52pushed onto your GitHub account. So
- 2:37:54that's what the new repository button
- 2:37:56allows you to do. So the new project on
- 2:38:00the other hand is a place to track
- 2:38:02issues, features and other tasks that
- 2:38:04are related to the code within the
- 2:38:06repository. You can also connect with
- 2:38:08the DevOps build and deploy process,
- 2:38:10assign people to tasks and so on by
- 2:38:13using this button that is the new
- 2:38:14project button. So the difference
- 2:38:17between the new repository button and
- 2:38:19the new project button is that projects
- 2:38:21in GitHub are only a part of GitHub but
- 2:38:24not Git. But the new repository option
- 2:38:27is a part of GitHub and Git. So that's
- 2:38:30the main difference between new
- 2:38:31repository and new project. I hope
- 2:38:33that's clear. So the next button will
- 2:38:36drop me down some interactions that I
- 2:38:39can make with my profile. So if I click
- 2:38:41on this your profile option, it will
- 2:38:44redirect me to a page where I can edit
- 2:38:46my profile. I can really create my
- 2:38:48identity using this page. So here if I
- 2:38:51click the edit profile, I can add a bio
- 2:38:53about myself. I can add the company in
- 2:38:55which I'm working in, the location at
- 2:38:57where I am, the website, Twitter
- 2:38:59username, etc. So all of that I can add
- 2:39:01here all of the information about
- 2:39:03myself. I can also view the repositories
- 2:39:05I'm working on currently or the
- 2:39:07repositories I've worked in the past
- 2:39:10projects that I'm working on the
- 2:39:12packages and the entire contributions
- 2:39:14I've been making on GitHub from the last
- 2:39:17year. So basically it allows me to build
- 2:39:20an identity or it'll help me build my
- 2:39:22profile on GitHub. So I hope that's
- 2:39:24clear. Now, if I click on this button
- 2:39:28and if I want to sign out from my
- 2:39:29profile, I can simply scroll down and
- 2:39:31click on the sign out button here. And
- 2:39:33this will sign me out of my account. So,
- 2:39:36that's all for getting started with
- 2:39:38GitHub. These are the basics on what
- 2:39:40GitHub is and what each of the button
- 2:39:43and options really do. Now, if I want to
- 2:39:45move back to the main page of my GitHub
- 2:39:48profile, I can simply click on this
- 2:39:49OCAT. That's GitHub's logo. So, I'm just
- 2:39:52going to click on this OCAT logo. And
- 2:39:55here I'm back to my main page. Now
- 2:39:57before we move on and work on the
- 2:39:59different operations and options within
- 2:40:02GitHub and learn different things about
- 2:40:04GitHub, I'm going to give you a brief
- 2:40:07overview on how to download the desktop
- 2:40:11version of GitHub. So I'm simply going
- 2:40:13to search for GitHub desktop on my
- 2:40:15search engine and I'm going to click on
- 2:40:17the first link that's available on this
- 2:40:18page. Now I can simply click on this
- 2:40:21button that says download for Windows
- 2:40:2364bit. That's compatible to my current
- 2:40:26version of my personal computer. If you
- 2:40:29have a Mac, you can simply click on the
- 2:40:31Mac version and download it to your
- 2:40:33desktop. But as I've already mentioned
- 2:40:35previously that we're going to work on
- 2:40:37the website version. So I'm going to
- 2:40:38simply switch back to this. Now let's
- 2:40:41quickly move on to the next part of the
- 2:40:43session.
- 2:40:44Create a repository. So firstly let us
- 2:40:47understand what a repository is. It is
- 2:40:50simply a storage space for the correct
- 2:40:52project that you're working on. GitHub
- 2:40:54is a very popular central repository
- 2:40:56that allows you to share your files.
- 2:40:58Whereas Git allows you to create local
- 2:41:00repositories that are present on the
- 2:41:02system you are working on. So you can
- 2:41:05basically push your local repository
- 2:41:06into GitHub and share it with other
- 2:41:09collaborators via the central one. Now
- 2:41:11that we know what a repository is and
- 2:41:14how it works. Let's go on to the
- 2:41:16demonstration part and create our first
- 2:41:18repository. So you can do this in two
- 2:41:20ways. Either you can click on your
- 2:41:22create repository button that is present
- 2:41:24on the left side or you can as I've
- 2:41:26already mentioned in the previous part
- 2:41:27of the session. You can click onto this
- 2:41:29plus icon and you can click on the new
- 2:41:31repository option. So this will redirect
- 2:41:34you to a page that says create a new
- 2:41:36repository. You can add your repository
- 2:41:38name. I'm going to name my repository as
- 2:41:40Edureka and it's available. All of your
- 2:41:43repository names must be unique from one
- 2:41:45another to identify them easily. You can
- 2:41:47also add a description which is
- 2:41:49optional. I'm just going to add the
- 2:41:51description. This is my first
- 2:41:54repository. And a description allows
- 2:41:57people or other collaborators to
- 2:41:58understand what your repository is all
- 2:42:00about. But as a good developer or a good
- 2:42:03programmer, you would definitely want to
- 2:42:05add a description and give an overview
- 2:42:07of what your repository is all about.
- 2:42:09There are two options now available that
- 2:42:12says private or public. Now you can
- 2:42:15choose your repository to either be
- 2:42:17public or private. So the private one
- 2:42:19lets you decide who can access your
- 2:42:21profile whereas the public one lets
- 2:42:23anyone view and access your repository
- 2:42:26but you can choose who can commit to it.
- 2:42:28That's the difference between public and
- 2:42:30private repository. I'm going to let my
- 2:42:32repository be public as of now. Now, if
- 2:42:35you scroll down, you can see that you
- 2:42:37can initialize your repository with
- 2:42:38three options. The first one being add a
- 2:42:41readme file. The second one being add a
- 2:42:43git ignore file. You can always choose a
- 2:42:46add a readme text file to your project
- 2:42:48which often contains information about
- 2:42:50the project and other necessary details
- 2:42:53the user must be aware of when he or she
- 2:42:55is accessing that particular project.
- 2:42:57Now I want a readme file for my
- 2:42:59repository. So I'm going to click on
- 2:43:01this button here. That's going to check
- 2:43:02it. The next option is add a ignore
- 2:43:06file. So this file will let you ignore a
- 2:43:09list of files when the user is pushing
- 2:43:11files to GitHub. That's what this option
- 2:43:14really does, but I'm going to let this
- 2:43:16be unchecked for now. For your
- 2:43:18repository to truly be open sourced, you
- 2:43:20will need to license it so others are
- 2:43:22free to use, change, and distribute the
- 2:43:25software. You can simply click on choose
- 2:43:27a license option and pick your the
- 2:43:29required license for your project. There
- 2:43:31are several licenses like MIT, GPL,
- 2:43:34Apache license 2.0, BST, etc. But for
- 2:43:37this repository, we don't really need a
- 2:43:39license. So, I'm going to untick this
- 2:43:41too. And now you can see there's a piece
- 2:43:43of information that says this will set
- 2:43:45master as a default branch. But I'm
- 2:43:48going to ignore this for now. I'm going
- 2:43:50to explain about branches later on in
- 2:43:52this session. So this is all you have to
- 2:43:54do to create your first new repository.
- 2:43:56You add a name, you choose a
- 2:43:58description, you add an optional
- 2:43:59description, you let your repository be
- 2:44:02either public or private, and you
- 2:44:04initialize your repository with either
- 2:44:05of these three options. And I'm simply
- 2:44:07going to click on my create repository
- 2:44:09option. Now this will redirect me to a
- 2:44:11page with all the information and the
- 2:44:13files that are currently present in my
- 2:44:14repository. You can see here my
- 2:44:17repository name is present here with the
- 2:44:19optional description that I gave and the
- 2:44:22number of files. Currently we have only
- 2:44:24just one file that's the readme text
- 2:44:25file and that's present here. So this is
- 2:44:28all we have. Congratulations you just
- 2:44:30created your first repository. Now you
- 2:44:32can see there are some options that says
- 2:44:34issues, pull requests, actions,
- 2:44:36projects, wiki, security, etc. We don't
- 2:44:39have to really talk about all of these
- 2:44:40right now. We will just learn about one
- 2:44:43option that says code here. So this is
- 2:44:45really important. If you click on this
- 2:44:47button, you can see that there's a link
- 2:44:49that is available here and https link.
- 2:44:53So if you copy this link and paste it on
- 2:44:55your kit terminal that's present on your
- 2:44:57computer. You can download this entire
- 2:45:00project directly to your local system.
- 2:45:02So that's what the link is for. I hope
- 2:45:04that's clear. And the next option that
- 2:45:06says open with GitHub desktop will allow
- 2:45:09you to open this entire repository in
- 2:45:11your GitHub desktop version. And you can
- 2:45:13also the last option that says download
- 2:45:15zip will allow you to download this
- 2:45:17entire repository in the form of zip
- 2:45:20files. So all of your project files will
- 2:45:22be within that zip file. So that's all
- 2:45:24you have to really know about your
- 2:45:26repository. And I'm going to click on
- 2:45:29the readme text file that's available.
- 2:45:31It will take me to another page with
- 2:45:33some extra information about that file.
- 2:45:35You can see currently we have two lines
- 2:45:38and the memory space that is allocated
- 2:45:40to this file. So we currently have two
- 2:45:42lines that is edure and this is my first
- 2:45:43repository. And you can also see the
- 2:45:45number of contributors to this project
- 2:45:47that is just one. That's just me for
- 2:45:49now. And you can view the history of the
- 2:45:52commits or the changes that have been
- 2:45:54performed in your file. So we'll come
- 2:45:57back to that part later on this session.
- 2:45:59But you can move back to your main page
- 2:46:01of this repository by clicking on the
- 2:46:03name button here. So Edureka is the name
- 2:46:06of my repository. So I'm going to click
- 2:46:07on that. So now I'm back to the main
- 2:46:09page of my repository.
- 2:46:12Before we learn how to create our first
- 2:46:14branch, let us understand what branches
- 2:46:16are. Branches allow you to work on other
- 2:46:19features that can be included and merge
- 2:46:22with the master branch if required. So
- 2:46:24what is the master branch? The master
- 2:46:26branch is the main branch where your
- 2:46:28project resides on. So all of the
- 2:46:30changes, all of the activities that you
- 2:46:32do with your main project lies or is on
- 2:46:35your default branch that is named as the
- 2:46:37master branch. So what really GitHub
- 2:46:39allows you to do is it allows you to
- 2:46:41create additional branches. So on these
- 2:46:43additional branches you can work on the
- 2:46:45other features or you can experiment
- 2:46:47with your project and if you're happy
- 2:46:49with this you can simply merge these
- 2:46:51features to your main branch that is
- 2:46:53your master branch. This is what
- 2:46:54branches are really for. So they simply
- 2:46:57allow you to work on other features.
- 2:46:59That's what branches are. So let's move
- 2:47:01on to the demonstration part and look at
- 2:47:03how we can create our own branches. So
- 2:47:06now if you look on the left corner, you
- 2:47:08can see a button that says master. So
- 2:47:10currently we're on the master branch and
- 2:47:13there's only one branch and the master
- 2:47:15branch as I've already mentioned is the
- 2:47:17default branch. So when you create a
- 2:47:18repository you're automatically creating
- 2:47:20a master branch. So this is where your
- 2:47:23project will be residing on. And now if
- 2:47:26you want to create another branch, say
- 2:47:28let's name this branch one branch. So
- 2:47:32this is what I want to name my
- 2:47:34additional branch. I'm simply going to
- 2:47:36name it and I'm going to click on the
- 2:47:38enter button. So it will redirect me to
- 2:47:40a page. So this is the exact replica of
- 2:47:43your master branch. And you can work on
- 2:47:46this branch. You can work on any other
- 2:47:48feature or you can add something, you
- 2:47:51can remove something, you can really
- 2:47:52experiment on this branch. And if you're
- 2:47:54happy with this, you can merge back this
- 2:47:56feature or the experimentation that
- 2:47:59you've been working on to your master
- 2:48:01branch. Right? So, you can see there's a
- 2:48:03readme text file. It's exactly the same.
- 2:48:04There's the name of your repository, the
- 2:48:07description of the repository. You can
- 2:48:09click on the readme text file and
- 2:48:11everything's the absolute same. you can
- 2:48:13quickly switch back to the main page,
- 2:48:16but the only difference is that you're
- 2:48:18currently on a branch named branch one
- 2:48:21branch. You're not on your master
- 2:48:22branch. Now, if you want to switch back
- 2:48:24to your master branch and work on it,
- 2:48:26you can click on this button and you'll
- 2:48:28find the master here. You can click on
- 2:48:31that and it will take you back to your
- 2:48:33master branch. Here you can work on your
- 2:48:36project. So, there currently two
- 2:48:38branches. You can see that and
- 2:48:40everything's normal. Everything looks
- 2:48:41simple. That's all for branches. It's
- 2:48:44really easy. I hope it's clear. So you
- 2:48:46can look for branches here on this bar
- 2:48:48here that's present here. You can also
- 2:48:51create new ones in the same option. So
- 2:48:54that's all for branches. Let's move on
- 2:48:56to the next part of the session. Make a
- 2:48:58comet. Now what are comets? Comets
- 2:49:01simply record changes to one or more
- 2:49:03files in your branches. So basically
- 2:49:06they save the changes that you're making
- 2:49:07in your project. Git always assigns each
- 2:49:10comet a unique identification which is
- 2:49:13called SHA or hash that identifies the
- 2:49:16specific changes. So for any changes are
- 2:49:19made to your project files, you can
- 2:49:21simply go back and look at the version
- 2:49:23history or the history of the each
- 2:49:26commit you've performed on your project
- 2:49:28files. So that's what really commits are
- 2:49:30all about. It's extremely easy. Let's go
- 2:49:33ahead and make our first commit. Now I'm
- 2:49:35going to switch to my branch one branch
- 2:49:38and I'm going to make my first commit.
- 2:49:40I'm going to click on my readme text
- 2:49:42file. That's the only file currently in
- 2:49:44a repository. So we'll make the change
- 2:49:46in the readme text file. There are three
- 2:49:49really important icons that are present
- 2:49:51in the right corner as you can see. The
- 2:49:53first one is a PC icon that says open
- 2:49:56this file in GitHub desktop. So if you
- 2:49:58click on this file, this entire file
- 2:50:00will open in your GitHub desktop
- 2:50:01version. The next one that is the pencil
- 2:50:04icon will allow me to edit this
- 2:50:06particular file that is my readme text
- 2:50:08file. And the third icon is a bin icon
- 2:50:10which will allow me to delete this file.
- 2:50:12Now what we'll be working on is the
- 2:50:14pencil icon. That's the edit this file
- 2:50:16option. I'm going to click on this and I
- 2:50:19can simply view a space or a file that
- 2:50:23will allow me to make changes to my
- 2:50:26readme text file. I'm going to add
- 2:50:28another line here that says this is my
- 2:50:30first commit. This is what I want to add
- 2:50:33to my readme text file. And if I want to
- 2:50:35preview the changes, I'm going to click
- 2:50:37on this preview changes button. You can
- 2:50:39see that this is my first repository.
- 2:50:40This is my first commit. This is my
- 2:50:42first commit is the additional piece of
- 2:50:44information that we'll be adding to my
- 2:50:45readme text file. And it's highlighted
- 2:50:48in blue. So, we know that that's the
- 2:50:49additional information. I'm happy with
- 2:50:51this change. I'm going to switch back to
- 2:50:53my edit file. I'm going to scroll down.
- 2:50:56And if I want to add a description about
- 2:50:58the change that I'm performing to my
- 2:51:01file, I can do that. A good programmer
- 2:51:03would always add a description to the
- 2:51:06change that he's making to the project
- 2:51:07file. So other collaborators when they
- 2:51:10view the commit or they view the change,
- 2:51:12they can read the extended description
- 2:51:14and understand what the change is about.
- 2:51:16So that's a good habit that you must
- 2:51:18follow. But as of now, we're not going
- 2:51:19to do that. So I'm going to leave this
- 2:51:22blank. As you can see, there are two
- 2:51:24radio buttons that are currently
- 2:51:25available. The first one says commit
- 2:51:28directly to the branch one branch. This
- 2:51:30will allow me to make the change or save
- 2:51:33or make the commit directly to my branch
- 2:51:35one branch only. So the change that I'm
- 2:51:38making currently is only implemented to
- 2:51:40my branch one branch. The second option
- 2:51:42allows me to create a new branch for
- 2:51:44this particular commit and start a pull
- 2:51:46request. We're not going to talk much
- 2:51:48about this option right now, but the
- 2:51:51first option is extremely important. So,
- 2:51:53we'll let this be stuck on to the option
- 2:51:56that says commit directly to the branch
- 2:51:57one branch. And I'm going to click on
- 2:51:59the commit changes options. And this
- 2:52:01will simply implement the entire change
- 2:52:03to the file. You can see that the change
- 2:52:05is implemented. The additional piece of
- 2:52:07line that says this is my first commit
- 2:52:09is added to my readme text file. Now the
- 2:52:13interesting part is if I switch to my
- 2:52:16master branch, the change is not
- 2:52:19implemented in my master branch. So the
- 2:52:20change is only currently present in my
- 2:52:23branch one branch. And now if I want to
- 2:52:27view the history of the changes that
- 2:52:29I've made, I've already mentioned in the
- 2:52:31previous part of the session that the
- 2:52:32history button will allow me to do so.
- 2:52:35So, I'm going to click on this history
- 2:52:36button. And you can see that I made my
- 2:52:40first commit 23 minutes ago and I made
- 2:52:43my new commit 41 seconds ago. And there
- 2:52:46is also a hash number, unique hash
- 2:52:48identification number that allows me to
- 2:52:51distinguish between both of these
- 2:52:52changes. So, all of my commits that I'll
- 2:52:55be making on this branch will be
- 2:52:57available here. So, that's the main
- 2:52:59point of a version control system, isn't
- 2:53:02it? understanding and keeping a record
- 2:53:04of all the changes that we're performing
- 2:53:06in our files and our projects. So this
- 2:53:08is gives full justice to the word
- 2:53:10version control. So that is what GitHub
- 2:53:13is all about. Now that we learn how to
- 2:53:15make our first comet two, let's move on
- 2:53:17to the next part of the session. Open
- 2:53:20and merge pull requests. So what are
- 2:53:22pull requests? Pull requests let you
- 2:53:25tell other developers about changes
- 2:53:27you've pushed to branch in a repository
- 2:53:29on GitHub. So once a pull request is
- 2:53:31open, you can acknowledge and review the
- 2:53:34changes with collaborators and add
- 2:53:36follow-up commits after which your
- 2:53:38changes are merged into the base branch.
- 2:53:40So there are two ways to create a pull
- 2:53:42request. The first one being pull
- 2:53:44requests from a fork repository and the
- 2:53:46second one being pull request from a
- 2:53:48branch within a repository. Currently in
- 2:53:51this demo, we will work on the second
- 2:53:52one that is pull request from a branch
- 2:53:54within a repository. Now I'm simply
- 2:53:56going to switch to my demo part. Okay.
- 2:53:58Now currently I'm on my master branch.
- 2:54:01I'm going to click on this pull request
- 2:54:02option that's here. Now it says branch
- 2:54:06one has had recent pushes 3 minutes ago.
- 2:54:08Compare and pull request. I'm not going
- 2:54:09to click on that. I'm going to simply
- 2:54:11click on the new pull request option
- 2:54:13here. So this will allow me to compare
- 2:54:15the changes. There's a base branch and a
- 2:54:18compare branch. The base branch is the
- 2:54:20master branch and the compare branch I
- 2:54:22will compare my master branch to my
- 2:54:24branch one branch. So this notification
- 2:54:27says that the merge between the branch
- 2:54:30one branch and master branch is
- 2:54:31definitely possible. So it's a green
- 2:54:33signal. So if I scroll down I can view
- 2:54:36the difference between both the
- 2:54:37branches. So the left hand side
- 2:54:39indicates the information that is
- 2:54:41present on the master branch and the
- 2:54:43right hand indicates the information
- 2:54:45that is present in my branch one branch.
- 2:54:48Plus sign indicates the additional
- 2:54:51information that is present in my branch
- 2:54:52one branch. I'm happy with this. So I'm
- 2:54:55simply going to scroll up and create the
- 2:54:57pull request and click on that. I can
- 2:54:59also leave a comment and I can preview
- 2:55:01the change. That's not necessary for
- 2:55:03now. So I'm going to go ahead and create
- 2:55:05the pull request. Now this will redirect
- 2:55:08me to a page. So this page says that the
- 2:55:12pull request has been opened and now I
- 2:55:15can choose to merge this pull request.
- 2:55:17That is I can merge the branch one
- 2:55:21branch to my master branch. So it says
- 2:55:24this branch has no conflicts with the
- 2:55:25base branch. Merging can be performed
- 2:55:27automatically and that's good news,
- 2:55:29right? So I'm going to click on merge
- 2:55:31pull request and I'm going to confirm my
- 2:55:33merge. Update my readme text file. I'm
- 2:55:36happy with that. So I'm just going to
- 2:55:37confirm it. Now it says pull request
- 2:55:40successfully merged and closed. You're
- 2:55:42all set. The branch one branch can be
- 2:55:44safely deleted. I'm not going to delete
- 2:55:46the branch. I'm going to compare both of
- 2:55:48the branches and see if my master branch
- 2:55:52is exactly the same as my branch one
- 2:55:55branch. So I'm going to click on this
- 2:55:56edurea. I'm going to go to my main page
- 2:55:59of my repository. So my master branch
- 2:56:02has the additional piece of information
- 2:56:04that says this is my first commit. Now
- 2:56:06if I switch to my branch one branch, it
- 2:56:09has the exact piece of information. So
- 2:56:12the information that was present in my
- 2:56:14branch one branch has been successfully
- 2:56:17implemented to my master branch. So
- 2:56:19that's all for the pull request part
- 2:56:21two. We've reached the end of the
- 2:56:23demonstration part. Now let's quickly
- 2:56:25look at the case study of how Microsoft
- 2:56:27implemented GitHub. I'm pretty sure most
- 2:56:30of you have heard of Microsoft.
- 2:56:31Microsoft Corporation is an American
- 2:56:34multinational technology company. It
- 2:56:36develops, manufactures, licenses,
- 2:56:38supports and sells different computer
- 2:56:40software, consumer electronics, personal
- 2:56:43computers and other related services.
- 2:56:46So, initially Microsoft was against the
- 2:56:48use of the open-source because they held
- 2:56:51very tightly to the internet protocol.
- 2:56:53They were completely hesitant to adapt
- 2:56:55to this new concept of sharing code to
- 2:56:57the entire world. But in 2010, they
- 2:57:00rethought this entire scenario and now
- 2:57:02Microsoft is one of the biggest
- 2:57:04contributors to open-source. Today,
- 2:57:06about 2,000 to 25,000 Microsoft
- 2:57:08engineers maintain TypeScript,NET,
- 2:57:11Windows, Terminal, DARP, Helm, and more
- 2:57:14than a thousand other open-source
- 2:57:16projects. So, first what they did was
- 2:57:18they released new processes in measured
- 2:57:20containment. But later on they released
- 2:57:22only license software. So here
- 2:57:25developers can learn from the company's
- 2:57:27source code but they couldn't really
- 2:57:29build on it. Eventually the stigma died
- 2:57:31and now even closed code likenet is open
- 2:57:35source under an MIT license. Teams
- 2:57:37realize that they need to accept
- 2:57:39contributions to get feedback and learn
- 2:57:41from other developers. To organize and
- 2:57:44understand this approach Microsoft
- 2:57:46created their open-source programs
- 2:57:48office which enables distribution and
- 2:57:50centralization of knowledge. So the OSPO
- 2:57:54provides the resources and maintainers
- 2:57:56to manage thousands of repositories and
- 2:57:59contributors effectively on GitHub. Even
- 2:58:01though Microsoft invests in its tools,
- 2:58:04they expect other individuals and
- 2:58:05organizations to lead the way. Microsoft
- 2:58:08believes that GitHub's value isn't in
- 2:58:10any one feature, but its entire
- 2:58:13community. GitHub is the place to
- 2:58:15collaborate. It's where everyone is and
- 2:58:18where most of the entire world's open
- 2:58:20source is already happening. It's not
- 2:58:23just a feature but the whole thing.
- 2:58:33So guys let's first talk about why we
- 2:58:35need continuous integration. Let's talk
- 2:58:37about a scenario where we are not using
- 2:58:38continuous integration. Now when we work
- 2:58:41in a development team there are multiple
- 2:58:43developers. Now all the developers work
- 2:58:45on different different components for a
- 2:58:46project or for a code. A developer A may
- 2:58:49be writing code thinking scenario. let's
- 2:58:51say Python 1.0 and developer B will be
- 2:58:53writing code thinking of a scenario 1.2
- 2:58:561.3 and so on. One of the biggest
- 2:58:58challenges that we face in an industry
- 2:59:00is how to make sure that all the
- 2:59:02developers codes get collaborated and
- 2:59:04that we are having properly release
- 2:59:06getting deployed. That is the biggest
- 2:59:08challenge in the industry. Now another
- 2:59:10challenge that most developers fail is
- 2:59:12debugging. Now whenever you write a code
- 2:59:14there are a lot of bugs and issues. Now
- 2:59:16the code is often written thousands and
- 2:59:18thousands of lines. Now if you don't
- 2:59:20have any proper continuous integration
- 2:59:21mechanism or a packaging mechanism,
- 2:59:24you'll see it takes days, even weeks and
- 2:59:26months to debug your code to make it
- 2:59:28100% bug-free. Now that is a challenge
- 2:59:30that really makes the development
- 2:59:32process very slow. So how to test the
- 2:59:34code? Now testing used to be a
- 2:59:36monotonous task. Now their team used to
- 2:59:38spend months of a life cycle to make the
- 2:59:40code, complete the test code and make
- 2:59:42sure it's bug-free. Now what used to
- 2:59:44happen is guys two things. One is you
- 2:59:46are not able to deliver on time and
- 2:59:48secondly business never see value coming
- 2:59:50out of the IT. If businesses see it not
- 2:59:53adding value, it is not delivering
- 2:59:55product on time, they will start
- 2:59:56rethinking and giving a second thought.
- 2:59:58Why do we need to invest so much money
- 3:00:00in the IT industry or in the IT
- 3:00:02software? These things were hampering
- 3:00:04big time in the development and release
- 3:00:06of modern-day deployment software
- 3:00:07cycles. In the modern day world, we want
- 3:00:10to make sure our deployment cycles are
- 3:00:12robust. We're able to get the main need
- 3:00:14of the market and deploy the product as
- 3:00:16soon as possible. But with this
- 3:00:18approach, we're not using the CI tools.
- 3:00:20It used to take 6 months to develop a
- 3:00:22product, deploy a product and make it
- 3:00:24bug-free. Now things change drastically
- 3:00:26when we start using continuous
- 3:00:27integration. Now using continuous
- 3:00:29integration, we can deploy codes at the
- 3:00:31quickest. Amazon for instance deploys
- 3:00:34code every 11.6 seconds. Now how is that
- 3:00:37possible if you ask? It's because they
- 3:00:39are using the continuous integration
- 3:00:41mechanism. using CI tools like genkins
- 3:00:44where we can automate the process like
- 3:00:45building, packaging, deployment, testing
- 3:00:47and so on. So that we can do all these
- 3:00:49things with a click of a button in a
- 3:00:51matter of seconds. CI process helps us
- 3:00:54to deploy multiple releases parallelly.
- 3:00:56Now in one day we can do thousands and
- 3:00:58thousands of release without impacting
- 3:01:00our environment and making sure these
- 3:01:02release are in line with our
- 3:01:04requirement. The CI tool has an awesome
- 3:01:06notification mechanism where it notifies
- 3:01:08instantly of any success or failures
- 3:01:10happening. So that if I have to debug
- 3:01:12the code or troubleshoot it, I will know
- 3:01:14exactly at the pinpoint location where
- 3:01:16it is failing. You can do multiple
- 3:01:18notification management mechanism like
- 3:01:20an email and SMS any ITSM tools. Now all
- 3:01:24those modern ways of notification are
- 3:01:26possible using the CI tools like
- 3:01:28Genkins. Now we integrate these CI tools
- 3:01:30like Genkins with modern-day build and
- 3:01:33packaging tools like Maven and Gradel so
- 3:01:35that we can automate the common problem
- 3:01:37which developers spend most of their
- 3:01:39time on. Now developers spend half of
- 3:01:41their life cycle like packaging their
- 3:01:42code, code review, code deployment, unit
- 3:01:45testing. Now all those things can be
- 3:01:46automated and can be done with a click
- 3:01:48of a button using these CI tools. Now
- 3:01:51what is continuous integration? Now we
- 3:01:53have talked about how it helped to save
- 3:01:55time, how it helped to save the energy
- 3:01:58and how it helped to make release more
- 3:01:59frequent and it help us to streamline
- 3:02:01the process. Now what actually is
- 3:02:03continuous integration? Now if I go
- 3:02:05traditionally continuous integration is
- 3:02:07basically you can say a process that
- 3:02:09help us to combine or make smoothen the
- 3:02:11automation of task like compiling the
- 3:02:14code doing the testing and deploying the
- 3:02:16code into our life cycles. So how does
- 3:02:18this continuous integration work? So
- 3:02:20developers who works on projects
- 3:02:22generally commit their code in any
- 3:02:24version tools like GitHub, GitLab,
- 3:02:26Gitbucket, SVN etc. So using continuous
- 3:02:29integration we pull the code from the
- 3:02:31version control system like git for
- 3:02:32example. Now we automate the process
- 3:02:34like code compiling, code testing, code
- 3:02:37review and then finally deploy the code
- 3:02:39in the lowest life cycle environment.
- 3:02:41You can say continuous integration is
- 3:02:43sort of a development practice where
- 3:02:45developers pull the code from the
- 3:02:46version control system and make the code
- 3:02:48deploy in the lower life cycle
- 3:02:50environment. Now the beauty of using
- 3:02:52these CI tool is we can automate the
- 3:02:54process in such a way that whenever a
- 3:02:56developers make a new comet or a new
- 3:02:58change in the version control system
- 3:03:00tools, we can create a sort of a
- 3:03:01pipeline and the pipeline automatically
- 3:03:03picks the code from the VCS tools and
- 3:03:06compile it and then deploy the software.
- 3:03:08Another good thing about it is it does
- 3:03:10not require any human intervention. So
- 3:03:13once I have set up a pipeline then I
- 3:03:15don't need to worry about running the
- 3:03:16code again and again or making any
- 3:03:18changes. It automatically happens in a
- 3:03:21fully automated process as I mentioned a
- 3:03:23while back. Now we can use the process
- 3:03:25whenever a new comet happens or you can
- 3:03:27run it on a schedule basis or something.
- 3:03:30Now CI or continuous integration was
- 3:03:32first time proposed in 1991 as part of
- 3:03:35the extreme program concept. At that
- 3:03:38time it was not adopted so well but in
- 3:03:40the modern day industry it has become
- 3:03:41the bread and butter of smoothing up
- 3:03:43release or for our development process.
- 3:03:46In a modern day world continuous
- 3:03:47integration can be say as a practice of
- 3:03:49merging all developers working copy to a
- 3:03:52mainstream where you can develop and
- 3:03:53deploy the code multiple times in the
- 3:03:55same day with as many changes as
- 3:03:57possible. Now there is no limit of how
- 3:04:00many lines of code. It can be tens and
- 3:04:02thousands of lines of code which can be
- 3:04:04compiled multiple times throughout the
- 3:04:06iteration. Let's see a case study where
- 3:04:08we try to see how things changed for an
- 3:04:10organization after it adopted to the CI
- 3:04:13or continuous integration mode. Here we
- 3:04:16have picked up an example of Adope to
- 3:04:17see how it helped in the development
- 3:04:19process. Adope realized at some point of
- 3:04:22the time that they have not released
- 3:04:23very frequently. When this happened
- 3:04:25their market presentation share was down
- 3:04:27as they were not following the country's
- 3:04:29integration approach. Now they were
- 3:04:31using the native method of compiling the
- 3:04:33code, debugging the code, testing the
- 3:04:35code because of which they were noticing
- 3:04:36that it used to take up to 6 months
- 3:04:39release updates. Now 6 months was a long
- 3:04:41duration whereas their competitors were
- 3:04:44releasing very frequently which was
- 3:04:46helping them to capture the market
- 3:04:47share. Adobe decided some point at a
- 3:04:49time that they need to change the
- 3:04:50software development and deployment
- 3:04:52strategies and they tried to adopt the
- 3:04:54continuous integration mechanism. Once
- 3:04:57they adopted the continuous integration
- 3:04:58mechanism, they found that the response
- 3:05:00time was a lot better and a lot faster.
- 3:05:03Now they were able to deploy the updates
- 3:05:04more frequently with every times a
- 3:05:06change was made by a developer or new
- 3:05:08release was being released and it helped
- 3:05:11them reduce the response times and they
- 3:05:13were 60% more faster. The development
- 3:05:15teams were getting more effective and
- 3:05:17they were able to really deploy losses
- 3:05:19far more in a better and structured way
- 3:05:22than what they were doing without using
- 3:05:23CI. You can see how CI helps industry.
- 3:05:27Amazon is the best case scenario. Amazon
- 3:05:29in modern day scenario deploy quotes
- 3:05:31every 11.6 seconds almost five times
- 3:05:34every minutes. Now this is all possible
- 3:05:36using the continuous integration.
- 3:05:39Now what is Genkins? Now we've talked
- 3:05:41about what is CI. We've talked about why
- 3:05:44we need CI. Now let's talk about what is
- 3:05:46Genkins and how does Genkins fit in this
- 3:05:49particular picture. Now, Genkins is an
- 3:05:52open-source automation server which
- 3:05:54helps us to automate the process of
- 3:05:55development relating to testing,
- 3:05:57deployment, packaging and others. It is
- 3:06:00a serverbased systems that run on
- 3:06:02software Apache Tomcat. Now, it support
- 3:06:04VCS store like Git, Big Bucket, etc. It
- 3:06:08also support build automation tools like
- 3:06:10Apache, Maven and it helps to make and
- 3:06:12facilitate our continuous integration
- 3:06:14and continuous delivery process. Now,
- 3:06:17Genkins was first released in the year
- 3:06:192011 and it's completely open-source
- 3:06:21software as a part of the MIT license.
- 3:06:24Genkins is a plug-in based profile. In
- 3:06:27Genkins, you have got plug-in which
- 3:06:29basically used to interact with
- 3:06:30different different tools and
- 3:06:31components. In Genkin, plug-in are
- 3:06:34primary released in language other than
- 3:06:36Java. Plugins are available to integrate
- 3:06:39Genkins with most version control system
- 3:06:42tools and most databases. Using these
- 3:06:45plugins we set up purposes for example
- 3:06:47unit testing. Now you can do compiling,
- 3:06:49you can do packaging. Now you can create
- 3:06:51some reports. Now you can do some
- 3:06:53lodging. Now all these things are
- 3:06:55possible using plugins and genkins.
- 3:06:58Another important component that we've
- 3:06:59talked about in Genkins. Apart from
- 3:07:02plugins is genkins notification which we
- 3:07:05call it as mailer. Using mailer guys we
- 3:07:08can configure email notification. For
- 3:07:10instance, you can configure scenario.
- 3:07:13For example, you want mail notification
- 3:07:14when bill is successful. Now, all these
- 3:07:17things can be done using mailer as the
- 3:07:19genkins component. Another important
- 3:07:21component in genkins is the SSH agent.
- 3:07:24Genkins also follow a typical master
- 3:07:27slave topology. Now, why do we need a
- 3:07:29master slave topology and a CI tools
- 3:07:32like genkins? Now, when you work in the
- 3:07:34organization, we have got multiple teams
- 3:07:37which you want to build and deploy their
- 3:07:38own pipeline or deploy their own
- 3:07:40software project codes. Now teams don't
- 3:07:43want the piece of code to be run on a
- 3:07:44server which is owned by some other
- 3:07:46teams. So what we can do is we can set
- 3:07:48up a master slave topology where genkins
- 3:07:51may run on a server X but you can
- 3:07:53connect multiple other servers which
- 3:07:55will act as a slave. So when you are
- 3:07:57deploying a code executing a pipeline
- 3:07:59you can run those codes on those XY Z
- 3:08:02servers. Now this is a beauty of using
- 3:08:04Genkins master slave topology. Now
- 3:08:07another good thing about genkins is
- 3:08:09genkins can be deployed on any operating
- 3:08:11system. In Genkins you can use in a
- 3:08:14window mode, a Linux mode, a Mac mode or
- 3:08:16now all these genkins jobs can be
- 3:08:18deployed on any operating system. It is
- 3:08:20not at all dependent. Now both master
- 3:08:22and safe needs to be of the same
- 3:08:24operating system. Another important core
- 3:08:26component of genkins call is Java doc.
- 3:08:29This is our plugin in genkins which
- 3:08:32basically is a part of a genkins score
- 3:08:34that help us to publish results like
- 3:08:35bill action, bill directory, what is the
- 3:08:38expected bill output. All those things
- 3:08:40that we see in genkins they all are
- 3:08:43happening using Java. Now let's talk
- 3:08:45about security injection. Apart from
- 3:08:48that genkins have other sorts of
- 3:08:50authorization like project based
- 3:08:52strategy, metricbased authorization
- 3:08:54which help us to make genkins more
- 3:08:57secure. We'll talk more about this when
- 3:08:59we talk about the genkins overall. So as
- 3:09:01you can see on the diagram, genkins is
- 3:09:03pulling code from the source code
- 3:09:05control system like git, big bucket etc.
- 3:09:08To start deploying it in genkins, we
- 3:09:10have got a notification management
- 3:09:11system using mailer where if the bit is
- 3:09:14successful, we get a war file or a zip
- 3:09:16file. We can define how we want the
- 3:09:18build to be created and if it is a
- 3:09:20failure it will send the notification
- 3:09:22management to a developer that something
- 3:09:24happened wrongly with the specific code
- 3:09:26lines and you need to rectify your
- 3:09:28codes. Now that is the beauty of using
- 3:09:30genkins. So Genkins is still the bread
- 3:09:33and butter in the industry. There are
- 3:09:35some genkins competitors also in the
- 3:09:37market like GitLab Jenkins and some
- 3:09:39others but by default Genkins is the to
- 3:09:42go tool for the CI industry. So far
- 3:09:45we've talked about genkins. Now let's
- 3:09:47talk about what is pipelining in
- 3:09:49Genkins. Now let's say I want to deploy
- 3:09:52a code. The code may have certain steps
- 3:09:54like first step I'm building the code.
- 3:09:56Second step I'm compiling then code
- 3:09:58reviewing then packaging then deploying.
- 3:10:01So how do I automate a combine of all
- 3:10:03these steps which can be executed in one
- 3:10:05go. Now to deploy all the scenario we
- 3:10:08have created a delivery pipeline. Now
- 3:10:10pipeline is nothing but it's a
- 3:10:11combination of different different steps
- 3:10:13or different tasks that we need to
- 3:10:15perform in order to deploy our code. Now
- 3:10:17using a pipeline instead of doing this
- 3:10:19task or code deployment manually we
- 3:10:21combine them and deploy them as a sort
- 3:10:23of one common approach of a delivery
- 3:10:25pipeline. Now there are multiple ways on
- 3:10:28how you can create a pipeline. The two
- 3:10:30most common ways or common approaches of
- 3:10:32using a pipeline as you can see from
- 3:10:34scenario a declarative approach and the
- 3:10:37second one that is used in the industry
- 3:10:39is a scripted approach. This particular
- 3:10:41is an example of a genkins pipeline
- 3:10:43script. Here you are saying we are first
- 3:10:46doing a stage called build stage where
- 3:10:48we will be combining multiple tasks like
- 3:10:50first we are using Java then we are
- 3:10:52printing something called echohello
- 3:10:53pipeline then we using Maven as the
- 3:10:56build automation tool and try to deploy
- 3:10:58a package and then we are doing a shell
- 3:11:00script output of what all things are
- 3:11:02present in that particular directory
- 3:11:04structure. This is a typical example of
- 3:11:07syntax of how to create a pipeline in
- 3:11:09genkins. Now let's talk about the two
- 3:11:11predominant pipeline that are used in
- 3:11:13the IT industry scripted and
- 3:11:15declarative. Now let's talk about what
- 3:11:17is scripted and declarative and how they
- 3:11:20are different from each other. A
- 3:11:22scripted pipeline is a traditional
- 3:11:24genkins pipeline approach and a
- 3:11:26declarative pipeline is a modern-day
- 3:11:28pipeline approach that is used in the
- 3:11:29industry. In a scripted pipeline, the
- 3:11:32syntax was first strict while in
- 3:11:34declarative pipeline view something
- 3:11:35called as Groovy syntax. When you use a
- 3:11:38declarative pipeline, you can get a code
- 3:11:40from any version system tool like git.
- 3:11:43You can create something called as
- 3:11:44genkins file and you can download
- 3:11:46genkins file from a virtual constant
- 3:11:48tool and that can be used to run your
- 3:11:50genkins code. When you use a scripted
- 3:11:53pipeline, you define a code something
- 3:11:54called as a node block. But one
- 3:11:56declarative pipeline will define a code
- 3:11:58in a pipeline block as we can see in the
- 3:12:00previous example. Now let's talk about
- 3:12:02what is genkins file and how it can be
- 3:12:05used. Now genkins file are like a text
- 3:12:08file where you define your entire
- 3:12:10structure and syntax of your genkins.
- 3:12:12You know only how to download the file
- 3:12:14and in particular you can just give the
- 3:12:16part of your git repo. If it is true
- 3:12:18then get the credential the private repo
- 3:12:21and it can pull all the contents from
- 3:12:22there and just execute your code. It is
- 3:12:25a modern deployment mechanism that we
- 3:12:27use when we work with a genkins
- 3:12:29pipeline. Using genkins pipeline we use
- 3:12:31certain things which help us. Let's talk
- 3:12:33about this. First is code review. Now
- 3:12:37you do a genkins pipeline. You can
- 3:12:38easily review your code. Your code can
- 3:12:40be reviewed by multiple developers
- 3:12:42before being executed. Now how that
- 3:12:45works is in Genkins file they are stored
- 3:12:47generally in a version control tool like
- 3:12:49Git. You can put something called as a
- 3:12:51pull request for a code review. Now
- 3:12:53different members of your team can
- 3:12:55review the code before you actually pull
- 3:12:57the Jenkins file and deploy it. Now you
- 3:12:59can do an audit trail or refer to as a
- 3:13:01long audit. You can lock each and every
- 3:13:03step's output that is being executed as
- 3:13:06part of the genkins file and can see
- 3:13:08what is happening when the genkins file
- 3:13:09is getting executed. It's sort of like a
- 3:13:12verbus lock. Then you can find a single
- 3:13:14place who store all your data or all
- 3:13:16your outputs. You don't need to have
- 3:13:18developers scattered here and there and
- 3:13:20writing their own codes for executing a
- 3:13:22genkins pipeline. whole organization can
- 3:13:25approach a genkins file mythology where
- 3:13:27code can be stored in a VCS tools and
- 3:13:29from there the code can be downloaded
- 3:13:31and can work as a single source for your
- 3:13:33entire pipeline. Now let's talk about
- 3:13:36the genkins workflow in particular. How
- 3:13:38does genkins workflow work? Genkins
- 3:13:41workflow always start with a version
- 3:13:42control system or you can say a source
- 3:13:45code repository. Multiple developers
- 3:13:47collaborate and they put their code in a
- 3:13:49source code system like git from where
- 3:13:51genkins try to pull the data from that
- 3:13:53source control system. For your system
- 3:13:55there is no mandry or the source code
- 3:13:57needs to be git. It can be big bucket
- 3:14:00svn whatever your organization uses with
- 3:14:02genkins server. Now we execute tasks
- 3:14:05like build deploy compiling packaging
- 3:14:08code reviewing. Now all these things
- 3:14:09happen using genkins server where your
- 3:14:11genkins actually install was running.
- 3:14:14Now genkins server can be any operating
- 3:14:16system. It can be a window machine,
- 3:14:18Ubuntu machine, Linux machine or a Mac
- 3:14:21as well. It can be any operating system
- 3:14:23of today's modern world availability.
- 3:14:26Using this genkins server will execute
- 3:14:28our different different task and
- 3:14:29scenarios. In Genkins server, we use the
- 3:14:32mail functionality for the feedback
- 3:14:34mechanism. We notify developers the
- 3:14:36commit or the code deployment
- 3:14:38successfully or it is a failure. It also
- 3:14:41has some challenges. Now what can be
- 3:14:42done using the feedback mechanism?
- 3:14:44Possibly using the genkins server. So
- 3:14:47using genkins server we always first
- 3:14:49deploy the code on a lower life cycle
- 3:14:51environment. That is recommended
- 3:14:53standard practice. So what we do is we
- 3:14:55first deploy a QA server on a testing
- 3:14:58server and once the code deployment is
- 3:15:00successful on the lower life cycle then
- 3:15:02we go ahead and deploy the code on a
- 3:15:04production server. That is how the
- 3:15:06entire genkins workflow mainly
- 3:15:08particular interact first. Now guys,
- 3:15:10let's talk about the Genkins
- 3:15:11installation and how to install Genkins
- 3:15:13in a machine. As you all know, Genkins
- 3:15:16by default run on 80080. So, please make
- 3:15:19sure that if you're using any VMs in
- 3:15:21your organization, the port 80805
- 3:15:24settings are open and configured so that
- 3:15:26it can be accessible. I will get into
- 3:15:28some of the prerequisites required for
- 3:15:30installing Genkins post which will go
- 3:15:33ahead and install Genkins on a window
- 3:15:35box. Now there are a few first
- 3:15:37configuration that needs to be done and
- 3:15:40I'll be covering those as well. So once
- 3:15:42I have genkins installed and configured
- 3:15:44properly I will get into the user
- 3:15:46administrative part then create few
- 3:15:48users and I will get into some of the
- 3:15:50plugins for setting up various kinds of
- 3:15:52access permissions for this users and
- 3:15:55also put in some of the freestyle jobs.
- 3:15:57Freestyle job is basically nothing but a
- 3:16:00very simple job and I will also show you
- 3:16:02the powerfulness of Genkins by
- 3:16:04scheduling this particular job to run
- 3:16:06based upon time schedule. Then I will
- 3:16:09also connect Genkins with GitHub. Now
- 3:16:11GitHub is a source code source code
- 3:16:13repository where I've got some
- 3:16:14repositories put up there. So using
- 3:16:16genkins I will connect to GitHub pull up
- 3:16:19a repository that is existing on GitHub
- 3:16:22onto the genkins box and then run a few
- 3:16:24commands to build this particular
- 3:16:26repository that is pulled from the
- 3:16:28genkins sending out emails. Now it's a
- 3:16:30very very important configuration of
- 3:16:32genkins or any other continuous
- 3:16:34integration server for that particular
- 3:16:37matter. Now whenever there is any
- 3:16:39notification that has been sent as a
- 3:16:41part of either build going bad or by
- 3:16:43being good or building propagate to some
- 3:16:46environment and all these scenarios now
- 3:16:48you will need the country's integration
- 3:16:50servers to be sending out notification.
- 3:16:52So I will get into the bit of details of
- 3:16:54how to configure the genkins for sending
- 3:16:56out emails. Now I will also get into the
- 3:16:59scenario where I will have a web
- 3:17:00application such as a maven based Java
- 3:17:03web application which will pull from the
- 3:17:05GitHub repository and I will deploy it
- 3:17:08into the Tomcat server. Now the Tomcat
- 3:17:10server will be locally running on the my
- 3:17:12system. Eventually I will get into the
- 3:17:14other very very important topic which is
- 3:17:16the master slave configuration. It's a
- 3:17:18very important and pretty interesting
- 3:17:20topics where distributed builds is
- 3:17:22achieved using a master slave
- 3:17:24configuration. Now all this can be very
- 3:17:27very easily based up using a plug-in. So
- 3:17:30this is what I'm going to be covering as
- 3:17:31a part of this tutorial. Now Genkins is
- 3:17:34a web application that is written in
- 3:17:36Java and there are various ways in which
- 3:17:38you can use and install genkins. Now
- 3:17:40I've listed a popular three mechanism in
- 3:17:42which Genkins is usually installed in
- 3:17:44any system. Now the topmost one is a
- 3:17:47window or a Linux based services. So if
- 3:17:49at all you have a window like the way I
- 3:17:51have and I'm going to use this mechanism
- 3:17:54for this demo. So I will download the
- 3:17:56MSI installer. So whenever you start as
- 3:17:59a service it goes out and nicely install
- 3:18:02all that is required for my genkins and
- 3:18:04I have a service that can be started or
- 3:18:07stopped based upon my needs. Any flavors
- 3:18:09of Linux is one of many other ways of
- 3:18:12running genkins in downloading this
- 3:18:14generic war file. And as long as you
- 3:18:16have a JDK installed, you can launch
- 3:18:19this war file by the command opening up
- 3:18:21a command box prompt or shell prompt
- 3:18:23defer to later on Linux box specifying
- 3:18:26jar and the name of this war file
- 3:18:28typically bringing up your web
- 3:18:30application and you know you can
- 3:18:32continue with your installation. Now the
- 3:18:34only thing being if at all you want to
- 3:18:36stop using genkins you just go ahead and
- 3:18:38close this prompt even into a control C
- 3:18:40and then bringing down this prompt and
- 3:18:42in Genkins server and then you also have
- 3:18:44the other older versions of genkins
- 3:18:47where run popularly using this way in
- 3:18:49which you already have a Java based web
- 3:18:51server running up and running. So you
- 3:18:54kind of drop in this war file into the
- 3:18:56root folders or the HTTP root folder of
- 3:19:00your web server. So genkins will explore
- 3:19:02and kind of bring up your application.
- 3:19:04All user credentials or user
- 3:19:06administration is all taken care by the
- 3:19:08apache or the Tomcat server or the web
- 3:19:11server on which the genkins is running.
- 3:19:14This was a very old way of running but
- 3:19:16still some people use it because if they
- 3:19:18don't want to maintain two servers now
- 3:19:20if they already have a Java web service
- 3:19:23which is being nicely maintained and
- 3:19:25backup. Now Genkins can run a test to
- 3:19:27it. All right. So either ways it doesn't
- 3:19:29matter however you're going to bring up
- 3:19:31your Genkins instance. The way we're
- 3:19:32going to operate genkins is all going to
- 3:19:34be very very same or similar but the
- 3:19:37subtle change in terms of user
- 3:19:38administration. Now if at all you're
- 3:19:40launching it through any other web
- 3:19:42server which will take care of the user
- 3:19:44administration otherwise all the command
- 3:19:46or all the configuration or the way in
- 3:19:48which I'm going to run this demo is
- 3:19:50going to be same across any of these
- 3:19:52installation. All right, as I mentioned
- 3:19:54earlier, Genkins is nothing but a simple
- 3:19:56web application that is run in Java. So
- 3:19:59all that is need is Java prelyably JDK1
- 3:20:02or 17 with a 2GB RAM which is amend RAM
- 3:20:06for running the genkins and also like
- 3:20:08any other open-source tool sets when you
- 3:20:10install JDK ensure that you set in the
- 3:20:12environment variables. Now Java home to
- 3:20:15point in the right directory. Now this
- 3:20:17is something very specific to JDK. Now,
- 3:20:19but for any other open-source tools that
- 3:20:21I've installed, there is always a
- 3:20:23preferred environment variable that we
- 3:20:25got to set in which is specific to that
- 3:20:28particular tools that you're going to
- 3:20:29use. This is a generic thing that there
- 3:20:31is for you to know. Now, for any other
- 3:20:33open-source project because the
- 3:20:35open-source project discover themselves
- 3:20:37by using the environment variables. So,
- 3:20:39as a general practice or a good
- 3:20:41practice, always set these environment
- 3:20:43variables according. So I already have a
- 3:20:46JDK 17 installed on my system. But in
- 3:20:48case you do not, what I will recommend
- 3:20:50is just navigate to the browser to the
- 3:20:53Oracle homepage. Just type in your
- 3:20:54search for install JDK mm page. Then
- 3:20:57you'll have the accept the license
- 3:20:59agreement. Now what I will recommend is
- 3:21:02just navigate on your browser to the
- 3:21:04Oracle homepage and just type in your
- 3:21:06search install JDK. Now you're going to
- 3:21:09navigate to the down here and install
- 3:21:11the 64 installer that is the.exe. exe.
- 3:21:14Now let me show you once I have
- 3:21:16installed what I've done with regards to
- 3:21:18the part. So if you get into this
- 3:21:20environment variable so I have just set
- 3:21:23in the Java home variable. Now you can
- 3:21:25go back to your this PC go to C programs
- 3:21:30to Java and then copy this part. Then
- 3:21:33click in the environment variables. I'll
- 3:21:36select the first one that is the edit
- 3:21:38the system environment variable and
- 3:21:41we'll click on the environment variables
- 3:21:43and we'll set a path here. As you can
- 3:21:45see here, Java home and we'll go down
- 3:21:47here on the path. So this is the path
- 3:21:50for your Java home screen. So simply
- 3:21:53click on edit and click on new and we'll
- 3:21:56just paste the path which we have just
- 3:21:58copied from the install.exe Java. So
- 3:22:02I've already installed it as you can see
- 3:22:04the C program file. So I simply click on
- 3:22:06okay. So the only difference between the
- 3:22:08system variables and the user variables
- 3:22:10for demon is this is control the whole
- 3:22:13system of the JDK the system variable.
- 3:22:16So we want to edit in the system
- 3:22:18variables. So the path I've been
- 3:22:20changing here is in the system
- 3:22:22variables. All right. Now the home
- 3:22:24variable is where I have the sequels and
- 3:22:26program friend of the JDK17.
- 3:22:29You see this is my Java home. All right.
- 3:22:32Now one thing to do is ensure that in
- 3:22:33case you run Java or Java C for a
- 3:22:36command you ensure that you also add the
- 3:22:38part into this part variable right so
- 3:22:41you see somewhere I will say there you
- 3:22:43got the colon program files now you
- 3:22:45click on that and I'll show you the bin
- 3:22:48as well which I've copied and paste it
- 3:22:50here as well okay so simply just go back
- 3:22:54so that's how you get the bin copy this
- 3:22:56path and paste it here which I've
- 3:22:58already done it so I'll just simply
- 3:23:00click on Okay. Okay. And okay. Now let
- 3:23:04me minimize the screen as well. So the
- 3:23:07next thing we need to do now is go to
- 3:23:09cmd to check if your Java has been
- 3:23:12installed on your system. So you simply
- 3:23:14type on java space/ version and you can
- 3:23:19see I already have Java version 17.0.5
- 3:23:23installed in my system and it's up and
- 3:23:25running. So as you can see the runtime
- 3:23:27environments and this is a 64-bit
- 3:23:30server. This is a VM virtual machine.
- 3:23:33Okay. So, as you can see, Java is
- 3:23:35installed in my system and it's up and
- 3:23:38ready. So, the next thing we need to do
- 3:23:40now is install Genkins. I'm just
- 3:23:43canceling that and open a new browser
- 3:23:46again, new tab, and type in genkins.io.
- 3:23:50Now, as you can see, this is the
- 3:23:51homepage of Genkins. All right. So, you
- 3:23:55can even read the documentation or you
- 3:23:57can simply click on download will take
- 3:23:59you to this page. Now here you can see
- 3:24:01the hardware and software requirements.
- 3:24:02Then what packaging is required for
- 3:24:05downloading the installing genkins. So
- 3:24:08this is the part for on the left hand
- 3:24:09side we have the LTS and on the other
- 3:24:12side we have the which is a more stable
- 3:24:14and on the right hand side we have the
- 3:24:16regular weekly releases. So we'll
- 3:24:19definitely go for the stable LTS
- 3:24:22download which is a long-term support
- 3:24:24which is released every 12 weeks whereas
- 3:24:26the regular releases changes weekly. So
- 3:24:29I'll be going ahead and scroll down and
- 3:24:32click on window. So as you can see there
- 3:24:35are different parameters where you can
- 3:24:36do you can have on dockers then you have
- 3:24:38Ubuntu then you have the CentOS Fedora
- 3:24:41or the Windows like I'm going to install
- 3:24:43in this case in this demo. Then but we
- 3:24:45have different aspects as well like the
- 3:24:47free BSD the Gentos Mac OS etc. So as
- 3:24:51you can see on the first stop we have
- 3:24:52the dotwire we can even install that and
- 3:24:55unzip that. But in this case in this
- 3:24:57demo part we'll simply click on Windows.
- 3:25:00So go on ahead and click window guys.
- 3:25:07Now you can see the download has
- 3:25:08started. So we just wait a few seconds
- 3:25:10until it's done installing the MSI. And
- 3:25:13as you can see it's done. So this is my
- 3:25:15downloading genkins instance. So what
- 3:25:18I'll be doing now is simply click on
- 3:25:20next. Now as you can see guys on top
- 3:25:22here it's written the genkins run on
- 3:25:24local host 80080. So keeping that in
- 3:25:27mind click on next. As you can see this
- 3:25:30is where our genkins is installed that
- 3:25:32is in C and program files and by the
- 3:25:35name genkins. So you can always change
- 3:25:38this location where the genkins has been
- 3:25:40installed but in this case I'll rather
- 3:25:43keep it on the C drive itself. So the
- 3:25:45next thing you need to do now is we'll
- 3:25:47run server as a local system so that we
- 3:25:49don't have to put any administrator or
- 3:25:51the password. And so the next step now
- 3:25:53is we test the port. So as you can see
- 3:25:55you got a green tick mark. So we'll
- 3:25:57click on next. Now you can see here that
- 3:25:59there is no it has failed because there
- 3:26:01is no compatible Java version 11 or 17.
- 3:26:04But as you can remember guys, we have
- 3:26:06already installed Java 17 and we have
- 3:26:09already verified that we're using the
- 3:26:11command prompt where it has shown us the
- 3:26:13versions Java 17. So what you need to do
- 3:26:16is simply click on change and select the
- 3:26:18Java 17 from Java 8. So simply click on
- 3:26:22Java 17 JDK 17 as you can see. Click on
- 3:26:25next and click on the install part. Done
- 3:26:28and dusted. So I've already told you
- 3:26:30that genkins run on the localhost 80080.
- 3:26:34Right? So we're going to go localhost
- 3:26:36col 80080 and hit on enter. Now as you
- 3:26:40can see please wait while genkins is
- 3:26:42getting ready for work. Right? So this
- 3:26:44will take a few minutes and then you'll
- 3:26:46be having to provide the credential of
- 3:26:48the administrator. All right. So just
- 3:26:50give it a few minutes while it's
- 3:26:52starting up. All right. Now you have to
- 3:26:54provide the administrator password.
- 3:26:56Right. So you can go ahead and go down
- 3:26:58out here. You can see the password is in
- 3:27:01the C and go to the program data then
- 3:27:04genkins then we have a genkins then a
- 3:27:06secret then you'll find the initial
- 3:27:08admin password. So we need to head out
- 3:27:10there. So what we need to do is we'll go
- 3:27:12down there. So I'm just going to
- 3:27:14minimize the screen now. Minimize it
- 3:27:16once again and as you remember we go to
- 3:27:19the C. As you can see right where is
- 3:27:21I'll just show you minimize the screen
- 3:27:23here so you can see and do it along with
- 3:27:26me. So as you can see this is in PC then
- 3:27:29scroll down to C disk. Okay this thing
- 3:27:32popped up sorry in this. So you have a
- 3:27:34program data right as you can see here
- 3:27:36down there is no program data right. So
- 3:27:39what you need to do is it's in the
- 3:27:40hidden file. So what you need to do now
- 3:27:43is click on the three buttons and view.
- 3:27:47Click on show and click on the hidden
- 3:27:49items. Now let's see if it's there.
- 3:27:51Scroll down. Program data. You can see
- 3:27:53at the last. Yeah. Simply click on that.
- 3:27:55Double click on it. As you can see, then
- 3:27:57we have to go to the folder name as
- 3:27:59genkins. Yeah, you can see on the top
- 3:28:01genkins and genkins. Then we need to
- 3:28:04search for secrets. There it is folder.
- 3:28:07And as you can see there's an initial
- 3:28:09admin password. Now you simply click on
- 3:28:11that. We'll try with the notepad. So we
- 3:28:14can copy. So simply copy that and paste
- 3:28:17it in the administrator password and
- 3:28:19click on continue. So in this case I
- 3:28:21will not save it in my computer or
- 3:28:24system. So there are two installation
- 3:28:26plugins available which is custom by
- 3:28:28genkins. One is they have suggested
- 3:28:30plugins and the other one is you can
- 3:28:32select the plugins which you want to be
- 3:28:34installed. So in this scenario I'll
- 3:28:36simply click on the install suggested by
- 3:28:38the genkins. Now what happened is the
- 3:28:40plugins are all related to each other.
- 3:28:42So it's like the typical RPM kind of a
- 3:28:44problem where you try to install some
- 3:28:46plugins and got a dependency which is
- 3:28:49not installed and you get all those
- 3:28:51issues in order to get rid of that. What
- 3:28:53genkins recommend is that there are a
- 3:28:54bunch of plugins that is already
- 3:28:56recommended and you're good to go.
- 3:28:58Right. So just go ahead and blindly
- 3:29:00click on the recommended by the plugins
- 3:29:03which is suggested or custom by the
- 3:29:06genkins. And as you can see the getting
- 3:29:08started process is going ahead. So it'll
- 3:29:12take a few minutes depending on your
- 3:29:14internet speed or on your system. Now
- 3:29:16you can see all these plugins are
- 3:29:18installing it for you. So it will take a
- 3:29:21few minutes time. So let's just wait
- 3:29:23till we get all the plugins installed in
- 3:29:26a system properly. So this is a good
- 3:29:28combination to kind of begin with and
- 3:29:31keeping that in mind genkins need a lot
- 3:29:33of bandwidth right now in terms of
- 3:29:35network. So in case you know your
- 3:29:36network is not so good, it'll make for a
- 3:29:39few of these plugins will kind of fail
- 3:29:41and these plugins are all you know
- 3:29:43unavailable on openly or mirrored site
- 3:29:46and sometimes some of them may be down.
- 3:29:48So do not worry in case some of these
- 3:29:51plug-in kind of fail to install you get
- 3:29:53an options to kind of retry installing
- 3:29:56them. But just ensure that you at least
- 3:29:58at the most 90 to 95% of all of these
- 3:30:01plugin are installed without any
- 3:30:03problem. As you can see it's we are
- 3:30:05almost there. It's around 60% to 70%.
- 3:30:10Now once all these plugins are
- 3:30:12installed. Now my plug-in in the
- 3:30:14installation is all good. There's no
- 3:30:16failure in any of the plug-in. So after
- 3:30:18that we've got to create this first
- 3:30:20username that is the first admin user.
- 3:30:23So you need to give in the username and
- 3:30:25the password. Then you have to confirm
- 3:30:27your password. Give it your full name
- 3:30:28and your email address. Right. So we'll
- 3:30:31start it by giving the username. I'll
- 3:30:33keep it plain and simple. Now, you got
- 3:30:35to remember these password and the
- 3:30:37confirm password because if you kind of
- 3:30:39lose the or you don't remember the
- 3:30:41password of the genkins, it'll be really
- 3:30:44hard to get back your account. So, try
- 3:30:46to keep it as simple as possible and
- 3:30:49keeping in mind that you have to
- 3:30:50remember the password because getting
- 3:30:52back this account will be really
- 3:30:54difficult. All right, so I'll be putting
- 3:30:56the password as well. Give it my full
- 3:30:58name. Okay, my a is small and go to the
- 3:31:02email address
- 3:31:07at the rate into rayco.
- 3:31:10All right. So once it's all done, so
- 3:31:13just simply click on save and continue.
- 3:31:16So click on never don't want to save the
- 3:31:18password. And as you remember I've told
- 3:31:20you by default gen can run on localhost
- 3:31:238080. Right? So you can simply click
- 3:31:25this or you can copy this or just write
- 3:31:28save and finish. You can even copy this
- 3:31:31link. Save and finish. Now start using
- 3:31:33Genkins. All right. Now that's kind of
- 3:31:35complete my Genkins installation. As you
- 3:31:38can see it was not that tough at all.
- 3:31:40Now the Genkins is installed correctly.
- 3:31:42Now let me quickly walk you through some
- 3:31:45of the very minimal configuration that
- 3:31:47is required. Now these are kind of the
- 3:31:49first time configuration that is
- 3:31:50required. So, and also let me warn you
- 3:31:53the UI is a little hard for many people
- 3:31:55to wrap their head around, especially
- 3:31:57the window guys. But if you're all a
- 3:31:59Java guys, you know how painful it is to
- 3:32:01write UI in Java. You kind of appreciate
- 3:32:04how the effort that has gone into the UI
- 3:32:07bottom line. It was a little hard to
- 3:32:08know wrap your head around it becomes
- 3:32:10like start using it possibly you start
- 3:32:12liking it all. All right. So I will get
- 3:32:14into some of these important ones.
- 3:32:16Something called as configuration system
- 3:32:18or the configuration system. This is
- 3:32:22something kind of put in your
- 3:32:23configuration to complete your genkins
- 3:32:25instance. Now few things to kind of look
- 3:32:28out for this is the home. Now configure
- 3:32:30system is where you kind of put in the
- 3:32:33configuration for your complete genkins
- 3:32:36instance. Now a few things to keep a
- 3:32:37look out is the home directory. All
- 3:32:40right. Now this is a Java home where all
- 3:32:42the configuration all the workspace
- 3:32:44anything and everything regarding
- 3:32:46Jenkins is stored out here in the system
- 3:32:49message. Now in the system message you
- 3:32:51can put in some of the message on the
- 3:32:54system. You can just type anything you
- 3:32:56want probably show up somewhere here on
- 3:32:58the menu. Now the number of executors is
- 3:33:00a very very important configuration.
- 3:33:02This just lets Jenkins know at any point
- 3:33:05in time how many jobs or how many
- 3:33:07threads can be run. So you can kind of
- 3:33:09visualize like a thread that can be run
- 3:33:11on this particular instant. As a thumb
- 3:33:13rule, if at all you're on a single core
- 3:33:15system, the number of executor you
- 3:33:17should be good enough in case at any
- 3:33:18point if there is any multiple jobs that
- 3:33:20kind of get triggered at the same time.
- 3:33:22Now in case the number of executor are
- 3:33:24less compared to the number of jobs that
- 3:33:26are out there to open up the new so you
- 3:33:28don't need to panic because they will
- 3:33:30get queue up and eventually genkins will
- 3:33:32be get up and running. So just keep that
- 3:33:34in mind that whenever a new job kind of
- 3:33:37gets triggered in the CPU's usage and
- 3:33:39the memory usage in terms of the disk,
- 3:33:42it's like a very high of the genkins
- 3:33:44instant. So that's something you got to
- 3:33:45keep in mind. All right, the number of
- 3:33:47executors for my system is kind of a
- 3:33:50good label for my genkins. I don't want
- 3:33:52any of these usage. So how do you want
- 3:33:54to use your genkins? This is good for me
- 3:33:56because I only have a primary server
- 3:33:59that is running. So I want to use this
- 3:34:00as low as possible. All right, as you
- 3:34:04can see it's two. Now this is usage. So
- 3:34:07I can leave everything to default. Now
- 3:34:09what I want is I want this SMTP server
- 3:34:11configuration. Now Genkins will be
- 3:34:13sending out some emails. What I've done
- 3:34:15here is I've configured the SMTP details
- 3:34:18of my personal email details. In case
- 3:34:21you are you know in your ination you
- 3:34:23want some sort of an email that is like
- 3:34:26an email ID that is set up for a genkins
- 3:34:28server. So you can specify the SMTP
- 3:34:31server details of your company. So that
- 3:34:33you know you can authorize genkins to
- 3:34:34kind of like send out emails. But in
- 3:34:36case you want to try it out like I have
- 3:34:39configured my personal email ID which is
- 3:34:42of the Gmail for sending out
- 3:34:44notification for the same TP server will
- 3:34:46be the SMTP Gmail. So it's right as
- 3:34:49username as
- 3:35:09we have we have used the MTP
- 3:35:10authentification and then we g the
- 3:35:12password.
- 3:35:15Now you can just send out an email to
- 3:35:17see if at all this configuration works
- 3:35:19again. Now Gmail will not allow you to
- 3:35:21allow anybody to send out notification
- 3:35:23on your behalf. So you just have to
- 3:35:25lower the security level of your Gmail
- 3:35:27ID so that you can allow
- 3:35:28programmatically somebody to send out
- 3:35:30email notification on your behalf. So
- 3:35:32I've already done that. So let's see if
- 3:35:35this work.
- 3:35:41Let's test it again since I have entered
- 3:35:43the wrong password. Let's see if this
- 3:35:46works or not. And it has given me a
- 3:35:48password has not accepted. So now as you
- 3:35:50can see since my Gmail has not been set
- 3:35:53up. So what you have to do is you have
- 3:35:55to lower your security level of your
- 3:35:57Gmail ID so that you can be allowed to
- 3:36:00test your email configuration. All
- 3:36:02right. So simply click on save. So now
- 3:36:06we're heading back to the dashboard. Now
- 3:36:09we shall go to the global tool
- 3:36:12configuration. Now look at the scenario
- 3:36:14where Jenkins is a continuous
- 3:36:17integration server. Now it does not know
- 3:36:19what kind of a code base it's going to
- 3:36:21pull and what kind of tools says is
- 3:36:24required or what is the code that is
- 3:36:26going to pull in and how it is going to
- 3:36:27build. So you'll have to put in all the
- 3:36:30tools that is required for building the
- 3:36:32appropriate kind of code that you're
- 3:36:33going to pull in from you know like a
- 3:36:36source code repository. So for example
- 3:36:38in case your source code is a Java code
- 3:36:40and assuming that you have you know
- 3:36:42because this demo this is my laptop and
- 3:36:44I've put all the configuration JDK
- 3:36:46everything on my laptop because I am a
- 3:36:48developer and I'm working on the laptop
- 3:36:50but my country's integration servers
- 3:36:53will be known as a separate server
- 3:36:55without anything being installed on it.
- 3:36:57So in case I want genkins to you know
- 3:36:59like run on a Java code and I need to
- 3:37:01specify the JDK location of this out
- 3:37:04there. So okay since I've already have
- 3:37:06the JDK installed and have already put
- 3:37:08in the Java home directly or rather and
- 3:37:11the environmental environment correctly
- 3:37:13so I don't need to do it. So now if at
- 3:37:15all you want the genkins server to use
- 3:37:17git. Now as you know that git is a
- 3:37:19command bash or the command prompt for
- 3:37:22running git and connecting to any other
- 3:37:24git server. So you will need git to be
- 3:37:26no installed on that particular system.
- 3:37:28Now gradel and maven if at all you have
- 3:37:31some maven as you want to do this in any
- 3:37:33other tools that you're going to install
- 3:37:35on your system which is your continuous
- 3:37:37integration server. So you'll have to
- 3:37:38come in here and try to configure it.
- 3:37:40And in case you have not configured it
- 3:37:42then genkins will not be able to find
- 3:37:44these tools for building your task. So
- 3:37:46since I don't want to install anything
- 3:37:48we'll go back to manage system. Now you
- 3:37:51can see the global configure global
- 3:37:53security. I can see this an SSH server.
- 3:37:56Now what does this mean if you ask me?
- 3:37:58Genkins own user database. So this is
- 3:38:01nothing but the security access control
- 3:38:04which is set to genkins own user
- 3:38:06database. So what does this mean is you
- 3:38:08know genkins by default it uses files
- 3:38:11system where it stores all the usernames
- 3:38:14which hashes up like these username that
- 3:38:16kind of stores them as of it. So as of
- 3:38:19now genkin is configured to use in your
- 3:38:22own database assuming that you are
- 3:38:24running organization. So you will
- 3:38:25probably want to you know have some sort
- 3:38:27of LDAP server which will in turn have a
- 3:38:31control of your access to your genkins
- 3:38:33repository. So you will specify your
- 3:38:35LDAP server details the root DN password
- 3:38:38or the managed DN. So the LDAP as you
- 3:38:42can see or the LDAP which the genkins
- 3:38:44itself will tune in for your specific
- 3:38:46servers. Now you have the manager DN the
- 3:38:49manager password. Now all these should
- 3:38:50be filled. All these details should be
- 3:38:52filled in case you want to connect your
- 3:38:54Genkins instance with your LDAP server
- 3:38:56or any of the authentication server that
- 3:38:59you have in your organization. But for
- 3:39:00now since I don't have any of these
- 3:39:02things, I'm going to use its own
- 3:39:03database. That's good enough. All right.
- 3:39:06So I'll simply the genkins own user
- 3:39:08database. So I will set up some
- 3:39:10authorization methods. So for now let me
- 3:39:12not get into any of these details of
- 3:39:14this and just be aware that genkins can
- 3:39:16be connected for authorization to an
- 3:39:18LDAP server or you can have genkins
- 3:39:21managing its own server which is
- 3:39:23happening as of now. Let me put in a
- 3:39:25very very simple job. All right. So
- 3:39:27let's create a new job in this video. So
- 3:39:30simply click on new item. Now simply you
- 3:39:33can add any item name here. So the most
- 3:39:37important here are the freestyle and
- 3:39:39pipeline. For the first demo, we'll
- 3:39:41click on the freestyle job and click on
- 3:39:43okay. So, so in the description, you can
- 3:39:45write anything in your description. This
- 3:39:47is an optional thing. So, you can say
- 3:39:49this is my first job demo for so in this
- 3:39:53demo I don't want to connect it to any
- 3:39:55source code for now. So, I'm just going
- 3:39:57to leave it to none. Now, we don't need
- 3:40:00to write any build environment as well.
- 3:40:01Now, in this build step, we simply click
- 3:40:03on execute windows on. So since I'm on
- 3:40:06the window box, I will say execute
- 3:40:08window bash command. All right. So what
- 3:40:11do you want to do? So let me just echo
- 3:40:13something. Echo hello world. This is
- 3:40:16hello. Welcome to my first demo job in
- 3:40:21Edo. Then we'll specify the date and
- 3:40:24time as well. So put in date colon as
- 3:40:28time as well. So you can see it's a very
- 3:40:30very simple command. We just have to put
- 3:40:32an eco and we have something along with
- 3:40:34the date and time. So we'll keep
- 3:40:36everything as simple as possible. So we
- 3:40:38save this job. So once it is shipped. So
- 3:40:41you can see there's a bill history. So
- 3:40:43once you have saved this job, you know
- 3:40:44the job name comes up here. As you can
- 3:40:46see project first job by mistically I've
- 3:40:48written double T in my first job. Now as
- 3:40:51you'll see here there's some builds
- 3:40:52history. So there is nothing as of now
- 3:40:55because I've put in a job. I have not
- 3:40:57yet run it. All right. So let me try and
- 3:41:00build it now. Now you can see there's a
- 3:41:02number my first job. So you will see a
- 3:41:04date and you will see the time since
- 3:41:06I've clicked twice. So if I've come one
- 3:41:08and two now if you click on this now you
- 3:41:11can see the console output. Now if you
- 3:41:13click on this now you can see this and
- 3:41:15this is the output that is run. Hello
- 3:41:17welcome to my first demo job in ita
- 3:41:20along with the date and along with the
- 3:41:22time. Now if you see this now if we
- 3:41:25navigate this now if you navigate this
- 3:41:27we go back to here. Now as you can see
- 3:41:29there's a folder created as jobs right
- 3:41:31so this is the directory what I was
- 3:41:33mentioning earlier regarding genkins
- 3:41:35home if you can just open it up either
- 3:41:37you can see this folder jobs so this as
- 3:41:40mentioned earlier regarding genkins home
- 3:41:42so all the job related stuff it's
- 3:41:43specific to this particular genkins
- 3:41:45installation is all here now all the
- 3:41:47plugins that I installed the details in
- 3:41:49each of those plugins can be found here
- 3:41:51right so the workspace is where the jobs
- 3:41:54that I've created whichever I'm running
- 3:41:56would you know there'll be an individual
- 3:41:57folder specific to the jobs that has
- 3:41:59been put up there and all right so one
- 3:42:01job one quick run that is how it looks
- 3:42:04like so the workspace is where all the
- 3:42:06jobs that I have created whichever I'm
- 3:42:08running what you know there'll be an
- 3:42:09individual folder specific to that jobs
- 3:42:11that has been made up right so as you
- 3:42:13can see there's a first job that we have
- 3:42:15just created just now so one job one
- 3:42:17quick run that we have done that is how
- 3:42:19it's look like it's pretty simple now
- 3:42:21let's go back so let us put on a second
- 3:42:24job so we can go back to dashboard click
- 3:42:26on new items and say Second job. Let's
- 3:42:29get the spelling correct this time.
- 3:42:31Second, I wrote second first again.
- 3:42:33Second job. And I can put a semicolon
- 3:42:37here. Underscore second job. Let me
- 3:42:39click on freestyle again. Click on okay.
- 3:42:41And you can say this is my second. So I
- 3:42:46just want to demonstrate the
- 3:42:47powerfulness of the automation server
- 3:42:49and how simple it is to automate a job
- 3:42:52that is put on the genkins which will be
- 3:42:54triggered automatically. Now remember
- 3:42:56what I've said earlier about genkins
- 3:42:58because at the core of genkins is a very
- 3:43:00very powerful automation server. All
- 3:43:02right. So my second job this is my
- 3:43:05second job which will be triggered
- 3:43:09automatically. Okay. So in the build
- 3:43:12step we'll put bash terms. Then we'll
- 3:43:14write here eco again. So we'll say here
- 3:43:17something as second job is going on
- 3:43:20here. the tools
- 3:43:23sorry with the tools of an automation
- 3:43:26toolation
- 3:43:29tool
- 3:43:31and then I'll give some date as well
- 3:43:34date parameter time but this time I'm
- 3:43:37going to demonstrate the powerfulness of
- 3:43:39the automation server that is there so
- 3:43:41if you see here there is a build trigger
- 3:43:43so build can be triggered using various
- 3:43:45triggers that is there so you'll get
- 3:43:47into the GitHub trigger or a hook or a
- 3:43:50web hook which is kind of triggering. So
- 3:43:52we'll see that later on. But for now,
- 3:43:53what I want to do is I want to ensure
- 3:43:55that this job that I'm going to put in
- 3:43:57will be automatically triggered. Let's
- 3:43:59say every minute I'm on this job to be
- 3:44:02run on its own. So we'll put as build
- 3:44:05periodically and we will set the time.
- 3:44:08Now if you can see here, there's a bunch
- 3:44:10of help. If you want to go through it,
- 3:44:13you can go through it. Let's just put
- 3:44:14out very very simple regular expression
- 3:44:17for scheduling this job every minute.
- 3:44:19All right. So 5,000 is all I'm going to
- 3:44:21put in. 1 2 3 4 5. Now let me save this.
- 3:44:27Let's go back. So when you build
- 3:44:29periodically
- 3:44:31is now you can see here. Now we just
- 3:44:33copy that. And now how do we check if it
- 3:44:36gets triggered every 15 minutes. So I
- 3:44:38just don't do anything but wait for 15
- 3:44:40minutes. And if all everything goes
- 3:44:42well, Jenkins will automatically trigger
- 3:44:44my second job in 15 minutes. Now you can
- 3:44:48see here is still processing. So we have
- 3:44:50to wait for 15 minutes. Now we can go
- 3:44:53through all those command of the
- 3:44:56scheduling time. So you can see how many
- 3:44:58stars required for each minutes or for
- 3:45:01each hour. Now as you can see it's done.
- 3:45:04You can just go and build go here and go
- 3:45:07to console output. Now you can see the
- 3:45:10finish is success and you have this. Now
- 3:45:13we can go back and copy this and see if
- 3:45:16they on your it's already there. You can
- 3:45:19go to workspace. You can see where
- 3:45:20second job has also been created
- 3:45:23automatically by genkins. Now that I
- 3:45:25have my genkins up and running a few
- 3:45:27jobs that have been put up here on my
- 3:45:29genkins instance, I will need a way of
- 3:45:31controlling access to my genkins server.
- 3:45:34This is where I will use a plug-in
- 3:45:35called a rolebased access plug-in and
- 3:45:38create few rules. The rules are
- 3:45:40something like a global rule and a
- 3:45:42project rules for a specific role. I can
- 3:45:44have different rules and I can have user
- 3:45:46who have sign up for the users for my
- 3:45:48create kind of assign to these roles so
- 3:45:51that each of these users fall into some
- 3:45:54category. This is my way of kind of
- 3:45:56controlling access to my genkins
- 3:45:58instance and ensuring that people don't
- 3:46:00do something unwanted. All right. So
- 3:46:02first thing first let me go ahead and
- 3:46:04install a plugin for doing that. So we
- 3:46:06get into manage genkins. Then we go to
- 3:46:08manage plugins. There will plugins
- 3:46:11install plugins. We have advanced
- 3:46:13settings. So these are the available
- 3:46:15plugins. Uh and then if you go to
- 3:46:17install now these are the installed
- 3:46:19plugins. Now let's go and search for a
- 3:46:22rolebased. Now you can see base
- 3:46:24authorization strategy. So this will
- 3:46:27happen is it enables user authorization
- 3:46:29using a role-based strategy. Now roles
- 3:46:31can be defined globally or for
- 3:46:33particular jobs or nodes selected by a
- 3:46:35regular expression. This is the plugins
- 3:46:38everyone. So you will install it without
- 3:46:40restart. So it's success. It looks good.
- 3:46:42Looks good. Now waiting for this. Yeah,
- 3:46:45it's success. Done now. So go back to
- 3:46:47the top page. Now one thing to remember
- 3:46:50guys is genin is running on a Java using
- 3:46:53a Java instance. So typically many
- 3:46:55things will work the same way unless
- 3:46:57inherently you want it to restart. So
- 3:46:59but a good practice is whenever you do
- 3:47:01some sort of a big installation or a big
- 3:47:04patches on your genin instance just
- 3:47:06ensure that you can restart it otherwise
- 3:47:08there will be a difference in terms of
- 3:47:10what is installed in the system and what
- 3:47:12is there on the file system so you'll
- 3:47:14need to flush out few of those setting
- 3:47:16later on but for now these are very
- 3:47:18small plug-in so this will run without
- 3:47:21any problem but otherwise if at all
- 3:47:23there are some plugins which they will
- 3:47:25need to restart you know you can kindly
- 3:47:27go ahead and restart your Jenkins
- 3:47:29plugins instance but for now I don't
- 3:47:30need that it looks good I have installed
- 3:47:32the plugins so where do I see my plugins
- 3:47:36and installed the plugins which is
- 3:47:38specific to the user control to access
- 3:47:40control now let's go we go to the
- 3:47:42configure global security now we can go
- 3:47:45ahead and check the authorization you
- 3:47:47can see here authorization rolebased
- 3:47:49strategy popping out here right as you
- 3:47:51can see the rolebased strategy has been
- 3:47:53installed and has been shown here this
- 3:47:56is because of my installation of my
- 3:47:58rolebased plugin So this is what I would
- 3:48:00want to enable because I've already have
- 3:48:02my own database setup and for the
- 3:48:04authorization part in that sense that
- 3:48:06you can do what I'm going to install. I
- 3:48:09mean I've already installed a rolebased
- 3:48:10strategy right now I'm going to enable
- 3:48:12that strategy. So we simply click on
- 3:48:15rolebased strategy. Okay. And click on
- 3:48:18save. So now I'm going to enable that
- 3:48:19strategy. All right. Now I will say okay
- 3:48:22now I've installed the rolebased access
- 3:48:23plugin. Now we'll need to just set it up
- 3:48:26and check you know I will go ahead and
- 3:48:28create some roles and it shows that I've
- 3:48:30assigned users as per these roles. So
- 3:48:33let me go to manage the configuration
- 3:48:36manage genkins and let's see how we can
- 3:48:39create our roles not here as well. So we
- 3:48:43can do manage and assign roles for
- 3:48:45creating a roles. Okay now you'll only
- 3:48:47be able to see this once and only when
- 3:48:49you have installed those plugins. Now
- 3:48:52I've enabled the plugins. Now I've
- 3:48:55enabled the rolebased access control as
- 3:48:57well. Now we'll go ahead and create some
- 3:48:59rules for this particular genkins
- 3:49:00instance. So first I will manage roles.
- 3:49:04So this is at a very high level which is
- 3:49:06a global role. Now there are some role
- 3:49:08to add which you can add yourself some
- 3:49:10item roles for some projects or
- 3:49:12something. So let me create a role which
- 3:49:14kind of visualize like a group. So we'll
- 3:49:17create our own called the developer.
- 3:49:20Typically the genkins instance or the CA
- 3:49:22instance are kind of own up or
- 3:49:24controlled by a QA guys. So that's why
- 3:49:27I'm creating a role called developer and
- 3:49:29I'm adding this role at a global role.
- 3:49:31So I will add this here and then I can
- 3:49:33click read as well. So we've given this
- 3:49:37administrator right. So we add this. So
- 3:49:40as you can see here you will see this
- 3:49:42develop a rule that there is each one of
- 3:49:45these options that you can hover here
- 3:49:47and sort of see what kind of permission
- 3:49:50you have given it to this developer role
- 3:49:52that you have just created. So you can
- 3:49:54read and write then you can create some
- 3:49:56changes. You have given a permission as
- 3:49:58credential which you can create then you
- 3:50:00can delete then the manage the domains.
- 3:50:04So these kind of help or permission that
- 3:50:07they're giving it. So these are some
- 3:50:09kind of sort of a help for a permission
- 3:50:12specific. So you want to see it's like
- 3:50:14uh how it sounds a little you different
- 3:50:17but I would want to give you a very very
- 3:50:19little permission for the developer. So
- 3:50:21from an administrator perspective I just
- 3:50:23want him to have a read and write kind
- 3:50:25of a role credentials. Okay read and
- 3:50:28write and I can allow him to view as
- 3:50:30well. I don't want him to create agents
- 3:50:33or give him some delete. Now I don't
- 3:50:35want him to configure, build, provision
- 3:50:38or connect or disconnect anything. So
- 3:50:39I'll just give him a read and a view.
- 3:50:41And I don't even want him to have access
- 3:50:43to my workspace as well. So I'll just
- 3:50:45give him now for run. So I won't even
- 3:50:48give him the access to that. Now we can
- 3:50:51give view as well. I don't want him to
- 3:50:53delete. And what I'm doing here is just
- 3:50:56creating a global rules for the
- 3:50:58developers. And I've given him a very
- 3:51:00very limited roles in the sense that I
- 3:51:02don't want this developer to be able to
- 3:51:04run any agents nor create jobs or build
- 3:51:07jobs or cancel jobs or configure jobs at
- 3:51:10the maximum. Right? So I just want him
- 3:51:11to read that is already put up there.
- 3:51:13Okay. So I will save now and create a
- 3:51:16rule that is done now that I've created
- 3:51:19rule. Now I still don't have any users
- 3:51:21that is in there the system. So let me
- 3:51:24go ahead and create some users on the
- 3:51:26system. So we'll go back to manage
- 3:51:28genkins and go to manage users. Now let
- 3:51:32me create another user. Okay. By
- 3:51:34clicking on plus users and we'll say
- 3:51:37this one as a developer. Give him some
- 3:51:40password and name him as develop three
- 3:51:45and email and just simply give my email
- 3:51:47here and click on create users. Okay.
- 3:51:51One two. So we have created. Now this
- 3:51:53developer one two is a user that I have
- 3:51:56configured but still yet I have not set
- 3:51:57any rules for this particular user. So I
- 3:52:00will go to the manage and gain. I will
- 3:52:02give him the manage and assign roles. So
- 3:52:05now we'll go manage and assign roles and
- 3:52:08we'll assign role. So what you're going
- 3:52:10to see what I'm going to do now is I'm
- 3:52:12going to assign a role that is specific
- 3:52:14to that particular developer. So I'll
- 3:52:17find that particular user and assign him
- 3:52:19or means the developer role that I've
- 3:52:21already configured the rules. Okay. So
- 3:52:24this is the role that we have created.
- 3:52:25So we will search the user that we have
- 3:52:27just created developer one two. Now if I
- 3:52:31assign this. So go ahead and save the
- 3:52:34changes. Now let's go ahead and check
- 3:52:36the permission of this particular user
- 3:52:38by logging on to my main account and
- 3:52:40logging back as the developer one. Now
- 3:52:43let's log out from here. lock out and
- 3:52:46say developer developer one. Now if you
- 3:52:49remember this role was created with very
- 3:52:51less privilege. So there you go. I have
- 3:52:53genkins but I don't see a new item. I
- 3:52:55can't trigger a new jobs. I can't do
- 3:52:57anything. I see these jobs. However, I
- 3:52:59don't think I'll be able to start this
- 3:53:01job. Now I don't have the permission to
- 3:53:02set forth at the maximum. So what I can
- 3:53:04do is look at this job. See, so this is
- 3:53:06a limited role that was created and I've
- 3:53:09added this damare to that particular
- 3:53:12role which was a developer role so that
- 3:53:15the developers don't get to configure
- 3:53:16any of the jobs because the Jenkins
- 3:53:18instance is owned by a QA person. He
- 3:53:21doesn't want to give developer any
- 3:53:23ethnicity or right. So the rights that
- 3:53:26you set out by creating a developer
- 3:53:28roles or any user who tag as a part of
- 3:53:31this developer role will get the same
- 3:53:33kind of permission and these permission
- 3:53:35can be you know fine grain it can be a
- 3:53:38project specific permission as well but
- 3:53:40for now I just demonstrate the highle
- 3:53:42permission that I have set. So let me
- 3:53:44quickly log out of this user and get
- 3:53:46back to my admin account. So I need
- 3:53:48because I need to continue my demo with
- 3:53:50the developer roles that was created.
- 3:53:52Now one of the reasons for Genkins being
- 3:53:54so popular as I mentioned earlier is the
- 3:53:56bunch of plugins but it's got plugin for
- 3:53:58connecting anything and everything. Now
- 3:54:00you can find the genkin plugins then you
- 3:54:02will see the index over here. There are
- 3:54:04so many plugins that are there. All of
- 3:54:06these are wonderful plugins. Whatever
- 3:54:09connectors that you will need if you
- 3:54:11want to connect genkins to the AW
- 3:54:13instance or you want to connect genkins
- 3:54:14to a Docker instant or any of those
- 3:54:17containers you will have a plugin. You
- 3:54:19can go and search up if you want if you
- 3:54:21want connect genkins to big bucket. So
- 3:54:23simply click on big. So as you can see
- 3:54:26these are available. So bottom line
- 3:54:29genkins without plugin is nothing. So
- 3:54:31plugins is the heart of genkins for you
- 3:54:33to connect or in order to connect
- 3:54:35genkins with any of the containers or
- 3:54:37any of the other sets of tools you will
- 3:54:40need the plugins. Now if you want to
- 3:54:41connect or you want to build a
- 3:54:42repository which has got Java and Melvin
- 3:54:45you will need to install Maven and GTK
- 3:54:47on an instance. Now if at all you're
- 3:54:50looking for a or a Microsoft build you
- 3:54:52will need to have MS build installed on
- 3:54:55your genkins instance and the plugins
- 3:54:57that would be targeted MS build if at
- 3:55:00all you want to listen to some server
- 3:55:01site web hooks from GitHub you will need
- 3:55:04a GitHub specific plugins you want to
- 3:55:06connect to genkins to AWS you need those
- 3:55:09plugins now if you want to connect
- 3:55:11docker instance that is running anywhere
- 3:55:13in the world as long as you have the URL
- 3:55:16which is publicly reachable you just
- 3:55:18have darker plug-in that is installed on
- 3:55:20your genkins instance. So if you want to
- 3:55:23connect to a docker instance that is
- 3:55:25running anywhere in the world as long as
- 3:55:26you have the URL which is publicly
- 3:55:28reachable you just have a plug-in that
- 3:55:30is installed on your genkins instance.
- 3:55:32Now sonar cube is one of popular
- 3:55:34statistic code analysis. So you can
- 3:55:37connect a genkins build. You can build a
- 3:55:39jobs on genkins and push it to a sonar
- 3:55:41cube and get sunar cube to run analysis
- 3:55:43on that and get back the result in
- 3:55:45genkins. Now all of these works very
- 3:55:48well because of the plugins. Now with
- 3:55:50that let me connect our Genkins instance
- 3:55:52to a GitHub. So now let us connect our
- 3:55:55Genin instance to a GitHub. Now I
- 3:55:56already have a very simple Java
- 3:55:58repository up on my GitHub instance. So
- 3:56:00let me connect genkins to this
- 3:56:02particular GitHub instance and pull out
- 3:56:04a job that is put up there. Right? So
- 3:56:06this is a very very simple and you know
- 3:56:08repository is called hello Java and this
- 3:56:11is what is there in the repository.
- 3:56:13There's a simple class file. It's just
- 3:56:15got some one line of system out. So this
- 3:56:19is already present on github.com at this
- 3:56:22place and this will be the URL for this
- 3:56:25repository. So I will pick it up. So
- 3:56:28what I'll do is I will connect my Jensen
- 3:56:30instance to go to my GitHub and provide
- 3:56:33my credential and pull out this
- 3:56:35repository which is on the cloud hosted
- 3:56:37in the github.com and get it to my
- 3:56:39genkins instant and then build this
- 3:56:41particular Java file. Now I'm keeping
- 3:56:43the source code very very simple. It is
- 3:56:45just a Java file. Now how do I build my
- 3:56:48Java file? How do I compile my Java
- 3:56:50file? I just say Java C and name. Now
- 3:56:53the name of my class file is hello Java.
- 3:56:56And how do I run my Java file? I will
- 3:56:57say Java and hello. Okay. So remember I
- 3:57:00don't need to install any plugins now
- 3:57:02because what it all needs is a get
- 3:57:04plugin. So get plug-in which is already
- 3:57:06installed on this system. So let us go
- 3:57:09back create a new items. We'll create
- 3:57:12the first job here. Let's say this is a
- 3:57:15get first project. Now let it be a
- 3:57:18freestyle. Click okay. Now we'll go to
- 3:57:21the source code management. Remember
- 3:57:22right we always have been keeping it
- 3:57:24undone. So in this part we'll put it as
- 3:57:27get. Now as you remember earlier in
- 3:57:29examples we do not use any source code
- 3:57:31because we were just putting up some
- 3:57:33echo kind of jobs that did not need any
- 3:57:35integration with any of the source code
- 3:57:38system. So now let us connect this. So
- 3:57:40I'm going to put up my source code and
- 3:57:42it will show up because the plug-in is
- 3:57:44already there. Now I have already copied
- 3:57:47the HTTP address from the GitHub and
- 3:57:50simply paste it here. Now what is the
- 3:57:53credential? So I'll simply add that. If
- 3:57:56we add credential this time. So I'll
- 3:57:58just click and cancel. So if we just add
- 3:58:02genkins. So we'll add a username here.
- 3:58:06Now if there are any errors in terms of
- 3:58:09not able to genkins to be able to find
- 3:58:11the git or the g.exe or if the
- 3:58:13credential are wrong somewhere down
- 3:58:15here. So you'll see a red message. Okay.
- 3:58:17Like something is not right. For now
- 3:58:20it's okay. Now I'm going to build
- 3:58:22tricker. Now what will be there as a
- 3:58:24part of my build step? because this
- 3:58:26repository just have the Java file
- 3:58:28correct low Java. So in order for me to
- 3:58:31build this, I will say execute window
- 3:58:33bash command and I'll say Java. Hello
- 3:58:38Java. Java. Now let's save this. Okay.
- 3:58:42So let me try to run this. Okay. Build
- 3:58:44it. Now click on this console output.
- 3:58:47Great. Now as you can see here there's a
- 3:58:49lot of executed gate on the behalf. It
- 3:58:52goes on there to provide my credentials
- 3:58:55and so you know it pull my repository
- 3:58:57and my default. Now we'll pull up the
- 3:58:59master branch. This is there on the post
- 3:59:02string and it kind of builds this whole
- 3:59:04thing on Java C hello world. Finish and
- 3:59:07it's given me a success. So it's kind of
- 3:59:09build this whole thing Java C hello to
- 3:59:12Java and it runs this Java hello hello
- 3:59:16world. And there as you can see this is
- 3:59:18the output there. And here you can see
- 3:59:20if you want to look at the content that
- 3:59:23was created on the repository. Now if
- 3:59:26you can go there into the my workspace
- 3:59:28like I've showed earlier you can just
- 3:59:29simply click here and you can already
- 3:59:31see here it's been created kit first
- 3:59:33project and it's saying hello. Now as
- 3:59:36you can see it's already there. Now if
- 3:59:38you can go back as you can see and
- 3:59:40simply close that. Now what it did was
- 3:59:42genkins on your behalf went over all the
- 3:59:44way to GitHub pulled this repository
- 3:59:47from there and then you know it brought
- 3:59:48it down to your local system on my
- 3:59:50genkins instance. Now it's compiled it
- 3:59:52and it run this particular application.
- 3:59:54Now that I've integrated genkins
- 3:59:56successfully with git simply within the
- 3:59:58Java application.
- 4:00:05Now let's start with a Docker use case.
- 4:00:08Imagine that you're working in a
- 4:00:09fast-paced IT department where issues
- 4:00:12keep popping up, asserts go unttracked,
- 4:00:14and changes need approval. That is where
- 4:00:16IBM control desk comes in. It
- 4:00:18streamlines IT service management by
- 4:00:20centralizing incident problem and asset
- 4:00:23management into one easy to use platform
- 4:00:25and it helps in solving problems faster
- 4:00:28with automation and intelligent
- 4:00:29workflows to improve service quality and
- 4:00:32keep things running. Let me tell you all
- 4:00:34what is IBM control desk. IBM control
- 4:00:37desk is an IT service management tool
- 4:00:39that helps manage and also support users
- 4:00:41and IT infrastructure. It builds on IBM
- 4:00:44Maximo assert management a platform
- 4:00:47originally designed for managing
- 4:00:48physical and IT asserts. Did you all
- 4:00:51know that even IBM faced challenges? IBM
- 4:00:54control desk while a robust IT service
- 4:00:56management solution face several
- 4:00:58challenges in traditional environments.
- 4:01:00The deployment process was often complex
- 4:01:03requiring extensive configuration and
- 4:01:05manual efforts that prolonged setup
- 4:01:07times. Its architecture was resource
- 4:01:10intensive leading to inefficiencies and
- 4:01:12also higher operational costs.
- 4:01:14Scalability was another significant
- 4:01:16huddle as adapting to increasing
- 4:01:18workloads required to major
- 4:01:19architectural adjustments limiting its
- 4:01:22responsiveness to business needs.
- 4:01:24Additionally, maintenance and upgrade
- 4:01:26process were frequently causing downtime
- 4:01:28and increasing operational overhead. And
- 4:01:31also the traditional on- premises setup
- 4:01:32was a lack and flexibility of modern
- 4:01:34cloud-based solutions making integration
- 4:01:37with other tools more difficult and
- 4:01:39highlighting the need for more
- 4:01:41modernized approach such as
- 4:01:42containerization to improve performance,
- 4:01:45scalability and ease of management.
- 4:01:48Imagine managing thousands of IT asserts
- 4:01:50and services without scalable
- 4:01:52infrastructure. This is where the IBM
- 4:01:54control desk was before Docker. So let's
- 4:01:57ever think why Docker was introduced
- 4:01:59into IBM control desk. In the IBM
- 4:02:01control desk case study, Docker was
- 4:02:03introduced to address the challenges
- 4:02:05associated with managing traditional IT
- 4:02:07service management applications. IBM
- 4:02:10control desk a complex and resource
- 4:02:12intensive platform often faced issues
- 4:02:14with scalability, high resource
- 4:02:16consumption and complex deployment
- 4:02:17process in traditional environments.
- 4:02:20Docker helped overcome these challenges
- 4:02:21by containerizing the application
- 4:02:23components allowing for more efficient
- 4:02:25resource use, easier scaling and
- 4:02:27simplified deployments. By using Docker,
- 4:02:30IBM control desk could quickly adapt to
- 4:02:32changes, reduce operational overhead,
- 4:02:34and also improve performance aligning
- 4:02:36with modern DevOps and cloud native
- 4:02:38practices. Here is simplified
- 4:02:40explanation of the setup described where
- 4:02:43a single VM on Red Hat Linux with two
- 4:02:46CPUs and 4GB RAM hosts both the IBM
- 4:02:49control desk and the DB2 database.
- 4:02:52Application files are shared via NFS
- 4:02:54that is making them accessible to docker
- 4:02:56for container deployments. Here comes
- 4:02:58another step that is building Docker
- 4:03:00images. They decided to strictly follow
- 4:03:02what is stated in the Maximo assert
- 4:03:04management. That is maximum assert
- 4:03:07management is a comprehensive software
- 4:03:08solution developed by IBM that helps
- 4:03:11organizations manage their asserts
- 4:03:13effectively throughout their life cycle.
- 4:03:15That is it is a part of an IBM Watson
- 4:03:18IoT that is internet of things platform
- 4:03:20and it's widely used in industries such
- 4:03:22as manufacturing utilities and also
- 4:03:25transportation and facilities
- 4:03:26management. A team built a docker image
- 4:03:28for IBM control desk like generating the
- 4:03:31war files and also for the UI using
- 4:03:34docker files server.xml and also
- 4:03:36JVM.options
- 4:03:38they built images for various
- 4:03:39applications including UI chron mess
- 4:03:44and also API. Since JMS wasn't provided
- 4:03:47they created it from scratch based on
- 4:03:49the webspear liberty docs. The service
- 4:03:52portal image built from the NodeJS
- 4:03:54included certificates for secure
- 4:03:56communication. Next is that they
- 4:03:58deployed containers. Containers were
- 4:03:59deployed on an Ubanto machine with four
- 4:04:02CPUs and 32GB RAM. Each application had
- 4:04:05a container connected to a Docker
- 4:04:06network for intercontainer
- 4:04:08communication. Docker Compose managed
- 4:04:10all resources using Docker Compose. For
- 4:04:13configuration, including environment
- 4:04:15variables and host settings. The
- 4:04:18streamlined approach enhanced
- 4:04:19scalability, simplified management and
- 4:04:21improved integration for IBM control
- 4:04:23desks. Let me tell you what Docker
- 4:04:26bought and changed. Docker transformed
- 4:04:27IBM control desk by enabling
- 4:04:29containerization, improving resource
- 4:04:31efficiency and scalability. It
- 4:04:33simplified deployment, reduced downtime
- 4:04:36and made updates easier through the
- 4:04:37confident isolation. This enhanced
- 4:04:40system flexibility, reliability and
- 4:04:42overall performance making IBM control
- 4:04:44desk more agile and responsive. So here
- 4:04:47is a condensed version of four points.
- 4:04:49First is the efficient containerization.
- 4:04:51Docker improved IBM control desk's
- 4:04:53resource efficiency and scalability by
- 4:04:56containerizing its components. They also
- 4:04:58streamlined deployment enabled faster
- 4:05:00setup with fewer errors and reduce
- 4:05:02downtime. Easier maintenance too. Docker
- 4:05:05isolated components which made updates
- 4:05:07and maintenance more manageable and
- 4:05:09flexible. Enhanced agility work. Docker
- 4:05:12was also an enhanced agility that made
- 4:05:15approach for IBM control desk more agile
- 4:05:17and responsive to business needs
- 4:05:19optimizing operations. Now let's see the
- 4:05:21overall solution bought involving Docker
- 4:05:24in IBM control desk bought a
- 4:05:25comprehensive solution by containerizing
- 4:05:27its application components which
- 4:05:29improved resource utilization and
- 4:05:31scalability. This approach allowed
- 4:05:33faster and more consistent deployments
- 4:05:35reducing setup errors and minimizing
- 4:05:37downtime. Docker also enables seamless
- 4:05:40updates and maintenance by isolating
- 4:05:42different components, enhancing the
- 4:05:44systems flexibility and reliability.
- 4:05:46Furthermore, the streamlined modular
- 4:05:48architecture simplified operations,
- 4:05:50reduced operational cost and increased
- 4:05:52responsiveness, ultimately transforming
- 4:05:55IBM control desk into a more efficient
- 4:05:57and agile IT service management
- 4:05:59platform. Let's see the key benefits
- 4:06:01bought. First is enhanced scalability.
- 4:06:04Containerization optimized resource and
- 4:06:06also simplified scaling as demand grew.
- 4:06:08Efficient deployment. Docker streamlined
- 4:06:10deployment reducing errors and downtime
- 4:06:13for a more reliable setup. Simplified
- 4:06:15maintenance. Isolated components enabled
- 4:06:18easy updates boosting flexibility and
- 4:06:20reliability. Last is the cost effective
- 4:06:22operations. The modular setup cut costs
- 4:06:25and also improved responsiveness making
- 4:06:27IBM control desk more agile. The result
- 4:06:30bought by this use case was this article
- 4:06:32showed a case study using container
- 4:06:34technology to leverage the native
- 4:06:36support of webpere liberty profile with
- 4:06:38the IBM control desk product. So they
- 4:06:41found that they have more traditional
- 4:06:43product to container to evolve it toward
- 4:06:45a cloud native like architecture without
- 4:06:47any need of touch the goal that is there
- 4:06:50were also no impact at the application
- 4:06:51level. This case study showed how
- 4:06:54container technology was used to
- 4:06:55transform IBM control desk into
- 4:06:57cloudnative like architecture without
- 4:06:59changing the application code. Despite
- 4:07:01being a traditional product not
- 4:07:03originally designed by the
- 4:07:04microservices, containers allowed the
- 4:07:06IBM to modularize its components,
- 4:07:09mimicking microservices and improving
- 4:07:11scalability and flexibility. The process
- 4:07:13involved identifying dependent modules
- 4:07:16that is by updating build scripts,
- 4:07:17deploying each module in its own
- 4:07:19container, setting up communication
- 4:07:21between them and testing the setup. This
- 4:07:24approach shows that even traditional
- 4:07:26application can be modernized with
- 4:07:28containers making deployment easier and
- 4:07:30more efficient.
- 4:07:32Now let's see why Docker is so
- 4:07:34necessary. First, Docker is portable
- 4:07:37that is they run app consistently across
- 4:07:39any environment. Second, they're
- 4:07:41lightweight. Containers use fewer
- 4:07:43resources than WM that is the virtual
- 4:07:45machines. Then their efficiency, faster
- 4:07:48setup times and better resource
- 4:07:50utilization. Next comes the scalability.
- 4:07:53Easily scale apps using container
- 4:07:55orchestration. Then is the consistency.
- 4:07:58Same behavior from development to
- 4:07:59production. DevOps integration and
- 4:08:02streamline CI/CD pipelines. Next is the
- 4:08:05isolation. Securely run multiple
- 4:08:07applications on the same host. Last is a
- 4:08:10simplified dependency management that is
- 4:08:12package all dependencies in one
- 4:08:14container. Now let's see the
- 4:08:16prerequisite to learn Docker. Docker
- 4:08:19simplifies creating consistent
- 4:08:20environments across workflows. But to
- 4:08:23fully harness its power, you'll first
- 4:08:24need a solid grasp on Linux command line
- 4:08:27tools and also the containerization
- 4:08:29basics. Three main programming languages
- 4:08:32needed are Python, JavaScript and
- 4:08:35Golang. And the additional prerequisites
- 4:08:37needed are version control that is
- 4:08:40understanding git or another version
- 4:08:41control system can be beneficial for
- 4:08:43managing code changes in docker
- 4:08:45projects. Then is the networking
- 4:08:47concepts. A basic understanding of
- 4:08:49networking concepts like IP address
- 4:08:51ports and networking protocols can be
- 4:08:53helpful for configuring docker networks.
- 4:08:56Last is the operating system.
- 4:08:58Familiarity with command line interfaces
- 4:09:00like CLI and basic system administration
- 4:09:03concepts. Next, let's see what is a
- 4:09:06container. A container technology was
- 4:09:08launched in 2013 as an open-source
- 4:09:11Docker engine. It leverage existing
- 4:09:13computing concepts around containers and
- 4:09:15specifically in the Linux world.
- 4:09:17Primitives known as Cgroups and also
- 4:09:19name spaces, Docker's technology is
- 4:09:21unique because it focuses on the
- 4:09:23requirements of developers and systems
- 4:09:25operators to separate application
- 4:09:27dependencies from infrastructure. A
- 4:09:29container is a lightweight isolated unit
- 4:09:32that packages an application and its
- 4:09:34dependencies. It also ensures it runs
- 4:09:36consistently across different
- 4:09:37environments. Now let's see why Docker
- 4:09:40uses containers. Docker uses containers
- 4:09:43for its portability as it runs the same
- 4:09:45anywhere. Then for its efficiency that
- 4:09:47uses fewer resources than virtual
- 4:09:49machines. Then comes the scalability
- 4:09:51where it can easily scale applications.
- 4:09:54Last is its consistency that ensures the
- 4:09:56app behaves the same in all
- 4:09:58environments.
- 4:09:59Now let's see what is Docker. A Docker
- 4:10:02is a platform that enables developers to
- 4:10:04design, develop and deploy testing to
- 4:10:06manage applications in isolated portable
- 4:10:09environments known as containers.
- 4:10:11Containers allow you to package an
- 4:10:13application and all its dependencies
- 4:10:14like libraries, configurations, etc.
- 4:10:17into a single unit ensuring that app
- 4:10:19runs consistently across different
- 4:10:21environments. Next coming to the
- 4:10:23benefits of Docker. The benefits of
- 4:10:25Docker are consistency which runs
- 4:10:27applications the same way across
- 4:10:29development, testing and production.
- 4:10:31Efficiency. Docker containers use fewer
- 4:10:34resources than WMs. They also run faster
- 4:10:36to start and also use less memory and
- 4:10:38storage. Scalability. Docker is commonly
- 4:10:42used in cloud environments and
- 4:10:43microservices architecture making it
- 4:10:45easy to scale applications horizontally.
- 4:10:48Simplified CIC. Docker helps automate
- 4:10:50and streamline continuous integration
- 4:10:52and continuous deployment pipelines. We
- 4:10:55will look at the virtual machines versus
- 4:10:57containers and their differences. The
- 4:10:59architecture of the virtual machines is
- 4:11:01that WMs run on a full operating system
- 4:11:03on a hypervisor and containers share the
- 4:11:06host OS kernel but isolate applications.
- 4:11:09The resource usage of the WMs are heavy
- 4:11:11requiring more CPU, memory, and storage
- 4:11:13as they run separate OS instances. But
- 4:11:16containers are lightweight and efficient
- 4:11:18since they share the host OS. The start
- 4:11:21time of the VMs take minutes to boot.
- 4:11:23But the container starts in seconds. The
- 4:11:26portability of VMs are less portable
- 4:11:27tied to OS and hypervisor. Containers
- 4:11:30are highly portable and run consistently
- 4:11:32across different environments. The
- 4:11:34performance of VMs have more overhead
- 4:11:36due to virtualizations. But containers
- 4:11:38offer near native performance with
- 4:11:40minimal overhead. The use cases of the
- 4:11:43VMs are full isolation, legacy apps and
- 4:11:45heavy resource needs. But in containers
- 4:11:48we have fast scaling, microservices,
- 4:11:50cloudnative apps. Containers are idle
- 4:11:52for lightweight scalable deployments
- 4:11:54while VMs are better for complete
- 4:11:56isolation and resourceheavy
- 4:11:58applications.
- 4:11:59Moving on to Docker components. The core
- 4:12:02components of Docker are first is a
- 4:12:04Docker engine. This is the heart of a
- 4:12:06Docker responsible for building,
- 4:12:08running, and managing Docker containers.
- 4:12:10It's available for Windows, Mac OS, and
- 4:12:12Linux. Docker images. These are the
- 4:12:15blueprints of containers containing the
- 4:12:17application code, libraries, and
- 4:12:18dependencies required to run the
- 4:12:20application. Last comes the Docker
- 4:12:22containers. Instances created from
- 4:12:24Docker images. They are lightweight
- 4:12:26isolated environments where applications
- 4:12:28run. Now, let's learn the architecture
- 4:12:30of Docker. Docker follows a client
- 4:12:32server architecture that allows
- 4:12:34applications to be packed into
- 4:12:35containers. It consists of several key
- 4:12:37components working together to manage,
- 4:12:39build, and run containers efficiently.
- 4:12:42Here is an overview of Docker's
- 4:12:43architecture. First, let's learn about
- 4:12:45the Docker client. A Docker client is a
- 4:12:48primary interface for users to interact
- 4:12:49with Docker. Users issue command like
- 4:12:52Docker build, Docker run, and Docker
- 4:12:54pull, while the client translates into
- 4:12:56API calls that are sent to the Docker
- 4:12:58demon. The client can communicate with
- 4:13:00either the local Docker demon or the
- 4:13:02remote one. The key role of a Docker
- 4:13:04client is they send commands to the
- 4:13:06Docker demon using the REST API. Next,
- 4:13:08let's see about the Docker demon or it's
- 4:13:11also known as the Docker engine. The
- 4:13:12Docker demon is a core service running
- 4:13:14in the background on the host system
- 4:13:16that manages Docker objects like
- 4:13:18containers, images, networks, and
- 4:13:20volumes. The demon listens to API
- 4:13:22request from the client and also handles
- 4:13:25all the container management tasks such
- 4:13:27as creating, starting, and stopping
- 4:13:29containers. is responsible for executing
- 4:13:31the container life cycle including
- 4:13:33pulling images, building containers and
- 4:13:35ensuring their isolation. The key role
- 4:13:37for the Docker deminina. It executes
- 4:13:39commands, managing containers, images
- 4:13:41and networks. Next is a Docker image. A
- 4:13:44Docker image is a readonly template that
- 4:13:46contains instructions for creating a
- 4:13:48Docker container. Image include
- 4:13:50everything needed to run an application
- 4:13:52like code, libraries, environment
- 4:13:55variables and configuration. The key
- 4:13:57role of a Docker image is that they are
- 4:13:59blueprint for creating containers.
- 4:14:02Docker container. A container is a
- 4:14:03runnable instance of a Docker image.
- 4:14:05Containers are lightweight and isolated,
- 4:14:07but they share the host OS kernels
- 4:14:10making them efficient compared to
- 4:14:11virtual machines. The key role of a
- 4:14:13Docker container is that they are
- 4:14:15lightweight, portable, and isolated
- 4:14:17instance of an application. Next comes a
- 4:14:19Docker registries that is a Docker hub.
- 4:14:22Docker registries are repositories that
- 4:14:23store Docker image. The most common
- 4:14:25registry is the Docker Hub, a public
- 4:14:27registry maintained by Docker.
- 4:14:29Developers can push their custom images
- 4:14:31to a registry or pull pre-built images
- 4:14:34for use of their projects. Registries
- 4:14:36can be public or private, allowing
- 4:14:38organizations to manage and store their
- 4:14:40proprietary container images securely.
- 4:14:42The key role of a Docker registry is
- 4:14:44that they store and distribute Docker
- 4:14:46images. Moving on to the Docker engine
- 4:14:48REST API. Docker's engine API allows
- 4:14:51programmatic interaction with the server
- 4:14:53Docker demon. The API can be accessed
- 4:14:56over HTTP enabling developers and
- 4:14:58servers to manage Docker
- 4:14:59programmatically. All the communication
- 4:15:02between the Docker client and the demon
- 4:15:03happens via the API. The key role of a
- 4:15:06Docker engine rest API is that they
- 4:15:08enable automation and remote management
- 4:15:10of Docker through the REST interface.
- 4:15:12Docker volume. Volumes allow data to
- 4:15:15persist beyond the life cycle of
- 4:15:17container providing a way to store and
- 4:15:19share data between containers or with
- 4:15:21the host system. They're commonly used
- 4:15:23to store the database files or other
- 4:15:25datas that are needed to persist even if
- 4:15:27the container is destroyed or recreated.
- 4:15:29The key role of a Docker volume is they
- 4:15:31have the persistent storage for
- 4:15:33containers. Last comes a Docker network.
- 4:15:36A network is a group of two or more
- 4:15:38devices that can communicate with each
- 4:15:39other either physically or virtually. A
- 4:15:42Docker network is a virtual network
- 4:15:44created by Docker to enable
- 4:15:45communication between Docker containers.
- 4:15:47If two containers are running on the
- 4:15:49same host, they can communicate with
- 4:15:51each other without the need of ports to
- 4:15:53be exposed to the host machine. They may
- 4:15:55use the Docker to manage Docker host in
- 4:15:57any platform manner regardless to
- 4:15:59whether they run Windows, Linux, or the
- 4:16:01combination of two. The key role of a
- 4:16:04Docker network is to manage
- 4:16:05communication between containers and
- 4:16:07external networks. Now, let's see the
- 4:16:09development workflows of Docker. Docker
- 4:16:12enhances development workflows through
- 4:16:14first is a containerization having
- 4:16:16packages application and dependencies
- 4:16:18into lightweight portable containers
- 4:16:20ensuring consistency environments across
- 4:16:22development, testing and production.
- 4:16:24Next is the local development enables
- 4:16:26developers to replicate production
- 4:16:28environment locally speeding up testing
- 4:16:30and debugging. Next comes the continuous
- 4:16:33integration or the continuous deployment
- 4:16:35which integrates with CI/CD pipelines
- 4:16:36for automated build, test and deployment
- 4:16:39process. Last is the version control.
- 4:16:41Supports versioning of images allowing
- 4:16:43easy roll back and management of
- 4:16:45application versions. Now we'll see how
- 4:16:48to install Docker on a Ubuntu machine.
- 4:16:52Now let's start with installing Docker
- 4:16:54on a Ubuntu machine first. Now in order
- 4:16:56to install Docker on Ubuntu, there are
- 4:16:58some prerequisites. I would advise you
- 4:17:01to go to Docker's install Docker engine
- 4:17:03on Ubuntu.
- 4:17:06Click on the first line that you can
- 4:17:08see. Install Docker engine on Abundant.
- 4:17:12Here you can see the documentation and
- 4:17:14check for all the prerequisites that are
- 4:17:16specified there.
- 4:17:22Once you're done with the verification,
- 4:17:24you can move ahead with the installation
- 4:17:26process.
- 4:17:28We'll be using the following install
- 4:17:30using the AP repository process to
- 4:17:32install Docker on a Ubuntu machine.
- 4:17:35First open the terminal on your Ubuntu
- 4:17:36machine.
- 4:17:38Now let's set up the Docker's AP
- 4:17:40repository. To do that, first we need to
- 4:17:43add the Docker's official GPG key. We
- 4:17:46begin by running a simple AP get update
- 4:17:49to refresh the package lists. So let's
- 4:17:51type pseudoapp
- 4:17:54get update.
- 4:17:56This will refresh all the package list
- 4:17:57that is needed.
- 4:18:02be patient until the packages are
- 4:18:04getting refreshed.
- 4:18:08So next we'll install CA certificates
- 4:18:10and curl on our machine for that. So
- 4:18:13let's copy and paste the command on our
- 4:18:14terminal.
- 4:18:17So as you can see that it's getting
- 4:18:19installed. Type S to continue the
- 4:18:21installation.
- 4:18:25CS certificates in our command is a
- 4:18:27digital certificate that ensures your
- 4:18:28machine can communicate securely over
- 4:18:30the internet by verifying the
- 4:18:32authenticity of websites. The curl is a
- 4:18:35tool used for transferring data with
- 4:18:36URLs allowing us to download files from
- 4:18:39the internet such as docker's jpg key.
- 4:18:44So now let's move to the next command
- 4:18:45that is we'll be creating the directory
- 4:18:47for storing the key rings.
- 4:18:50So for that let's copy and paste the
- 4:18:52next command to the terminal.
- 4:18:57Now let's also add Docker's GPG key to
- 4:18:59it.
- 4:19:02We'll download Docker's official GPG key
- 4:19:04using the following command.
- 4:19:10Now let's also type the command to
- 4:19:11ensure that the GPG key can be read by
- 4:19:13the system. So we'll copy and paste from
- 4:19:15our documentary and paste it on a
- 4:19:17terminal. Next let's add the Docker
- 4:19:20repository to a sources. So for that
- 4:19:23we'll add the Docker repository as the
- 4:19:25ABD sources. And this step will allow
- 4:19:27Ubuntu to know where to find Docker's
- 4:19:29packages.
- 4:19:33So the command we just ran adds the
- 4:19:35Docker repository to our AP sources
- 4:19:37list. This command will specify that the
- 4:19:40architecture of our machine to ensure
- 4:19:41compatibility.
- 4:19:43This part will extract the code name of
- 4:19:44our Ubuntu release making sure we
- 4:19:46download the correct version of the
- 4:19:48Docker.
- 4:19:50Now let's also update the package list
- 4:19:52again.
- 4:19:53Now that we have added the doers
- 4:19:55repository, we'll run another apt get
- 4:19:57update command to refresh the list of
- 4:19:59available packages from this new source.
- 4:20:03So as you can see the reading package
- 4:20:04list is done.
- 4:20:08Now we'll install Docker by running the
- 4:20:09command below. This installs Docker
- 4:20:12engine, Docker CLI, and the essential
- 4:20:14Docker tools on your system.
- 4:20:21Enter s to continue the installation.
- 4:20:26So be patient until the docker's
- 4:20:28installation is getting installed. In
- 4:20:31our docker installation command, we have
- 4:20:34docker c that means docker community
- 4:20:36edition the main docker engine and the
- 4:20:39docker cli means the command line
- 4:20:40interface for docker. Container.io IO is
- 4:20:43the core container runtime for Docker
- 4:20:46and the Docker build X plug-in is a
- 4:20:48plug-in for building Docker images.
- 4:20:50Docker compost plug-in is a plug-in to
- 4:20:52manage multicontainer application.
- 4:21:01So let's be patient until all the
- 4:21:03packages in the docker is getting
- 4:21:04installed.
- 4:21:10Finally, we can verify whether Docker
- 4:21:12was successfully installed by running
- 4:21:14the Hello World image.
- 4:21:16So, let's type sudo docker run hello
- 4:21:19world. This command pulls a test image
- 4:21:22from docker hub, runs it inside a
- 4:21:24container and displays a confirmation
- 4:21:26message. If the installation was
- 4:21:28successful, you should see the hello
- 4:21:30from docker message indicating
- 4:21:31everything is working perfectly.
- 4:21:34There you have it. We have successfully
- 4:21:36installed Docker on our Ubuntu machine
- 4:21:38and verified it with the Hello World
- 4:21:39image.
- 4:21:42Let's clear the screen.
- 4:21:45Now that we have successfully installed
- 4:21:46Docker, let's clear our terminal and
- 4:21:48explore what happens when we simply type
- 4:21:51Docker.
- 4:21:53When you run this command, you will see
- 4:21:55a list of all available Docker commands.
- 4:21:57This list is incredibly useful when
- 4:21:59you're unsure about which command to
- 4:22:01use. There's also a brief description
- 4:22:03next to each command that will help you
- 4:22:05understand its purpose.
- 4:22:07Now, let's go over some of the common
- 4:22:09commands. First is run. It creates and
- 4:22:13run a new container from an image. This
- 4:22:15is one of the most frequently used
- 4:22:16commands in Docker. It allows you to run
- 4:22:19a container based on an image which can
- 4:22:21be pulled from a registry or built
- 4:22:23locally.
- 4:22:24Next is the execute command. It allows
- 4:22:26you to execute a command in a running
- 4:22:28container. This is useful when you need
- 4:22:30to interact with a running container
- 4:22:32such as opening a shell inside it. The
- 4:22:34ps command that is the list containers.
- 4:22:37This command shows you all the
- 4:22:38containers that are currently running or
- 4:22:40that have been stopped. Next is the
- 4:22:43build. This command allows you to create
- 4:22:45a docker image from a docker file
- 4:22:47defining the environment and
- 4:22:48dependencies of your containerized
- 4:22:50application.
- 4:22:52Next is pull. It allows you to download
- 4:22:54an image from a registry. Use this
- 4:22:56command to pull images from a Docker
- 4:22:58registry like Docker Hub. Push. It
- 4:23:00uploads an image to the registry. If you
- 4:23:03want to share your image with others,
- 4:23:04you can push it to a public or private
- 4:23:06registry too. Images. Images are the
- 4:23:09list of images. This command shows all
- 4:23:11the Docker images that are available on
- 4:23:13your local machine. Login. Authenticate
- 4:23:16to a registry. Use this when you need to
- 4:23:18log to a Docker registry. For example,
- 4:23:21Docker Hub to pull or push images. Log
- 4:23:24out. This allows you to log out from a
- 4:23:26registry. This logs you out from the
- 4:23:28Docker registry too. Such search Docker
- 4:23:31Hub for images. This allows you to
- 4:23:33search Docker Hub for pre-built images
- 4:23:35based on your requirements. Next is a
- 4:23:37version. Show the Docker version
- 4:23:39information. It provides details about
- 4:23:41the version of the Docker you're
- 4:23:43running. Last is the info. It'll display
- 4:23:46systemwide information. This command
- 4:23:48gives you detailed information about
- 4:23:49your Docker installation, including how
- 4:23:51many containers and images are present,
- 4:23:54your storage driver, and other
- 4:23:55systemwide stats.
- 4:23:58Let's start by checking the Docker
- 4:24:00version. If you're not familiar with the
- 4:24:01version you're running, you can simply
- 4:24:03use this command that is a Docker
- 4:24:04version.
- 4:24:06When you're running this command, it
- 4:24:07displays the current version of the
- 4:24:09Docker on your system. In case it shows
- 4:24:11a version 27.3.1,
- 4:24:13which is the latest version. Similarly,
- 4:24:16we can check more detailed systemwide
- 4:24:18information using the info command. So,
- 4:24:20let's type p sudo docker info.
- 4:24:24This info command provides extensive
- 4:24:26details about your docker setup,
- 4:24:28including the number of containers,
- 4:24:29images, and other resources being used
- 4:24:31by Docker on your system.
- 4:24:34So, as we progress through this
- 4:24:36tutorial, we'll dive deeper into many of
- 4:24:38these commands and understand how to use
- 4:24:40them in real world scenarios. Now moving
- 4:24:43forward, we'll build a docker image
- 4:24:45using docker file and run that image on
- 4:24:47your local host as a container on your
- 4:24:49system and we'll also open a web browser
- 4:24:52to see our web page hosted after running
- 4:24:54the container. So the first step is to
- 4:24:56create a directory for our project.
- 4:24:58We'll use the following command that is
- 4:25:00mk directory my app. This creates a
- 4:25:04directory named my app.
- 4:25:06So here you can see that my app is seen.
- 4:25:10Next, we'll move into this directory
- 4:25:12using the cd my app. Now, we'll create a
- 4:25:15file named index.html.
- 4:25:18So, for that, we'll type the command
- 4:25:20that is touchindex.html.
- 4:25:22Once the file is created, we'll open it
- 4:25:25using the nano editor and write the
- 4:25:27content into the file. So, I will be
- 4:25:29typing here subscribe to edureka.
- 4:25:33Then press Ctrl + X followed by Y to
- 4:25:36save and press enter to confirm the file
- 4:25:38name as index.html.
- 4:25:41To verify the content inside index html,
- 4:25:44we will use the command that is cat
- 4:25:46index.html.
- 4:25:49So here you can see the subscribe to it
- 4:25:52is also visible. Our next step is to
- 4:25:54create a file named docker file. For
- 4:25:56that we need to type the command as
- 4:25:58touch docker file. Then type ls to see.
- 4:26:03So here you can see that a docker file
- 4:26:05index h.html is visible. After creating
- 4:26:07the docker file, we'll open it in the
- 4:26:09nano editor and write some instructions
- 4:26:11into it.
- 4:26:13So let's type from engineext. So
- 4:26:15engineext is an open-source web server
- 4:26:17that is widely used for serving static
- 4:26:19content, load balancing, and also acting
- 4:26:22as a reverse proxy. In this case, we are
- 4:26:24using it to serve our index.html file.
- 4:26:27Next, let's type copy index.html. html
- 4:26:31/ user share engine x / html. So the
- 4:26:37copy instruction will allow you to copy
- 4:26:39our index.html file from the current
- 4:26:41directory into the html directory which
- 4:26:44is the default directory where engine x
- 4:26:46serves its web pages. If your index html
- 4:26:49file is in a different folder, you'll
- 4:26:52need to specify the correct file path in
- 4:26:54the docker file. The docker file is
- 4:26:56essentially a text file with set of
- 4:26:57instructions that docker uses to build
- 4:27:00an image. So by typing cat docker file
- 4:27:02you can see the content that we have
- 4:27:04written in the nano editor.
- 4:27:07So next we'll need to make sure that the
- 4:27:09docker is running. If docker is not
- 4:27:11running you can start it with the
- 4:27:12following command that is p sudo service
- 4:27:15docker start.
- 4:27:20If needed, you can also stop the docker
- 4:27:22by typing pseudo service docker stop.
- 4:27:27So press Q to exit the status display.
- 4:27:34As we have stopped the docker, let's
- 4:27:35start the docker again. So let's type
- 4:27:37the command as pseudo service docker
- 4:27:39start.
- 4:27:41We can also see the status by writing
- 4:27:44the command pseudo service docker
- 4:27:46status. So here you can see that a
- 4:27:49docker is active and it is running.
- 4:27:52Now let's proceed to build our docker
- 4:27:54image. We'll use the docker build
- 4:27:56command that is docker build minus t my
- 4:27:59app. Let's write the command for the
- 4:28:01build that is docker build- t my app and
- 4:28:06a dot. Docker build is a command that
- 4:28:09builds a docker image based on the
- 4:28:10instruction provided in the docker file.
- 4:28:13And the t flag is used to tag the image
- 4:28:15with a name. In this case, it is my app.
- 4:28:18This makes it easier for reference
- 4:28:19later. And the dot after my app refers
- 4:28:23to the current directory where in which
- 4:28:25the docker file is located.
- 4:28:28So by running the build command, we can
- 4:28:30see that the error is occurred. So the
- 4:28:32error shows that the permission denied
- 4:28:34while trying to connect to the docker
- 4:28:36demon. It means that we need to connect
- 4:28:38as a super user. So let's type the
- 4:28:40command as pseudo su and then write the
- 4:28:43command for build.
- 4:28:45So now you can see that my Docker is
- 4:28:47getting built.
- 4:28:50Be patient because it might take time.
- 4:29:02Now that we've successfully built our
- 4:29:04image, now it's time to run the Docker.
- 4:29:07Now let's type the command that is
- 4:29:09docker run minus d minus p 6969
- 4:29:13col my app minus d flag runs a container
- 4:29:17in detached mode meaning it runs in the
- 4:29:19background and the p flag is used to map
- 4:29:22ports in this case we are mapping port
- 4:29:246969 on a local machine to port 80
- 4:29:27inside the container which is a default
- 4:29:30http port for engineext.
- 4:29:33This command essentially starts a
- 4:29:34container from my app image allowing us
- 4:29:37to access our web page on the local host
- 4:29:39via port 6969.
- 4:29:41Now to check the container is running we
- 4:29:43use the docker ps command.
- 4:29:46This will list all the running
- 4:29:47containers and you should see the my app
- 4:29:49container running.
- 4:29:51Finally to see what we have hosted on
- 4:29:53the container. Open a web browser. Here
- 4:29:56we'll use Firefox.
- 4:29:58So on the search bar, let's type
- 4:30:00localhost 6969.
- 4:30:02So when you visit to this URL, you
- 4:30:04should see subscribe to Edurea displayed
- 4:30:06on the web page, confirming that our
- 4:30:08Docker container is serving the content
- 4:30:10successfully.
- 4:30:12Now going back to our terminal. Now that
- 4:30:15we have successfully built and run our
- 4:30:17Docker image locally, let's move ahead
- 4:30:19and push this image to Docker Hub where
- 4:30:21it will be publicly accessible and
- 4:30:23stored privately in your Docker Hub
- 4:30:25account. If you don't have a DockerHub
- 4:30:28account yet, go to hub.docker.com to
- 4:30:31create one.
- 4:30:33It's a simple signup process.
- 4:30:36Once you have created your account, we
- 4:30:38can proceed with logging into DockerHub
- 4:30:40from the Docker CLI.
- 4:30:43Now, to push our image to Docker Hub, we
- 4:30:45first need to log to Docker from the
- 4:30:47terminal. We can do that using the
- 4:30:49Docker login command. So let's type
- 4:30:53docker login minus u and give our
- 4:30:55username minus p with our password.
- 4:31:00The u flag is specified for username and
- 4:31:03the p flag is specified for the
- 4:31:04password. So once you're logged in
- 4:31:06successfully
- 4:31:08the docker will display a message
- 4:31:10confirming the login.
- 4:31:12Before pushing the image to docker hub
- 4:31:14we need to tag our local image with a
- 4:31:16name that includes our docker hub
- 4:31:17username. This ensures that a docker hub
- 4:31:20knows which repository the image belongs
- 4:31:22to. For that, let's type the command
- 4:31:25that is docker tag my app the username
- 4:31:30my app colon and then the version tag
- 4:31:34here. My app colon latest is the name
- 4:31:36and the version tag for the image. We
- 4:31:38are tagging this image as latest to
- 4:31:40indicate it's the most recent version.
- 4:31:43Now we can push our docker image to
- 4:31:45docker hub using the docker push
- 4:31:46command. So let's type docker push with
- 4:31:49the username and the version tag. Again
- 4:31:53this will upload the my app image to
- 4:31:55your docker hub repository. Docker will
- 4:31:57display the progress as it pushes the
- 4:31:59image layers. And once it's complete you
- 4:32:02will see the confirmation message.
- 4:32:07So let's be patient unless the image is
- 4:32:10pushed.
- 4:32:13So here you can see a confirmation
- 4:32:14message telling that it is pushed.
- 4:32:17So after you have pushed the image to
- 4:32:19the Docker Hub, you can log out of your
- 4:32:21Docker Hub account from the CLI using
- 4:32:23the Docker logout command.
- 4:32:27For that, let's type docker logout. This
- 4:32:30is useful when working on the shared
- 4:32:31machines or environments where you don't
- 4:32:34want your credentials to remain stored.
- 4:32:36To verify that our image is now
- 4:32:38available on Docker Hub, we can use the
- 4:32:40Docker search command. This command
- 4:32:42allows you to search the Docker Hub for
- 4:32:43images. So for that let's type the
- 4:32:45command as docker search username
- 4:32:50and my app. So here you can see all the
- 4:32:53images that we have published.
- 4:32:56So once the image is on the docker hub
- 4:32:58we can pull it to any other machine or
- 4:33:00even to a current machine to ensure that
- 4:33:02it works as expected. The docker pull
- 4:33:05command allows us to download the image
- 4:33:06from the docker hub. So let's type the
- 4:33:08command as docker pull with our username
- 4:33:13and the image name with the version tag.
- 4:33:17This command will download the image
- 4:33:18layers from the docker hub to your local
- 4:33:20machine.
- 4:33:22So here you can see that our image is
- 4:33:23pulled successfully.
- 4:33:27After pulling the image you can run it
- 4:33:29on your local machine just like we did
- 4:33:31earlier using the docker run command. So
- 4:33:34now we can open our web browser and
- 4:33:35visit typing the local host 6969.
- 4:33:40You should see the same that is
- 4:33:42subscribe to Edurea page confirming that
- 4:33:44we have successfully pulled and run the
- 4:33:46Docker image from the Docker Hub. And
- 4:33:49that's it. You have successfully learned
- 4:33:51how to push an image to Docker Hub.
- 4:33:53Search for it, pull it, and run it on
- 4:33:55your local machine.
- 4:33:58Now that we have learned how to work
- 4:34:00with individual containers in Docker,
- 4:34:02let's introduce Docker Compose.
- 4:34:06Docker Compose is an essential tool when
- 4:34:08you're working with multicontainer
- 4:34:09applications. Instead of managing each
- 4:34:12container individually, Docker Compose
- 4:34:14lets you define and manage all the
- 4:34:16services your application needs in a
- 4:34:18single YAML file called the Docker
- 4:34:20Compose.
- 4:34:22So here we have the command to install
- 4:34:24Docker Compose.
- 4:34:27The option minus L makes the curl follow
- 4:34:29redirects ensures that it reaches the
- 4:34:31final download URL and the UAE- S part
- 4:34:35dynamically inserts operating system
- 4:34:37name such as Linux or Windows and the
- 4:34:40UAE minus M inserts the system
- 4:34:42architecture that is whether it is
- 4:34:4464-bit or 32-bit. This ensures a correct
- 4:34:46version is downloaded for your system.
- 4:34:49The docker compose option specifies
- 4:34:51output location where the docker compos
- 4:34:53binary will be saved. In this case it is
- 4:34:56user local bin docker compose.
- 4:35:02Once the binary is downloaded apply
- 4:35:04executable permissions that is sudo ch
- 4:35:07mode plus x command
- 4:35:09to verify that docker compose has been
- 4:35:11installed correctly. Let's check the
- 4:35:13version.
- 4:35:15So let's type the command as docker
- 4:35:16compose version. So here you can see
- 4:35:19repeat. So here you can see that the
- 4:35:20docker compose version is v2.29.7 29.7
- 4:35:24that is the latest version. Now that we
- 4:35:26have installed docker compost, let's
- 4:35:28create a simple docker compost file.
- 4:35:30This file will define two services. A
- 4:35:33web server having an image of engineext
- 4:35:35and a database that is radius. So first
- 4:35:38we'll create a new directory named
- 4:35:40docker compose file.
- 4:35:43So let's repeat. So let's write the
- 4:35:45command for it. MKdir
- 4:35:47docker compose file. Then we'll go
- 4:35:50inside the directory. So type cd docker
- 4:35:53compose file.
- 4:35:55Inside this directory, we'll create a
- 4:35:57new file named docker compose.yiml
- 4:36:00using the touch command. So let's type
- 4:36:03touch docker compos yiml.
- 4:36:07Next, we'll open this file with the nano
- 4:36:09editor and add the following content. So
- 4:36:12let's type services
- 4:36:15web that uses the engine x image
- 4:36:19and the other file is the database
- 4:36:22which uses the reddis image.
- 4:36:26We'll save the file by pressing control
- 4:36:28+ x then y to confirm and save. Finally
- 4:36:32enter to confirm the file name. Before
- 4:36:35we run the file let's check if it's
- 4:36:36valid using docker compose config
- 4:36:38command. This command checks the syntax
- 4:36:41error or misconfigurations in the YAML
- 4:36:43file. So let's type the command docker
- 4:36:46compos config. If the file is valid, you
- 4:36:49will see the content printed out. Now we
- 4:36:51are ready to run our services to start
- 4:36:54both enginex and radius containers.
- 4:36:56We'll use the docker compose up command.
- 4:36:59We'll run it in the detached mode. So
- 4:37:00the containers run in the background.
- 4:37:03So let's type docker compose up minus d.
- 4:37:14So once the containers are up, we can
- 4:37:16verify by listing the running containers
- 4:37:17using the docker ps command. You will
- 4:37:20see two containers running, enginex and
- 4:37:22radius which were defined in a docker
- 4:37:24compose.l file. Now to stop and remove
- 4:37:27the containers, we can use the docker
- 4:37:29compose down command. This command will
- 4:37:32bring down all the services defined in a
- 4:37:34docker compose file. So let's type
- 4:37:36docker compose down.
- 4:37:44Now let's modify a docker compos yl file
- 4:37:46to expose a port for engine service so
- 4:37:49we can access it from a browser.
- 4:37:52So open the file again with nano. We'll
- 4:37:55add the following lines under the web
- 4:37:56service to map ports 8080 on our local
- 4:38:00machine to port 80 in the container.
- 4:38:05After making this change, let's validate
- 4:38:07the file again by typing docker compose
- 4:38:10config. If the file is valid, we can now
- 4:38:13run it again using the docker compose up
- 4:38:15command.
- 4:38:18If the file is valid, we can now run it
- 4:38:20again using the docker compose up
- 4:38:22command. Since the engines and radius
- 4:38:24images are already downloaded, it will
- 4:38:27skip downloading and simply start the
- 4:38:29containers. Now let's go to the browser
- 4:38:32and type localhost 8080.
- 4:38:36So you'll see a default welcome page
- 4:38:38confirming that a container is running
- 4:38:40and accessible on the port 8080.
- 4:38:44Once you're done, you can bring down the
- 4:38:46containers again using docker compose
- 4:38:48down command.
- 4:38:51Docker compose comes with several useful
- 4:38:53commands. To see a list of available
- 4:38:55commands, we can use the help command.
- 4:38:57So let's type docker compose
- 4:39:01minus minus help.
- 4:39:03You'll see a list of commands like up
- 4:39:07down config ps and many more. These
- 4:39:10commands allow you to manage a docker
- 4:39:12compose services easily. So that's a
- 4:39:16quick introduction to docker compose. We
- 4:39:18have seen how to install docker compose.
- 4:39:20Create and validate a docker compose.l
- 4:39:23file. Run multiple containers with a
- 4:39:25single command. Map ports for service
- 4:39:27access. Bring containers down when they
- 4:39:30are no longer needed.
- 4:39:38So let's start this session by first
- 4:39:40understanding why one needs Azure
- 4:39:42virtual machine. So first thing is of
- 4:39:44course the costsaving the pricing
- 4:39:46criteria. So we can like shut down and
- 4:39:48stop the virtual machines if not in use.
- 4:39:50Stopped uh virtual machine will not
- 4:39:52incur any charge. Restarting the virtual
- 4:39:54machine will maintain its state based on
- 4:39:57persistentness.
- 4:39:59Second, the boosted scalability. So we
- 4:40:01can like scale up and down or in and out
- 4:40:04the virtual machines. Autoscale features
- 4:40:07is also there to support based on some
- 4:40:09metrics. For example, scale out to five
- 4:40:12instances when CPU utilization is
- 4:40:14greater than 70% for more than 5
- 4:40:16minutes. Third is alerts. So like we can
- 4:40:19trigger actions and alerts based on
- 4:40:21metrics of computing resources consumed
- 4:40:22by a virtual machine. Fourth is we can
- 4:40:24have a better control or say more amount
- 4:40:27of control. So with Azure virtual
- 4:40:28machines developer have more control
- 4:40:30over the development environment which
- 4:40:32is very helpful in case of building a
- 4:40:33highly secure architecture for a complex
- 4:40:35solution. Developers can choose
- 4:40:37operating system networking storage
- 4:40:39connections etc. to build a sandbox
- 4:40:41solution. Lastly, easy diagnostics means
- 4:40:44Azure virtual machine provides the
- 4:40:46facility to troubleshoot issues with
- 4:40:48options like remote debugging, event
- 4:40:50logs, IIS logs, application logs, etc.
- 4:40:54Moving ahead, let's understand in brief
- 4:40:56what is Azure virtual machine. So for
- 4:40:58that we are going to first understand
- 4:41:00what is a virtual machine. So a virtual
- 4:41:02machine is a computer file typically
- 4:41:04called as an image which behaves like an
- 4:41:06actual computer. It is one of the files
- 4:41:07which contains everything. It runs in
- 4:41:10Windows, Linux, etc. This gives you a
- 4:41:13flexibility that you can run multiple
- 4:41:15machines in a physical computer. Each
- 4:41:17system can have a different operating
- 4:41:19system. Each of these virtual machines
- 4:41:21provide its own virtual hardware which
- 4:41:24includes CPUs, memory, hard drives,
- 4:41:26network interfaces and other such
- 4:41:28devices. Now let's understand what is
- 4:41:31Azure virtual machine. So Azure virtual
- 4:41:33machine is one of the services provided
- 4:41:35by Azure to create your own instances.
- 4:41:37So it can be used for various ways like
- 4:41:40development and test applications in the
- 4:41:42cloud and also for extended data center.
- 4:41:45It is to remember that when you are
- 4:41:47running Azure virtual machine you must
- 4:41:50pay for the compute time on a per minute
- 4:41:52basis. The pricing of this is based on
- 4:41:55the size operating system and any
- 4:41:57license software that has been installed
- 4:41:59in it. In order to avoid corresponding
- 4:42:02charges when you are not using it, it is
- 4:42:04to be seen that you change its state to
- 4:42:07stopped that is deallocated. Now let's
- 4:42:10understand some of the key features of
- 4:42:11Azure virtual machine. So first is
- 4:42:14isolation. So each of these uh network
- 4:42:16work independently. When creating a
- 4:42:18virtual network, you can divide them
- 4:42:20into segments. You can configure the
- 4:42:22virtual network to use your own DNA
- 4:42:24servers. Second is virtual network
- 4:42:26connectivity. So it can be connected to
- 4:42:28each other enabling resources in any
- 4:42:30virtual network to communicate with
- 4:42:32resources in any other virtual network.
- 4:42:35Third is internet communication. So by
- 4:42:37default when you are launching any
- 4:42:38instances in the Azure virtual machine,
- 4:42:40it can access the internet as and when
- 4:42:43you need you can enable inbound access
- 4:42:45to specific resources. Fourth is on
- 4:42:48premises connectivity. So a virtual
- 4:42:50network can be connected to an
- 4:42:52on-remises network enabling the sources
- 4:42:53to communicate between each other. Then
- 4:42:56there is Azour's resource communication.
- 4:42:58So resources which falls under Azure
- 4:43:00virtual network can communicate with
- 4:43:02each other using private IP addresses
- 4:43:04irrespective of the resources are from
- 4:43:07different subnets. They provide default
- 4:43:10routing between subnets. Onremise
- 4:43:12networks operating system you don't have
- 4:43:14to configure and manage routes. So the
- 4:43:17next one is the routing. So uh Azour's
- 4:43:20routing can be optionally overridden by
- 4:43:22default through configuring with your
- 4:43:24own routes or by propagating BGP routes
- 4:43:27through network gateway. And the last
- 4:43:29one is traffic filtering. So network
- 4:43:31traffic can be filtered from resources
- 4:43:32in a virtual network by source IP
- 4:43:34addresses and port. So now let's
- 4:43:37understand the Azure virtual machine
- 4:43:38architecture. Azure was like initially
- 4:43:41named as a project red dog by Microsoft.
- 4:43:44The brain behind the project red dog is
- 4:43:47Mr. David Cutler in initial days it was
- 4:43:50uh a custom version of Windows and the
- 4:43:52goal was to boot from a virtual hardest
- 4:43:55so for that let's first try to
- 4:43:57understand the main components of Azure
- 4:43:59virtual machine so first is fabric
- 4:44:01controller so one of the most important
- 4:44:03components in Azure virtual machine
- 4:44:04architecture is this is one of the
- 4:44:06pillars based on which the architecture
- 4:44:08works fabric controller basically owns
- 4:44:10all the resources the placement of the
- 4:44:12nodes load balancing scalability as per
- 4:44:15requirement update patch management
- 4:44:17everything is owned by the segment. As
- 4:44:19the user creates their own instance of
- 4:44:21virtual machine, all the tasks like
- 4:44:23provisioning or the like the
- 4:44:24deprovisioning along with the
- 4:44:26supervision of all the nodes is taken
- 4:44:28care by the fabric controller. In brief,
- 4:44:30we can say that uh this is the backbone
- 4:44:32of the Azure virtual machine system. So
- 4:44:35next is the patch management. So patch
- 4:44:37management workflow is a major advantage
- 4:44:39of the Azure system as this module makes
- 4:44:42Azure easy to manage and stay updated
- 4:44:45across all the nodes. In Azure system,
- 4:44:48hosts are image based. Therefore, there
- 4:44:50is no need to update all the nodes one
- 4:44:53by one like legacy system. Here Azure
- 4:44:56basically delivers updated VHD at one
- 4:44:58place and the entire system of nodes
- 4:45:00gets updated. A typical update takes
- 4:45:02place every four to 6 weeks which
- 4:45:04ensures security and uh system
- 4:45:06stabilization. Microsoft here ensures
- 4:45:09that the updates are tested and verified
- 4:45:12before it gets rolled out to the nodes.
- 4:45:14Third is partition. So Azure fabric
- 4:45:17controller has a couple of partition
- 4:45:19types and they are update domains, fall
- 4:45:22domains. These partitions help Azure
- 4:45:24virtual machine to maintain its
- 4:45:26availability and resilience. The
- 4:45:28partitioning uh helps maintain zero
- 4:45:29downtime, minimum failures and constant
- 4:45:32availability. So the first is update
- 4:45:34domains and partition that is it is the
- 4:45:36strategy that ensures the upgradation of
- 4:45:38the servers without taking it down. Then
- 4:45:41uh Microsoft Azure system distributes
- 4:45:43instances into a few update domains.
- 4:45:45Here every update domains work as a
- 4:45:47logical unit. One update domain gets
- 4:45:49upgraded at a time. The upgrade process
- 4:45:52gets completed when all the update
- 4:45:54domains are processed. Azure makes sure
- 4:45:56that the upgrade is uh completed with
- 4:45:58the minimum impact on the running
- 4:46:00services. Then there is fall domains.
- 4:46:02Fall domain is nothing but a single
- 4:46:04failure point. Fabric controller ensures
- 4:46:06that isolated hardware failure does not
- 4:46:09happen by distributing the instances to
- 4:46:11multiple fall domains. This will prevent
- 4:46:14the malfunctioning of the system due to
- 4:46:16any single component malfunction. Then
- 4:46:19there is the Azure compute stamps. So
- 4:46:22Azure divide things into multiple stamps
- 4:46:25and each stamp has its individual fabric
- 4:46:27controller. Azure has two kinds of
- 4:46:29stamps. Compute stamps and storage
- 4:46:31stamps. The fabric controller is also
- 4:46:34distributed in multiple branches. Azure
- 4:46:37generally has five replicas of a fabric
- 4:46:39controller and they are all in
- 4:46:40synchronization to replicate the state.
- 4:46:42In these five instances, one is primary
- 4:46:44and the information is passed to primary
- 4:46:47by the control panel. Now primary
- 4:46:48instances make sure that same
- 4:46:50instruction has been passed to the
- 4:46:52secondary instances. Now the last one
- 4:46:54are like some other virtual machine
- 4:46:56components. So apart from these there
- 4:46:59are three other important components of
- 4:47:00Azure virtual machine. They are
- 4:47:02computer, storage and networking. So
- 4:47:06Microsoft Azure also has a capability to
- 4:47:08monitor the health of the virtual
- 4:47:09machines in place and if any issue is
- 4:47:12found there is an option to auto
- 4:47:13recovery. This service is known as
- 4:47:15service healing. As the fabric
- 4:47:16controller ability to detect the failure
- 4:47:19therefore this task is carried out by
- 4:47:20the fabric controller to detect failure
- 4:47:22and trigger auto recovery. So this was
- 4:47:25all about the components of like the
- 4:47:26main components of Azure virtual
- 4:47:28machine. Now let's understand the
- 4:47:30architecture of how to run a Windows
- 4:47:32virtual machine on Azure. So
- 4:47:33provisioning a virtual machine in Azure
- 4:47:35requires some additional components
- 4:47:36beside the virtual machine itself
- 4:47:38including networking and storage
- 4:47:39resources that we recently talked about
- 4:47:41the other virtual machine components. So
- 4:47:44let's understand this uh step by step.
- 4:47:46The first is the resource group.
- 4:47:48Resource group is a logic container that
- 4:47:50holds related Azure resources. In
- 4:47:52general group resources based on their
- 4:47:54lifetime and who will manage them. Then
- 4:47:56there is a virtual machine. So you can
- 4:47:59provision a virtual machine from a list
- 4:48:00of published images or from a custom
- 4:48:02managed image or virtual hard disk uh
- 4:48:05like what we say as VHD file uh uploaded
- 4:48:08to Azure blob storage. So Azure offers
- 4:48:10many different virtual machine sizes. If
- 4:48:12you are moving an existing workload to
- 4:48:14Azure, start with the virtual machine
- 4:48:16size that's the closest match to your on
- 4:48:18premises server. Then measure the
- 4:48:20performance of your actual workload in
- 4:48:22terms of CPU, memory and disk or in
- 4:48:25input or output operations per second
- 4:48:27and adjust the size as needed. So
- 4:48:30generally choose an Azure region that is
- 4:48:31the closest to your internal users or
- 4:48:34customers. Not all virtual machine sizes
- 4:48:37are available in all regions. So keep
- 4:48:39that in mind. Then there are disks. So
- 4:48:42for best uh disk input input output
- 4:48:45performance, we recommend like premium
- 4:48:47storage. for that go with premium
- 4:48:49storage which stores data on solid state
- 4:48:51drives means SSDs. Uh so cost is based
- 4:48:54on the capacity of the provisioned
- 4:48:56disck. IOPS and throughput also depend
- 4:48:59on disk size. So when you provision this
- 4:49:01consider all the factors like capacity,
- 4:49:04IOPS and throughput. We also recommend
- 4:49:06using manage disk. So managed disk
- 4:49:08simplify disk management by handling the
- 4:49:10storage for you. Managed disc do not
- 4:49:12require a storage account. Simply
- 4:49:14specify the size and type of disk and it
- 4:49:16is deployed as a highly available
- 4:49:18resource. The operating system disk is a
- 4:49:20virtual hydra hard drive stored in Azure
- 4:49:23storage. So it persists even when the
- 4:49:25host machine is down. We also recommend
- 4:49:27creating one or more data discs which
- 4:49:29are persistent. Uh so virtual hard used
- 4:49:32for application data when possible
- 4:49:34install applications on a data disk uh
- 4:49:36not the operating system disck. So some
- 4:49:38legacy applications might need to
- 4:49:40install components on the C drive. In
- 4:49:42that case, you can like resize the
- 4:49:43operating system disck using PowerShell.
- 4:49:46The virtual machine is also created with
- 4:49:47a temporary disk. This disk is stored on
- 4:49:49a physical drive on the host machine. It
- 4:49:52is not saved in Azure storage and may be
- 4:49:54deleted during reboots and other virtual
- 4:49:56machine life cycle events. Use this disk
- 4:49:58only for temporary data such as page or
- 4:50:00swap files. Then there is the network.
- 4:50:03So the networking components includes
- 4:50:05the following resources like virtual
- 4:50:06network. So every virtual machine is
- 4:50:08deployed into a virtual network that can
- 4:50:10be segmented into multiple subnets. Then
- 4:50:12there is network interface. In short we
- 4:50:14say it as NIC. The NIC enables the
- 4:50:16virtual machine to communicate with the
- 4:50:18virtual network. So if you need multiple
- 4:50:21NIC's for your VM, be aware that maximum
- 4:50:23number of NIC's is defined for each
- 4:50:26virtual machine size. Then there's
- 4:50:27public IP address. A public IP address
- 4:50:29is needed to communicate with the
- 4:50:31virtual machine. For example, while
- 4:50:32remote desktop means RDP. So the public
- 4:50:36IP address can be dynamic or static. The
- 4:50:38default is dynamic. Then there is a
- 4:50:41network security group where we say NSD
- 4:50:43which are used to allow or deny network
- 4:50:45traffic to virtual machines. NSDs can be
- 4:50:47associated uh either with the subnets or
- 4:50:50with individual virtual machine
- 4:50:51instances. Then there are certain
- 4:50:53operations. So that includes
- 4:50:55diagnostics. So enable monitoring and
- 4:50:56diagnostics including basic health
- 4:50:58metrics, diagnostics, infrastructure
- 4:51:00logs and boot diagnostics. So boot
- 4:51:02diagnostics can help you diagnose boot
- 4:51:05failure if your virtual machine gets
- 4:51:07into a non bootable state. Create an
- 4:51:10Azure storage account to store the logs.
- 4:51:13A standard locally redundant uh storage
- 4:51:16uh account is sufficient for diagnostic
- 4:51:18logs. Then there's availability. So your
- 4:51:21virtual machine can be may be affected
- 4:51:23by planned maintenance or unplanned
- 4:51:26downtime. You can use virtual machine
- 4:51:27reboot logs to determine whether a
- 4:51:29virtual machine reboot was caused by
- 4:51:32planned maintenance. For higher
- 4:51:33availability, deploy multiple virtual
- 4:51:36machines in an availability set. Then
- 4:51:38there are backups to protect against
- 4:51:39accidental data loss. So use the Azure
- 4:51:42backup service to back up your virtual
- 4:51:44machines to georreed storage. Azure
- 4:51:46backup provides like application
- 4:51:48consistent backups. Then there is
- 4:51:49stopping a virtual machine. So Azure
- 4:51:51makes a distinction between stopped and
- 4:51:54deallocated states. You are charged when
- 4:51:56the virtual machine status is stopped
- 4:51:58but not when the virtual machine is
- 4:52:00deallocated. In the Azure portal, the
- 4:52:02stop button deallocates the virtual
- 4:52:04machine. If you shut down through the
- 4:52:06operating system while logged in, the
- 4:52:08virtual machine is stopped but not
- 4:52:09deallocated. So you will still be
- 4:52:11charged. Then there is deleting a
- 4:52:13virtual machine. So if you delete a
- 4:52:15virtual machine, the virtual hard drives
- 4:52:16are not deleted. That means you can
- 4:52:18safely delete the virtual machine
- 4:52:20without losing data. However, you will
- 4:52:22be charged for storage. to delete the
- 4:52:23virtual hard drive, delete the file from
- 4:52:25blob storage to prevent accidental
- 4:52:27deletion as a resource lock to lock the
- 4:52:30entire resource group or like lock
- 4:52:32individual resources such as virtual
- 4:52:34machine. So this is all about the major
- 4:52:37components and how they work in
- 4:52:39synchronization with each other to form
- 4:52:41a virtual machine. So this is how the
- 4:52:44architecture looks like and how it works
- 4:52:46of Azure virtual machine.
- 4:52:48Now that we have a theoretical as well
- 4:52:50as an architectural understanding of
- 4:52:52Azure virtual machine, let's try our
- 4:52:54hands on it on how to create a virtual
- 4:52:56machine and how to connect it. So you
- 4:53:00can just go to the Azure portal. Here
- 4:53:02you see all the services which you have
- 4:53:03recently used and uh you can just
- 4:53:05directly go search for virtual machines
- 4:53:07from here
- 4:53:09and go to the virtual machines.
- 4:53:12Here you see there's no virtual machine
- 4:53:14being created till now. So we can just
- 4:53:15go to create.
- 4:53:17So subscription Azure labs we have and
- 4:53:19then resource group we have to give. If
- 4:53:21you already have a resource group just
- 4:53:22give or create a new one from here
- 4:53:25resource
- 4:53:29you can give a name as well
- 4:53:3301 area is central India. So yeah region
- 4:53:36I'm choosing central India which is
- 4:53:38nearest to me and also my consumers are
- 4:53:40nearest to me. That's the region I'm
- 4:53:42selecting. So always keep in mind while
- 4:53:43you select the region, select the region
- 4:53:45which is near to you and also to your
- 4:53:47consumers. Then in availability options
- 4:53:50requirements security type standard
- 4:53:52Windows 79 data center generation 2
- 4:53:54right azure no not required size then we
- 4:53:57have to choose yeah I can go with B1 or
- 4:54:00you can like select any other size you
- 4:54:01can see for all the sizes. So you can
- 4:54:04select any one of them like right now
- 4:54:05I'm using B1. I can use B2s as well. So
- 4:54:09I will just repeat those that has two
- 4:54:11virtual CPUs and 4 GB of memory. Then I
- 4:54:14will be creating a username. So Azure
- 4:54:16admin is good for me. And I will give a
- 4:54:19username as well. It should be alpha
- 4:54:20numeric along with special character
- 4:54:22with one capital letters as well. So
- 4:54:24keep that in mind while creating the
- 4:54:26password.
- 4:54:28Password matched. So let's go to the
- 4:54:31next step. Public and more not selected
- 4:54:33allow selected report. So RDP 3389 you
- 4:54:36have to select if it's not selected. So
- 4:54:39yeah, now let's go to the disk. No
- 4:54:41thanks, not required. Then select
- 4:54:44whichever isable for you like SSD or HDD
- 4:54:48standard one. It also like the price was
- 4:54:50also dependent on which option you're
- 4:54:52going with. So I'm going with standard
- 4:54:54SSD right now. Next networking nothing
- 4:54:57is required. If you want to change
- 4:54:58anything as per your requirement, you
- 4:55:00can change that. So management auto
- 4:55:02shutdown. If you require enable like if
- 4:55:04you enable auto shutdown, it will auto
- 4:55:05shut down. It's depend on you. Right now
- 4:55:07I don't require that. So go to the next
- 4:55:10one. Extensions and everything is there.
- 4:55:12So I'm selecting an extension here for
- 4:55:15myself. You can also like select which
- 4:55:17one is required for you. I require
- 4:55:20Microsoft enter malware. Go next. So
- 4:55:25then
- 4:55:27I have to create that. So I create it
- 4:55:30next. If you want to add any text you
- 4:55:32can. It's up to you. And then you can
- 4:55:35just go to review and create. So here
- 4:55:37you will actually get the price. Right
- 4:55:39now I'm not getting because I have a
- 4:55:40different kind of an company based
- 4:55:42account. But if you have any personal
- 4:55:44account then you will be getting the uh
- 4:55:47total price of your virtual machine
- 4:55:49you're going to host. Right? So can
- 4:55:51recheck all the information you have
- 4:55:53selected for all the services you have
- 4:55:55been selected sub services and then you
- 4:55:58can create it. So the virtual machine is
- 4:56:01getting deployed. So here you can see
- 4:56:02deployment to resource group is in
- 4:56:04progress.
- 4:56:07So now you can see the deployment is
- 4:56:09complete. So you can just go to your
- 4:56:12resource from here. Let's see what all
- 4:56:14is created. We can see a virtual machine
- 4:56:16is created. Public IP address is there.
- 4:56:18A network security group is created for
- 4:56:20security purposes. Then there's network
- 4:56:22interface being created. Then uh a
- 4:56:24storage disk is being created and as
- 4:56:26well as the virtual network. As we have
- 4:56:27understood all these things are required
- 4:56:29on virtual machine architecture we have
- 4:56:31understood right. So that's already been
- 4:56:33created. So we can go to a virtual
- 4:56:35machine. Now you can see here uh status
- 4:56:38it is running right now. Location every
- 4:56:41region location you can see it's showing
- 4:56:43central India and you can see the public
- 4:56:45IP address as well here. So all this is
- 4:56:47here. You can actually like copy the
- 4:56:50public IP address and directly connect
- 4:56:52it through your remote desktop
- 4:56:53connection by pasting it here and
- 4:56:55connecting it or you can just go to
- 4:56:57connect and go to RDP and here you can
- 4:57:00like download the RDP file personal RDP
- 4:57:02file just uh for that uh one thing
- 4:57:06remember you have to go back to that you
- 4:57:08have to copy the IP for that. So you see
- 4:57:11the IP is copied so let's open the RDP.
- 4:57:15Yeah, put connect. Yeah, for for that
- 4:57:19same IP the RDP has been downloaded. So
- 4:57:21we don't require IP to paste. You can
- 4:57:23just uh give the username and id that we
- 4:57:25have given while creating the virtual
- 4:57:28machine. So that was and then the
- 4:57:31password credentials.
- 4:57:34Yes.
- 4:57:37So we have created the virtual machine
- 4:57:38and now we have connected it as well. So
- 4:57:42here is your service manager which has
- 4:57:43been open and here how your virtual
- 4:57:46machine has been created. So virtual
- 4:57:48computer has been created. Here you can
- 4:57:49see the dashboard all the things like
- 4:57:51add roles and features whatever you want
- 4:57:52to add and get from here or you can
- 4:57:55create your local server given all the
- 4:57:57requirements you can create a local
- 4:57:58server as well and come to this PC and
- 4:58:02here you can see all like this is the
- 4:58:04storage you have got temporary storage
- 4:58:06and main program storage. So this is how
- 4:58:09we can connect the virtual machine. I
- 4:58:12hope you have understood it. So stop
- 4:58:15this session. Yeah. So I have closed the
- 4:58:18virtual machine and I can even stop it
- 4:58:20from here. If I go here and stop so that
- 4:58:22it stops uh like the charging cycle gets
- 4:58:25stopped. You won't be charged for
- 4:58:27running the virtual machine here. So uh
- 4:58:29through this we can like save our cost.
- 4:58:32It is under process is getting stopped.
- 4:58:35Takes a little while. See you can see
- 4:58:37the status as deallocating means
- 4:58:39deallocating means it's getting stopped.
- 4:58:41So you can see it's successfully stopped
- 4:58:43and after that you can even delete the
- 4:58:45virtual machine. So the virtual machine
- 4:58:47is getting deleted and through this
- 4:58:49billing cycle was uh still going on for
- 4:58:51because we had a virtual machine with so
- 4:58:54it got deleted. So virtual machine is
- 4:58:57you can see is deleted still other uh
- 4:58:59things are still there. If you want to
- 4:59:01delete the resource group as well you
- 4:59:03can completely delete the resource
- 4:59:04group. You just have to type the
- 4:59:06resource group name. So delete. So all
- 4:59:08the services which are being under this
- 4:59:10will be deleted along with the resource
- 4:59:11group. So you can see uh and just come
- 4:59:15to home and now you can see there's no
- 4:59:17okay let me go to the VM resource the
- 4:59:19resource not found because it got
- 4:59:21deleted. Okay let me refresh it once
- 4:59:23again. So yeah there's no resource group
- 4:59:26anymore. So this is all about the
- 4:59:29virtual machine and how to create it as
- 4:59:33well as how to delete it and all the
- 4:59:36concepts behind it. So next is uh the
- 4:59:38pricing options. So for pricing option
- 4:59:41you can just simply go for Azure virtual
- 4:59:43machine
- 4:59:45pricing.
- 4:59:47Let's see the pricing structure how the
- 4:59:50pricing works for Azure virtual machine.
- 4:59:52You can see like can select whatever the
- 4:59:54operating system you want to choose. You
- 4:59:56can choose that from here. Just a sec.
- 4:59:59Yeah, everything is there. You can
- 5:00:01choose as per your requirement. Like
- 5:00:03right now I'm going with I'm going with
- 5:00:05Windows OS only. And category I can
- 5:00:07choose like whichever I want to. Right
- 5:00:09now I'm choosing general purpose only.
- 5:00:11Pricing is getting updated here. You can
- 5:00:13see BS series, AV2 and standard D2
- 5:00:18standard all standards are there on the
- 5:00:20basis of the pricing differs. And now if
- 5:00:22I choose the VM just a second Windows OS
- 5:00:26choose the category that is general
- 5:00:28purpose then I have to choose the VM
- 5:00:31series that is uh suppose I going to
- 5:00:34choose PS series and then the region
- 5:00:38suppose I choose mine central India
- 5:00:40currency and no in rupees or dollars
- 5:00:43it's up to you suppose I'm going with
- 5:00:45dollar only right now displaying prices
- 5:00:47by hour or by month you can see and then
- 5:00:50you can come to see the prices right for
- 5:00:53B1's because we have choose the B1's
- 5:00:56right BS series. So B1's that is the
- 5:00:58price dollar wise.
- 5:01:01Similarly if you go with a different
- 5:01:03series like suppose we say this V5 then
- 5:01:06you can see the prices got changed. This
- 5:01:08is how it gets changed. So this is how
- 5:01:10we can look for the prices and go as for
- 5:01:12a requirement.
- 5:01:16Let us start by taking a look at the
- 5:01:18definition first. Now if I talk about
- 5:01:19the definition, this is what we have. It
- 5:01:21is Microsoft's multi-tenant cloud-based
- 5:01:23directory, an identity management
- 5:01:25service that combines core directory
- 5:01:27services, application access management
- 5:01:29and identity protection into a single
- 5:01:31solution. Now there's so many terms in
- 5:01:32it and so many things to understand. Let
- 5:01:35me simplify this definition so that you
- 5:01:36understand it in a much better way. To
- 5:01:38do that, I would be giving you an
- 5:01:39example. Think of it in this way.
- 5:01:41Suppose I am a cloud vendor or not a
- 5:01:43cloud vendor. I am a service vendor and
- 5:01:46I reside on a cloud. That means I have a
- 5:01:48particular application that runs on
- 5:01:50cloud. Now this service is used by quite
- 5:01:52a few customers plus there are quite a
- 5:01:55few organizations that I have to
- 5:01:56interact with. Now in this case all
- 5:01:58these medias or customers and
- 5:02:00organizations they have to communicate
- 5:02:02with me. So how do they do it? Well,
- 5:02:04what they would do is they would go
- 5:02:05ahead and create an account or maybe
- 5:02:07have some user ids through which they
- 5:02:09can actually communicate with me. Now
- 5:02:10this is okay if the number is countable
- 5:02:12or manageable. Suppose there was a
- 5:02:15situation where we had a number of
- 5:02:16people and the number of people was
- 5:02:18constantly increasing. Suppose I have
- 5:02:20somewhere around 1,000 2,000 people. Now
- 5:02:23these many login and these many
- 5:02:25credentials managing all these can be a
- 5:02:27huge problem. Let me give you an
- 5:02:29example. How does this happen exactly or
- 5:02:30what problems do you face normally?
- 5:02:32Suppose I have 10 organizations. Now to
- 5:02:34log into all these or give access to all
- 5:02:36these 10 organizations can be a huge
- 5:02:39problem. Why all these organizations
- 5:02:41might have different kind of accesses.
- 5:02:43Based on that I have to set in different
- 5:02:44security protocols as well. If certain
- 5:02:47organizations have an easier protocol
- 5:02:49what if they get an access to other
- 5:02:51organizations as well or to the data
- 5:02:53that other organizations have to
- 5:02:54correspond to. In that case it can be a
- 5:02:56huge problem. Apart from that I might
- 5:02:58have n number of customers and keeping
- 5:03:00track of so many customers can again be
- 5:03:02a problem when you talk about creating
- 5:03:03credentials. So all this is a huge
- 5:03:06problem. So what happened was Microsoft
- 5:03:08Azure it went ahead and created
- 5:03:10something called as Azure Active
- 5:03:11Directory. It is nothing but something
- 5:03:13that acts as a middleware. It takes care
- 5:03:15of all the signins and all these things.
- 5:03:17How? Now the users will have a single
- 5:03:19sign on process. That means they would
- 5:03:21sign in only once. Plus they can have
- 5:03:23access to the applications that are
- 5:03:24there which I provide them. Now this
- 5:03:27intermediary that is your active
- 5:03:29directory. What it does is it federates
- 5:03:31all the responsibilities of taking care
- 5:03:33of access and all those things that is
- 5:03:35the way I set all the rules. It just
- 5:03:37incorporates those rules and accordingly
- 5:03:39it gives access to all the users. thus
- 5:03:41simplifying all the complexities that I
- 5:03:43would face otherwise. So this is what an
- 5:03:45active directory exactly is. It
- 5:03:47basically goes ahead and simplifies all
- 5:03:49the signing in and user authentication
- 5:03:51processes or identification processes
- 5:03:53rather. Now as we move further we'll be
- 5:03:55discussing quite a few other terms and
- 5:03:57you'd be having a clearer picture as to
- 5:03:59what I'm saying exactly. But meanwhile
- 5:04:00you just bear with me and let's move
- 5:04:02further and try to understand what are
- 5:04:04the other points that we need to talk
- 5:04:05about. Okay. Yes, I did miss out on this
- 5:04:07point. What Microsoft Azure does is it
- 5:04:09also gives you something called as a
- 5:04:11better platform where developers can
- 5:04:13develop their applications with lot more
- 5:04:15ease. Again, as we move further, we'll
- 5:04:17be understanding this point as well.
- 5:04:23So what is the exact difference between
- 5:04:26Windows AD and Azure AD? Let's try to
- 5:04:28understand that as well. Now when you
- 5:04:30talk about Windows AD that is active
- 5:04:31directory, these are the layers it has
- 5:04:34to take care of. You have something
- 5:04:35called as your domain services. You have
- 5:04:37your lightweight directories. You have
- 5:04:39your federation services, certificate
- 5:04:41services and rights management services
- 5:04:42as well. Now these are so many things to
- 5:04:44take care of. When you talk about your
- 5:04:46active directory with Microsoft Azure,
- 5:04:48it combines all these layers into two.
- 5:04:52Firstly, you have your Windows Azure
- 5:04:54active directory. Now it is something
- 5:04:56that takes care of all the services that
- 5:04:58surround or revolve around identity
- 5:05:00problems. That is when you talk about
- 5:05:03identification management, this is the
- 5:05:04part that takes care of it. that is your
- 5:05:06W A and then we have the other part
- 5:05:08where you have to actually go ahead and
- 5:05:10communicate with other organizations. I
- 5:05:11gave you an example of 10 different
- 5:05:13organizations needing 10 different
- 5:05:15things that is federating all these
- 5:05:16organizations. Your Windows Azure access
- 5:05:19control services it takes care of all
- 5:05:20those things. So both these so-called
- 5:05:23active directories they more or less
- 5:05:25serve similar purposes but the approach
- 5:05:27in which they do is is completely
- 5:05:29different. Your active directory has
- 5:05:30more layered approach where every
- 5:05:32service is given a different layer or
- 5:05:34different way of handling it. But when
- 5:05:36you talk about your Microsoft Azure
- 5:05:38active directory, it simplifies things.
- 5:05:41Your first layer takes care of most of
- 5:05:42the things and the remaining things are
- 5:05:44something that is taken care by your
- 5:05:45Windows Azure access control service.
- 5:05:47Also, when you talk about active
- 5:05:49directory, it uses something called as
- 5:05:51LDAP for various other communications.
- 5:05:52But when you talk about your Azure
- 5:05:54active directory, here you use something
- 5:05:56called as your REST APIs. Again the
- 5:05:58approach is completely different.
- 5:06:04So what are the audiences that are
- 5:06:06catered by this directory? Well, first
- 5:06:09and foremost we have IT admins. Now when
- 5:06:11I talk about IT admins, what Microsoft
- 5:06:13Azure active directory does is it
- 5:06:15provides in single sign on for various
- 5:06:17applications. Now there are quite a few
- 5:06:20SAS applications that is software as a
- 5:06:22service applications and various
- 5:06:23onremise applications to which you have
- 5:06:25a single sign on. You do not have to
- 5:06:27login every now and then. Now I've
- 5:06:28worked on quite a few applications and
- 5:06:30places where you have to login every now
- 5:06:32and then you have a lot of trouble
- 5:06:33because you have to remember so many
- 5:06:35passwords and so many login and these
- 5:06:37different credentials can be a problem.
- 5:06:38Now this is something your Microsoft
- 5:06:40Azure takes care of. Single sign on is
- 5:06:42very convenient. Apart from that it
- 5:06:44ensures strong identification and there
- 5:06:46quite a few processes that ensure this.
- 5:06:48Now I won't be discussing those points
- 5:06:50in detail but yes when you talk about
- 5:06:51identification Microsoft Azure ensures
- 5:06:53that it happens in a very good manner.
- 5:06:55Plus, it automates quite a few
- 5:06:57processes. Again, easing up this
- 5:06:58process. Apart from that, it also caters
- 5:07:01quite a few developers as well. Now, I'm
- 5:07:03talking about quite a few organizations
- 5:07:05and since sign on becomes easier here,
- 5:07:07your application developers can focus on
- 5:07:09building applications and since they
- 5:07:11have access to so many organizations and
- 5:07:13so many resources, application
- 5:07:14development definitely becomes easier.
- 5:07:16Online customers, now people who have
- 5:07:19been working for quite a while, they
- 5:07:20might know that we have things like
- 5:07:22Office 365 or you have your CRM services
- 5:07:24as well. Now you had an access to all
- 5:07:27these things by using your Windows
- 5:07:29active directory. But your Microsoft
- 5:07:31Azure active directory also gives you
- 5:07:32access to all these services. That means
- 5:07:34if you're using or have account on any
- 5:07:36one of these things, you can have access
- 5:07:38to all these services or have access to
- 5:07:40all the active directory services that
- 5:07:42Azure has to provide to you. So what
- 5:07:44this does is it cers the needs of
- 5:07:45various online customers as well.
- 5:07:52So let us try to understand the next
- 5:07:54point that is Azure Active Directory
- 5:07:56additions. For that what I'm going to do
- 5:07:58is I'm going to go ahead and switch into
- 5:07:59the Microsoft's web page basically or
- 5:08:02I'm going to switch into my browser and
- 5:08:04move to their website and talk about all
- 5:08:05these points. So instead what I would do
- 5:08:07is I would first discuss the last point
- 5:08:10and before we do go ahead and take a
- 5:08:11look at the demo then we would just go
- 5:08:13ahead and talk about these points as
- 5:08:15well so that we can directly switch into
- 5:08:16the demo part. So let's move further and
- 5:08:18try to understand the next point and
- 5:08:19then come back to this point.
- 5:08:26So what are tenants basically? Now when
- 5:08:28you talk about a tenant, it is nothing
- 5:08:29but an organization. I just mentioned
- 5:08:31that we have tens of organizations that
- 5:08:33a particular application might cater.
- 5:08:35Now all these organizations are treated
- 5:08:37as tenants. All these tenants can have
- 5:08:40access to a particular active directory
- 5:08:42or more than one active directory. As we
- 5:08:44move into the demo part, I would be
- 5:08:46talking about how to create multiple
- 5:08:48directories as well. Yes, we can have
- 5:08:49more than one active directory. We'll
- 5:08:51discuss that as we move into the demo
- 5:08:53part. But before that, you just
- 5:08:54understand these points as in what I'm
- 5:08:56trying to say exactly. Yes, what happens
- 5:08:58here exactly is when you talk about a
- 5:09:00tenant, first and foremost, it is
- 5:09:02nothing but an organization and it is a
- 5:09:04dedicated instance of your Azure Active
- 5:09:06Directory service. Plus, these are
- 5:09:08isolated instances. That means as I
- 5:09:11mentioned, we have 10 organizations or
- 5:09:12five organizations. You'd be having
- 5:09:14isolated instances for each of these
- 5:09:16organizations ensuring that they stay
- 5:09:19aloof and their services and their
- 5:09:22protocols are maintained differently.
- 5:09:23This is where your Azure active
- 5:09:25directory steps in. It takes care of all
- 5:09:26these things. It ensures that nothing is
- 5:09:29ambiguous or nothing is intermixed.
- 5:09:31Everything stays separate. Plus each and
- 5:09:33every platform or organization gets
- 5:09:36serviced equally well. As we move
- 5:09:38further, we would be creating users and
- 5:09:40then I would give you the differences as
- 5:09:42in what a tenant is, how do you go ahead
- 5:09:44and create all the domains and all those
- 5:09:45things. So again into the demo part
- 5:09:47you'd be understanding these topics with
- 5:09:49little more clarity or more
- 5:09:51understanding rather
- 5:09:57this is the demo part but before that as
- 5:09:59I've already mentioned let me quickly
- 5:10:01switch to the website of Microsoft Azure
- 5:10:03and I would be discussing the additions
- 5:10:06that you can choose from and then we can
- 5:10:08directly jump into the demo part. Okay
- 5:10:10guys, so this is a Microsoft doc
- 5:10:12basically which talks about choosing an
- 5:10:14addition. So these are the options you
- 5:10:17have. We would be finishing this quickly
- 5:10:18and then we would be switching into the
- 5:10:20demo part. So let's understand this. Now
- 5:10:22what Microsoft Azure does is it gives
- 5:10:24you various options. First and foremost,
- 5:10:27you have three options to pick from. And
- 5:10:29out of these three options, the first
- 5:10:31one is your basic option that is your
- 5:10:33active directory basic. Then you have
- 5:10:35your premium which is P1. And then you
- 5:10:37have one more premium which is P2. All
- 5:10:39these things provide you with different
- 5:10:41options that you have. First and
- 5:10:42foremost, your main job is to have your
- 5:10:45access that is your identity management,
- 5:10:47your security and your single sign on
- 5:10:49and all those things. Now, these are
- 5:10:51some of the services that come with your
- 5:10:53basic account as well and also with your
- 5:10:56free account. What Microsoft Azure does
- 5:10:58is for people who are completely new to
- 5:11:00the session and Microsoft Azure, let me
- 5:11:02tell you that you have a free sign into
- 5:11:04Microsoft account. That means you can go
- 5:11:06ahead and create your account there and
- 5:11:08avail these services for a certain
- 5:11:10duration which are available to you for
- 5:11:12free. So yes, you do not have to pay
- 5:11:14anything. There you have a free account
- 5:11:16in that you'll be having access to some
- 5:11:18of these services. But if you need
- 5:11:20advanced services then you have to pay
- 5:11:22for it. And for those things you have
- 5:11:24three options that is your basic,
- 5:11:26premium P1 and premium P2. Let's try to
- 5:11:28understand these one by one as in what
- 5:11:30are these and what do they have to offer
- 5:11:31to you. Now if you scroll down and if
- 5:11:33you take a look at this thing you have
- 5:11:34your Azure active directory basic. Now
- 5:11:37this basic is nothing but it is designed
- 5:11:38for people who are task workers or who
- 5:11:41are focused on a particular application
- 5:11:43of on cloud. Now it takes care of
- 5:11:45everything your single signons your SLAs
- 5:11:48and it ensures that the security is
- 5:11:5099.9%. And it provides you with all
- 5:11:53these features which you can see here
- 5:11:54that is your self-service password
- 5:11:56resets and all those things. You also
- 5:11:58have access to quite a few things like
- 5:11:59your proxies and all those things. I
- 5:12:01won't be getting into the details of
- 5:12:02what proxies are and all those things.
- 5:12:04But yeah, for people who are admins and
- 5:12:05who have worked on these topics or in
- 5:12:08these domains, they would understand
- 5:12:09what do these things mean. So yep, you
- 5:12:11have access to all these things which
- 5:12:13fall under your basic option. Apart from
- 5:12:16that, you have something called as your
- 5:12:17premium P1. Now this is for people who
- 5:12:20want to scale up. So when you try to
- 5:12:22scale up, you'd be dealing with quite a
- 5:12:24few things and terms like your IM and
- 5:12:26all those things would come into
- 5:12:27picture. Now, IM is nothing but your
- 5:12:30identity and access management basically
- 5:12:32which is a very important point when you
- 5:12:33talk about active directories. So, yes,
- 5:12:36it provides you with these things as
- 5:12:37well or these facilities as well like
- 5:12:39identity protection, your security in
- 5:12:41the cloud and all those things.
- 5:12:42Everything is taken care of for this
- 5:12:43particular model. Now, when you talk
- 5:12:45about premium P2, if I scroll down, this
- 5:12:48is what you have. It is designed for
- 5:12:50more advanced protection. That means
- 5:12:52you'd be getting all the services that
- 5:12:53were provided in basic and P1. Apart
- 5:12:56from that you'd be having some
- 5:12:58additional services which ensure more
- 5:13:00security. That means it focuses more on
- 5:13:03privilege identity management. Now again
- 5:13:05this is something that you can read and
- 5:13:07understand. It is very easy. But to give
- 5:13:09you a basic difference your first thing
- 5:13:11provides you with your basic services
- 5:13:13that is your basic access gives you
- 5:13:15basic active directory service access.
- 5:13:17Then you have your premium version which
- 5:13:18is focused for scaling up and when you
- 5:13:20talk about P2 it focuses more on
- 5:13:22advanced security. So these are the
- 5:13:24three different additions that you can
- 5:13:26choose from. Now if you're somebody who
- 5:13:28is belonging to a particular
- 5:13:30organization and wants to go ahead and
- 5:13:32use these services, he can actually go
- 5:13:33ahead and read all these things and then
- 5:13:35go ahead and take a decision
- 5:13:36accordingly. Now what I'm going to do is
- 5:13:38I'm quickly going to go ahead and switch
- 5:13:39into the demo part. For that I need to
- 5:13:41go ahead and open my Microsoft Azure
- 5:13:43account. So let's do that. Well,
- 5:13:47my internet is kind of slow today. So it
- 5:13:49might take a little longer while than
- 5:13:51normal. I can click here on portal and
- 5:13:53there you go. It would ask me to sign
- 5:13:55in. I would be using a dummy account
- 5:13:57today for this so-called demo. I wanted
- 5:13:59to give you an access to or view to
- 5:14:01quite a few directories and all those
- 5:14:03things. So that is why I did go ahead
- 5:14:05and create an account and or certain
- 5:14:07active directories created or basically
- 5:14:10certain accounts created. Now this is
- 5:14:12how the Azure portal looks like for
- 5:14:14people who are completely new. Again you
- 5:14:15have your dashboard here. Apart from
- 5:14:17that, you can actually go ahead and
- 5:14:18create quite a few things that is your
- 5:14:19virtual machines, your data factories
- 5:14:21and all those things. For people who
- 5:14:23want to know all those things, they can
- 5:14:24actually go ahead and refer the other
- 5:14:25videos that are there in this series and
- 5:14:28you would know quite a few other things
- 5:14:29as well. But as far as this session
- 5:14:31goes, we are here to talk about active
- 5:14:33directory. So let's head into it and try
- 5:14:34to understand how do you go ahead and
- 5:14:36create active directories and all those
- 5:14:37things. Now how do you navigate to a
- 5:14:39particular active directory? Now if you
- 5:14:40scroll down here you would be seeing an
- 5:14:42active directory here for people who
- 5:14:44have an account on Microsoft Azure and
- 5:14:46have access to all these things. They
- 5:14:47would have an active directory by
- 5:14:49default. So you just have to come here
- 5:14:50and click on it and a particular
- 5:14:53dashboard would open up for you people
- 5:14:55as well. Now this is how it looks like.
- 5:14:57You have all these things an overview
- 5:14:58getting started. You have users groups
- 5:15:00which you can manage and monitor. You
- 5:15:02have devices you can connect to your
- 5:15:04various app registrations. As I've told
- 5:15:06you you can manage multiple applications
- 5:15:08as well. Now in that case what happens
- 5:15:10is as I've mentioned you might be
- 5:15:11dealing with multiple applications. So a
- 5:15:13particular user what applications should
- 5:15:15he have access to? What domains does he
- 5:15:17have access to? What are the devices
- 5:15:19that are configured? All these things
- 5:15:21can be controlled or managed from here
- 5:15:22basically. So this is what your
- 5:15:24so-called active directory does. Now
- 5:15:26let's move further and try to create
- 5:15:27some users. Now how do we do that? Well
- 5:15:29I can click on this icon here and it
- 5:15:32would give you the list of users that
- 5:15:34are already there. As you can see there
- 5:15:36quite a few users here. This was a demo
- 5:15:38account. So, we did go ahead and create
- 5:15:39so-called users so that you can have a
- 5:15:41look at them. This is something that I
- 5:15:43created yesterday that is Chris Pratt.
- 5:15:45Now, how do you go ahead and create an
- 5:15:46account? I would be talking about all
- 5:15:48these things to give you a start. You
- 5:15:50have to click on this thing new users
- 5:15:53and this window opens up. Now, again,
- 5:15:55I'll have to go back and show you
- 5:15:56something else. How do we deal with all
- 5:15:58these things? Well, first and foremost,
- 5:16:00you need to give in a pseudo name or a
- 5:16:02name of the person for which you want to
- 5:16:04create a user. Apart from that, you need
- 5:16:07a particular domain name or yes, a
- 5:16:09domain name for a particular domain
- 5:16:10service. Now, how do we get that? Now,
- 5:16:13these domain services have to be
- 5:16:14registered with your so-called Azure
- 5:16:17Active Directory. So, I have these
- 5:16:19accounts here, right? So, I can use one
- 5:16:21of these accounts to just go ahead and
- 5:16:23create a particular user. Suppose I want
- 5:16:25that user to be assigned or maybe
- 5:16:28associated with this ID. So, I can
- 5:16:31select this domain service extension
- 5:16:33basically. Again click on new user. So
- 5:16:36what name should I give to this
- 5:16:37particular user? Now I am a huge cricket
- 5:16:39fan and recently I watched England's
- 5:16:42match. So let's pick name of one of the
- 5:16:45players that belongs to England team say
- 5:16:47Sam billings and again this is where I
- 5:16:49would be creating the user. Say I say
- 5:16:52Sam bill as a pseudo name and I give in
- 5:16:56this domain details that is at
- 5:16:58edurea.tk.
- 5:16:59Now this is something that is configured
- 5:17:01already. That is why I can use it and I
- 5:17:03can have an account. If I used an ID
- 5:17:05that was not registered with this Azure
- 5:17:08account, I wouldn't have been able to
- 5:17:09create this user because it would have
- 5:17:11given me a particular error. As we move
- 5:17:13further, we would be taking a look at
- 5:17:14that as well. But for now, let's go
- 5:17:16ahead and create a legitimate user that
- 5:17:18is this one. Now, it verifies whether
- 5:17:20the name is proper or not. Name is
- 5:17:22something you can use in any which way
- 5:17:24you want to. But your username has to be
- 5:17:26legit and valid. So I have these details
- 5:17:28which I've entered. Configuration not
- 5:17:30required. Properties can be default. And
- 5:17:33if I have to assign him a role, I can
- 5:17:35click here. You can see the name is
- 5:17:37verified here as well. Let's make him a
- 5:17:40global admin maybe. And again you'd be
- 5:17:42given a password here. If you say show,
- 5:17:44it would show you the password. And I
- 5:17:45would suggest that you note it down
- 5:17:47because you would be required to go
- 5:17:49ahead and log in. And in that case, you
- 5:17:51might be needing this password. So a
- 5:17:53suggestion that you note it down. I say
- 5:17:56okay here and I create the user. Now it
- 5:17:59might take a while because at times
- 5:18:00there are certain things that take a
- 5:18:02while but in this case it has happened
- 5:18:03pretty quickly. So as you can see we've
- 5:18:06gone ahead and created a user. His name
- 5:18:08was sambling if I'm not wrong. So yes
- 5:18:10there you have this account which is
- 5:18:12sample and if you click on it and open
- 5:18:14it you can have access to that account
- 5:18:17where you can enter in other details.
- 5:18:19What applications that are there under
- 5:18:20this user and what applications do you
- 5:18:22want to assign? which devices do you
- 5:18:24want to configure and all those things.
- 5:18:26If you scroll down, you have some other
- 5:18:27options as well. Signins and audit logs.
- 5:18:29Now, I won't get into the details of
- 5:18:31these things, but you can assign all
- 5:18:33these things to this particular user as
- 5:18:35well. So, yeah, this is what the user
- 5:18:37looks like and you can actually go ahead
- 5:18:39and log into this Azure account through
- 5:18:42this user profile as well. We can do
- 5:18:44that. What I'm going to do is I'm going
- 5:18:45to go ahead and create or open an
- 5:18:47incognito window where I'm going to go
- 5:18:49ahead and login as this user. Let's just
- 5:18:52say cognto. And
- 5:18:56now if I try to login, I would have to
- 5:18:59enter in the details. I've actually gone
- 5:19:01ahead and tried logging in, but I've
- 5:19:03forgotten the credential details. So let
- 5:19:05me just quickly switch to this window.
- 5:19:07Copy this email ID and again switch
- 5:19:09here. So this is the email id which we
- 5:19:10have sam bill. Next and my password was
- 5:19:16I hope it is right.
- 5:19:18Yes. So when you log in for the first
- 5:19:21time, it would ask you to enter the
- 5:19:23current password
- 5:19:26and then you can enter the new password
- 5:19:28let's say
- 5:19:30and then you reenter the password.
- 5:19:34There you go. And you sign in. So what
- 5:19:36happens is you enter into this portal as
- 5:19:39a fresh user.
- 5:19:42See I'm a completely new user and it
- 5:19:44says do you want to start a tour? But I
- 5:19:46don't want to do that. So I would just
- 5:19:47say maybe later. There you go. You have
- 5:19:50your fresh dashboard. There is nothing
- 5:19:51pinned here and everything is completely
- 5:19:53new. So yep, you've entered in as a
- 5:19:56completely new user
- 5:19:58and this is the active directory where
- 5:20:00I'm assigned to that is my previous
- 5:20:02active directory. As you can see, this
- 5:20:04is what we have here to offer. So yes,
- 5:20:06as a user I have certain privileges and
- 5:20:08I can have access to this so-called
- 5:20:10portal. So this is something I wanted
- 5:20:12you all to see there. There there quite
- 5:20:13a few other things which we are going to
- 5:20:14go ahead and take a look at it. But for
- 5:20:15now, let me just log out and close this
- 5:20:18tab. Now I'm back here. There are other
- 5:20:20things I want you to understand and
- 5:20:22those things are if I come here, what
- 5:20:24you can see is we have certain users
- 5:20:26here. Right? There you go. Now if you
- 5:20:28take a look at certain email ids, you
- 5:20:31can see these email ids. Now these are
- 5:20:32quite huge email ids, right? What
- 5:20:34happens is when you do go ahead and
- 5:20:36register your domain service, you
- 5:20:38register that domain service with
- 5:20:40Microsoft Azure account. And when you do
- 5:20:42go ahead and create users, you would not
- 5:20:44want to have such use names that is say
- 5:20:46for example Vishall at Microsoft
- 5:20:49something something something something
- 5:20:50that can be long right and that is
- 5:20:52complicated to handle or manage. So
- 5:20:54instead what you can do is you can
- 5:20:55provide them with sudo identities or
- 5:20:57pseudo ids as well so that the process
- 5:21:00becomes easier or simpler to handle.
- 5:21:02Let's try to do that and see how can we
- 5:21:04do that. Can we just go ahead and assign
- 5:21:06a particular domain name or a domain
- 5:21:08service when we just go ahead and create
- 5:21:10a new user or all those things. So in
- 5:21:13order to add a particular domain what
- 5:21:14you have to do is you have to go ahead
- 5:21:15and again where is my active directory
- 5:21:18here it is and I just kind of scroll
- 5:21:20down you can see custom domain names
- 5:21:22where you can actually go ahead and add
- 5:21:24domain names but there are certain
- 5:21:25catches to it. Let's try to understand
- 5:21:27those. Now it would ask me to enter a
- 5:21:30custom domain name and I say demo domain
- 5:21:33maybe. Yeah. and let me give it some
- 5:21:36extension. Now again let me tell you
- 5:21:37that this is a demo practice and it
- 5:21:40won't take in this particular domain
- 5:21:42name. I'll tell you why. But first let's
- 5:21:44just try to add this domain. Yeah the
- 5:21:46domain name is added but as you can see
- 5:21:49to use demo domain add with Azure AD
- 5:21:52create a new text record with your
- 5:21:54domain name registar using the info
- 5:21:57below. So if I say text I need to copy
- 5:22:00this part and I have to actually go
- 5:22:02ahead and add this to my particular
- 5:22:03domain name. Now I won't be going ahead
- 5:22:05and doing that because that is something
- 5:22:06that we are not discussing here because
- 5:22:08for that we would be needing some other
- 5:22:10domain name which I do not have right
- 5:22:12now with me. So if you do go ahead and
- 5:22:14try to add a particular domain name you
- 5:22:16need to have that particular domain that
- 5:22:17is suppose I'm using a particular
- 5:22:19website or I have a particular
- 5:22:21organization which has a particular
- 5:22:23website or a domain name that is
- 5:22:24[email protected]
- 5:22:26or something like that. So I need to
- 5:22:28make sure that I go ahead and register
- 5:22:30or have access to that particular domain
- 5:22:32and then I need to go ahead and attach
- 5:22:33this particular text to it or authorize
- 5:22:35this text with it so that I can actually
- 5:22:37go ahead and confirm with Microsoft
- 5:22:39Azure that yes I have an access to that
- 5:22:41particular domain and only then can I go
- 5:22:43ahead and use this particular domain
- 5:22:45with my Microsoft Azure. Now if I click
- 5:22:47here on verify it would give me an error
- 5:22:49that I'm very sure of. See could not
- 5:22:51find the DNS record for this domain. DNS
- 5:22:55changes may take up to 72 hours to
- 5:22:57propagate. That means I have 72 hours to
- 5:22:59go ahead and add this particular text
- 5:23:01message to that domain and so that I can
- 5:23:03verify that yes this domain is legal but
- 5:23:05in this case it isn't. I just took
- 5:23:07something for the demo purpose or for
- 5:23:09the reference sake and this is the
- 5:23:11domain that I might have or which I can
- 5:23:13actually go ahead and use. So yeah, this
- 5:23:15is how you actually go ahead and add a
- 5:23:16particular domain and you can actually
- 5:23:18go ahead and create a user as well. What
- 5:23:21you have to do is when you do go ahead
- 5:23:22and register this particular domain, you
- 5:23:24can just go ahead and follow the
- 5:23:25processes like creating a user which we
- 5:23:27did in the previous case because that
- 5:23:29was the registered domain when I used
- 5:23:31that so-called edurea.tk TK it was
- 5:23:33registered with my so-called Azure
- 5:23:35account and I could actually go ahead
- 5:23:36and register that particular user but in
- 5:23:38this case I cannot but yes if you do go
- 5:23:41ahead and create a particular domain or
- 5:23:43you want to go ahead and create a
- 5:23:44particular domain or register a
- 5:23:45particular domain make sure that it is
- 5:23:47valid and it is underused and you can
- 5:23:49actually go ahead and register that
- 5:23:50particular domain by using this
- 5:23:52particular process. So yeah this is how
- 5:23:54you actually go ahead and do all these
- 5:23:55things. Now when you have this
- 5:23:56particular domain which is not
- 5:23:58registered and if you do go ahead and
- 5:23:59create a particular user on it what
- 5:24:01happens is your Microsoft Azure would
- 5:24:03let you create that user but the
- 5:24:05credentials or the access that user has
- 5:24:07is as a guest user because your
- 5:24:09Microsoft isn't sure that this domain
- 5:24:12which you just created is actually
- 5:24:14registered or something that you can
- 5:24:16actually go ahead and use. So that is
- 5:24:17one point which you need to consider.
- 5:24:19Now let me just quickly go back to my
- 5:24:20active directory and see if there are
- 5:24:22anything or any points that I need to
- 5:24:24discuss with you or something that we
- 5:24:25have messed up on. So what I'm going to
- 5:24:28do is I'm going to talk about something
- 5:24:30else called as creating an active
- 5:24:32directory or can we create multiple
- 5:24:34active directories? That is a question.
- 5:24:36If you ask me I would say yes definitely
- 5:24:38you can create multiple directories. Now
- 5:24:40as you see here if I go to a particular
- 5:24:42directory I would be having an option
- 5:24:44called as switch directories. Now if I
- 5:24:47click here I have certain options from
- 5:24:49which I can pick a default directory.
- 5:24:51Now in my case I have quite a few
- 5:24:54directories which I can actually go
- 5:24:55ahead and choose from. But I want to
- 5:24:58give you all a demo as in how do you go
- 5:24:59ahead and create one because these are
- 5:25:01something that we have created for the
- 5:25:04practice purpose or certain usage
- 5:25:06purpose. So let's go ahead and create a
- 5:25:08fresh one. So how do we do that? Can we
- 5:25:10just go ahead and create one? Well yes
- 5:25:12definitely we can create one.
- 5:25:15If you just scroll down, you have
- 5:25:17certain options here. We had an option
- 5:25:20of creating a new directory. Let me just
- 5:25:22go ahead and see where that option is.
- 5:25:24See, this option create a directory. So,
- 5:25:28let's start by giving it certain name.
- 5:25:30Say edureka
- 5:25:321 2 3 4.
- 5:25:36Not 1 2 3 4. Let's call it say edure
- 5:25:39edurea. Maybe is it there? Yep. And what
- 5:25:44should be the domain name? Edureka 121.
- 5:25:48Edureka 121 state. Well, since I'm from
- 5:25:52India, let's stick to India. And I say
- 5:25:54create. Now, it might take a couple of
- 5:25:56minutes when you just go ahead and
- 5:25:57create this so-called directory. So,
- 5:25:59yep. Meanwhile, you bear with me. And
- 5:26:01there you go. You have your directory
- 5:26:03here. You can just click on this thing
- 5:26:04to manage your directories.
- 5:26:07As you can see, it's a completely new
- 5:26:09directory which is fresh and new to use.
- 5:26:12That means as you can see it's Edureka
- 5:26:14Edureka and if you click on any one of
- 5:26:16these things you won't be having
- 5:26:17anything else. Now in my previous active
- 5:26:19directory I had so many users. Now if
- 5:26:21you come here you would see there's just
- 5:26:23one user main admin. I do not have
- 5:26:26anything else or no other user
- 5:26:28whatsoever. That means this is a fresh
- 5:26:30directory. Like as you can see if you
- 5:26:32just go back to the ed option you'd be
- 5:26:35having an option of resetting your
- 5:26:37so-called directory and you can do that
- 5:26:38as well. But I do not want to do that
- 5:26:40for now. I can just click on this and I
- 5:26:43go back. See, here's the option. You can
- 5:26:45click on it and you can switch the user.
- 5:26:47So, yeah, you can use multiple
- 5:26:49directories and you can have multiple
- 5:26:50users for these directories as well.
- 5:26:52Now, I can just go ahead and create
- 5:26:53users for this directory as well. But I
- 5:26:56won't be doing that. Now, since I do not
- 5:26:57need this directory, I'm just going to
- 5:26:59go ahead and delete it. So, I click on
- 5:27:00this icon. I do not have permissions
- 5:27:03probably. So, I click on it and I ensure
- 5:27:05that permission is granted. I say yes
- 5:27:07and I save changes. It might take half a
- 5:27:10minute to update these properties or if
- 5:27:13the internet is slow it might take a
- 5:27:14longer as well. There you see the
- 5:27:16changes have been updated. Now if I
- 5:27:18refresh this thing the access is given
- 5:27:21to me. I can just
- 5:27:23I don't want to delete the dashboard. I
- 5:27:25just want to go ahead and delete my
- 5:27:27so-called uh active directory.
- 5:27:35Okay. So I do not have an access to my
- 5:27:37domain services because of which I'm not
- 5:27:38able to delete this account. But yeah,
- 5:27:41you normally have an option where you
- 5:27:42can actually go ahead and delete this
- 5:27:43directory. So yep, you can go ahead and
- 5:27:45do that as well. So yeah, this was the
- 5:27:47demo about active directory as in how do
- 5:27:49you go ahead and create a user? How do
- 5:27:50you create a particular domain space or
- 5:27:53domain service? Basically, how do you go
- 5:27:54ahead and create multiple active
- 5:27:56directories?
- 5:28:04So our first topic is what are ARM
- 5:28:06templates?
- 5:28:08So as you can see in the definition ARM
- 5:28:10template is a block of code that defines
- 5:28:13the infrastructure and the configuration
- 5:28:15of your project. So here it means that
- 5:28:18it is a way of deploying infrastructure
- 5:28:21as a code to the Azure environment. So
- 5:28:24here you create a project in that you
- 5:28:27define the objects you want and you also
- 5:28:30specify their properties names and their
- 5:28:32types and you convert it into a JSON
- 5:28:35file and once you upload this file into
- 5:28:38the Azure what does ARM API do? It
- 5:28:42understand the whole code which is in
- 5:28:44the JSON file. So here the JSON file is
- 5:28:48then checked into the source control and
- 5:28:50managed like any other code file. So
- 5:28:53here what ARM templates are like they
- 5:28:56give you the ability to roll out within
- 5:28:58the Azure environment. So it can contain
- 5:29:02the contents of the entire resource
- 5:29:04group like they can manage the whole
- 5:29:06resource group or it can also contain
- 5:29:09one or more resources which is assigned
- 5:29:12under that particular resource group. So
- 5:29:14when a template is deployed you have the
- 5:29:17option of either using complete or the
- 5:29:20incremental code like part by part
- 5:29:22codes. So if you go with the complete
- 5:29:25mode it deletes any object that are not
- 5:29:29visible or that does not appear within
- 5:29:31the template. Okay. So if you have a
- 5:29:34template and in that if you are not able
- 5:29:36to see any objects so you can delete you
- 5:29:39can delete from those resource group
- 5:29:41which you're deploying. So in this
- 5:29:43scenario, whatever you're deploying into
- 5:29:45the resource group like you will see
- 5:29:47that many amount of objects into that
- 5:29:49particular resource group. In the
- 5:29:52incremental deployment, it uses
- 5:29:54basically the template to the additional
- 5:29:56resources to an existing resource group.
- 5:29:59So the benefit of this is that you don't
- 5:30:01lose any infrastructure that is missing
- 5:30:04from the template. But the downside is
- 5:30:06that you will have to clear up old
- 5:30:09resources from the other way. So it's
- 5:30:11like whatever new resources you are
- 5:30:13adding into the existing resource group
- 5:30:15that won't delete you are able to see
- 5:30:18those but once you are adding new then
- 5:30:20you need to filter out the previous
- 5:30:22resources as well. In this case, uh the
- 5:30:25ideal deployment is complete, but it
- 5:30:28does mean that you need to have a good
- 5:30:30automated deployment pipeline with at
- 5:30:32least one test environment where you can
- 5:30:35validate that template and it doesn't
- 5:30:37rip the heart of your production like it
- 5:30:40should not ruin your management. Now
- 5:30:43that we have come to know what are ARM
- 5:30:45templates, now let us see why choose ARM
- 5:30:48templates. So how are they useful to us?
- 5:30:51What makes it so special? So there are a
- 5:30:54few advantages which validates that how
- 5:30:57ARM templates are useful to use in Azure
- 5:31:00environment. So we'll look onto them one
- 5:31:03by one. So our first is declarative
- 5:31:06syntax. So what does it means is that
- 5:31:09the RM template allows you to create and
- 5:31:12deploy the entire Azure infrastructure
- 5:31:15declaratively. So it means here that if
- 5:31:18you're using the ARM template you can
- 5:31:20create it while declaring all your by
- 5:31:23declaring all the codes in the JSON file
- 5:31:25where you declare your needs your
- 5:31:27properties and everything. It is very
- 5:31:29declarative. You declare then it allows
- 5:31:32you to deploy it in that way itself.
- 5:31:34Okay. For example, you can not only
- 5:31:37deploy virtual machines but also network
- 5:31:40infrastructure, storage systems and any
- 5:31:43other resources that you need within
- 5:31:45that Azure environment. You don't have
- 5:31:47to go one by one like first you create
- 5:31:49virtual machine and then you can go to
- 5:31:51storage account. You can create it at
- 5:31:53once. Next is repeatable results. So
- 5:31:57here you can repeatedly deploy your
- 5:32:00infrastructure throughout the
- 5:32:01development life cycle and you have the
- 5:32:03confidence that your resources are
- 5:32:05deployed in a consistent manner. It is
- 5:32:08not key you can only deploy once you can
- 5:32:10deploy it more than one time. So and you
- 5:32:14get the consistent results out of it
- 5:32:16like whenever you deploy you will get
- 5:32:18that much appropriate results
- 5:32:20consistently.
- 5:32:22So here the templates are item important
- 5:32:25which means that you can deploy the same
- 5:32:27template many times and the same
- 5:32:30resource types in the same state. So if
- 5:32:33you have created a template you can
- 5:32:36deploy it more than one times. So
- 5:32:38whenever you deploy the resources under
- 5:32:40it will give you the same results. You
- 5:32:43can develop one template that represents
- 5:32:46the desired state rather than developing
- 5:32:48lots of separate templates to represent
- 5:32:51updates. Next is orchestration.
- 5:32:55So what do we mean here is that you
- 5:32:58don't have to worry about the
- 5:33:00complexities of ordering operations. So
- 5:33:03the resource manager orchestrates the
- 5:33:05development of interdependent resources.
- 5:33:08So they are created in the correct
- 5:33:10order. So here you don't have to worry
- 5:33:12that in which order like you don't have
- 5:33:15to think that which one should be
- 5:33:17deployed first which one should be
- 5:33:18deployed second. So ARM template manage
- 5:33:21it reads the code and it manages itself
- 5:33:24and it makes it in order which has to be
- 5:33:26deployed first which has to be deployed
- 5:33:28last. So it is done by the ARM itself.
- 5:33:31You don't have to do it manually. When
- 5:33:34possible, resource manager deploys a
- 5:33:36resource in parallel. So your deployment
- 5:33:39finish faster than serial deployment. It
- 5:33:42can also manage your time by just
- 5:33:45deploying the resources parallelly. So
- 5:33:48it can do the multitasking work like it
- 5:33:51can uh deploy two resources at once so
- 5:33:54that you get the faster results and you
- 5:33:57don't need so many commands to it. you
- 5:33:59can just deploy the template through one
- 5:34:01command rather than imperative command.
- 5:34:04So here you just need to like hit a
- 5:34:07command to run this particular template
- 5:34:09and it all your other tasks are done
- 5:34:11simultaneously. Next is modular files.
- 5:34:15So here you can break your templates
- 5:34:17into smaller reusable components and
- 5:34:20link them togetherment time. You can
- 5:34:23also nest the one template inside the
- 5:34:27another. So you can break down these
- 5:34:29templates into one or more parts
- 5:34:33and then you you can also just create a
- 5:34:35nested loop out of like you can create
- 5:34:40a proper how your deployment should
- 5:34:42process. Next is you can
- 5:34:46create create resources. So as we said
- 5:34:49you can immediately use new Azure
- 5:34:52resources and features into the
- 5:34:54templates. As soon as a resource
- 5:34:56provider introduces new resource you can
- 5:34:59deploy those resources through these
- 5:35:01templates. So you don't have tools or
- 5:35:04modules to be updated before using the
- 5:35:07new services. If you want that
- 5:35:09particular service, it automatically
- 5:35:12grasps that particular service and it
- 5:35:14makes it ready to deploy. Next is
- 5:35:17testing. So when we talk here about
- 5:35:19testing, you can template follows
- 5:35:22recommended guidelines by testing it
- 5:35:25with the ARM template toolkit.
- 5:35:28So what helps you like to test whether
- 5:35:31your whole process or your whole project
- 5:35:34is running smoothly and based on the
- 5:35:37requirements or not. kit is a PowerShell
- 5:35:41script that you can just download from
- 5:35:45GitHub or any portal. So the main
- 5:35:47benefit of this toolkit is that it makes
- 5:35:50it easier for you to develop expertise
- 5:35:52using the template language itself.
- 5:35:54Everything is within the ARM have to
- 5:35:57have a separate testing toolkit for. All
- 5:35:59right. Okay. So one of our folks named
- 5:36:03Rohan has asked is there any other
- 5:36:06toolkit available? As I said Rohan, the
- 5:36:11testing process is within the ARM.
- 5:36:14ARM itself has its own toolkit. So when
- 5:36:18you're deploying a to that ARM API so
- 5:36:22once it is in the process of deployment,
- 5:36:26it it is deployed it will automatically
- 5:36:29go under the testing process and it will
- 5:36:32test the whole template over there. So
- 5:36:34you don't need an extra toolkit for it
- 5:36:37because ARM is one it is managing your
- 5:36:40services. It is managing your resources
- 5:36:43whatever you're deploying into the
- 5:36:44Azure. Lastly once it is deployed it is
- 5:36:47also testing it whether that particular
- 5:36:49resources working smoothly or not. I
- 5:36:52hope you got clear with this.
- 5:36:54Moving ahead we have deployment
- 5:36:57blueprints.
- 5:36:59So before we see what is the advantage
- 5:37:01of these blueprints, let us understand
- 5:37:03what are basically blueprints. So just
- 5:37:06as blueprints allow a particular
- 5:37:09engineer or an architecture to sketch a
- 5:37:11project's design or the parameters. So
- 5:37:15Azure blueprints is also one kind of
- 5:37:17them that enables the cloud architects
- 5:37:19or the central information technology
- 5:37:22groups to define a reputable set of
- 5:37:25Azure resources that implements and
- 5:37:27adheres to an organization's standard
- 5:37:30patterns and requirements. So basically
- 5:37:33the blueprint makes it possible for the
- 5:37:35development team to rapidly build and
- 5:37:37start new environments with same trust
- 5:37:40that they are building within the
- 5:37:41organizational compliances
- 5:37:44with a set of built-in components such
- 5:37:46as networking speed development
- 5:37:49and the delivery is a declarative way to
- 5:37:52orchestrate the deployment of various
- 5:37:54resource templates and other artifacts
- 5:37:57such as role assignments, policy
- 5:37:59assignment, ARM templates itself.
- 5:38:02resource groups. So what is the
- 5:38:04advantage of deploying blueprints is
- 5:38:06like you can meet the regularity and the
- 5:38:08compliances standard. So these
- 5:38:11blueprints include pre-built templates
- 5:38:13for various architectures
- 5:38:15which will help you organize your work
- 5:38:18as well as fasten your deployment rate.
- 5:38:22Next is track deployments.
- 5:38:25So in Azure portal you can review the
- 5:38:27deployment history and get information
- 5:38:30about the template deployment and you
- 5:38:33can also see the template that was
- 5:38:36deployed the parameters value passed in
- 5:38:39and any output values other
- 5:38:41infrastructure as a code service aren't
- 5:38:44tracked through the the portal. So here
- 5:38:47whatever your deployment history you can
- 5:38:50track down the deployment history. You
- 5:38:52can also get to know okay which template
- 5:38:54has been deployed and what were the
- 5:38:57parameters under that particular
- 5:38:58template and what output did you get out
- 5:39:01of those templates. So you can have keep
- 5:39:03a track of each and every deployments.
- 5:39:06Next is exportable code. You can get a
- 5:39:09template for an existing resource either
- 5:39:12exporting the current state of the
- 5:39:15resource group or viewing the template
- 5:39:17used for that particular deployment. So
- 5:39:20viewing these exported template is a
- 5:39:23helpful way to learn about the template
- 5:39:26syntax.
- 5:39:28Lastly, policy as a code. So see as we
- 5:39:31know Azure policy is a policy as a code
- 5:39:34framework to automate the you're using
- 5:39:37the Azure policies. Policy remediation
- 5:39:40is done on the non-compliant resources
- 5:39:43when deployed through the template. So
- 5:39:46these are some of the key benefits of
- 5:39:48the advantages of ARM templates which
- 5:39:51makes it more useful within the Azure
- 5:39:54environment.
- 5:39:55Now let us understand what are
- 5:39:57templates. So basically the template is
- 5:40:00a JavaScript object notation or a JSON
- 5:40:03file that defines the infrastructure and
- 5:40:06configuration of your project. As we had
- 5:40:09discussed before to create a particular
- 5:40:12object or if you want to run a
- 5:40:13particular resource you need to like
- 5:40:15specify you want to use and what are the
- 5:40:18parameters its properties and its name
- 5:40:21and all the information into a JSON file
- 5:40:24and then you upload it. So it becomes a
- 5:40:27template. The JSON file is nothing but a
- 5:40:30template that is run inside the
- 5:40:33Azure resource manager. So the template
- 5:40:36uses a declarative syntax which lets you
- 5:40:40state what you intend to deploy without
- 5:40:42having to write the sequence of
- 5:40:44programming commands to create it. So in
- 5:40:46the template you specify the resources
- 5:40:48to deploy and the properties for those
- 5:40:51resources. That is nothing but in the
- 5:40:53JSON file you specify each and
- 5:40:55everything what are the properties
- 5:40:57whatever resources you want to deploy
- 5:41:00and it becomes a template form and it
- 5:41:03gets deployed in the ARM. Now that we
- 5:41:06have understood what are templates now
- 5:41:08let us understand the template design.
- 5:41:11So defining the templates and the
- 5:41:14resource group is entirely up to you and
- 5:41:16how you want to manage your solution.
- 5:41:19For example, you can deploy your three
- 5:41:21tire application through a single
- 5:41:23template. So as you can see in this
- 5:41:25diagram. So this is a three tire
- 5:41:27template. All right. So in this template
- 5:41:30you can run three types of application
- 5:41:32that is virtual machine, app services
- 5:41:35and SQL database. And it can be done
- 5:41:38within the one resource group itself. So
- 5:41:41here you don't have to define your
- 5:41:43entire infrastructure in a single
- 5:41:46template. Often it makes sense to divide
- 5:41:48your deployment requirements into a set
- 5:41:50of targeted purpose specific templates.
- 5:41:53But you can easily reuse these templates
- 5:41:55for a different solutions. So now if you
- 5:41:58see in this another diagram, you can
- 5:42:00also deploy a three tire solution
- 5:42:04through a parent class or in the nested
- 5:42:07form. So as you can see here, this is a
- 5:42:10parent template. Under this we have
- 5:42:12created sub tempmplates that is one
- 5:42:15template is for virtual machine the
- 5:42:18second template is for app services and
- 5:42:20the third one is for the SQL database.
- 5:42:23So here you can create it in the nested
- 5:42:25form as well. So it depends upon you how
- 5:42:27you need to design your own templates
- 5:42:30and you can create different resource
- 5:42:32groups also or you can add them into a
- 5:42:35single resource group.
- 5:42:37Now let us understand how do erm
- 5:42:39templates work.
- 5:42:41So as you can see in this diagram the RM
- 5:42:44templates actually work on the
- 5:42:47hierarchical scope level. So as we know
- 5:42:49there are different ways to create our
- 5:42:51resources like Azure portal, Azure
- 5:42:54PowerShell and Azure CLI and apart from
- 5:42:58the Azure environment we also have the
- 5:43:00third party clients those are rest
- 5:43:02clients. So these are the different ways
- 5:43:05through which you can like create your
- 5:43:07own resources and your resource groups
- 5:43:10as well. Once you start creating the
- 5:43:12resources in the Azure environment. So
- 5:43:15whenever you're creating a resource
- 5:43:17group or you're opting for a new
- 5:43:20service. So what happens that in the
- 5:43:22back end there creates a JSON file that
- 5:43:25is nothing but an ARM template. So as we
- 5:43:28discussed that ARM template is all about
- 5:43:31the JSON format. It has the JSON syntax.
- 5:43:34So whatever resources we would be
- 5:43:37creating or whatever services we would
- 5:43:39be opting within the Azure environment
- 5:43:41that would be converted in the back end
- 5:43:44as the JSON file and that JSON file then
- 5:43:48goes to our API that is nothing but
- 5:43:51Azure resource manager API. So what does
- 5:43:54the Azure resource manager API do is
- 5:43:56that extract that file and then
- 5:43:59understands what are the requirements in
- 5:44:02that particular template and for that
- 5:44:05like now if you're opting for a resource
- 5:44:07for any services from Azure you always
- 5:44:10need a subscription so it will check
- 5:44:13whether you are subscribed to Azure
- 5:44:16portal or not then based on your
- 5:44:17subscriptions you can it allows the
- 5:44:20particular resources to get deployed. So
- 5:44:24once your subscription is authenticated
- 5:44:27then you have a resource providers. So
- 5:44:31in the ARM template we specify what are
- 5:44:34the different services we want to opt
- 5:44:36for or what and all resources we require
- 5:44:40within the Azure environment. So it goes
- 5:44:44automatically into our resource provider
- 5:44:46and within that we can run multiple
- 5:44:49objects that are nothing but our
- 5:44:51services. for example virtual machines,
- 5:44:53app services, storage account and SQL.
- 5:44:56So this is how ARM templates or the
- 5:44:59whole Azure resource manager work. So in
- 5:45:02a just if I call it is is like whatever
- 5:45:05resource you are uh trying to create in
- 5:45:08the Azure portal or through PowerShell
- 5:45:11or through CLI or from any third party
- 5:45:14application. So it does have a template
- 5:45:17and in the back end which is then
- 5:45:19extracted by the RM that is Azure
- 5:45:22resource manager API. Then it processes
- 5:45:24the particular template for the
- 5:45:26deployment based on your subscriptions.
- 5:45:29Now we know that how templates usually
- 5:45:32work. It uses the JavaScript object
- 5:45:35notation syntax that also includes the
- 5:45:38advanced capabilities. So in this
- 5:45:40particular syntax we have the different
- 5:45:42components. So the first component is
- 5:45:46the parameters. So what are actually
- 5:45:48parameters? So here the parameters allow
- 5:45:51you to pass the different values to the
- 5:45:54ERM template for use during the
- 5:45:56deployment. Some common examples like
- 5:45:59you can include the names of the
- 5:46:00resources or which Azure region to host
- 5:46:03them. So what do they do is it enables
- 5:46:07your templates to be more dynamic and
- 5:46:10used across the different environments.
- 5:46:12So parameters require a name and a type.
- 5:46:15So here you can include strings, array,
- 5:46:17objects, integers, boolean or any secure
- 5:46:21string like password. Optionally
- 5:46:23parameters also contain the description
- 5:46:26of how to use these particular
- 5:46:28parameter. So you can include default
- 5:46:30values to your parameters so that you do
- 5:46:34not need to provide one at runtime and
- 5:46:36you can configure it with a set number
- 5:46:39of values. So this configuration is
- 5:46:42helpful when you want to like limit what
- 5:46:45SKUs or location a person can deploy the
- 5:46:48resources.
- 5:46:49The next component is functions.
- 5:46:53So in ARM template functions allow you
- 5:46:56to create complicated expressions that
- 5:46:59you don't want to repeat throughout the
- 5:47:01template. So here what functions
- 5:47:03actually do is like there are lot of
- 5:47:06functions in other programming language
- 5:47:08like when we code you add on different
- 5:47:10kinds of function like more than one
- 5:47:12function you can add so you have a list
- 5:47:16of functions into it but here you can
- 5:47:19tell them when you need to run them and
- 5:47:22you can pass informations to them and
- 5:47:25expect the return value from them. For
- 5:47:27example say you need to create a unique
- 5:47:29name of a resource. So instead of
- 5:47:31copying and pasting the same code to
- 5:47:34generate the unique name, you can create
- 5:47:36a function that makes the unique name.
- 5:47:38For example, if a function called as
- 5:47:40unique name with a parameter named
- 5:47:43prefix returns a unique name using the
- 5:47:46resource group ID. So here note this
- 5:47:49name space value. So this value can be
- 5:47:51anything you want. So here the functions
- 5:47:53require a different name space value to
- 5:47:56avoid a naming conflict with the regular
- 5:48:00template function. Next is variables. So
- 5:48:04variables are not much different in ARM
- 5:48:06templates that you find in another
- 5:48:08programming languages though. Here the
- 5:48:11variables contains the values that are
- 5:48:13used repeatedly throughout the template.
- 5:48:16Like functions you can use variables to
- 5:48:18create complicated expression. Like
- 5:48:21functions, you can also use variables to
- 5:48:24create complicated expression so that
- 5:48:26you don't have to repeat them into the
- 5:48:28same template. And like parameters,
- 5:48:31variables have the same data type such
- 5:48:33as strings, objects, and integers. So
- 5:48:35you can define variables using colon as
- 5:48:38assigned operator. For example, instead
- 5:48:40of passing the Azure region as a
- 5:48:42parameter, you can define it as a
- 5:48:44variable. So you can just type down the
- 5:48:47location and whichever uh required
- 5:48:50location you need you can specify there.
- 5:48:53Next are resources. So what are
- 5:48:55resources basically? So the resources
- 5:48:58defines the Azure resources to deploy
- 5:49:01within the particular template. So the
- 5:49:03resources can be anything as small as a
- 5:49:05network security group all the way like
- 5:49:08it can be virtual machine storage
- 5:49:10account or functions or any other
- 5:49:13services which are within the Azure
- 5:49:16environment.
- 5:49:17So when you specify a resource so you
- 5:49:20have to give a couple of explanation in
- 5:49:22each part like you need to specify the
- 5:49:25name of the resource and then you also
- 5:49:28need to give the type of the resource
- 5:49:29you need to deploy whether you need to
- 5:49:32like refer to the highle family of the
- 5:49:34resource to deploy for example like
- 5:49:37Microsoft compute Microsoft storage or
- 5:49:41network so this will help you out to map
- 5:49:43out these resources to deploy more
- 5:49:46precisely Next you need to also specify
- 5:49:48the API version that is like to check
- 5:49:52the configuration of that particular
- 5:49:54resource. So you also specify the
- 5:49:57dependencies. So here dependencies
- 5:49:59determine the order of Azure how Azure
- 5:50:02should deploy these particular
- 5:50:04resources. So for example if an ARM
- 5:50:07template is deploying a virtual machine
- 5:50:09and then a virtual network. So the
- 5:50:12virtual machine will exist first before
- 5:50:15creating a virtual network and then you
- 5:50:18all then you start giving up the
- 5:50:20properties. So here the properties
- 5:50:22contain the configuration information
- 5:50:24for the deployment and last is the
- 5:50:28output. So the output section will
- 5:50:30define the values and information
- 5:50:32returned from the deployment. It is
- 5:50:35helpful for the data that Azure
- 5:50:36dynamically generates through the public
- 5:50:40IP address.
- 5:50:41So these are the key components that are
- 5:50:43used in ARM templates and which will
- 5:50:46help you to work with these Azure
- 5:50:49resource manager.
- 5:50:51Now that we have an overview on the ARM
- 5:50:54ARM templates and all the key concepts
- 5:50:58related to ARM templates, now let's have
- 5:51:01a quick demo and let's see how do they
- 5:51:03actually work. So for that let's quickly
- 5:51:06move on to our Azure portal.
- 5:51:09So we need to first log into our Azure.
- 5:51:13So let's quickly sign in.
- 5:51:17So this is our Azure portal. Now as you
- 5:51:20discussed that there are different ways
- 5:51:22like you can use the portal itself to
- 5:51:26create your services. As you can see
- 5:51:27here there are different services you
- 5:51:29can opt for like create a resource group
- 5:51:31or service bus, virtual machines,
- 5:51:34application gateways etc.
- 5:51:36And you also have your CLI that is your
- 5:51:40cloud shell. So you can even run your
- 5:51:42commands and uh you can create your
- 5:51:45resource group. So let's see how are
- 5:51:48these templates created while we create
- 5:51:51a resource group or any resource through
- 5:51:54Azure portal. So let's quickly create a
- 5:51:57resource group first. So as you can see
- 5:51:59we don't have any resource group yet. So
- 5:52:02let's quickly create a resource group.
- 5:52:06So we'll give any random name to it. So
- 5:52:08as it is ARM let's give it a name as ARM
- 5:52:13demo 1 2 3 and you can choose any of
- 5:52:18your region as it's up to you like of
- 5:52:21your choice based on your requirements.
- 5:52:24So I'll take west US because that region
- 5:52:28is more free. So let's review and create
- 5:52:32and your validation is passed.
- 5:52:35Let's create.
- 5:52:37So when you see over here your resource
- 5:52:40group has been created now. And now you
- 5:52:43can also see your ARM demo has been
- 5:52:46automatically created. Now we'll just go
- 5:52:49inside. So now that we have created a
- 5:52:51resource group. Now if I just go into
- 5:52:54their properties like we just click onto
- 5:52:56this resource group and we'll just go to
- 5:52:59their export template. So here you can
- 5:53:03see the template has been created. So
- 5:53:06this is a snippet code where it shows
- 5:53:08whatever whatever object you have
- 5:53:10created. So under that what are the
- 5:53:12parameters and what are the variables
- 5:53:14you need to add. This happens in the
- 5:53:16back end once you create any resource or
- 5:53:19any resource group. So one of our folks
- 5:53:22have a doubt the shwini has a doubt that
- 5:53:25how does these template create. So
- 5:53:28Tjishwini as we had discussed before
- 5:53:31that whenever you create anything in the
- 5:53:34Azure no matter if it is a resource
- 5:53:37group or if you're using any services so
- 5:53:40whatever resource you're creating either
- 5:53:43it is through Azure portal or partial or
- 5:53:46CLI. So in the back end it automatically
- 5:53:50creates a JSON file. In the back end, it
- 5:53:53automatically creates a JSON file which
- 5:53:56then becomes a template. It is formed in
- 5:53:59the backend process so that it goes to
- 5:54:01the ARM that is our ARM API, Azure
- 5:54:05resource manager API. Then it can
- 5:54:07process the rest of the resources
- 5:54:09accordingly. All right. So it is formed
- 5:54:13automatically. So whenever you create
- 5:54:15any resources or any services you're
- 5:54:18applying to or you're utilizing any
- 5:54:20resources and you create any resource so
- 5:54:23it will create a template and that
- 5:54:26template will then go to the our ARM and
- 5:54:28from there the whole process of the
- 5:54:31deployment starts. I hope you got an
- 5:54:33answer to your question. So as we have
- 5:54:36seen that we created a resource group
- 5:54:38and as we go under their overview you
- 5:54:41just come into these export template and
- 5:54:44here you find out your template that is
- 5:54:46the JSON file and you can even download
- 5:54:49it or uh you can send it to deploy as
- 5:54:52well. So now what we'll do we'll create
- 5:54:54a resource within this resource group.
- 5:54:57So you can take any resources. So I'll
- 5:55:00just take up the storage account. Let's
- 5:55:02create a storage account at first.
- 5:55:05And our resource group is ARM demo 123.
- 5:55:10And now let's name our storage account
- 5:55:12as well.
- 5:55:15And we'll change our location.
- 5:55:20All right. And our performance would be
- 5:55:22standard because as our subscription is
- 5:55:27free and it is only for the demo
- 5:55:29purpose. So we'll be keeping everything
- 5:55:31as it is and we'll just review and
- 5:55:34create.
- 5:55:35All right. So here as you see they are
- 5:55:39initializing the template deployment to
- 5:55:41the resource group. So as I said
- 5:55:44whatever resource you're creating it
- 5:55:47automatically creates a template of that
- 5:55:49particular resource within that
- 5:55:50particular resource group. So now once
- 5:55:54it gets deployed we'll see. So here you
- 5:55:57see the overview, the input and outputs
- 5:55:59and your template. So we'll just get
- 5:56:03into this and you see this is the
- 5:56:06template of our storage account. This is
- 5:56:09how your ARM templates are created.
- 5:56:19Let us understand what is Azure DevOps.
- 5:56:22Now, Azure DevOps provides developer
- 5:56:24services for support teams to plan work,
- 5:56:28collaborate on code development, and
- 5:56:30build and deploy applications. Azure
- 5:56:32DevOps supports a culture and set of
- 5:56:35processes that bring developers and
- 5:56:37project managers and contributors
- 5:56:39together to complete software
- 5:56:41development. It allows organizations to
- 5:56:44create and improve products at a very
- 5:56:46fast pace than they can with traditional
- 5:56:49software development approaches like the
- 5:56:51waterfall approach. You can now work in
- 5:56:53the cloud using Azure DevOps services or
- 5:56:56on premises using Azure DevOps server.
- 5:56:59So you have two options now. Azure
- 5:57:02DevOps provides integrated features that
- 5:57:04you can access through your web browser
- 5:57:07or IDE client. Now you can use one or
- 5:57:10more of the following standalone
- 5:57:12services based on your business needs.
- 5:57:15The first one that we'll be talking
- 5:57:16about is Azure repos which provides git
- 5:57:19repositories or team foundation version
- 5:57:21control for source control of your code.
- 5:57:24Azure pipelines on the other hand
- 5:57:26provides build and release services to
- 5:57:28support continuous integration and
- 5:57:30delivery of your applications. Azure
- 5:57:32boards delivers a suite of agile tools
- 5:57:35to support planning and tracking work
- 5:57:37code defects and issues using canban and
- 5:57:40scrum methods. Azure test plans on the
- 5:57:43other hand provides several tools to
- 5:57:45test your applications including manual
- 5:57:47or exploratory testing and continuous
- 5:57:49testing. The last component is Azure
- 5:57:52artifacts which allows teams to share
- 5:57:54packages such as Maven, npm, nuette and
- 5:57:58more from public and private sources and
- 5:58:00integrate package sharing into your
- 5:58:02pipelines. Now that we know what is
- 5:58:04DevOps and Azure DevOps, let's
- 5:58:07understand how to implement continuous
- 5:58:09integration. Before that we have to
- 5:58:11understand what is Azure pipelines. This
- 5:58:13is really important. Now, Azure
- 5:58:15Pipelines automatically builds and tests
- 5:58:18code projects to make them available to
- 5:58:20others. That's all it does. So, it works
- 5:58:22with just about any language. It could
- 5:58:25be Java, Python or project type. And
- 5:58:28these pipelines combines continuous
- 5:58:30integration and continuous delivery to
- 5:58:32constantly and consistently test and
- 5:58:35build your code and ship it to any
- 5:58:37target eventually. Now, you must be
- 5:58:39wondering what is continuous
- 5:58:40integration? Continuous integration is
- 5:58:42the practice used by development teams
- 5:58:44to automate the merging and testing of
- 5:58:47code. Implementing continuous
- 5:58:49integration helps to catch bugs way
- 5:58:51early in the development cycle which
- 5:58:53makes them less expensive to fix.
- 5:58:55Automated tests execute as part of the
- 5:58:58continuous integration process to ensure
- 5:59:00quality. Artifacts are produced from
- 5:59:02continuous integration systems and fed
- 5:59:05to release processes to drive frequent
- 5:59:07deployments. The build service in TFS
- 5:59:09helps you set up and manage continuous
- 5:59:11integration for your applications. Now
- 5:59:14continuous delivery on the other hand is
- 5:59:16a process by which code is built, tested
- 5:59:18and deployed to one or more test and
- 5:59:21production environments. Deploying and
- 5:59:23testing in multiple environments drives
- 5:59:26quality. So continuous integration
- 5:59:28systems produce the deployable artifacts
- 5:59:30including infrastructure and
- 5:59:32applications. Automated release
- 5:59:34processes consume these artifacts to
- 5:59:36release new versions and fixes to
- 5:59:38existing systems. Monitoring and
- 5:59:41alerting systems run continually to
- 5:59:43drive visibility into the entire
- 5:59:45continuous delivery process. The release
- 5:59:48service in TFS helps you set up and
- 5:59:50manage continuous delivery for your
- 5:59:52applications. Azure also has continuous
- 5:59:54testing on premises or in the cloud
- 5:59:57which is the use of automated build
- 5:59:59deploy test workflows and with the
- 6:00:01choice of technologies and frameworks
- 6:00:03that test your changes continuously in a
- 6:00:05fast scalable and efficient manner.
- 6:00:08Implementing CI/CD pipelines helps to
- 6:00:10ensure consistent and quality code
- 6:00:12that's readily available to users. And
- 6:00:15Azure pipelines provides a quick, easy
- 6:00:18and safe way to automate building your
- 6:00:20projects and making them available to
- 6:00:22users. The next question that arises is
- 6:00:25why should one use Azure pipelines,
- 6:00:27right? So the first and the most
- 6:00:29important benefit of using Azure
- 6:00:31pipelines is it works with any language,
- 6:00:34any platform. That's one of the biggest
- 6:00:36advantage. And the next advantage is
- 6:00:38that it deploys to different types of
- 6:00:40targets at the same time. It also
- 6:00:43integrates with Azure deployments. It
- 6:00:45builds on Windows, Linux or Mac
- 6:00:47machines. That is it works on any OS.
- 6:00:50And it also integrates with the biggest
- 6:00:52and the most popular code hosting
- 6:00:55website that is GitHub. It also works
- 6:00:57with open-source projects. So, so this
- 6:00:59is definitely why one should opt for
- 6:01:02Azure to create the pipelines. Now,
- 6:01:04let's move on and learn the differences
- 6:01:07between continuous integration and
- 6:01:09continuous delivery. Azure pipeline
- 6:01:11supports continuous integration and
- 6:01:13continuous delivery to constantly and
- 6:01:15consistently test and build your code
- 6:01:18and ship it to any target. Now you
- 6:01:21accomplish this by defining a pipeline.
- 6:01:23You define pipelines using the YML
- 6:01:26syntax or through the user interface
- 6:01:28that is the classic way. Continuous
- 6:01:30integration. So in continuous
- 6:01:32integration the tests are automated and
- 6:01:34builds for your project. Continuous
- 6:01:36integration also helps to catch bugs or
- 6:01:38issues early in the development cycle
- 6:01:40when they're easier and faster to fix.
- 6:01:43Items known as artifacts are produced
- 6:01:45from continuous integration systems.
- 6:01:47They're used by continuous delivery
- 6:01:49release pipelines to drive automatic
- 6:01:51deployments. Continuous delivery on the
- 6:01:53other hand automatically deploys and
- 6:01:56test code in multiple stages to help
- 6:01:58drive quality. Continuous integration
- 6:02:01systems produce deployable artifacts
- 6:02:03which include infrastructure and
- 6:02:05applications. Automated release
- 6:02:08pipelines consume these artifacts to
- 6:02:10release new versions and fixes to the
- 6:02:12target of your choice. Now that we know
- 6:02:14the difference between continuous
- 6:02:16integration and continuous delivery.
- 6:02:17Let's move ahead and learn how to create
- 6:02:19Azure pipelines. So the first way to
- 6:02:22create Azure pipelines is to define
- 6:02:24pipelines using Yml syntax. You define
- 6:02:27your pipeline in a YML file called Azure
- 6:02:29pipelines yimml with the rest of your
- 6:02:31application. The pipeline is versionized
- 6:02:34with your code and it follows the same
- 6:02:36branching structure. So you can get a
- 6:02:38validation of your changes through code
- 6:02:40reviews in pull requests and branch
- 6:02:42build policies. Every branch you use can
- 6:02:45modify the build policy by modifying the
- 6:02:47Azure pipelines.imml file. A change to
- 6:02:50the build process might cause and break
- 6:02:52or result in an unexpected outcome. So
- 6:02:55be careful and this occurs because the
- 6:02:57change is in version control with the
- 6:02:59rest of your code base and you can
- 6:03:00easily identify the issue. So the first
- 6:03:03step is to configure Azure pipelines to
- 6:03:05use your git repository where you're
- 6:03:07going to edit your code where you're
- 6:03:08going to really write where you're going
- 6:03:10to really store your entire project and
- 6:03:12then you're going to edit your Azure
- 6:03:14pipelines.l file to define your build.
- 6:03:17In the third step, you're going to push
- 6:03:18your code to your version control
- 6:03:20repository. And this action finally
- 6:03:22kicks off the default trigger to build
- 6:03:24and deploy and then eventually monitor
- 6:03:27your results. So once the pipeline has
- 6:03:29been created, your code has been now
- 6:03:31updated, built, tested, and packaged, it
- 6:03:34can then be deployed to any target that
- 6:03:36you'd like. There's also another way to
- 6:03:38create your Azure pipelines. That is to
- 6:03:40define pipelines using the classic
- 6:03:42interface. Now here you create and
- 6:03:44configure pipelines in the Azure DevOps
- 6:03:47web portal with a classic user interface
- 6:03:50editor. So what you do is you define a
- 6:03:52build pipeline to build and test your
- 6:03:54code and then to publish artifacts. You
- 6:03:57also define a release pipeline to
- 6:03:59consume and deploy those artifacts to
- 6:04:01deployment targets. So here the first
- 6:04:03step is to configure Azure pipelines to
- 6:04:06use your git repository. Then you use
- 6:04:08the Azure pipelines classic editor to
- 6:04:10create and configure your build and
- 6:04:12release pipelines. Then you finally push
- 6:04:15your code to your version control
- 6:04:16repository. This action triggers your
- 6:04:19pipeline and runs tasks such as building
- 6:04:21or testing codes. The build creates an
- 6:04:24artifact that's used by the rest of your
- 6:04:26pipeline to run tasks such as deploying
- 6:04:28to staging or even production. So the
- 6:04:31tasks that are released is termed as
- 6:04:33continuous delivery. And the part where
- 6:04:35you're building tasks and testing them
- 6:04:37is termed as continuous integration. Now
- 6:04:40that we know how to create your own
- 6:04:41Azure pipelines, let's go ahead and
- 6:04:44learn to set up release management
- 6:04:45workflow. So the first thing that we're
- 6:04:47going to learn is how to design a
- 6:04:49release strategy. So we have to
- 6:04:50understand what is release pipelines.
- 6:04:52Okay. So release pipelines enable teams
- 6:04:55to continuously deploy their application
- 6:04:57across different stages with lower risk
- 6:04:59and with faster pace. Deployments to
- 6:05:02each stage can be fully automated by
- 6:05:04using jobs and tasks. Teams can also
- 6:05:07take advantage of the approvals and
- 6:05:10gates feature to control the workflow of
- 6:05:12the deployment pipeline. Here, each
- 6:05:14stage in a release pipeline can be
- 6:05:16configured with pre-eployment and post-
- 6:05:19deployment conditions that can include
- 6:05:21waiting for users to manually approve or
- 6:05:24reject deployments and checking with
- 6:05:26other automated systems that specific
- 6:05:28conditions are met. In addition, teams
- 6:05:31can configure manual validations to
- 6:05:33pause the deployment pipeline and prompt
- 6:05:35users to carry out manual tasks, then
- 6:05:38resume or reject the deployment by using
- 6:05:40gates, approvals, and manual
- 6:05:43intervention. You can take full control
- 6:05:45of your releases to meet a wide range of
- 6:05:47deployment requirements. You can also
- 6:05:50release deployment control using gates.
- 6:05:52Gates allow automatic collection of
- 6:05:54health signals from external services
- 6:05:57and then promote the release when all
- 6:05:58the signals are successful at the same
- 6:06:00time or stop the deployment on timeout.
- 6:06:03Typically gates are used in connection
- 6:06:05with incident management, problem
- 6:06:07management, change management,
- 6:06:09monitoring and external approval
- 6:06:11systems. Some scenarios and use cases
- 6:06:14for gates are incident and issue
- 6:06:16management. Here you ensure the required
- 6:06:19status for work items, incidents and
- 6:06:21issues occur regularly. For example, now
- 6:06:25you have to ensure deployment occurs
- 6:06:27only if no priority zero bugs exist and
- 6:06:31validation that there are no active
- 6:06:33incidents take place after deployment.
- 6:06:35Also another scenario would be to seek
- 6:06:37approvals outside Azure pipelines. here.
- 6:06:40Notify non- Aure pipeline users such as
- 6:06:43legal approval departments, auditors or
- 6:06:46IT managers about a deployment by
- 6:06:49integrating with approval collaboration
- 6:06:51systems such as Microsoft Teams or Slack
- 6:06:54and waiting for the approval to
- 6:06:56complete. In another scenario, there
- 6:06:58could be quality validation query
- 6:07:01metrics from tests on the build
- 6:07:03artifacts such as pass rate or code
- 6:07:06coverage and deploy only if they are
- 6:07:08within a required threshold. There are
- 6:07:10many other use cases like security scan
- 6:07:12on artifacts, user experience relative
- 6:07:14to baseline change management,
- 6:07:16infrastructure health. There are many
- 6:07:17scenarios that you can use gates for. So
- 6:07:20this is a really important topic. Moving
- 6:07:23on, let us learn how to implement
- 6:07:25compilence and security. Firstly, we
- 6:07:27will have to design a dependent
- 6:07:29management strategy. Before we learn how
- 6:07:32to design one, we will have to
- 6:07:34understand what is dependency
- 6:07:35management. Now, with modern software
- 6:07:38architectures and development methods,
- 6:07:40software dependencies can come
- 6:07:42intertwined quickly with more online
- 6:07:44repositories like GitHub, Docker Hub,
- 6:07:46pre-built libraries and services can be
- 6:07:49easily published and leveraged. Now
- 6:07:51these projects can be managed by all
- 6:07:53sorts of individuals and groups and have
- 6:07:55a very wide range of work ethics from
- 6:07:57well-maintained solutions with good
- 6:08:00community and multiple contributors and
- 6:08:02release schedules that is all the way to
- 6:08:04the other end of the spectrum. Code is
- 6:08:07also developed internally and is often
- 6:08:09reused. Wherever the source comes from
- 6:08:11the problem is the same. Once
- 6:08:13implemented one project now has a
- 6:08:16dependency on other. Now for example
- 6:08:18when a team comes together to build a
- 6:08:20solution they may decide for various
- 6:08:22reasons to leverage code that already
- 6:08:24exists. Now depending on the type and
- 6:08:26language used for that particular
- 6:08:27project there are different sources that
- 6:08:29can be leveraged to accelerate
- 6:08:31development. For example, let's say
- 6:08:33you're running a net application that's
- 6:08:35going to be processing JSON that you
- 6:08:37retrieve from Azure to describe Azure
- 6:08:39resources. Now, rather than having to
- 6:08:41write all the logic to handle the JSON
- 6:08:43file, your team decides to leverage a
- 6:08:45popular package called Newtonsoft.json,
- 6:08:49which is a publicly available package.
- 6:08:51You could leverage the Nougat package
- 6:08:53that's already been built and published
- 6:08:55for consumption. By leveraging this
- 6:08:57package in your code, you have created a
- 6:08:59dependency on the package for your
- 6:09:01solution. Now, you must be wondering
- 6:09:03what is a package? A package is simply a
- 6:09:05standardized way of distributing codes
- 6:09:08that can be consumed by another
- 6:09:09application or solution. Metadata is
- 6:09:12used to help store and version and
- 6:09:14identify these packages. So there are
- 6:09:16different types of packages, right? So
- 6:09:18these artifacts can be NG, npm, they can
- 6:09:21also be Maven and all of these are part
- 6:09:26of the packages. Okay, so we'll be
- 6:09:28talking about NG. So, Nougat is a free
- 6:09:31open-source package manager designed for
- 6:09:33the Microsoft development platform used
- 6:09:36innet since its introduction in 2010.
- 6:09:40Nougat has evolved into a larger
- 6:09:41ecosystem of tools and services. So, it
- 6:09:44is distributed as a visual studio
- 6:09:46extension. The Nougat packet has a nupg
- 6:09:50suffix and as a zip file with a specific
- 6:09:53folder structure. Maven packages on the
- 6:09:55other hand are often used for Java
- 6:09:57projects. Maven can also be used to
- 6:09:59build and manage projects written in C,
- 6:10:01Ruby, Scala and other languages. Now a
- 6:10:04project object model file describing the
- 6:10:06metadata of the project is also stored
- 6:10:08within this package. npm on the other
- 6:10:10hand is a package manager for JavaScript
- 6:10:12programming language and it's primarily
- 6:10:14used for runtime environments with
- 6:10:16node.js and npm package contains a
- 6:10:19package.json file describing the
- 6:10:21metadata of that package. The Python
- 6:10:24package index is a repository of
- 6:10:26software for the Python programming
- 6:10:28language. Python's packaging is built
- 6:10:31for distributing reusable code called
- 6:10:33libraries between developers. Now these
- 6:10:35packages are libraries used as building
- 6:10:38blocks to create applications and have a
- 6:10:40tar.gz extension. Azure DevOps also has
- 6:10:44the ability to store universal packages.
- 6:10:46A universal package installed one or
- 6:10:49more files together in a single package
- 6:10:51that have a name and version which is
- 6:10:53useful for many ad hoc situations where
- 6:10:56you want diversion and track files.
- 6:10:58Containerized workloads are becoming
- 6:11:00more popular as platforms like
- 6:11:02Kubernetes are becoming mainstream.
- 6:11:04We'll be talking about Kubernetes later
- 6:11:05on in the session. Docker images on the
- 6:11:08other hand are generally complete
- 6:11:09self-contained system. Azure artifacts
- 6:11:12are available in Azure DevOps DevOps
- 6:11:15servers as well as in team foundation
- 6:11:17server 2017 and 2018. The sources allow
- 6:11:21you to integrate packages seamlessly
- 6:11:23into your CI/CD pipeline. Now there are
- 6:11:26three concepts you need to understand
- 6:11:27when managing these Azure artifacts that
- 6:11:29we just talked about that is feeds,
- 6:11:32views and upstream sources. Feeds are
- 6:11:34the primary method for delivering
- 6:11:35packages. Microsoft really recommends
- 6:11:37one feed per project and to achieve this
- 6:11:40we can utilize the feature of upstream
- 6:11:42sources which allows you to combine
- 6:11:44multiple sources into a single feed. Now
- 6:11:47using this method allows you to control
- 6:11:50sources in your project in the various
- 6:11:52levels of access. Here we see two
- 6:11:54options we have when adding upstream
- 6:11:56sources. A public source and from an
- 6:11:59existing Azure artifacts feed from
- 6:12:02within your Azure DevOps organization.
- 6:12:04When adding a public source, the only
- 6:12:06supported package type is an npm source
- 6:12:09which we've already talked about. Now,
- 6:12:11when you're adding a source from within
- 6:12:12your Azure DevOps organization, you can
- 6:12:14target an Azure artifacts feed. This
- 6:12:17allows you to use different package
- 6:12:18types that is NuGet, Python, and Maven.
- 6:12:20You can scope the visibility of your
- 6:12:22package feed to your organization, which
- 6:12:24is multiple projects. And this is by
- 6:12:26default. Now, a benefit of bringing all
- 6:12:28these packages together in one feed is
- 6:12:31the copies are made of the sources. Now
- 6:12:33if you're using sources and those
- 6:12:34sources goes offline, you'll be able to
- 6:12:36maintain your own version of this
- 6:12:38packet. Upstream sources on the other
- 6:12:40hand enable you to manage your products
- 6:12:42dependencies in a single place. Using
- 6:12:45upstream sources makes it easy to use
- 6:12:47common packages in your solution. It has
- 6:12:50the added benefit and gives you
- 6:12:52protection against outages and corrupted
- 6:12:54or compromised packages from upstream
- 6:12:56sources and also as a copy of the
- 6:12:59packages stored locally. Now let's move
- 6:13:01on and understand how to manage security
- 6:13:03and compliance. Whitesource Bold is a
- 6:13:06lightweight open-source security and
- 6:13:08management solution integrated within
- 6:13:11Microsoft's Azure DevOps services and
- 6:13:14Azure DevOps server formally that is DFS
- 6:13:17products. It enables you to do many
- 6:13:19things like detect and remedy vulnerable
- 6:13:22open-source components. Also, you can
- 6:13:25generate comprehensive open-source
- 6:13:27inventory reports per project to build.
- 6:13:29You can also enforce open-source license
- 6:13:32compilence including dependencies
- 6:13:34licenses and also you can identify
- 6:13:37outdated open-source libraries with
- 6:13:39recommendations to update. This is just
- 6:13:42one solution to manage security and
- 6:13:44compliance. Let's move on and understand
- 6:13:46how to implement continuous feedback. So
- 6:13:50you can design system feedback
- 6:13:52mechanisms. The first one is to use
- 6:13:55application insights metric dashboards.
- 6:13:57Now, application insights has always
- 6:13:59provided a summary overview pane to
- 6:14:02allow quick at a glance assessment of
- 6:14:04your application's health and
- 6:14:05performance. The new overview dashboard
- 6:14:08provides a faster, more flexible
- 6:14:10experience. Dashboards are basically
- 6:14:12customizable interactive signboards that
- 6:14:15provide real-time information.
- 6:14:17Dashboards are associated with the team
- 6:14:19or a project and display configurable
- 6:14:21charts and widgets. Charts on the other
- 6:14:23hand are query based status or trend
- 6:14:26charts derived from a work item query or
- 6:14:29test results. Widgets on the other hand
- 6:14:31display configurable information and
- 6:14:33charts on dashboards. The widget catalog
- 6:14:36provides brief descriptions of those
- 6:14:38widgets available to you. Now in
- 6:14:40addition, you can add widgets provided
- 6:14:43through the Azure DevOps marketplace. In
- 6:14:45context, reports are system generated
- 6:14:47charts that support specific services.
- 6:14:50Examples are team velocity, sprint
- 6:14:52burndown, and the cumulative flow
- 6:14:54diagram. These reports are displayed on
- 6:14:56the analytics tab for a specific service
- 6:14:59and derive data from analytics. PowerBI
- 6:15:02reports allow users to create rich
- 6:15:04customized PowerBI reports or other
- 6:15:07reports using O data queries of
- 6:15:09analytics data and the return JSON data.
- 6:15:11If you see the fourth point, you can
- 6:15:13also configure a burndown or burn up
- 6:15:15widget. The burndown and burnup widgets
- 6:15:18provide the flexibility to create charts
- 6:15:20for any type of scope, any number of
- 6:15:22teams and within specified time periods.
- 6:15:25Burndown charts focus on remaining work
- 6:15:28within a specified time period while
- 6:15:30burnup charts focus on completed work.
- 6:15:33In the last point, both lead time and
- 6:15:34cycle time widgets are extremely useful
- 6:15:36to teams as they indicate how long it
- 6:15:39takes for work to flow through their
- 6:15:40development pipeline. Lead time measures
- 6:15:43the total time elapsed from the creation
- 6:15:44of work items to their completion. Cycle
- 6:15:47time on the other hand measures the time
- 6:15:49it takes for your team to complete work
- 6:15:51items once they begin actively working
- 6:15:53on them. Moving on, let us understand
- 6:15:55how to optimize feedback mechanisms. So
- 6:15:58the application life cycle doesn't
- 6:16:00finish with application deployment.
- 6:16:02Feedback is a very important element of
- 6:16:04refining an application. Whether that's
- 6:16:06exception detection and diagnosis or
- 6:16:09improving the user experience. You can
- 6:16:11do this in various ways. You can analyze
- 6:16:14alerts to establish a baseline. You can
- 6:16:16analyze telemetry to establish a
- 6:16:18baseline. You can also perform life site
- 6:16:21reviews. And you can also perform
- 6:16:22ongoing tuning to reduce non-actionable
- 6:16:25alerts. Moving on to the next part of
- 6:16:27the session. We'll be talking about some
- 6:16:29of the Azure tools. The first one that
- 6:16:31we're going to talk about is Azure
- 6:16:32Kubernetes Service, which simplifies
- 6:16:35deploying a managed Kubernetes cluster
- 6:16:38in Azure by offloading much of the
- 6:16:40complexity and operational overhead to
- 6:16:42Azure. Now, as a hosted Kubernetes
- 6:16:45service, Azure handles critical tasks
- 6:16:47for you like health monitoring and
- 6:16:49maintenance. Since the Kubernetes
- 6:16:51masters are managed by Azure, you only
- 6:16:53manage and maintain the agent nodes.
- 6:16:55Thus, a managed Kubernetes service AKS
- 6:16:58is free. You only pay for the agent
- 6:17:00nodes within your clusters and not for
- 6:17:02the masters. You can create an AKS
- 6:17:05cluster using the Azure portal, the
- 6:17:07Azure CLI, Azure PowerShell or even
- 6:17:10using templated driven deployment
- 6:17:12options such as resource manager
- 6:17:13templates and Terraform. Now when you
- 6:17:15deploy an AKS cluster, the Kubernetes
- 6:17:18master and all nodes are deployed and
- 6:17:20configured for you. Additional features
- 6:17:22such as advanced networking, Azure
- 6:17:24active directory integration and
- 6:17:26monitoring can also be configured during
- 6:17:28the deployment process. Windows server
- 6:17:30containers are also supported in AKS.
- 6:17:33Now there are some technologies used for
- 6:17:35configuration management like ARM
- 6:17:38templates, Terraform, Chef Puppet,
- 6:17:40Ansible. ARM templates are a way to
- 6:17:42declare the objects you want, the types,
- 6:17:45names, and properties in a JSON file
- 6:17:47which can be checked into source control
- 6:17:49and managed like any other code file.
- 6:17:52ARM templates are what really gives us
- 6:17:54the ability to roll out Azure
- 6:17:55infrastructure is code. Also, there is
- 6:17:57Terapform which is an open-source tool
- 6:17:59for provisioning and managing cloud
- 6:18:01infrastructure. It codifies
- 6:18:03infrastructure in configuration files
- 6:18:05that describe the topology of cloud
- 6:18:07resources. Now these resources include
- 6:18:09virtual machines, storage accounts and
- 6:18:11networking interfaces. The Terraform CLI
- 6:18:14provides a simple mechanism to deploy
- 6:18:16and version the configuration files to
- 6:18:19Azure. Supported by Chef, the Chef
- 6:18:21Automate Azure Marketplace solution
- 6:18:24enables you to build, deploy and manage
- 6:18:26your infrastructure and applications
- 6:18:28collaboratively. Moving on to the last
- 6:18:31part of the session, we have a case
- 6:18:32study for you. So we'll be talking about
- 6:18:35how Service Now want to make work easier
- 6:18:38and more efficient for their customers
- 6:18:40through its software as a service
- 6:18:42workflow platform. Now to maximize the
- 6:18:44value it can deliver, Service Now moved
- 6:18:46its business critical SAP estate
- 6:18:49including 50 essential applications,
- 6:18:52more than 10 SAP landscapes, 50 database
- 6:18:55instances and over 50 terabytes of
- 6:18:57storage and other IT assets to Microsoft
- 6:19:00Azure. Service Now relies on the high
- 6:19:02level of security that Azure provides
- 6:19:05along with the scalability and agility
- 6:19:07that a rapidly growing company needs to
- 6:19:09expand. Benefits of the migration
- 6:19:11include an 80% reduction in deployment
- 6:19:14cycle time and improved service level
- 6:19:16agreement, better disaster protection,
- 6:19:19improved SAP application performance,
- 6:19:21and a 40% reduction in TCO. Service Now
- 6:19:25helps some of the world's largest and
- 6:19:27most influential companies work better.
- 6:19:30It also helps customers in numerous
- 6:19:31industries reduce costs, increase
- 6:19:33productivity, streamline processes, and
- 6:19:36accelerate digital transformation. It
- 6:19:38does this by delivering a comprehensive
- 6:19:40software as a service digital workflow
- 6:19:43platform with native AI capabilities and
- 6:19:46intuitive user experience. To support
- 6:19:48its customers, Service Now must ensure
- 6:19:50that its own internal systems and
- 6:19:52processes are powerful, dependable, and
- 6:19:54scalable. The company has long relied on
- 6:19:57Ashure to keep its operations running.
- 6:20:07So these are the components of Azure
- 6:20:09DevOps. I mean you have Azure boards,
- 6:20:11you have Azure artifacts, Azure
- 6:20:13pipelines, Azure repos, Azure test
- 6:20:16plans. Now basically these are different
- 6:20:19services that kind of let you carry out
- 6:20:21certain practices that concern DevOps.
- 6:20:24If you're interested or if you wish to
- 6:20:26create pipelines in which your products
- 6:20:28would be built, tested and deployed, you
- 6:20:30need Azour pipelines. Azure artifacts
- 6:20:32let you keep track of all the artifacts
- 6:20:34that you actually going to go ahead and
- 6:20:36use in your DevOps approach. Azure repos
- 6:20:38is similar to GitHub where you can
- 6:20:40actually go ahead and have your in-house
- 6:20:43repository or in-house orchestration
- 6:20:46where you can actually go ahead and put
- 6:20:47in your repositories, commit them, pull
- 6:20:49them, basically branch them and do a
- 6:20:52number of things with them. Test plans
- 6:20:54as the name suggest it gives you plans
- 6:20:56using which you can actually go ahead
- 6:20:57and carry out the testing process when
- 6:20:59you talk about Azure DevOps in
- 6:21:01particular. Azure boards this is
- 6:21:02something that we are going to discuss
- 6:21:04in a little more detail today. So Azure
- 6:21:06boards think of it as a one place that
- 6:21:09basically unifies all these services or
- 6:21:12brings in all these services together.
- 6:21:14It is more of a dashboard that basically
- 6:21:16lets you keep track of all the
- 6:21:17activities that you do in this process.
- 6:21:19So whether it's about building your
- 6:21:21applications, deploying them, testing
- 6:21:23them, kind of importing your
- 6:21:25repositories, all these things can be
- 6:21:28managed on a single platform or on a
- 6:21:30single page. So that it creates
- 6:21:33simplicity. I mean if you have a team of
- 6:21:34maybe 25 people, if all of them can
- 6:21:37interact with all these services on one
- 6:21:39single page on one single dashboard,
- 6:21:41that would be really good. And that is
- 6:21:43what Azure DevOps exactly does. It is
- 6:21:46not just a medium which brings in all
- 6:21:48these things together. it does a lot
- 6:21:49more. So as we move further, we would be
- 6:21:52discussing that as well. But for now,
- 6:21:53that is what the definition says or that
- 6:21:55is what I would define it as by saying
- 6:21:57that it is a place where you bring in
- 6:21:59all these services together. So let us
- 6:22:01move further and try to understand
- 6:22:03something else. So what are the
- 6:22:04components of Azure boards in
- 6:22:06particular? So guys, these are the terms
- 6:22:08that we would be more concerned about as
- 6:22:10we move further into the demo part. So
- 6:22:13let us try to understand these one by
- 6:22:15one. calling them components. I'm not
- 6:22:17sure how right an approach that is but
- 6:22:19yeah these are more of the terminologies
- 6:22:21that concern Azure boards. Now I've
- 6:22:24already mentioned that it is a page that
- 6:22:25brings in all the services together. So
- 6:22:28basically what it does is it lets you
- 6:22:30keep track of all the activities that
- 6:22:32are happening. So whether there are
- 6:22:34certain work items that you're dealing
- 6:22:35with, whether you're dealing with
- 6:22:36certain issues, certain tasks, whether
- 6:22:39you're talking about different views in
- 6:22:41which you wish to view all the data that
- 6:22:43is there, whether you're keeping track
- 6:22:45of all the repositories that are there,
- 6:22:47whether you're keeping track of all the
- 6:22:48sprints, if you wish to take a note of
- 6:22:50what happens in a particular sprint, or
- 6:22:53if you have certain queries that you
- 6:22:54wish to throw into so that you can
- 6:22:56understand your process or your working
- 6:22:59much better in that case, you have your
- 6:23:01Azure boards basically which lets you
- 6:23:03take care of all these activities. So
- 6:23:06what are these terms and what do they do
- 6:23:08exactly? Let's try to understand those.
- 6:23:10Now as I've already mentioned each
- 6:23:12artifact that would go on your Azour
- 6:23:14board. I mean whether it's an issue,
- 6:23:16whether it's a task, whatever it is, it
- 6:23:18comes under a particular classification.
- 6:23:20I mean I want to make note of that
- 6:23:23particular artifact in the form of some
- 6:23:25entity. So that entity is my work item
- 6:23:27as in whatever work is being done,
- 6:23:29whatever action is being done on this
- 6:23:30particular item that can be taken note
- 6:23:33of by using this particular thing. Work
- 6:23:35item is nothing but basically creating a
- 6:23:37simple tab in which you keep track of
- 6:23:39everything. Okay. If I have a particular
- 6:23:41issue, say for example, I have some
- 6:23:43issue with committing a change to a
- 6:23:45particular repository. In that case, I
- 6:23:47can create a work item or an issue
- 6:23:49saying that okay, this is the stuff that
- 6:23:50I'm working on or this is the stuff that
- 6:23:52I need to keep note of. So this
- 6:23:54basically is a work item boards. Now
- 6:23:57again if you have a particular project
- 6:23:58that you're working on now that project
- 6:24:00would have its self-defined board in
- 6:24:03this case you can think of it as a
- 6:24:05convent board basically which is very
- 6:24:07popular and it comes uh self integrated
- 6:24:09with every project that you work on on
- 6:24:11Azour boards specifically backlogs. Yes
- 6:24:14the fact that you are working on sprints
- 6:24:17I mean let me simplify this a little
- 6:24:19more for you. Basically, Azour Boards
- 6:24:21also lets you keep track or lets you
- 6:24:24perform sprint management and agile
- 6:24:27development and management as well. That
- 6:24:28means you would be working on software
- 6:24:31development in different phases. So, you
- 6:24:33would be working in different sprints,
- 6:24:35right? So, there might be a possibility
- 6:24:36that you are working on a particular
- 6:24:38software or developing a particular
- 6:24:40software. In that case, you would be
- 6:24:42having certain backlogs, certain issues
- 6:24:44that need resolving. So in order to keep
- 6:24:47a track of it, in order to keep an order
- 6:24:50in the flow of your software
- 6:24:51development, you can always have
- 6:24:53backlogs which let you backtrack and
- 6:24:55keep track of what has happened and what
- 6:24:57has not. So for that you have backlogs.
- 6:24:59Queries, we've already discussed that. I
- 6:25:01mean you can always throw in queries to
- 6:25:03understand what is happening on your
- 6:25:04dashboard or on your board. Sprints I
- 6:25:07believe we have fair bit of idea about
- 6:25:08that as well. When you talk about
- 6:25:10dashboards, yes, as I've already
- 6:25:12mentioned, you have a separate board.
- 6:25:14Azure ensures that you get that
- 6:25:16simplicity. I mean you get everything on
- 6:25:18one simple page. So as we move into the
- 6:25:20demo part probably we would be
- 6:25:22understanding these topics in a little
- 6:25:24more detail. So let us quickly just do
- 6:25:26one thing that let us quickly switch
- 6:25:28into the Azure boards and let us get
- 6:25:30started with the demo part so that
- 6:25:32probably these terms make a lot more
- 6:25:34sense to you people. So guys what I've
- 6:25:37done is I've gone ahead and I've
- 6:25:38switched into my Azour portal.
- 6:25:40Technically I haven't switched into my
- 6:25:42Azure portal. Azour portal is a one-time
- 6:25:45place or a single place where you can
- 6:25:47actually go ahead and implement or carry
- 6:25:49out all the Azure practices. So that
- 6:25:52happens with most of the cloud platforms
- 6:25:53that are there in the market. So in case
- 6:25:55if you wish to practice Azure, all you
- 6:25:57have to do is go and search for Azure
- 6:26:00portal or free tier for Azure and you
- 6:26:03would be directed to a page where you
- 6:26:05can create a free tier account on
- 6:26:07Microsoft Azure. You'd be expected to
- 6:26:09enter your credit card or debit card
- 6:26:11details. This is because these services
- 6:26:13have an upper limit or a cap on top of
- 6:26:16that so that you cannot exceed those
- 6:26:17limits because if you do exceed those
- 6:26:19limits then Microsoft Azure would charge
- 6:26:21you and that is why they need your
- 6:26:23credit card or debit card details. But
- 6:26:25if you are a beginner and you wish to
- 6:26:27practice do not worry these resources
- 6:26:28are more than enough for you to
- 6:26:30practice. So I would suggest that you
- 6:26:32actually go ahead and create a free tier
- 6:26:33account. Okay, one more important point.
- 6:26:35Once you create that free tier account,
- 6:26:37you have certain credits which are
- 6:26:39somewhere around $200 if I'm not wrong,
- 6:26:41$200. And if you are from India, the
- 6:26:44fact that I am conducting this session
- 6:26:46in India, I have a credit if I create a
- 6:26:48free tier account, I have a credit of
- 6:26:50somewhere around 12 to 13,000 Indian
- 6:26:52rupees, which is more than enough if I'm
- 6:26:54not wrong for the practice sake. And you
- 6:26:56have a validity of 1 month to practice
- 6:26:58these services for free. Once you exceed
- 6:27:01the one month part, your account would
- 6:27:02be deactivated or you won't be given
- 6:27:04access to the services. If you wish to
- 6:27:06have an access to these services, you
- 6:27:08would have to probably sign up to some
- 6:27:09plan that they have. But meanwhile, you
- 6:27:11can use these resources for free for a
- 6:27:14month actually. So with AWS, it is for
- 6:27:16one year with Azure it is for 1 month if
- 6:27:18I'm not wrong. So once you do have that
- 6:27:21free tier limit with you, you can visit
- 6:27:23this particular link. As you can see on
- 6:27:26the screen, you can actually go ahead
- 6:27:27and search for this particular screen.
- 6:27:30And once you do that guys, probably you
- 6:27:32can actually go ahead and come to this
- 6:27:33page where you can start free with the
- 6:27:35boards. So let us see how can we get
- 6:27:38started with this particular service. So
- 6:27:40click on start boards. It would ask you
- 6:27:43as in do you wish to continue? Just say
- 6:27:45yes. It is an Azure DevOps service
- 6:27:47basically. So it would ask you for the
- 6:27:50name of the organization. I mean you
- 6:27:52have a structured approach here where
- 6:27:53you would be having an organization
- 6:27:55under which you'd be having projects. So
- 6:27:57let us call it say Azure boards guys I'm
- 6:28:01giving a random name because most of the
- 6:28:03names are taken. Azour boards 1 2 3 4 5
- 6:28:07continue. Okay I just backtracked
- 6:28:10accidentally. Let's say Azour Boards
- 6:28:13sample 1 2 3 4 5 and I say continue. So
- 6:28:18it creates an organization and it
- 6:28:20redirects you there and then it says
- 6:28:21that actually go ahead and create a
- 6:28:23project. So I'm going to say demo
- 6:28:24project
- 6:28:26for this session and I'm going to keep
- 6:28:30it public because I wish to add certain
- 6:28:31users. So let's just keep it public for
- 6:28:33now because if I create a private
- 6:28:35account I would have to look into access
- 6:28:37rights for the users that I'm creating.
- 6:28:39And there you go your project is
- 6:28:40created. So you can go through this
- 6:28:42welcome guide if you want. I'm going to
- 6:28:43skip it for now. So guys this is how the
- 6:28:45interface looks like. And as you can
- 6:28:47see, I've mentioned that you can take a
- 6:28:49look at the backlogs if you've created,
- 6:28:51which I haven't in this case. You can
- 6:28:53create issues if you want. You can do
- 6:28:55that as well. You have an option of
- 6:28:57epics issues, which lets you basically
- 6:28:59keep track of all the stuff that you're
- 6:29:00doing. You have certain work items that
- 6:29:02you can add if you want to. Here,
- 6:29:05what boards are you using? Backlogs, you
- 6:29:07can keep track of all the backlogs that
- 6:29:09you do. Sprints and queries. So, if you
- 6:29:12just come to boards and then you say add
- 6:29:15a new item. Let's say sample item. There
- 6:29:19you go. So guys, you can see that it
- 6:29:21comes with these two options. You have a
- 6:29:23particular state here. So for now, it
- 6:29:24says to do what do you wish to do? It is
- 6:29:26that phase. Okay. So you can actually go
- 6:29:28ahead and change the state as well.
- 6:29:30Saying once you do change the state, it
- 6:29:32moves to the next part as you can see
- 6:29:34here. So if you are working on a
- 6:29:36particular action and you've actually
- 6:29:38moving from one state to the other, you
- 6:29:40can always make changes to that and
- 6:29:41probably you would know that okay, what
- 6:29:43state is the work item into? what state
- 6:29:45is the issue into? So if I click on this
- 6:29:48thing, it would probably go back again.
- 6:29:49As you can see, you can add tasks here
- 6:29:52saying that okay, this is a particular
- 6:29:54subtask or a task that needs to be done.
- 6:29:56Say for example, clear cache and there
- 6:29:59you go, cache has been added. If I am
- 6:30:02done with this particular task, say for
- 6:30:03example, I move into doing phase and I
- 6:30:08clear this task and I say I am done with
- 6:30:11it. There you go. As you can see the
- 6:30:13color here has changed indicating that
- 6:30:15the flow is correct and my task has been
- 6:30:17completed. So you can keep track of all
- 6:30:19the resources that you're using here.
- 6:30:21You can actually go ahead and add users.
- 6:30:24You can do a lot of stuff that is there
- 6:30:26with these projects. So come here and
- 6:30:28take a look at the overview. You can
- 6:30:30suppose if you name it say sample for
- 6:30:33today maybe guys I'm going to go very
- 6:30:35random with this session. I mean
- 6:30:37whatever I feel is worth telling I'm
- 6:30:39going to go ahead and share that with
- 6:30:40you. I hope that flow is fine with you
- 6:30:42people. So there you go. Let's see if we
- 6:30:45can add a user from here. If not, we'll
- 6:30:48create a user from somewhere.
- 6:30:52Okay. So a user was added here. One user
- 6:30:55is added and assigned an access level to
- 6:30:57user one. You can view the status here
- 6:30:59as well. It says for now it has failed
- 6:31:01because probably I do not have the
- 6:31:02license to actually go ahead and assign
- 6:31:04users. But you can actually go ahead and
- 6:31:06assign users as well. So that depends
- 6:31:08upon the exercise that you have. Once
- 6:31:10you do that, you can actually go ahead
- 6:31:11and do a lot of stuff. You can just come
- 6:31:14here probably you can visit your
- 6:31:17dashboards and the demo projects that
- 6:31:19you are creating. Maybe go to boards.
- 6:31:22Once you do that, you can come here and
- 6:31:23add backlogs as well. Suppose I have an
- 6:31:26item here which is this or let's add a
- 6:31:30new item. Take a look at this issue and
- 6:31:35say add to top. There you go. I can come
- 6:31:38and assign it to a particular user.
- 6:31:40Let's say I assign it to this particular
- 6:31:42individual. And there you go. The person
- 6:31:45can actually go ahead and make change to
- 6:31:47the issue. You can see the update is
- 6:31:49here. And if it is done, it's going to
- 6:31:50go to green again. And if I come back to
- 6:31:53my boards, you can see that it is here.
- 6:31:56Work items again. If I actually go ahead
- 6:31:58and move it to the other state, that
- 6:32:00won't be a problem. It would again go to
- 6:32:02the green part. So, this is how it
- 6:32:03works. You can actually go to the
- 6:32:05project settings as well. You can come
- 6:32:07here. You can do a lot of stuff here.
- 6:32:09Say for example, you can manage your
- 6:32:10teams. Take a look at the security
- 6:32:12principles that are there. You can test.
- 6:32:15Let's not get into the test part for
- 6:32:16now. But let's say if you wish to have
- 6:32:19GitHub connections, you can connect to
- 6:32:21your GitHub account as well. Just come
- 6:32:23here and probably
- 6:32:25Okay. So, you can just go ahead. My
- 6:32:27GitHub account is already added I
- 6:32:28believe here. So, it shows that thing to
- 6:32:30me. Else you required to sign up as
- 6:32:32well. So you can just say save
- 6:32:34and the repository gets added here. So
- 6:32:37you can actually go ahead and move to
- 6:32:39the repose part as well and take a look
- 6:32:41at the stuff that has happened here. Say
- 6:32:43for example, let me switch to some other
- 6:32:45account that I have. This is the one or
- 6:32:49AB dura boards. So if I go to samples,
- 6:32:54there was something I was wanting to
- 6:32:55tell you. Yeah, this is the part. So you
- 6:32:57can enable your repos as well if you
- 6:32:59want. Okay, you can enable your
- 6:33:01pipelines even artifacts.
- 6:33:05You can see that all these things are
- 6:33:07available here as well. Now, because
- 6:33:09I've actually gone ahead and enabled
- 6:33:10those things. If you just enabled these
- 6:33:12things, you can have access to these
- 6:33:14resources here and here. So, if you have
- 6:33:17any files or stuff, you can actually go
- 6:33:18ahead and check if there is anything
- 6:33:20that is there in your repos or in your
- 6:33:23other services and you can clone those,
- 6:33:25you can make changes to those services
- 6:33:27that you've used. You can commit certain
- 6:33:29changes to the code that is there. Say
- 6:33:31for example, you have some index files
- 6:33:33or some basic codes that are there. You
- 6:33:34can actually go ahead and edit those
- 6:33:36changes. Once you've actually edited
- 6:33:38those changes, you can go ahead and
- 6:33:39commit those. You can create branches as
- 6:33:41well. So, uh you have your master
- 6:33:43branch, you have your sub branch and you
- 6:33:44can make changes and commit those
- 6:33:46changes to the master as well. So, when
- 6:33:48you talk about DevOps operations and
- 6:33:49various activities that concern a
- 6:33:51particular board, everything can be
- 6:33:53taken care of when you talk about Azure
- 6:33:54boards in particular. So, this is it
- 6:33:56guys. There is not a lot to explore when
- 6:33:58you talk about these services. These are
- 6:34:00very important to use though because
- 6:34:01they help you keep track of a lot of
- 6:34:04things. I would suggest that you visit
- 6:34:05Microsoft Azour's documentation as well
- 6:34:08because there are quite a few other
- 6:34:10activities that you can do with this
- 6:34:12particular service. Some basic
- 6:34:13activities which are simple but
- 6:34:15something that are important and can be
- 6:34:17done as well. So as far as you are
- 6:34:19concerned, you can actually go ahead and
- 6:34:21explore as many services as you want and
- 6:34:23you can understand what all can you do
- 6:34:24with Azure boots in particular. As far
- 6:34:27as this session goes guys, I just wanted
- 6:34:28you to get introduced to this particular
- 6:34:30topic and I believe I've done justice to
- 6:34:32that and I hope that you've understood
- 6:34:35this particular topic to some extent
- 6:34:36where you can take it further and
- 6:34:38probably enhance your knowledge in this
- 6:34:40particular domain.
- 6:34:47Let us try to understand what is Azure
- 6:34:50pipelines. Now, now basically this
- 6:34:52particular service helps you carry out
- 6:34:54following things or this is what the
- 6:34:56definition has to say. Well, it is a
- 6:34:58service that caters the need for
- 6:35:00creating pipelines on Azure cloud
- 6:35:02platform which is pretty much evident
- 6:35:04and what it does is it lets you build,
- 6:35:06test and deploy applications to Azure
- 6:35:08cloud and other supported platforms. Let
- 6:35:11me simplify this definition for you a
- 6:35:13little more. Now basically what it does
- 6:35:15is it lets you create a pipeline. Now
- 6:35:17when I say a pipeline when you develop a
- 6:35:19software it needs to be built. So there
- 6:35:22are steps involved in it. You would be
- 6:35:24picking up a piece of code or you'd be
- 6:35:26creating a new code. Once that code is
- 6:35:28there you would build that code. You
- 6:35:30would probably run some tests on top of
- 6:35:32it. If any changes are required you
- 6:35:34would again build that code again test
- 6:35:36it and once it is ready you would deploy
- 6:35:38and deliver it to the end customer.
- 6:35:40Right? So instead of doing these things
- 6:35:43individually or doing these separately,
- 6:35:45what if there was a channel in which you
- 6:35:47could do all these things and keep a
- 6:35:49track of all these at one single
- 6:35:51location? Wouldn't that be nice? Well,
- 6:35:53when you talk about Azour pipeline, that
- 6:35:55is what it does. It basically lets you
- 6:35:57bring in all these actions under one
- 6:36:00umbrella. And these are some of the
- 6:36:02features that Azure pipeline has to
- 6:36:05offer to you. Let us take a look at
- 6:36:06those one by one. Well, Azure pipelines
- 6:36:09are basically platform and language
- 6:36:10independent. What do I mean by this?
- 6:36:13Well, if you have your application and
- 6:36:14you wish to run it on particular
- 6:36:16platform. Well, Azour gives you option
- 6:36:18for that as well. You can run it on
- 6:36:20maybe your Windows operating system, you
- 6:36:22can run it on your Linux operating
- 6:36:23systems, you can run it on your Mac
- 6:36:25operating systems as well. Plus, it is
- 6:36:28language independent. That means whether
- 6:36:30you are building a NodeJS application,
- 6:36:32you are building it in some other
- 6:36:34programming language like Python or
- 6:36:35stuff like that, you can definitely run
- 6:36:37this piece of code or build your
- 6:36:39applications using different programming
- 6:36:41languages and you can run those on
- 6:36:42different platforms as well. Freedom to
- 6:36:45work with containers. Definitely true.
- 6:36:48What do I mean by this? Well, containers
- 6:36:50are something that let you simplify the
- 6:36:53process of virtualization or in simple
- 6:36:55words, they let you separate your piece
- 6:36:57of code and binaries from the platform
- 6:36:59on top of which you wish to run those.
- 6:37:01So in simple words, your code is locked
- 6:37:04into a container which can run anywhere.
- 6:37:06There are containers like Kubernetes,
- 6:37:08Docker. So basically what it does is it
- 6:37:10lets you push your applications on top
- 6:37:13of these containers. You have Azure
- 6:37:15container registry as well. If I'm not
- 6:37:17wrong, that is an Azure service for
- 6:37:19containerization basically. So you have
- 6:37:21the freedom to move your applications on
- 6:37:23top of these containers or inside these
- 6:37:25containers as well. Deployment to the
- 6:37:28other cloud vendors. Definitely yes. Now
- 6:37:31the fact being that this is an Azure
- 6:37:33service and it lets you create pipelines
- 6:37:35does not mean that it restricts your
- 6:37:36applications to Microsoft Azure only. If
- 6:37:39you have been using other cloud vendors
- 6:37:41or your customers or whatever it is, I
- 6:37:44mean your end goal is to move it to some
- 6:37:46other cloud platform you can do that. If
- 6:37:48you're talking about cloud platforms
- 6:37:50like AWS which is popular, GCP which is
- 6:37:52a very good competitor. If you wish to
- 6:37:54move your codes or your applications to
- 6:37:57these vendors will definitely deployment
- 6:37:59to these vendors is also supported.
- 6:38:01Support for open source. Yes, Microsoft
- 6:38:04Azour has put in a lot of effort in
- 6:38:05recent times to ensure that Azour is
- 6:38:08open to open-source projects,
- 6:38:09applications and tools as well. This
- 6:38:12being said, it is very easy to integrate
- 6:38:14open-source services with Azure these
- 6:38:16days and that is why if you wish to keep
- 6:38:18your project open source or you want it
- 6:38:20to be accessible to others, you can take
- 6:38:22care of that as well. So, these are some
- 6:38:24of the features that make Azour
- 6:38:26pipelines a must-have tool or a must-h
- 6:38:29have service. So let us just quickly
- 6:38:31move further now and quickly switch into
- 6:38:34the demo part because I do not want to
- 6:38:35stall any of your precious time. So let
- 6:38:37us just quickly take a look at what
- 6:38:39Azure pipelines can do for you. So guys
- 6:38:42what I've done is I've actually gone
- 6:38:43ahead and I've switched into the
- 6:38:45console. Now if you talk about Microsoft
- 6:38:47Azour they give you some free credits to
- 6:38:50use Azure services for free for 1 month.
- 6:38:54The credits are somewhere around 12 to
- 6:38:5613,000 Indian rupees and somewhere
- 6:38:57around $200 US if I'm not wrong. So you
- 6:39:00can utilize these credits to use these
- 6:39:03services because these services are
- 6:39:05chargeable. But the fact that you have
- 6:39:07free credits, you can utilize these
- 6:39:08services for free for one complete month
- 6:39:11so that you can test and practice what
- 6:39:13these services have to offer to you. So
- 6:39:15if you do not have a free tier account
- 6:39:17just go ahead and sign in for Azour
- 6:39:20portal and once you do that guys you
- 6:39:22would be having this free tier account
- 6:39:24which you can use. Once you do that
- 6:39:26probably you would want to search for
- 6:39:28Azure DevOps something that we are going
- 6:39:30to use. Just type Azure DevOps in your
- 6:39:32browser and you would be redirected to
- 6:39:34this page and from here on I would be
- 6:39:36taking you further. So let us take a
- 6:39:38look at what you can do with Azour
- 6:39:40pipelines guys. So I'm going to start
- 6:39:41with start free. No sooner I click on
- 6:39:44this icon guys, it would probably if you
- 6:39:47are starting as a fresher or somebody
- 6:39:50who hasn't worked on any project, it
- 6:39:52would ask you to create an organization
- 6:39:54and a project to start with. The fact
- 6:39:56that I already have an organization or a
- 6:39:59project, it has actually redirected me
- 6:40:01to this particular page. So let me just
- 6:40:04quickly see if I can just go ahead and
- 6:40:06delete this particular project or
- 6:40:08organization and see if you can start
- 6:40:10fresh. How do you do that? Just come
- 6:40:12here and say delete and this was the
- 6:40:14name just going to copy it. Ctrl + Ctrl
- 6:40:18+ V and delete. So guys when you click
- 6:40:21on start fresh this is how it should
- 6:40:24start if you started fresh. If not you
- 6:40:27can continue from the interface where I
- 6:40:29just left from. So it says do you want
- 6:40:31to get started with DevOps? I would say
- 6:40:33yes. Give it a name your organization.
- 6:40:36I'm just going to say sample for today.
- 6:40:39Okay. South India. I'm kind of based in
- 6:40:42Bangalore right now. So that is why it
- 6:40:43says South India and it will say create
- 6:40:46a project. So the name should be demo
- 6:40:49project for me. You can name it whatever
- 6:40:51you want to. If the name is available,
- 6:40:52you can use it. Do I want it private? Do
- 6:40:55I want it public? I would say public for
- 6:40:56now because I wish to import certain
- 6:40:58repositories as well. And keeping it
- 6:41:00public would make it easier for me to
- 6:41:02get access to those repositories. No
- 6:41:04other reason. So I'm just going to go
- 6:41:05ahead and say create. So guys, we've
- 6:41:07gone ahead and we have an organization
- 6:41:09for our usage and under that we have a
- 6:41:12project as well. So if I just scroll
- 6:41:14down, I would see following options. I
- 6:41:17can switch to these five services that
- 6:41:19we've discussed and I can also have them
- 6:41:21on one tab as well, which you can see it
- 6:41:23here. I've already added those as
- 6:41:24extensions to my dashboard. So we can
- 6:41:27use it from here as well. Let's just say
- 6:41:29create pipelines for now. There are no
- 6:41:31pipelines here because I've deleted my
- 6:41:33previous project as well. So I'm just
- 6:41:35going to go ahead and say create a new
- 6:41:36pipeline. So where is my code is what it
- 6:41:38is asking me. Is it in Bitbucket? Is it
- 6:41:40in Azure repositories? Is it in GitHub?
- 6:41:43I have some pieces of code in GitHub. So
- 6:41:45let's just go ahead and use a random
- 6:41:46piece of code that is there in my
- 6:41:48repository. Once you click here guys, if
- 6:41:50you're not authorized to use your
- 6:41:52repositories or use your GitHub, you
- 6:41:54would be required to sign in here. It
- 6:41:56would throw in a page where you can
- 6:41:57actually login with your credentials to
- 6:41:59GitHub and pick up your repositories if
- 6:42:01you wish to use those. I have this one
- 6:42:04here. It is available actually. You can
- 6:42:05look for pipelines Python Django for
- 6:42:07Azure and probably you would get these
- 6:42:09anywhere. You can just fork it by
- 6:42:11clicking here. If you do not have it, do
- 6:42:13not worry. I would be sharing the link
- 6:42:14for this as well. For now, let us just
- 6:42:16go ahead and continue with the demo
- 6:42:17part. So, I'm going to select this.
- 6:42:20So guys, this is basically a piece of
- 6:42:23code for Django framework supported by
- 6:42:25Python. What it does, it tests a Django
- 6:42:28project on multiple versions of Python.
- 6:42:30It adds steps that help you analyze the
- 6:42:32piece of code, save, build artifacts,
- 6:42:35deploy and more. So basically you can
- 6:42:37visit this particular link as well to
- 6:42:39know more about this piece of code. So
- 6:42:41this is what it does. You can see step
- 6:42:43by step the information is here. What VM
- 6:42:45it is going to use again what are the
- 6:42:47versions that it is going to use? What
- 6:42:49is the script that is here to export a
- 6:42:51particular path source plus if you go
- 6:42:53ahead these are some of the commands
- 6:42:55that you would be wanting to take a look
- 6:42:56at. These are nothing major. It just
- 6:42:58basically goes ahead and builds a
- 6:43:00particular project for you and deploys
- 6:43:02it. So let us just go ahead and do that
- 6:43:04as well. Let's just say run. So it would
- 6:43:07configure your piece of code and once it
- 6:43:10starts doing that you would get all the
- 6:43:12information as in what is happening here
- 6:43:14step by step. So bear with me. Let it
- 6:43:17just configure the stuff and give you
- 6:43:20the information. Probably might take
- 6:43:21half a minute to get started. And there
- 6:43:24you go guys. It has already started. The
- 6:43:26agent is ready for the job is what it
- 6:43:28says and it would start the connection.
- 6:43:31Once it does that there would be a log
- 6:43:33made available to you people.
- 6:43:37So guys this is what has happened and
- 6:43:39this is what is happening. You can see
- 6:43:41it is getting logged step by step
- 6:43:44whatever is happening and you can see
- 6:43:46the commands and piece of code running
- 6:43:47in the background and once it has
- 6:43:49succeeded it would give you the status
- 6:43:51succeeded. So it initialized an agent,
- 6:43:54prepared a job, initialized the job,
- 6:43:56checked out, then it used a Python
- 6:43:58version. It did actually go ahead and
- 6:44:00explore or export a particular project,
- 6:44:03installed the prerequisite, it ran test
- 6:44:05on top of it. It published the piece of
- 6:44:07application or the result basically and
- 6:44:10it actually did go ahead and check out
- 6:44:11and finalize the job. So these are the
- 6:44:13things it has actually gone ahead and
- 6:44:15performed. You can take a look at the
- 6:44:17summary part as well as in this is what
- 6:44:20has happened step by step. tests. These
- 6:44:22were the tests that were run and those
- 6:44:24were successful. So you have the stats
- 6:44:25for those as well. You can click on
- 6:44:27release but there is nothing to release
- 6:44:29for now. So yeah, so you can choose
- 6:44:31where you wish to actually go ahead and
- 6:44:32deploy your application. You can carry
- 6:44:34out these steps as well. So these are
- 6:44:36the options that you have and you can
- 6:44:39just go back. Let me just leave it. Yep.
- 6:44:43And if I overview it said pipelines, it
- 6:44:46is 100% successfully built. member is
- 6:44:49the account that I'm using. Pipelines,
- 6:44:52if I go here, it would give me
- 6:44:53information about that as well. This is
- 6:44:55the master branch that I'm using. I can
- 6:44:57actually go ahead and update my piece of
- 6:44:59code as well if I wish to. So guys,
- 6:45:01there are a lot of things that you can
- 6:45:03do. You can actually go ahead and commit
- 6:45:05certain pieces of codes here as well.
- 6:45:07You can go to repose. You can decide
- 6:45:09what piece of code you want. the
- 6:45:11existing master branch that you're using
- 6:45:13in the pipeline, you can actually go
- 6:45:15ahead and fork that particular piece of
- 6:45:18code. When I say fork, you make a copy
- 6:45:19of it for your own sake. You make
- 6:45:22changes in it and then you push it to
- 6:45:23the master and if the master finds the
- 6:45:26latest version doable with the proper
- 6:45:29access admin rights, you can actually go
- 6:45:31ahead and merge that piece of code
- 6:45:32something called as commit. You can
- 6:45:34commit your code to that particular
- 6:45:36pipeline. So guys, this is how your
- 6:45:38pipeline works. This is how your piece
- 6:45:40of code works or this is how basically
- 6:45:43you actually go ahead and use your Azure
- 6:45:45pipelines. There are a lot of other
- 6:45:46things that you can do. You can actually
- 6:45:48go ahead and install certain extensions
- 6:45:51to your Azure pipelines so that you get
- 6:45:54quick sites or basically you get
- 6:45:56analysis as in what was the process that
- 6:45:58was implemented and what steps it took.
- 6:46:00If you wish to know more about it, do
- 6:46:02visit our YouTube channel and visit
- 6:46:05Azure DevOps video where we've talked
- 6:46:07about that. The video also talks about
- 6:46:09how you can actually go ahead and add
- 6:46:10batch to your particular piece of code
- 6:46:12or your application suggesting that
- 6:46:15whether all the builds were succeeded or
- 6:46:17were successful or not. As far as this
- 6:46:20session goes guys, I believe I've talked
- 6:46:22enough about what Azure pipelines are.
- 6:46:24I've shown you a sample as in how you
- 6:46:25can actually go ahead and create a
- 6:46:27sample piece of code using Azure
- 6:46:29pipelines or not a piece of code or how
- 6:46:31you can actually deploy a sample piece
- 6:46:33of code using Azure pipelines. I believe
- 6:46:36most of the parts here are covered but
- 6:46:38let us quickly take a look at some of
- 6:46:39the other pointers and then probably we
- 6:46:41can rest this session. So here you'd be
- 6:46:44having summary of what is happening.
- 6:46:46Dashboards I don't think it would show
- 6:46:48any dashboard. You can just go ahead and
- 6:46:50add widgets if you want. So you can
- 6:46:52click it or click on this particular
- 6:46:53icon select a visit. You can add it here
- 6:46:57and you can say add. So now if you go to
- 6:47:01your dashboard
- 6:47:04you can select a pipeline here. Let's
- 6:47:06say this is the pipeline and I say save.
- 6:47:09So it gives me the history as in what
- 6:47:11has happened 4 minutes ago and whatever
- 6:47:13changes happen those can be studied and
- 6:47:16understood here.
- 6:47:24What is Azure DevOps test plans? Azure
- 6:47:27DevOps test plan is a service launched
- 6:47:30by Azure DevOps that provides a
- 6:47:32browserbased test management solution
- 6:47:34for the exploratory plan, manual and
- 6:47:38user acceptance testing. It provides
- 6:47:41rich and powerful tools so that everyone
- 6:47:44in the team can use to drive quality and
- 6:47:46collaboration throughout the development
- 6:47:48process. It is easy to use and it is
- 6:47:52browserbased test management solution
- 6:47:55which provides all the capabilities
- 6:47:57required for a planned manual testing
- 6:48:00and user acceptance testing or
- 6:48:02exploratory testing and for gathering
- 6:48:05feedback from the stakeholders as well.
- 6:48:08So now that we have come to know what is
- 6:48:09Azure DevOps test plans now let's deep
- 6:48:12dive into the concept and understand
- 6:48:15what are these test plans basically. So
- 6:48:18first let us understand what do you mean
- 6:48:19by a test plan. So a test plan is
- 6:48:22nothing but a container for storing test
- 6:48:24suits that are nothing but a collections
- 6:48:26of test cases. So these test plan
- 6:48:29function by allowing you to establish a
- 6:48:31container in which you can group your
- 6:48:34all test suits. So as you can see in
- 6:48:37this diagram this is a container which
- 6:48:39comprises of number of test suits uh
- 6:48:43which are grouped and then stored into
- 6:48:45these test plans. So test suits are
- 6:48:48nothing but the collections of test
- 6:48:50cases which then form a group and then
- 6:48:53they are stored inside these test plans.
- 6:48:55So there are three types of test suits
- 6:48:57that is static based, requirement based
- 6:49:00and query based. So static based test
- 6:49:03suits are type of test suits that are
- 6:49:06used either as a container to group
- 6:49:08other test suits or to group a specific
- 6:49:11set of test cases. So in Azure DevOps
- 6:49:14test plan you can have nested test
- 6:49:17suits. That means a static test suit
- 6:49:20itself become a form of a container
- 6:49:22where we can add different test suits
- 6:49:25and then we can place or as a place to
- 6:49:28create and test case adog. So as I said
- 6:49:31it will be in a nested loop form. So
- 6:49:34most of the time you will be using a
- 6:49:36static test suits as you mean by
- 6:49:38grouping test suits together. Next is
- 6:49:42requirement based test suits. So
- 6:49:44requirement based test suits are the
- 6:49:46simplest and the most traceable test
- 6:49:48suits. It is basically they pull all the
- 6:49:50test cases for a given requirement. This
- 6:49:54means when you go to build a test suit,
- 6:49:55you will not be choosing test cases.
- 6:49:58Instead you will simply choose the
- 6:50:00requirements. So what happens next is
- 6:50:03that any test cases that have already
- 6:50:06been built or connected to that
- 6:50:08particular requirement will get pulled
- 6:50:10in and populate your test suits. So you
- 6:50:14can then run all of the tests for that
- 6:50:17particular given requirement. So if you
- 6:50:20use a requirement based test suits your
- 6:50:23team can create a traceability matrices
- 6:50:25so that you not only see how your test
- 6:50:29cases align with your requirements but
- 6:50:31also you can see whether a particular
- 6:50:34test case has passed or failed for that
- 6:50:37particular given requirement. And next
- 6:50:40comes the query based. So query based
- 6:50:42test suits are the type of test suits
- 6:50:44which pull in a group of tests from your
- 6:50:48project irrespective of what requirement
- 6:50:50the test cases are linked to. So it
- 6:50:53afford teams that have the ability to
- 6:50:56create a test suit using any criteria
- 6:50:59available. What does this mean actually
- 6:51:01is that when you are creating this type
- 6:51:04of test suits, it asks you how you want
- 6:51:06to pull these test cases and allows you
- 6:51:09to construct an ad hoc query to do so.
- 6:51:12So here you are not concerned with how
- 6:51:15test cases are connected to specific
- 6:51:17requirements and instead it allows you
- 6:51:20to pull in the test cases that match a
- 6:51:23specific criteria. So when do you use
- 6:51:26these query based test cases is like
- 6:51:29when the team will run these tests on
- 6:51:31all the test cases that are currently in
- 6:51:35a given iteration or run the test on
- 6:51:38everything with a given tag. So the idea
- 6:51:41behind the query based test suit is that
- 6:51:43you can easily include test cases from
- 6:51:46your project that you would like to test
- 6:51:48irrespective of the affiliation to that
- 6:51:51particular requirement.
- 6:51:53So as I said a test suit is nothing but
- 6:51:55a collections of these test cases. So
- 6:51:58what are test cases? Test cases defines
- 6:52:01to test a system software or any
- 6:52:04application. It can be a singular set of
- 6:52:07action or the instruction for a tester
- 6:52:09for a test to perform that validates a
- 6:52:12specific aspect of a product or the
- 6:52:15application functionality. So here in
- 6:52:18this particular test suit you can have
- 6:52:20any number of test cases which can be
- 6:52:23then grouped based on the different
- 6:52:25types of test suits that is static
- 6:52:27based, requirement based and query
- 6:52:28based. Now that we have come to know
- 6:52:31about the test plans, test suits and the
- 6:52:34test cases. Now let us look onto some of
- 6:52:37the key scenarios which will help us
- 6:52:40understand why do we use Azure DevOps
- 6:52:42test plan. So Azure DevOps test plan
- 6:52:45provides software development teams some
- 6:52:48of the key benefits such as they can
- 6:52:50test on any platform. So this means that
- 6:52:53with test plans web portal you can use
- 6:52:56any supported browser to access all
- 6:52:58manual testing capabilities. It enables
- 6:53:01you to create and run manual test
- 6:53:03through an easy to use browserbased
- 6:53:06interface that users can access from all
- 6:53:09major browsers on any platform. Next is
- 6:53:13it has a rich diagnostic data
- 6:53:15collection. So here using the web based
- 6:53:18testr runner and testrunner client you
- 6:53:21can collect rich diagnostic data during
- 6:53:24your manual test. This includes your
- 6:53:26screenshots, image action logs, screen
- 6:53:29recordings, code coverage, intrace
- 6:53:32traces and test impact data for your
- 6:53:35apps under the test. And this data is
- 6:53:38automatically included in all the bugs
- 6:53:41you create during test making it easy
- 6:53:43for the developers to reproduce this
- 6:53:45issue. Next is end to end tracibility.
- 6:53:49So Azure DevOps provide end toend
- 6:53:51traceability of your requirement builds
- 6:53:54test and bugs. You can create your
- 6:53:56requirement qualities from cards on the
- 6:53:59canban board and the bugs created while
- 6:54:02testing are automatically linked to the
- 6:54:04requirement and builds being tested
- 6:54:07which helps you to track the quality of
- 6:54:09the requirements and the builds. Next is
- 6:54:12integrated analytics. So in this the
- 6:54:15analytics service provides data that
- 6:54:18feeds into built-in reports,
- 6:54:20configurable dashboard widgets and
- 6:54:23customizable reports using PowerBI. Data
- 6:54:26tracks test plan progress and trends for
- 6:54:28both manual and automated tests. The
- 6:54:31test analytics then provides realtime
- 6:54:34visibility into test data for builds and
- 6:54:37releases. So teams can act on this data
- 6:54:40to improve the test collateral to help
- 6:54:43maintain healthy pipelines. Lastly is
- 6:54:46the extensible platform. So you can
- 6:54:49combine the tools and technologies you
- 6:54:51already know with the development tools
- 6:54:53that work best for you to integrate with
- 6:54:56and extend Azure DevOps.
- 6:54:59You can use the rest APIs and
- 6:55:02contribution model available for the
- 6:55:04test platform to create extensions that
- 6:55:07provide the experiences you need for
- 6:55:09your test management life cycles.
- 6:55:12So these were some of the major key
- 6:55:14benefits that makes Azure DevOps useful
- 6:55:18for the development teams. Now let's
- 6:55:20quickly understand how does these test
- 6:55:22plans work. You can work on with the
- 6:55:25test plans with two ways that is manual
- 6:55:27testing and automated testing. In manual
- 6:55:30testing, the Azure DevOps test plan uses
- 6:55:33test specific work item types to plan
- 6:55:36and author these tests. In addition, it
- 6:55:39provides two test tools to support
- 6:55:41running the test. Test plans, parameters
- 6:55:44and configuration hubs provide the tools
- 6:55:46to efficiently create manage the test
- 6:55:49items, their settings and as well as
- 6:55:52their configuration. Now in this the
- 6:55:54test suits can be dynamic requirement
- 6:55:56based or query based suits to help you
- 6:56:00understand the quality of associated
- 6:56:02requirement under these development or
- 6:56:04static to help you cover regression
- 6:56:07tests. Next is automated testing. So
- 6:56:10automated testing is facilitated by
- 6:56:12running the tests within the Azure
- 6:56:14pipelines. So here the test analytics
- 6:56:17provide you realtime visibility into
- 6:56:19your test data for builds and releases.
- 6:56:22It helps to improve the pipeline
- 6:56:24efficiency by identifying repetitive
- 6:56:27high impact quality issues.
- 6:56:30So these are the two types in which the
- 6:56:32test plans actually work. Now that we
- 6:56:35have come to know what are test plans,
- 6:56:37test suits, how do they work? So now
- 6:56:39let's have a quick demo on these test
- 6:56:41plans.
- 6:56:43Now let's quickly work on some of the
- 6:56:45demos where we'll create test plans,
- 6:56:48test suits and see how it works. So for
- 6:56:50that first we need to log into our Azure
- 6:56:53portal.
- 6:56:55So let's quickly log in. So for that
- 6:56:57what do we need to do? First we need to
- 6:56:59login.
- 6:57:04Stay signed in.
- 6:57:07All right. Now that we have come to our
- 6:57:09dashboards here as you can see this is
- 6:57:12the whole dashboard of the Azure portal
- 6:57:14where you find all the different kinds
- 6:57:16of services and resource group and all
- 6:57:20other subscriptions and stuffs. So we'll
- 6:57:22be directly moving ahead to our Azure
- 6:57:24DevOps organization. Now let's go to my
- 6:57:27DevOps organization.
- 6:57:30So once we come here so this is the
- 6:57:33dashboard of Azure DevOps where we can
- 6:57:36see projects and uh we can also create
- 6:57:39new organization. So it is basically you
- 6:57:42need to create a new owner where under
- 6:57:45which you have a different you can
- 6:57:47create different projects. So I already
- 6:57:50have one of the test plans but we'll
- 6:57:53create a new project. So let's create a
- 6:57:57new project first and let's name it as
- 6:58:01Azure
- 6:58:03test
- 6:58:05commands
- 6:58:07demo. Now we can give a descriptions to
- 6:58:10our project or else you can leave it as
- 6:58:13it is and it's just a demo for us. So
- 6:58:16I'll be taking the private option and
- 6:58:19now we can just create. So now our Azure
- 6:58:23test plan has been created. So this is
- 6:58:26our project overview. So in this we can
- 6:58:29add boards, repos, pipelines, test plans
- 6:58:32and artifacts. So let's quickly go to
- 6:58:36our test plans. Now once we come here
- 6:58:39now we need to first create a test plan.
- 6:58:41So as we said a test plan is a container
- 6:58:44where we have group of test suits. So
- 6:58:48for that we need a container. So let's
- 6:58:50quickly create one new test plan. So
- 6:58:53let's name it as
- 6:58:56Azure test
- 6:58:58plan one. Okay, that would be cool. And
- 6:59:04here you can choose the area path. So as
- 6:59:06our project name is Azure DevOps test
- 6:59:08plan. So we'll be keeping it under that.
- 6:59:10And the iterations. So here the
- 6:59:13iterations are nothing but our sprint.
- 6:59:16So we can take or we can keep it as it
- 6:59:19is later we can just change whenever to
- 6:59:23sprint one. So let's quickly create.
- 6:59:28So now that we have created our test
- 6:59:31plan now under this we will be creating
- 6:59:34the test suit. So now here we need to
- 6:59:38see here we can create a test suit over
- 6:59:42here. So this is our test plan. Under
- 6:59:44this we'll be creating a new suit. So as
- 6:59:47we discussed before we have three types
- 6:59:49of test suits that is static,
- 6:59:51requirement based and query based. So
- 6:59:53we'll be taking here static suit. And
- 6:59:57now let's name it
- 6:59:59test suit
- 7:00:02one. All right. Now our test plans are
- 7:00:05created and our test suit is also
- 7:00:07created. So if you go to our more option
- 7:00:10so you can create one more under that
- 7:00:14particular test suit you can create
- 7:00:16another test suits based on your
- 7:00:18requirements and you can also assign
- 7:00:21testers to run the tests which are under
- 7:00:23these test suits. So now that we have
- 7:00:26created our test suits so let's quickly
- 7:00:29go to our boards under that we'll go to
- 7:00:31our sprints. So in this we'll see
- 7:00:34whether our test plans are available or
- 7:00:37no. So as you can see here Azure test
- 7:00:40plan demo that is our test plan and
- 7:00:43under that we have the test suit which
- 7:00:46is under sprint one but currently we
- 7:00:48don't have any test cases for that we
- 7:00:51need to create test cases as well. So as
- 7:00:55you have created these test suit so in
- 7:00:58this you can either add new test suits
- 7:01:00under the test suit one or else you can
- 7:01:04assign the testers to the particular
- 7:01:06suit. But before that we need to create
- 7:01:09new test cases.
- 7:01:12So now what do we need to do is we'll
- 7:01:15first edit our test plan and we'll
- 7:01:17choose our iteration that is our sprint
- 7:01:22one. So we'll be choosing that and we'll
- 7:01:26just save and close. So once we do that
- 7:01:30we'll just go to our boards. So as you
- 7:01:33can see this is our test suit and this
- 7:01:35is our test plan. So and it is currently
- 7:01:39active. So once you go to our sprints so
- 7:01:43here you can see as said in sprint one
- 7:01:46we have only one sprint but we don't
- 7:01:48have any test cases. So now what do we
- 7:01:52need to do now? We'll go back to our
- 7:01:54test plans and here as you can see we
- 7:01:58can have add test cases. So let's
- 7:02:02quickly new test case.
- 7:02:05So here we'll render the title for our
- 7:02:08test case. So let's keep it quite
- 7:02:11simple. So let's create a test case like
- 7:02:15change the title
- 7:02:20size
- 7:02:21from H2 to H3.
- 7:02:26Okay. So what do we need to do is like
- 7:02:29we are changing the title size from H2
- 7:02:32to H3. So here we'll provide the test
- 7:02:36case stage that will be in the design
- 7:02:38stage. So here what do we need to do
- 7:02:41here? We need to add the steps. How to
- 7:02:43change the title from H2 to H3. So let's
- 7:02:48quickly add some steps.
- 7:02:51All right. So we'll just give couple of
- 7:02:54few steps that is open.
- 7:02:58HTML
- 7:03:00then go to
- 7:03:03class
- 7:03:05is equals to hello.
- 7:03:08and then we will change from H2 to H3.
- 7:03:17So these are couple of steps we can add
- 7:03:20and based on that you can also give your
- 7:03:22expected results. Here we'll write size
- 7:03:27changes
- 7:03:28that means the size gets changed. We
- 7:03:31need to check that. So we'll just save
- 7:03:33and close.
- 7:03:36Now let's create one more test case.
- 7:03:40Let's try one more. So we'll just create
- 7:03:44one more test case that is new test
- 7:03:46case. So in this test case we'll just
- 7:03:50write something different. Now we'll say
- 7:03:53change the title
- 7:03:57size from
- 7:04:00H2 to H1.
- 7:04:04And here as we said we need to give our
- 7:04:07steps. So we'll just follow the same
- 7:04:10steps. Open home. HTML
- 7:04:15then go to class
- 7:04:20equals to
- 7:04:22hello and then
- 7:04:26change from
- 7:04:29H2 to H1.
- 7:04:33So we have also created our steps and
- 7:04:36this will be size change as we are just
- 7:04:38changing the size. So our expected
- 7:04:42result should be same. Now here you can
- 7:04:45also add the status means you can give
- 7:04:48it the priority to our test cases. So
- 7:04:51there are different types of priority
- 7:04:53based on which you can create. So let's
- 7:04:56keep it two. Let's not change anything
- 7:04:59and we'll just quickly save and close.
- 7:05:04So we have two test cases. Now in this
- 7:05:07define section we are able to see the
- 7:05:09different test cases which are assigned.
- 7:05:12Now we'll go to our execute
- 7:05:15and here you can see that your test
- 7:05:18cases are also visible.
- 7:05:21So you can select one or multiple test
- 7:05:25cases. So let's quickly select one and
- 7:05:28just run for web application.
- 7:05:32So once we run the web application. So
- 7:05:35here you can see the steps are specified
- 7:05:37here. So now what I will do is go to
- 7:05:40these web applications and I'll check
- 7:05:43whether the changes have been done or
- 7:05:45no. when I open the home. HTML if it is
- 7:05:49running well so I'll just check mark or
- 7:05:51else if it is not then I will just fail
- 7:05:54the test step and then I go to the class
- 7:05:58hello so once I go there so I tick mark
- 7:06:02that and I change from H2 to to H3 so
- 7:06:07I'll click that so once that is done
- 7:06:10whereas here you can add some more steps
- 7:06:13like here you can see insert new step
- 7:06:16you can just create new steps or you can
- 7:06:19delete the steps if you are not
- 7:06:21requiring it. So here you can just add
- 7:06:24any one new. All right.
- 7:06:28So here you can also take screenshots or
- 7:06:30you can just select the image action and
- 7:06:33also create a video. Now once you have
- 7:06:36done this we'll just save and close. So
- 7:06:39as you can see here our test case that
- 7:06:42is changed the title size from H2 to H3.
- 7:06:46So here it shows past. Now we'll also do
- 7:06:49with the second one. So let's run it
- 7:06:52together. Let's see what happens.
- 7:06:56Okay. So here you can change your test
- 7:07:01like we have our first test and you can
- 7:07:03switch your test cases. So currently our
- 7:07:06one test has been done. So we'll do with
- 7:07:09our second test as well. So we'll just
- 7:07:11pass all the tests and we'll just save
- 7:07:16and close.
- 7:07:18All right, it shows active state. Let's
- 7:07:21see whether it has been done or no.
- 7:07:25All right. Okay. So what did we do? We
- 7:07:28did it for the first one as well. So
- 7:07:30we'll just quickly do for this as well
- 7:07:35and just save and close. So as you can
- 7:07:39see our both the test cases have passed.
- 7:07:43So now that our test cases are run now
- 7:07:46let's go to our chart section. So here
- 7:07:49you can create a new chart. So here you
- 7:07:53can either create a new test case chart
- 7:07:56or the test result chart. So now first
- 7:08:00let's create the rest test result chart.
- 7:08:02So here you have different kind of
- 7:08:05charts. So let's select bar as just to
- 7:08:09make it simple and we can need to group
- 7:08:12by you can choose as per your
- 7:08:14requirement if you have number of suits
- 7:08:17you can choose that or testers so I'll
- 7:08:20take it as a per as the priority so now
- 7:08:25here we'll just you can change the
- 7:08:28colors of your bars and you can
- 7:08:30customize it on your own requirement so
- 7:08:33once that is done so Now this is the
- 7:08:36test case. As we said we have only one
- 7:08:39test suite. So based on that our chart
- 7:08:42looks like this.
- 7:08:44So now that we have just run both the
- 7:08:46test cases and we also see the charts as
- 7:08:49well. So there were two test cases that
- 7:08:51had run successfully. Now we'll just go
- 7:08:54to our boards and in that we'll just
- 7:08:58select any one of the test cases. Now as
- 7:09:02it has been run successfully we'll just
- 7:09:05change the state. You can change the
- 7:09:08state by ready closed anything. So it
- 7:09:12will be just we'll close this and we'll
- 7:09:14save it. All right. And now let's go
- 7:09:19back to the work items and let's do the
- 7:09:22same as well with the second test case
- 7:09:26that is the change the title from H2 to
- 7:09:29H1. So let's do ready and let's save it.
- 7:09:37So what do we do is now we'll just go
- 7:09:40back to our test plans and create a new
- 7:09:43chart and see how our test case looks.
- 7:09:47So let's check based on the states. So
- 7:09:51here you can see one is in the ready
- 7:09:53state and one is in the closed state. So
- 7:09:56we had changed the state of one test
- 7:09:58case as closed means the test has been
- 7:10:01done and one as it is ready. As said you
- 7:10:05can also change the colors based on your
- 7:10:08choice. You can give any colors to your
- 7:10:12charts and you can show to the people.
- 7:10:16So in this test suits let's create a new
- 7:10:19test case chart. So in this let's take a
- 7:10:22pie chart itself and let's group it by
- 7:10:25the states. So as we change the state of
- 7:10:28each of the test cases based on that
- 7:10:31we'll be seeing. So as you see one test
- 7:10:33case was closed and I had changed one of
- 7:10:36the test case to be ready. So we can see
- 7:10:39the differentiation based on it. So
- 7:10:42it'll be helpful for the team also to
- 7:10:44understand that how many test cases are
- 7:10:47closed under which states. So this is
- 7:10:50for you can create. So this was under
- 7:10:53the test suit one. Whereas you can also
- 7:10:56do it for your test plans as well. So as
- 7:10:59you can see here it is like you can
- 7:11:01create new test cases over here and
- 7:11:04based on that you can create a chart.
- 7:11:06Now let's create one more suite and
- 7:11:09let's see how does that chart look. So
- 7:11:12let's create a test suit that is test
- 7:11:16suit 2. And in this also we'll have a
- 7:11:21test case. Let's create a new test case
- 7:11:25like hello world. And we'll give couple
- 7:11:29of steps. Open
- 7:11:32hello world dot html.
- 7:11:37go to class
- 7:11:40and then print is equal to hello world.
- 7:11:48All right. Now we'll just save and
- 7:11:50close.
- 7:11:52So this is our test case. So now we'll
- 7:11:54not run this test case now. We'll just
- 7:11:57create a chart and see how does it look
- 7:11:59like. So we'll just go to our test plan
- 7:12:02itself. So under this test plan we will
- 7:12:05create a new test case. Okay. So here
- 7:12:08you can see it automatically gets
- 7:12:10changed. You don't have to like create a
- 7:12:12new chart over there. It automatically
- 7:12:15gets changed and you can see one is in
- 7:12:17the design stage, one is in the ready
- 7:12:19stage and close stage. Whereas you can
- 7:12:21also edit it while if you want to change
- 7:12:24the constraints based on like state or
- 7:12:28anything. So you can change it
- 7:12:30accordingly. So I'll just keep it as it
- 7:12:33is. So this is how you do the manual
- 7:12:36testing in DevOps test plan. Whereas I
- 7:12:40said you can also do the automated
- 7:12:41testing by building pipelines and with
- 7:12:44those pipelines you need to connect it
- 7:12:46with your test suits and through that
- 7:12:48you can just automate all your test
- 7:12:50plans.
- 7:12:57What are Azure artifacts? So according
- 7:13:00to the definition, Azure Artifacts is a
- 7:13:04package management system integrated
- 7:13:06with Azure DevOps that allows you to
- 7:13:08develop and share packages like Maven,
- 7:13:12npm and nugget etc. via public and
- 7:13:15private feeds to any size business. So
- 7:13:19basically Azure artifacts is kind of an
- 7:13:22extension that makes it easy to
- 7:13:24discover, install and publish packages
- 7:13:27in Azure DevOps. It's deeply integrated
- 7:13:30with other hubs like build so that
- 7:13:33package management can become a seamless
- 7:13:36part of your existing workflow. It
- 7:13:39enables developers to share their code
- 7:13:41efficiently and manage all their
- 7:13:43packages from one place. Using Azure
- 7:13:47DevOps artifacts, developers can publish
- 7:13:50packages to their feeds and share it
- 7:13:52within the same team, access
- 7:13:55organizations and even publicly. So this
- 7:13:58was all about what are Azure artifacts.
- 7:14:02Let's quickly move on to the next that
- 7:14:05is why Azure DevOps artifacts. So there
- 7:14:08are three main features in Azure DevOps
- 7:14:10artifact which makes it more special and
- 7:14:14demanding. So let's quickly have a look
- 7:14:16what are those three. So first is you
- 7:14:19can keep your artifacts organized. So
- 7:14:22what does it mean that you can share
- 7:14:24code effortlessly by storing any
- 7:14:27packages irrespective of whatever
- 7:14:29programming language you are using like
- 7:14:32Maven, npm, nugget and python etc. You
- 7:14:36can just feed them all together in the
- 7:14:39artifacts and keep it organized. Second
- 7:14:42is protect your packages. So here it
- 7:14:45means that you can keep every public
- 7:14:47source package that you use including
- 7:14:50packages from npmjs and nugget.org
- 7:14:54safe in your feed where only you can
- 7:14:57delete it and it is backed by the
- 7:14:59enterprise grade Azure SLAs. So that
- 7:15:02means that all your packages are safe
- 7:15:05and secure. Third is integrated package
- 7:15:09handling into your CI/CD pipeline. So
- 7:15:12what does it mean that you can access
- 7:15:14all your artifacts in builds and
- 7:15:16releases in which artifact integrates
- 7:15:19natively with the Azure pipeline or
- 7:15:21CI/CD tool. So these were the three
- 7:15:24benefits or we can say features that
- 7:15:26makes Azure DevOps artifacts more
- 7:15:28demanding and mostly helpful to users
- 7:15:31basically like developers. So let's
- 7:15:34quickly move on ahead. So next is Azure
- 7:15:38Artifacts workflow. So let's see how
- 7:15:41Azure artifact work. So it is a
- 7:15:43three-step process in which makes it
- 7:15:45easy to work. So like uh we can see the
- 7:15:48first step is to create a package. So
- 7:15:50basically what is it? A package feed is
- 7:15:52a location you use to host packages you
- 7:15:56want to deploy to the deployment
- 7:15:58manager. So when you set up a deployment
- 7:16:01manager, you need to choose a feed you
- 7:16:03want to use to host your package. So
- 7:16:07here what do you do? First you create a
- 7:16:09package feed or a team feed. So once you
- 7:16:12create a team feed then we move on to
- 7:16:14the next step that is build integration.
- 7:16:17So basically what do we do here is like
- 7:16:19we connect to the feed in the Azure
- 7:16:21DevOps and then we start building
- 7:16:24integration. The main purpose of build
- 7:16:26integration is to define the order in
- 7:16:29which the components and subsystem
- 7:16:31should be implemented which builds to
- 7:16:33create when integrating the system and
- 7:16:36how they are to be assessed. After this
- 7:16:39we move on to the third step that is
- 7:16:41consume from feed. So here what do we do
- 7:16:44is that we pack and push packages to
- 7:16:47your feed and then we consume feed by
- 7:16:49running build and restoring packages
- 7:16:51from team and setting up new solution
- 7:16:54locally to consume the feed. So these
- 7:16:56were the three easy steps or we can say
- 7:16:59the whole workflow of Azure DevOps
- 7:17:01artifact. So with no wait let's quickly
- 7:17:04move on to our demo where we'll see how
- 7:17:07do we work with the artifacts. So first
- 7:17:10we need to open our terminal. Let's open
- 7:17:12our terminal. And now what we'll do is
- 7:17:16we'll create a folder where we'll be
- 7:17:18storing our both the projects. So let's
- 7:17:21quickly create the folder.
- 7:17:26So here you can see our DevOps folder
- 7:17:28has been created. Now let's just confirm
- 7:17:31whether it has been created or no.
- 7:17:33Documents. All right. So here you can
- 7:17:36see this is our DevOps folder. So now
- 7:17:38here we'll be adding our both the
- 7:17:40projects whatever we'll be building. So
- 7:17:42let's quickly build our projects. Let's
- 7:17:45move to our visual studio.
- 7:17:48Okay. So here we'll be creating our
- 7:17:50project. So as I said I'll be using the
- 7:17:53Java project. So let's quickly make it
- 7:17:56control shiftp.
- 7:17:58And this is the option create Java
- 7:18:00project. So I'll just click on this. And
- 7:18:03I'll be taking Maven. You can take any
- 7:18:05other tools like gradal, spring boot,
- 7:18:08caucus, microprofile, any of your
- 7:18:10choice. For me, I'll be choosing Maven
- 7:18:13and then Maven arch tag quick start. And
- 7:18:17our version would be 1.4. And now here
- 7:18:20we need to give a name to our group ID.
- 7:18:23So let's keep it Azure
- 7:18:27packs. All right. And now they ask for
- 7:18:30the artifact ID. So we'll keep it very
- 7:18:33simple. project one and here we need to
- 7:18:36select the folder. So we'll be selecting
- 7:18:38the DevOps folder which we had created.
- 7:18:41So this would be our destination folder.
- 7:18:43So here you can see it is executed.
- 7:18:47All right. So here you can see your
- 7:18:49group ID, artifact ID and the version.
- 7:18:52So our version would be 1.0 snapshot. So
- 7:18:56just copy this and paste it over here.
- 7:18:59Hit enter. and they ask for the
- 7:19:01confirmation of your properties. So our
- 7:19:04group ID is Azure artifacts artifact ID
- 7:19:07project 1 version 1.0 snapshot package.
- 7:19:11Uh so here we must update the package
- 7:19:14name. It should be similar to the
- 7:19:16artifact ID. So let's just update it.
- 7:19:19Snapshot our version is 1.0 snapshot and
- 7:19:24package we'll name it as our artifact
- 7:19:27ID. So project
- 7:19:30one. Yes. And here you can see our
- 7:19:34project one has been created
- 7:19:35successfully. And here you get the
- 7:19:38message. And we'll just open this. All
- 7:19:40right. So here as you can see this is
- 7:19:43project one. And you do have your source
- 7:19:46files and pom.xml.
- 7:19:48So this is the where you find all your
- 7:19:52dependencies. So let's quickly build our
- 7:19:55project two. We'll follow the same
- 7:19:57process. Control shift P Java project
- 7:20:01Maven type 1.4 and our group ID would be
- 7:20:06same. So Azure
- 7:20:09artifacts
- 7:20:10and this will name it as project two.
- 7:20:14Now we select the folder destination
- 7:20:17folder. All right. So here we see our
- 7:20:20group ID artifact ID project 2. Let's
- 7:20:24keep the version same. We'll just copy
- 7:20:27this. And we need to update our package.
- 7:20:32So let's update it. Project two. Yes.
- 7:20:37All right. So our project 2 has also
- 7:20:39been successfully built. Here you get
- 7:20:41the message. We'll just open this as
- 7:20:44well. So here also you can see your
- 7:20:46source file and your pom.xml file has
- 7:20:50been created. So now both the projects
- 7:20:53are created. Now what do we need to do
- 7:20:55is to create the dependencies. So let's
- 7:20:58create the dependencies. For this we'll
- 7:21:02just maximize this. In project two we'll
- 7:21:05come to this dependencies section and
- 7:21:08we'll copy this dependency code. Copy
- 7:21:12and just paste it below. And now what do
- 7:21:15we do here is as we need to relate the
- 7:21:18dependencies. So we'll change the group
- 7:21:21ID, artifact ID and your versions. So
- 7:21:25what would be our group ID is Azure
- 7:21:28artifacts which we had created. So let's
- 7:21:30just copy and paste and our artifact ID
- 7:21:35is project one as we are making project
- 7:21:39one dependent on project two. So let's
- 7:21:42write it project
- 7:21:46one. All right. Our version would be 1.0
- 7:21:49snapshot code and our scope would be
- 7:21:53system.
- 7:21:57Now below this we need to give the
- 7:21:59system path. So let's quickly give the
- 7:22:03system path.
- 7:22:07Okay. So our system path would be dollar
- 7:22:12base star
- 7:22:16like
- 7:22:18shift
- 7:22:201 Python 1. So here we get the option
- 7:22:241.2 snapshot jar. So we'll quickly save
- 7:22:29this and we'll open our terminal. So
- 7:22:33let's open our terminal. So now to build
- 7:22:36this Java file, we need to go to project
- 7:22:40one. So let's go to project one. CV
- 7:22:43project one. All right. So here what do
- 7:22:47we do? We'll just hit the command maven
- 7:22:51compile.
- 7:22:55All right. So here it shows it has been
- 7:22:58built successfully. After this we'll
- 7:23:00just hit the command maven package.
- 7:23:08All right. So your maven package command
- 7:23:10has also been run successfully. Let's
- 7:23:13quickly cross check it once. Let's go to
- 7:23:15project one. Now here we see the tab
- 7:23:18gate folder. So let's quickly check. So
- 7:23:21here here you can see your project 1.0
- 7:23:25snapshot.jar file has been created. Now
- 7:23:29what do we need to do is we need to copy
- 7:23:32this jar file and paste it in project 2.
- 7:23:36So for this let's create a folder in
- 7:23:38project 2.
- 7:23:41Let's name it live and we'll copy this
- 7:23:45jar file and paste it in.
- 7:23:52Okay. Now what do we do? We'll run the
- 7:23:54same commands that is maven compile and
- 7:23:57maven package in project 2 as well. So
- 7:24:01let's quickly go to project two.
- 7:24:05Maven
- 7:24:08compile.
- 7:24:12All right. So here you can see it has
- 7:24:13been built successfully. Let's run
- 7:24:15another command that is maven package.
- 7:24:22All right. So here you can see maven
- 7:24:25package has also run successfully. So
- 7:24:27this is how you create the dependencies
- 7:24:29between the two projects. Now let's
- 7:24:32quickly move on to our Azure
- 7:24:36So we'll go to our Azure DevOps. Okay.
- 7:24:40So here first we'll be creating a
- 7:24:43project. Let's create a new project and
- 7:24:46let's name it Azure DevOps
- 7:24:50RT
- 7:24:54and we'll make it private like you can
- 7:24:57choose any one of the like you can
- 7:24:59choose the visibility of your own
- 7:25:01choice. So, but I will prefer private
- 7:25:03and we'll create it. So, this is our new
- 7:25:06project. Here you can see there are
- 7:25:09different options like boards, ripples,
- 7:25:11pipelines, test plans, artifacts. So,
- 7:25:15first we'll go to reposs and here we'll
- 7:25:19be uh like uploading our project
- 7:25:21whatever we have created right now. For
- 7:25:23this now what do we need to do? The
- 7:25:26first step is like so let's go to our
- 7:25:29project. Now we have created the
- 7:25:31dependencies like we have created our
- 7:25:33java files and our both the projects are
- 7:25:36dependent on each other like so it is
- 7:25:39basically typically for like one
- 7:25:41developer environment but uh let us
- 7:25:44assume like if you have two different
- 7:25:46teams and then what you need to do that
- 7:25:49you need to always come over here and
- 7:25:51open the jar file and just uh update the
- 7:25:54versions of the jar file every time. So
- 7:25:57what do you need is to have a central
- 7:25:59location where you have all these files
- 7:26:02and then every time whenever you compile
- 7:26:04these projects then it is going to go
- 7:26:07ahead and the latest file and then it is
- 7:26:10basically that you don't need any more
- 7:26:12like you won't have to just come over
- 7:26:14here and keep on updating your versions.
- 7:26:17So it would be automatically done. So
- 7:26:19for that what we'll do like uh we'll
- 7:26:22just uh delete this jar files from here
- 7:26:25so that only the code is like
- 7:26:28transferred to our reports. So let's go
- 7:26:32to our files
- 7:26:34and go to project one and in target
- 7:26:38there is our jar file. So we'll just
- 7:26:40delete this jar file.
- 7:26:48Same would be done in project two
- 7:26:51project and we'll just delete this
- 7:26:54folder.
- 7:26:57All right. So now that is done. So let's
- 7:27:01move on to our terminal. Now we need to
- 7:27:04like move to our destination folder
- 7:27:06where we have posted where we have built
- 7:27:09our both the projects. So I've come here
- 7:27:11to this devops folder. Now what we need
- 7:27:14to do is we need to send these projects
- 7:27:18these two projects into our g
- 7:27:20repository. For that we'll get
- 7:27:25in it
- 7:27:27and then get add
- 7:27:33and then get
- 7:27:37comment
- 7:27:44enter. So here you can see our both the
- 7:27:48files have been gone into the
- 7:27:50repository. Now what do we need to do is
- 7:27:53we will go to our repository and we'll
- 7:27:57just copy this get remote add origin. So
- 7:28:01what do we need to do is we'll just copy
- 7:28:03this link. Copy and get remote add
- 7:28:08origin.
- 7:28:11Get
- 7:28:22And now we'll use the get push command.
- 7:28:25So let's use it. Get
- 7:28:29push
- 7:28:32typing you.
- 7:28:40All right. So our files are uploaded.
- 7:28:43Now just let's refresh this repository.
- 7:28:49Let's go repose.
- 7:28:52Okay. So here you can see our both the
- 7:28:55projects are uploaded over here. So it
- 7:28:58has it is quite clean. We just have our
- 7:29:00pomx.xml
- 7:29:02and our source folder. We don't have our
- 7:29:06java files or anything as such. Now
- 7:29:09after this let's move on to our
- 7:29:12artifacts. So here first is we need to
- 7:29:17create a feed. So let's create a feed.
- 7:29:21Let's name it project
- 7:29:26aure
- 7:29:29app. And here we can give the visibility
- 7:29:32it's upon you like whatever choice you
- 7:29:35need to give. So you can give the
- 7:29:37visibility like only accessible to the
- 7:29:39members of the organization or to the
- 7:29:42specific people. So I'll select the
- 7:29:44second option and and upstreaming
- 7:29:47sources. So here we like from the public
- 7:29:50sources where you include the packages
- 7:29:52like no matter whatever languages you
- 7:29:54are using and our scope would be
- 7:29:57project. It can be either project or
- 7:29:59organization. So for me I'll be
- 7:30:01selecting the project and I'll just
- 7:30:04create it. So yes as you can see here
- 7:30:06our feed has been created. Now next what
- 7:30:09do we need to do is connect to feed. So
- 7:30:14here you can see all different languages
- 7:30:18uh the packages which you need to like
- 7:30:21connect and you need to feed onto the
- 7:30:23artifacts. So here there are different
- 7:30:26languages like net nugget visual studio
- 7:30:29npm gradel python web. So you can choose
- 7:30:33any one of your choice. For me, I'll be
- 7:30:36choosing Maven as we have worked on
- 7:30:39Maven. So let's uh what do we need to do
- 7:30:43is here let's copy this repository and
- 7:30:47we need to paste it onto our project
- 7:30:49files. So let's go to project two and
- 7:30:53let's search for our repository section.
- 7:30:56So do we have any repositories?
- 7:31:00So no, we don't have repository. We need
- 7:31:02to create a new repository. So let's
- 7:31:04create a repository just below our
- 7:31:06dependencies.
- 7:31:09So
- 7:31:11repos
- 7:31:21let's close it.
- 7:31:23All right. Now what do we do? We will
- 7:31:26just paste the code over here and just
- 7:31:29save it. Now we can also copy this whole
- 7:31:32code and paste it on project one as
- 7:31:36well. So this is our project one. Let's
- 7:31:40go and do the same thing under
- 7:31:43repository. Sorry, under the
- 7:31:45dependencies we place this repository
- 7:31:50and save it. All right. So now you can
- 7:31:54see this URL. So this URL is need some
- 7:31:57authentication as this is private. So
- 7:32:00how do we give the authentication? So
- 7:32:02let's move on to our Azure DevOps. Here
- 7:32:06we'll go to personal access key tokens
- 7:32:09and here we'll be creating a new token.
- 7:32:12So let's create a new token over here.
- 7:32:14You can give any name to your token.
- 7:32:17Let's keep it project
- 7:32:21azure.app
- 7:32:23app dot artifacts
- 7:32:26artifact. All right. And let's give the
- 7:32:31authentication. We'll give the packaging
- 7:32:34read, write and manage. Once that is
- 7:32:37done, let's create.
- 7:32:40So as you can see your token is created
- 7:32:42over here. And this is your password.
- 7:32:45All right. So just copy this password.
- 7:32:48Now where do we put this keyword so that
- 7:32:50we can authenticate? So there is a
- 7:32:53folder maven folder that is m2.m2.
- 7:32:58So we'll go to that m2 and here you can
- 7:33:01see the repository folder and there's a
- 7:33:04settings.
- 7:33:05So we'll go to the settings.xml file and
- 7:33:09here you can see this is the code where
- 7:33:12you can give the authentication to your
- 7:33:14maven project. So here this is the code
- 7:33:18server. Under this you have your project
- 7:33:20ID project azure.app and your username
- 7:33:24is your organization's name. Now let's
- 7:33:27paste the password which we had copied.
- 7:33:30So let's paste it over here and let's
- 7:33:33save it. So now let's go to our Azure
- 7:33:37DevOps and we'll go to the artifacts
- 7:33:42connect to feed Maven and so here you
- 7:33:46can see your the settings.xml file your
- 7:33:51username is there and your personal
- 7:33:53access token which we created previously
- 7:33:56have been initiated. Now what do we need
- 7:33:59to do is copy this repository as it has
- 7:34:03been updated. Let's copy this and paste
- 7:34:06it again to our both the projects. So
- 7:34:10we'll just copy this repository. Paste
- 7:34:14it over here and save it. Let's do the
- 7:34:19same with our project one. So this is
- 7:34:22our project one. All right. So we'll
- 7:34:25save this as well.
- 7:34:28Now what do we need to do is we need to
- 7:34:30also have this distribution management
- 7:34:33code. So let's find out if we have this
- 7:34:36section. So we don't have it. Let's
- 7:34:39paste it again to just below the
- 7:34:41repositories.
- 7:34:43Just close this.
- 7:34:48Copy paste.
- 7:34:52Now what do we need to do is copy the
- 7:34:55same repository code and paste it just
- 7:35:00inside this distribution management and
- 7:35:03save it. All right. Now we'll just do
- 7:35:06the same thing with this is for the
- 7:35:08project one. We'll do it for project two
- 7:35:10as well. Let's copy project two and
- 7:35:15paste. All right. So we'll save it. So
- 7:35:19now let's move on to the terminal of
- 7:35:21project one and
- 7:35:26deploy.
- 7:35:33All right. So here you can see it has
- 7:35:35been successfully built. Now let's just
- 7:35:38check whether it has come or no. Let's
- 7:35:42go back and
- 7:35:45refresh this.
- 7:35:48So here you can see your uh project one
- 7:35:50artifact have been created. Just click
- 7:35:53on this and here you see all your
- 7:35:58details or your files
- 7:36:00are already existent. Now what do we
- 7:36:03need to do is just copy this dependency
- 7:36:06and we'll paste it in our project. So
- 7:36:10we'll just select this and paste it and
- 7:36:15save. And let's
- 7:36:19v
- 7:36:20deploy
- 7:36:26event this has been built successfully.
- 7:36:29Let's check refresh.
- 7:36:32So here you can see our both the
- 7:36:34projects have been uploaded. And this is
- 7:36:37how you push your packages into your
- 7:36:39artifacts. I hope you all understood how
- 7:36:43actually the Azure DevOps artifact
- 7:36:45works. How do we push packages into our
- 7:36:47artifacts?
- 7:36:55So, first and foremost, let's try and
- 7:36:56understand what Azure Kubernetes Service
- 7:36:59is. Now, I'm not going to get into the
- 7:37:01details of this service right away, but
- 7:37:03just to give you an introduction, Azour
- 7:37:05Kubernetes Service is a fully managed
- 7:37:08container management service. It is
- 7:37:10provided by Microsoft Azure obviously
- 7:37:12which is a very popular cloud service
- 7:37:14provider and recent stats also state
- 7:37:16that it is one of the leading public
- 7:37:18cloud service providers in the market.
- 7:37:20So when you talk about Azure Kubernetes
- 7:37:22it is basically managed by Microsoft
- 7:37:24Azure what it does is it offers
- 7:37:27serverless continuous integration and
- 7:37:29deployment experience. Now what does
- 7:37:32that mean? What we can do with it? We'll
- 7:37:34discuss all those things as we get into
- 7:37:36the details of Azure Kubernetes service.
- 7:37:39For now, we need to understand quite a
- 7:37:41few other concepts before we get to that
- 7:37:42point. But to summarize few of its
- 7:37:44benefits, what Azure Kubernetes service
- 7:37:47does is what it offers is end to end
- 7:37:50deployment, scalability and
- 7:37:52availability. Now, how do these things
- 7:37:54work? We'll discuss that. But before
- 7:37:56that, let's try and understand what
- 7:37:58evolution of software development and
- 7:38:00deployment is and how it has evolved
- 7:38:02with time, right? So, we all know how
- 7:38:05applications were built and how they've
- 7:38:07progressed with time, right? So if you
- 7:38:09talk about the popular ways in which
- 7:38:11software development and deployment has
- 7:38:13evolved, we all think of waterfall
- 7:38:15model, agile model and devops which is
- 7:38:18the current way in which we basically go
- 7:38:21ahead and deploy applications right or
- 7:38:24basically not only develop but also
- 7:38:26maintain monitor and deploy applications
- 7:38:29right so let's try and understand all of
- 7:38:31these one by one let's see how they
- 7:38:33evolve with time so when you talk about
- 7:38:36waterfall model agile model or devops
- 7:38:39They all have these three things which
- 7:38:41basically sets them apart right the
- 7:38:43application architecture beat it their
- 7:38:46deployment or packaging and finally the
- 7:38:49application infrastructure that we can
- 7:38:51think of. Now when you talk about the
- 7:38:53application architecture the first one
- 7:38:55that is your waterfall model is known
- 7:38:57for its monolithic architectures right
- 7:38:59something that we came away from. If you
- 7:39:01talk about current generation we are
- 7:39:03more into the microservices model that
- 7:39:06is handled by a devops right. So when
- 7:39:08you talk about waterfall we had
- 7:39:10monolithic applications that means
- 7:39:12everything was inside a single
- 7:39:14application your servers right your
- 7:39:17applications be it your management tools
- 7:39:19and stuff like that everything was
- 7:39:21inside a single application and these
- 7:39:23kind of architectures were called as
- 7:39:25monolithic architectures. Now with time
- 7:39:28we had agile model where we had
- 7:39:31multi-ter applications where some of
- 7:39:33your applications or some of the
- 7:39:35functionalities of your applications
- 7:39:37were handed over to some other domain or
- 7:39:39to some other tier right and hence we
- 7:39:41had multiple tiers say for example you
- 7:39:43would have your application tier in one
- 7:39:45place and you'd have your basically your
- 7:39:47database tier in other place right
- 7:39:49something like that and when you talk
- 7:39:51about devops they took this
- 7:39:53functionality to a further classified I
- 7:39:56would say architecture where we had
- 7:39:58microservices or granular parts of your
- 7:40:02application that could function
- 7:40:04independently. Now why do we need these
- 7:40:07kind of changes right? Why did we not
- 7:40:10offer monolithic applications? Now when
- 7:40:12you talk about monolithical applications
- 7:40:14these were bulky and these were very
- 7:40:16rigid not easy to basically go ahead and
- 7:40:18modify. If you had to you had to change
- 7:40:20the entire thing when you talk about
- 7:40:22agile it gave you more flexibility. How
- 7:40:24we had multi- tiers right? So if one of
- 7:40:27the tiers is not functioning right. So
- 7:40:30we could actually go ahead and work on
- 7:40:31that tier and it would not affect the
- 7:40:34remaining functionality. But when you
- 7:40:36talk about DevOps or when you talk about
- 7:40:38microservices in particular, it
- 7:40:40basically breaks down your application
- 7:40:42into granular chunks where each of these
- 7:40:45applications performs as a whole. But
- 7:40:48you can think of them as an individual
- 7:40:50part which you can basically go ahead
- 7:40:53and function or operate on individually
- 7:40:55and also ensure that you can basically
- 7:40:58make changes to these individual parts
- 7:41:00individually without affecting the
- 7:41:02functioning of the entire application.
- 7:41:05Now when we talk about deployment and
- 7:41:07packaging we have different ways in
- 7:41:10which these applications are hosted
- 7:41:11right or in which these different ways
- 7:41:14of software development and deployment
- 7:41:16work right. So when you talk about
- 7:41:18deployment packaging your waterfall
- 7:41:20model supported or supports your
- 7:41:23physical servers right you have a
- 7:41:24physical server. Similarly when you talk
- 7:41:27about your devops or rather we have
- 7:41:30agile first. So when you talk about
- 7:41:31agile you had your virtual servers. Now
- 7:41:34if you talk about cloud computing yes to
- 7:41:37some extent it supports virtualization
- 7:41:40but back in those days virtual servers
- 7:41:42were a little different. So if you talk
- 7:41:43about agile model it basically lies on a
- 7:41:47deployment model which is based on
- 7:41:48virtual servers. When you talk about
- 7:41:50microservices on the other hand they are
- 7:41:52more based on containers kind of an
- 7:41:55deployment is what I would say.
- 7:41:57Similarly if you go ahead and discuss
- 7:41:58their application infrastructure. Now
- 7:42:00for your waterfall models we had data
- 7:42:03centers that basically had all these
- 7:42:05applications being hosted right your
- 7:42:07monolithic applications. Similarly, when
- 7:42:09you talk about agile, we mostly move to
- 7:42:12the hosted platforms, right? And when
- 7:42:14you talk about current microservices or
- 7:42:17your container infrastructure, we talk
- 7:42:19about cloud hosting. And that is why
- 7:42:22we've come up with this session where
- 7:42:24we'd be understanding how containers
- 7:42:26work on top of cloud. That is your
- 7:42:28Kubernetes orchestration tool in this
- 7:42:31case would be working on our Microsoft
- 7:42:33Azure cloud platform. So I believe the
- 7:42:36evolution of development and deployment
- 7:42:39is clear to you all. Let us now go ahead
- 7:42:41and understand or discuss some of the
- 7:42:43other bits that are there on update. Now
- 7:42:46before we actually go ahead and
- 7:42:47understand how Kubernetes works, right?
- 7:42:50And why are we talking about containers
- 7:42:52and stuff, we need to understand how
- 7:42:54containers are different from virtual
- 7:42:56machines. Because virtual machines are
- 7:42:58something that people have been using
- 7:43:00and many of them have migrated to
- 7:43:02containers. Why? because both of them
- 7:43:04they have their benefits and reasons for
- 7:43:07these benefits. So let us try and
- 7:43:09understand how a container is different
- 7:43:10from a virtual machine more than a
- 7:43:13comparison. It is just understanding how
- 7:43:15they're different from each other. Now
- 7:43:17this image should give you an
- 7:43:18understanding as to how these two things
- 7:43:21are different. The one on the left hand
- 7:43:22side you have your container and on the
- 7:43:24right hand side you have your virtual
- 7:43:26machine. Now when you talk about virtual
- 7:43:28machine what a virtual machine does is
- 7:43:31on top of your server it lets you host
- 7:43:33your guest operating systems to give you
- 7:43:36an example when you talk about a service
- 7:43:38right or if you talk about a cloud
- 7:43:40platform like Microsoft Azure where you
- 7:43:42have Azure virtual machines which again
- 7:43:45lets you spawn instances or virtual
- 7:43:47machines. Now these virtual machines or
- 7:43:49instances can have different guest oss.
- 7:43:52Say for example, if you launch a virtual
- 7:43:54machine that basically has a guest OS of
- 7:43:56Linux and there's another virtual
- 7:43:58machine that has a guest OS of your
- 7:44:02Windows, right? So we are talking about
- 7:44:04two different virtual machines or
- 7:44:06entities which function on the same
- 7:44:09server but they have different operating
- 7:44:12systems. That means if I want an
- 7:44:15application to run in Windows, I can do
- 7:44:17that using my VM that is Windows in
- 7:44:19nature. And similarly, if I want
- 7:44:21something to run on top of Linux, I can
- 7:44:23use the virtual machine that is Linux in
- 7:44:25nature. Right? So that is what virtual
- 7:44:28machines offer you. Okay? But there's a
- 7:44:31catch here. When you talk about a
- 7:44:33virtual machine, you're talking about a
- 7:44:35server, right? On top of that server
- 7:44:37you'd be having your host operating
- 7:44:39system on which you'd be running a
- 7:44:42hypervisor. Now this is more of a
- 7:44:44middleware okay or a service that
- 7:44:46supports all the applications that are
- 7:44:48there on top of it including the
- 7:44:50operating system the guest operating
- 7:44:51system that we are talking about. Now
- 7:44:53here the problem is as you can see the
- 7:44:56virtual machines that you see on the
- 7:44:57left hand side right they'll have
- 7:44:59separate guest oss they'll have their
- 7:45:01bins and then on top of that they'll be
- 7:45:03having the applications that are
- 7:45:05running. Now what is the disadvantage
- 7:45:07here? Here what happens is each time you
- 7:45:10have a virtual machine that is operating
- 7:45:13we need to ensure that there's a guest
- 7:45:14OS there. So there's a dependency on
- 7:45:17this. And what this does is it makes it
- 7:45:20difficult for you to basically break
- 7:45:22this virtual machine from the existing
- 7:45:25infrastructure or architecture and make
- 7:45:27it run somewhere else. Right? Because
- 7:45:30this is a complicated process. But when
- 7:45:32you talk about your containers, this is
- 7:45:35where the difference lies. Say for
- 7:45:37example, I'll be having a docker engine
- 7:45:39in this case, right? It can be anything.
- 7:45:41I mean when you talk about docker
- 7:45:42engine, it is a type of tool that
- 7:45:45provides you containers. Okay? So
- 7:45:47supports container spawning for you in
- 7:45:49simple words. There other container
- 7:45:52tools as well. We are not here to
- 7:45:53discuss Docker but Docker is one of the
- 7:45:56most popular container tools. That is
- 7:45:58why you see Docker here. So think of it
- 7:46:00as your container image what you see
- 7:46:03there in the left hand side. So you can
- 7:46:05see that there's a server host you have
- 7:46:06your hypervisor you have your guest OS.
- 7:46:10So guest OS here is common right. So
- 7:46:12when you have a guest OS here what that
- 7:46:15means is all the containers that would
- 7:46:18be running on top of it would be running
- 7:46:19on the same guest OS. So you do not have
- 7:46:23a dependency where basically you have to
- 7:46:26ensure that all the guest OS
- 7:46:28requirements are also there in your
- 7:46:30container. So your container is more
- 7:46:32independent of the operating system.
- 7:46:34Right? The only concern here though is
- 7:46:37in case of containers you have to ensure
- 7:46:40that if you have one hypervisor or one
- 7:46:45docker engine that is running for you
- 7:46:47right in that docker engine where
- 7:46:49there's a single guest OS in that case
- 7:46:51you'll be running all your containers
- 7:46:53that are supported by that guest OS
- 7:46:55right now if my guest OS is Windows I
- 7:46:57cannot expect myself to run Linux
- 7:47:00containers there I'm just giving you an
- 7:47:01example okay so there's a drawback there
- 7:47:04but The benefit here is right since your
- 7:47:08applications, your bins and your library
- 7:47:10files are independent, you can package
- 7:47:12them in a container and move them across
- 7:47:15easily. So you can run it on other
- 7:47:17docker engines as well to support your
- 7:47:19claim. What that does is since you have
- 7:47:21this freedom here where you're not
- 7:47:23dependent on your guest OS, right? Or
- 7:47:25you do not have your guest OS inside
- 7:47:27your container, you get certain
- 7:47:28benefits. It makes your containers
- 7:47:30faster. Okay? makes them reliable and at
- 7:47:34the same time makes them efficient. So
- 7:47:36that is what basically containers are
- 7:47:39and that is how they're different from
- 7:47:40virtual machine. So I hope by now the
- 7:47:43point here is clear to you all as in how
- 7:47:45do these things function. Okay, let us
- 7:47:47now go ahead and understand the other
- 7:47:49bits. So now let us try and understand
- 7:47:52what Kubernetes is right because many of
- 7:47:56us know that it is a container
- 7:47:57orchestration tool. We always try to
- 7:48:00compare it with Docker which may not be
- 7:48:02the rightest things to do or the best
- 7:48:04things to do rather. Why is that? Let's
- 7:48:07try and understand that as in what is
- 7:48:09Kubernetes? Why do we need it? And is it
- 7:48:12same as Docker or not. Okay. Now here
- 7:48:15are few things that would tell us why do
- 7:48:17we need Kubernetes and how it is
- 7:48:19different from Docker is something that
- 7:48:21I would discuss in this bit itself. Now
- 7:48:24when you talk about Kubernetes, it is
- 7:48:26used for container communication. Now
- 7:48:29this is where it is different from
- 7:48:30Docker. When you talk about Docker, it
- 7:48:33is something that lets you basically set
- 7:48:36up containers and work with containers.
- 7:48:39Okay. When you talk about Kubernetes, it
- 7:48:43is something that lets you manage these
- 7:48:46containers. Be it your Docker containers
- 7:48:49or be it other kind of containers as
- 7:48:52well. So that is what Kubernetes does
- 7:48:55for you. Now let us try and understand
- 7:48:58why do we need something like Kubernetes
- 7:49:01to manage these containers. Be it a
- 7:49:03docker container or be it any other
- 7:49:05container. Now when you talk about
- 7:49:07containers they cannot communicate with
- 7:49:09each other. They need help to do that.
- 7:49:12This is where a tool like Kubernetes
- 7:49:14comes into picture. Apart from that, if
- 7:49:17you go ahead, what containers do is they
- 7:49:21basically can be deployed as
- 7:49:23applications, right? As individual
- 7:49:24applications. But since it is easier to
- 7:49:28deploy these applications thanks to
- 7:49:30containers, you cannot just go ahead and
- 7:49:32deploy applications the way it suits
- 7:49:34you. You cannot just go ahead and deploy
- 7:49:35your containers the way it suits you,
- 7:49:37right? There has to be a process behind
- 7:49:39it. You need to understand what
- 7:49:40containers to spawn, what to schedule,
- 7:49:43what to release, right? I mean what to
- 7:49:44deploy rather. So to do that this is
- 7:49:47where Kubernetes again comes into
- 7:49:48picture. Third bit here is careful
- 7:49:51container management. Now what do you
- 7:49:54mean by careful container management? It
- 7:49:56again is similar to what we discussed
- 7:49:58right as we talked about how deployment
- 7:50:00works. Similarly we also need to
- 7:50:02understand how container management
- 7:50:04works. Right? When you talk about
- 7:50:06containers there are quite a few
- 7:50:08pointers that come into picture. Now at
- 7:50:10the start when I talked about Azure
- 7:50:13Kubernetes service you realized that
- 7:50:14there were certain pointers that talked
- 7:50:16about I mean there were some highlights
- 7:50:17or features there on the first slide
- 7:50:19that showed you it helps you in better
- 7:50:22deployment right and quite a few other
- 7:50:24things. So when you talk about those
- 7:50:26pointers right what services like
- 7:50:28Kubernetes do is they ensure that your
- 7:50:32deployment is happening properly you are
- 7:50:35able to deploy multiple applications
- 7:50:37right and you are also able to track
- 7:50:39whether these applications are up and
- 7:50:41functioning whether one of these
- 7:50:43applications is dead do you need to work
- 7:50:45on it right so you get this kind of
- 7:50:48management when you talk about
- 7:50:50Kubernetes
- 7:50:51enable autoscaling to give you an
- 7:50:53example Let's assume that you have an
- 7:50:57application that basically deals with
- 7:50:58three servers. Now, let's assume that
- 7:51:01that application does very well, right?
- 7:51:03In this case, you might need to scale
- 7:51:05that application. Is it easier just to
- 7:51:07go ahead and scale these applications?
- 7:51:09No. Right? Because there could be a
- 7:51:11possibility that now you have to manage
- 7:51:13not just three servers, but you're
- 7:51:15required to manage like 100 servers. In
- 7:51:17that case, using a tool or using an
- 7:51:19orchestration tool rather like
- 7:51:21Kubernetes would help you ensure that
- 7:51:23all your containers running in different
- 7:51:25100 servers on top of these different
- 7:51:28100 servers are functioning properly. So
- 7:51:30this is where autoscaling comes into
- 7:51:32picture. What Kubernetes does is it
- 7:51:35gives you an ability to autoscale your
- 7:51:37applications in situations where manual
- 7:51:40intervention is not needed and that is
- 7:51:42what Kubernetes does for you. So these
- 7:51:45are some of the reasons why Kubernetes
- 7:51:47came into picture. So yes, we had
- 7:51:49containers but these were some of the
- 7:51:51drawbacks that containers had and this
- 7:51:54is what something like Kubernetes lets
- 7:51:56you do.
- 7:51:58Okay, let us now go ahead and understand
- 7:52:01what is Kubernetes, right? So I've
- 7:52:04already explained what Kubernetes is.
- 7:52:06There's not a lot of different pointers
- 7:52:08that have left to be explained. So if
- 7:52:11you talk about Kubernetes right it is an
- 7:52:13open-source container management tool
- 7:52:16which automates container deployment
- 7:52:19container descaling and container load
- 7:52:21balancing. So all the activities that we
- 7:52:24discussed right be it managing multiple
- 7:52:27servers ensuring that all the containers
- 7:52:29are working together right they're able
- 7:52:31to communicate with each other. So
- 7:52:32basically all the container management
- 7:52:34it happens all the orchestration it
- 7:52:37happens using your Kubernetes and that
- 7:52:39is what it does. Okay. What is one of
- 7:52:41the benefits it offers? It works
- 7:52:43brilliantly with all cloud vendors be it
- 7:52:46your public hybrid or onremise. Okay.
- 7:52:50And one of those popular cloud platforms
- 7:52:51as I've mentioned is Microsoft Azure
- 7:52:53which we'll be discussing as we move
- 7:52:55further. So what do you need to know
- 7:52:58more about Kubernetes? Now these are
- 7:52:59some of the facts right? I mean some of
- 7:53:01the things that might intrigue you. I'm
- 7:53:03not very sure about that. But if you
- 7:53:04talk about Kubernetes, it was developed
- 7:53:07by Google. Okay. So Google as we know
- 7:53:09brings in a big customer base, a big
- 7:53:13audience, right? A big community to
- 7:53:15discuss and that is why this in itself
- 7:53:18is a big thing. Why? Because when you
- 7:53:20talk about something like Kubernetes, it
- 7:53:21is going to have a huge community and
- 7:53:23that would mean that there's huge
- 7:53:24support, huge documentation for you to
- 7:53:27work with. It was developed using a
- 7:53:29programming language called as Golang
- 7:53:31and it entirely was built using it.
- 7:53:35Apart from that to just to summarize
- 7:53:37what Kubernetes is, you can think of it
- 7:53:39as a number of containers that can be
- 7:53:42put into one logical unit so that you
- 7:53:45can simplify the process of managing
- 7:53:47these containers and how they work.
- 7:53:49Okay. So this is what Kubernetes is in a
- 7:53:52nutshell. Let's try and understand how
- 7:53:54the architecture of Kubernetes works and
- 7:53:57what are the components that you should
- 7:53:59know about Kubernetes. So this is what
- 7:54:02the basic architecture of Kubernetes
- 7:54:05looks like. Okay. So you have your APIs,
- 7:54:08you have your Kubernetes master, you
- 7:54:10have your image registry, then you have
- 7:54:13your nodes which basically are nothing
- 7:54:16but your applications. So let's try and
- 7:54:18understand these one by one as in how do
- 7:54:20these function. Okay. So when you talk
- 7:54:23about the APIs, the CLI and the UI,
- 7:54:27right? The first thing that you need to
- 7:54:28do is you need to set up a Kubernetes
- 7:54:31cluster. Right? So when you talk about a
- 7:54:34Kubernetes cluster, a cluster would be
- 7:54:36nothing but your central management
- 7:54:38point using which you'll be managing all
- 7:54:40your applications or your different
- 7:54:42containers that host your applications,
- 7:54:44right? So first what you do is you
- 7:54:46create this cluster something that you
- 7:54:48can do by using your CLI, right? And
- 7:54:51then you can interact or others can also
- 7:54:53interact with your cluster by using an
- 7:54:56API server. Okay. So your API server is
- 7:54:59nothing but that basically ensures the
- 7:55:01authentication and the identification of
- 7:55:04the people or the resources interacting
- 7:55:06with your Kubernetes master or with your
- 7:55:09Kubernetes cluster. Okay. Now if you
- 7:55:12talk about Kubernetes cluster to start
- 7:55:14with your Kubernetes cluster here what
- 7:55:16you can see is you have your Kubernetes
- 7:55:19master right Kubernetes master is
- 7:55:21something that basically manages your
- 7:55:24containers and what you see on the left
- 7:55:27hand side the nodes and stuff right this
- 7:55:30is nothing but your worker nodes. Now
- 7:55:32this is where you'll be having your
- 7:55:34applications that are actually running.
- 7:55:37So your worker nodes would be
- 7:55:38implementing or running your
- 7:55:40applications. Your Kubernetes master on
- 7:55:43the other hand would basically be
- 7:55:46managing these applications and telling
- 7:55:47you how to basically run these
- 7:55:50applications on top of it. To understand
- 7:55:52this better, let's go ahead and take a
- 7:55:54look at this diagram that you have.
- 7:55:55Okay. So what you see here is you see a
- 7:55:57Kubernetes master, right? And inside
- 7:56:00this Kubernetes master, there are quite
- 7:56:02a few other things as well. We'll
- 7:56:03discuss those. But what you see on the
- 7:56:06screen are some key components that you
- 7:56:08need to know. Okay. So inside your
- 7:56:10Kubernetes master, you'd be having two
- 7:56:13important pointers that is your
- 7:56:15replication controller and your service.
- 7:56:18Okay. So when you talk about a
- 7:56:19replication controller, it is nothing
- 7:56:22but a resource that is owned by your
- 7:56:23master that is your Kubernetes master,
- 7:56:25right? What it does is it ensures that
- 7:56:28the requested number of ports are
- 7:56:30running on nodes always. Okay? Okay, so
- 7:56:33your replication controller is something
- 7:56:35that controls the functioning not
- 7:56:37controls it basically tells your worker
- 7:56:39nodes that keep the nodes or the pods
- 7:56:42running. Now what are the pods and what
- 7:56:44do they do? We'll discuss that. Do not
- 7:56:46worry about that. It's not very
- 7:56:47complicated. But that is what your
- 7:56:49replication controller does. Apart from
- 7:56:51that you have your service which is
- 7:56:54nothing but again an object on your
- 7:56:56master node, right? or your Kubernetes
- 7:56:58master rather that provides load
- 7:57:00balancing across replicated groups of
- 7:57:03pods. Now let me try and make sense for
- 7:57:06these two terms by first explaining what
- 7:57:08are your nodes, what are your pods,
- 7:57:10right? So when you talk about your
- 7:57:11nodes, these are nothing but your worker
- 7:57:13nodes which would be holding your
- 7:57:15application. Now in this case your node
- 7:57:18can hold more than one application. What
- 7:57:20we do is we basically classify our
- 7:57:25worker nodes into parts. Now pods are
- 7:57:28sub entities, right? These are logical
- 7:57:31collections of the containers which need
- 7:57:34to interact with each other for the
- 7:57:37applications to keep running. Okay. And
- 7:57:41inside these pods, you basically have
- 7:57:44your containers. So that is what the
- 7:57:46infrastructure looks like. You'll be
- 7:57:48having parts and which would be holding
- 7:57:50a logical set of containers that
- 7:57:52probably result in a particular kind of
- 7:57:54application right and you can have
- 7:57:57multiple such ports. What you see here
- 7:57:59is you see docker. So what it tells you
- 7:58:01is a worker node is nothing but a
- 7:58:03container right. So it can be other
- 7:58:06container tool as well need not be
- 7:58:08docker but again as I mentioned docker
- 7:58:10is a popular tool. So you see it here.
- 7:58:12So what you see here is basically a
- 7:58:14docker container right which has
- 7:58:17multiple pods and these multiple pods
- 7:58:20are basically responsible for running
- 7:58:22your application and who controls all
- 7:58:25these applications your Kubernetes
- 7:58:28master. So assume a situation where you
- 7:58:31need to scale up a particular virtual
- 7:58:34machine not a virtual machine in this
- 7:58:36case a particular node. So what how do
- 7:58:39you do that? To do that you basically
- 7:58:41have something like a load balancer
- 7:58:43which helps you balance your load right
- 7:58:45either distribute it or in case if you
- 7:58:47need scaling it helps you scale your
- 7:58:49applications as well right and then you
- 7:58:51have your replication controller that
- 7:58:54basically ensures right your application
- 7:58:57is running. So what your replication
- 7:59:00controller does is it tells your node
- 7:59:02that this application has to run. Okay.
- 7:59:05And who makes it run? There's something
- 7:59:07called as cublet. Now inside every node
- 7:59:10there would be another entity called as
- 7:59:12cublet. That cubelet is responsible for
- 7:59:15running your application. So this is how
- 7:59:17your cubernetes architecture looks like
- 7:59:20and this is how it functions.
- 7:59:23Now we've understood what Kubernetes is,
- 7:59:25how it works, right? Let us now go ahead
- 7:59:27and understand Azure Kubernetes service.
- 7:59:31Now to give you a brief about Azure
- 7:59:33Kubernetes service. As I've already
- 7:59:35mentioned, it is a Kubernetes service
- 7:59:38that is hosted on the Azure cloud
- 7:59:40platform. Okay. So, let me just go back
- 7:59:43to the slide one and explain that again
- 7:59:45so that we can go ahead and understand
- 7:59:46how working of Azure Kubernetes happens.
- 7:59:50So, we've already seen this slide,
- 7:59:52right? What is Azure Kubernetes service?
- 7:59:55But now it would make lot more sense for
- 7:59:57you. Okay? So, what can happen or what
- 7:59:59Azure Kubernetes service offers to you?
- 8:00:02Now if you talk about Azure to start
- 8:00:03with it is a popular cloud service
- 8:00:05provider. What that means is with Azure
- 8:00:09Kubernetes or with Microsoft Azure you
- 8:00:12can basically have various services that
- 8:00:14help you in software development,
- 8:00:16planning, management, right? Be it your
- 8:00:19administrative practices, development
- 8:00:20practices or architectural practices
- 8:00:22related to a software. All these things
- 8:00:24can be hosted on a public server in this
- 8:00:26case which again can be your Microsoft
- 8:00:29Azure cloud. Now what it does is it
- 8:00:31basically gives you all the services
- 8:00:33that are needed to carry out all the
- 8:00:35actions that I just mentioned where you
- 8:00:37can rent these resources or follow a pay
- 8:00:40as you go model and use these services
- 8:00:42to benefit your requirement. Okay. Now
- 8:00:45when you talk about a platform like
- 8:00:47Microsoft Azure which again is a cloud
- 8:00:49platform as I've just mentioned the
- 8:00:51possibility of dealing with applications
- 8:00:54are plenty or the possibilities rather
- 8:00:56are plenty. So you can do so many
- 8:00:58things. So what that does is that gives
- 8:01:01developers or application owners options
- 8:01:05to work with these applications in
- 8:01:07numerous ways. Okay, it simplifies their
- 8:01:10complications. Right? Since if you're
- 8:01:11talking about a platform like Microsoft
- 8:01:13Azure, it helps you basically
- 8:01:15orchestrate quite a lot of activities.
- 8:01:18Be it managing your servers,
- 8:01:20infrastructure, right? Be it basically
- 8:01:22load balancing, be it autoscaling, all
- 8:01:25these things can be controlled by using
- 8:01:27the cloud platform. So what that does is
- 8:01:30that gives developers this added benefit
- 8:01:32okay or the application owners this
- 8:01:34added benefit and that is why what these
- 8:01:36cloud platforms are doing these days is
- 8:01:38they are encroaching or basically
- 8:01:40covering different domains be your big
- 8:01:42data devops analytics right all these
- 8:01:44things are or can be implemented using
- 8:01:46these cloud platforms because when you
- 8:01:48talk about these cloud platforms they're
- 8:01:50already owning various markets of
- 8:01:52software development and application
- 8:01:54hosting okay so that is why having
- 8:01:56something like Kubernetes
- 8:01:58work on top of Azure is a benefit. Why?
- 8:02:01Because some of the complications that
- 8:02:04you'd find difficult to implement using
- 8:02:06Kubernetes can be controlled by using
- 8:02:09Microsoft Azure. And that is why you
- 8:02:11have these added benefits be it your end
- 8:02:13to end be your end to end deployment, be
- 8:02:15it your availability or scalability. If
- 8:02:18you talk about some of the benefits that
- 8:02:20it actually offers, what it does is you
- 8:02:23pay only for the nodes that you use.
- 8:02:26That means last time I checked Microsoft
- 8:02:28Azure did not charge you for your master
- 8:02:31node. You only get charged for your
- 8:02:33worker nodes that you use. Okay, your
- 8:02:36cluster upgrades are easier. So you do
- 8:02:38not have to worry about the patching
- 8:02:39part and stuff like that. Integration
- 8:02:41with various Azure and other tools and
- 8:02:44services becomes easier. Not just that,
- 8:02:47what you can also do is you can actually
- 8:02:49go ahead and enforce various rules that
- 8:02:51are under Azure policy across multiple
- 8:02:54clusters to have uniformity if you need
- 8:02:56to. Right? What you can also do is you
- 8:02:59can scale Kubernetes and other nodes
- 8:03:02using autoscaler that Microsoft Azure
- 8:03:05supports and you can even expand your
- 8:03:08scale even greater by scheduling your
- 8:03:11containers on Azure containers. So that
- 8:03:13is what Microsoft Azure Kubernetes
- 8:03:16service provides you with. Okay. Let us
- 8:03:19now move further in this Azure
- 8:03:21Kubernetes service tutorial video and
- 8:03:23let's try and understand some of the
- 8:03:24other important pointers like how does
- 8:03:27the architecture of Azure Kubernetes
- 8:03:29services works.
- 8:03:32Okay. To understand the working of AKS
- 8:03:34or Azure Kubernetes service, right? You
- 8:03:37can see this diagram on the screen. It's
- 8:03:39a fairly simple diagram and it tells you
- 8:03:41what Azure Kubernetes service does.
- 8:03:44Okay. So, uh we've already seen how
- 8:03:46Azure Kubernetes architecture works,
- 8:03:49right? I mean, we know what all
- 8:03:51components it has and stuff like that.
- 8:03:52This is a more detailed view. So, what
- 8:03:55you'll have is you'll have again a
- 8:03:57Kubernetes master node or cluster is
- 8:04:01what you can call it. Okay. So, in this
- 8:04:03master node the functionality would be
- 8:04:05same. It would be controlling how the
- 8:04:07deployment and how the management of
- 8:04:10your containers work. So basically Azure
- 8:04:13will manage your master node. It will
- 8:04:16basically help you control quite a few
- 8:04:18activities that are there. As a
- 8:04:19customer, you'd be managing the
- 8:04:20applications only. There too you would
- 8:04:22have support from Microsoft Azure. How
- 8:04:25we would understand that? Now if you
- 8:04:27talk about the control plane, what you
- 8:04:29have here is you have your API server.
- 8:04:32Now when you talk about your API server,
- 8:04:35what it does is it basically tells you
- 8:04:38how the underlying Kubernetes APIs are
- 8:04:40exposed. Okay, what this component
- 8:04:43basically does is it provides the
- 8:04:44interaction for your management tools,
- 8:04:46be it your cubectal or the Kubernetes
- 8:04:50dashboard. Similarly, you have your etc.
- 8:04:53Now, etc. basically what it does is it
- 8:04:55maintains the state of your Kubernetes.
- 8:04:58When I say the state of Kubernetes, I'm
- 8:04:59talking about the Kubernetes cluster and
- 8:05:02basically it helps you control all the
- 8:05:04configuration that is there. This thing
- 8:05:06is highly available and it is key value
- 8:05:09based in nature. Okay. What you also
- 8:05:11have here is basically you have a
- 8:05:14scheduleuler. What auler does is it lets
- 8:05:16you create and scale your applications
- 8:05:19to basically determine which nodes can
- 8:05:21run on what workload and stuff like
- 8:05:23that. Okay. And finally, you have your
- 8:05:26controller manager. Now this is an
- 8:05:28important bit again what it does is it
- 8:05:30controls or oversees a number of smaller
- 8:05:32controllers whether they're performing
- 8:05:34the actions or not and what it also
- 8:05:37helps you in doing is replicating the
- 8:05:38parts that you have and handling your
- 8:05:40nodal operations as well. So this is
- 8:05:43what your control plane does and it is
- 8:05:46basically managed by your Azure. Now
- 8:05:48what is the benefit of having Azure
- 8:05:50manage it right? Since Azure is managing
- 8:05:53it, you do not have to worry about the
- 8:05:55configuration part, setting up part,
- 8:05:57right? Your cluster node is basically
- 8:05:59set up by Microsoft Azure. And that is
- 8:06:01what it simplifies. Then the other bit
- 8:06:03is your customer managed bit. Be it your
- 8:06:06cube, right? Cube proxy, your container
- 8:06:09and container runtime. To understand
- 8:06:10this better, I think this diagram should
- 8:06:13draw a clearer or a better picture for
- 8:06:15you. Okay. So basically when you talk
- 8:06:18about your customer part now there are
- 8:06:20quite a few things that you need to
- 8:06:21know. I've mentioned cubelet which
- 8:06:22basically lets you run your pods right
- 8:06:25your pods are run by your cublet that is
- 8:06:27what your cubelet does. Okay there are
- 8:06:29other things as well that you need to
- 8:06:30know here you have your Azure virtual
- 8:06:33network interface. Now it is something
- 8:06:34that takes care of all the interface
- 8:06:37requirements that you might otherwise
- 8:06:38have. Okay. And similarly you have your
- 8:06:42cube proxy. Right. Qroxy again works
- 8:06:45together with your virtual network
- 8:06:47interface, right? Or basically your
- 8:06:49Azure virtual network and tells you what
- 8:06:51needs to be done. Okay. Now all these
- 8:06:54things they reside on a virtual machine
- 8:06:57again. So we've discussed all the
- 8:06:59differences and benefits of it. So what
- 8:07:01Azour does is it basically launches a
- 8:07:03virtual machine for you on top of which
- 8:07:05your containers would reside. Okay. So
- 8:07:08when you talk about these containers
- 8:07:10again these are nothing but your
- 8:07:11applications that are running for you.
- 8:07:12Okay. And these are the services that
- 8:07:14would help you actually implement or
- 8:07:17control all these applications that are
- 8:07:18there. You can actually go ahead and
- 8:07:20scale up your virtual machines to meet
- 8:07:22the requirements of your application in
- 8:07:25different ways. So this is how the
- 8:07:27working of AKS is. I mean this is how
- 8:07:29the master node works and this is how
- 8:07:31your basically customer node or your
- 8:07:34worker nodes work when you talk about
- 8:07:36AKS. We'll see these as we get into the
- 8:07:39demo part. But before that let's go
- 8:07:40ahead and understand a use case or see a
- 8:07:43use case as to how vehicle safety with
- 8:07:45AKS is supported. Now when we say
- 8:07:47vehicle safety we are talking about a
- 8:07:50use case that was set forth by Bosch.
- 8:07:54Okay. Bosch as we all know is a very
- 8:07:57popular company which has numerous
- 8:07:59thousands of employees working across
- 8:08:01the globe for meeting different
- 8:08:03technological needs of the world. Okay.
- 8:08:06In this particular use case, what they
- 8:08:08thought of was the amount of accidents
- 8:08:11that happened due to wrongway driving.
- 8:08:14Okay. And what they thought was could we
- 8:08:16find a solution that could basically
- 8:08:18help us overcome this bit of problem.
- 8:08:20Okay. So what were the problems that
- 8:08:23they were facing? Right? When you talk
- 8:08:25about wrongway driving problems, right?
- 8:08:28What are the issues that we face? Okay.
- 8:08:30because of wrongway driving, there could
- 8:08:32be a lot of accidents, unplanned
- 8:08:34casualties and stuff like that. But if I
- 8:08:37am to avoid wrongway driving using
- 8:08:39technology, it's a very tedious task.
- 8:08:42The reason for that is what I can try
- 8:08:45and do here is I can basically set up an
- 8:08:47application that notifies me of wrongway
- 8:08:49driving, right? But then for that to
- 8:08:52happen, I have to have a lot of data
- 8:08:54that is in real time. And when I'm
- 8:08:56driving, my only way of fetching data is
- 8:08:58by using cell phones and GPS, right? But
- 8:09:01then again, there are problems with
- 8:09:03these things. When you talk about cell
- 8:09:04phones, they basically function very
- 8:09:07well in a radius of 5 m distance when
- 8:09:10you talk about their operational
- 8:09:12radiance or radius rather or their
- 8:09:14limitations when you talk about range on
- 8:09:16exchanging this data. Okay. So you can
- 8:09:19transfer data to a larger audiences. We
- 8:09:22see that through WhatsApp and stuff. But
- 8:09:25if you talk about GPS kind of data, we
- 8:09:28are talking about multiple points or
- 8:09:30multiple data that we are dealing with
- 8:09:31and to deal with them parallelly can be
- 8:09:33a difficult task. So because of that,
- 8:09:36Bosch felt was that this was an
- 8:09:37impossible task to deal with. Why? In
- 8:09:40order to get the last piece of
- 8:09:42information out of the noisy sensor data
- 8:09:44can be a problem and in order to develop
- 8:09:46a highly scalable and ultra flexible
- 8:09:48service to process this data in real
- 8:09:50time can also be a tedious task. What
- 8:09:53they also figured out was to solve this
- 8:09:55problem, they needed this data in real
- 8:09:57time and in very short duration. If we
- 8:10:00could do that, we could actually go
- 8:10:01ahead and save accidents and we could
- 8:10:04save these wrongway driving incidents.
- 8:10:07And that is why they decided to work
- 8:10:09with Microsoft Azure which was their
- 8:10:11already supporting partner. What they
- 8:10:13also did was they ensured that they did
- 8:10:16go ahead and accommodate Azure
- 8:10:18Kubernetes service in their
- 8:10:20infrastructure. What this did was it
- 8:10:22ensure that Bosch would get repeatable,
- 8:10:26manageable clusters of containers and
- 8:10:28since they work in such shorter
- 8:10:30durations do not have latencies in
- 8:10:32minutes but rather in seconds they
- 8:10:34offered a simple form of services for
- 8:10:37them to work with and what that ensured
- 8:10:39was they had the average time to
- 8:10:41calculate whether a driver is going the
- 8:10:43wrong way or not in milliseconds. So
- 8:10:46around 60 milliseconds they could figure
- 8:10:48out that is around a second where they
- 8:10:50could figure out whether a driver was in
- 8:10:52the wrong way or not and that is what
- 8:10:54basically your Azure Kubernetes service
- 8:10:56enabled them to do their major problem
- 8:10:58that is they had the time constraint
- 8:11:00that is something it helped them solve
- 8:11:02and because of that they could come up
- 8:11:03with this wrong way driving problem
- 8:11:06solution where they basically use
- 8:11:08Microsoft Azure to host their data and
- 8:11:10basically Azure Kubernetes service to
- 8:11:13basically help them in simple
- 8:11:15provisioning
- 8:11:16scaling of applications and ensuring
- 8:11:17that the real-time data is made
- 8:11:20available to the drivers within a span
- 8:11:22of 60 milliseconds which again is a big
- 8:11:25achievement. So that is what AKS or
- 8:11:27Azure Kubernetes service had to offer.
- 8:11:30If you go to Microsoft Azour's website,
- 8:11:32there's so many good use cases that talk
- 8:11:35about AKS. So you might want to go ahead
- 8:11:37and take a look at that as well. as far
- 8:11:39as the session goes, we would go ahead
- 8:11:40and take a look at the demo and
- 8:11:41understand how we can actually go ahead
- 8:11:43and set up an Azure Kubernetes cluster
- 8:11:46and a lot more.
- 8:11:48Okay, so guys, let's go ahead and get
- 8:11:50into the demo part. Now, this is how the
- 8:11:52Azure portal looks like. Okay, I've
- 8:11:55signed into the Azure portal. Now, for
- 8:11:56people who are new to Microsoft Azure,
- 8:11:58what Microsoft Azure does is it gives
- 8:12:00you an Azure portal where you can
- 8:12:03implement all the cloud related
- 8:12:05activities that concern Microsoft Azure.
- 8:12:07Okay. So if you want to practice from
- 8:12:09scratch, it also offers a free tier
- 8:12:11account where you have a number of
- 8:12:13services available free of cost. Okay.
- 8:12:16Or rather in case of Azure, it works
- 8:12:18differently. For AWS, you have those
- 8:12:20free services. With Azure, you have this
- 8:12:23$200 of credit that it gives you. So you
- 8:12:26can spend those $200 on creating
- 8:12:28resources for 11 months duration. Post
- 8:12:31that those will expire. So if you do not
- 8:12:33have an account, you can just go ahead
- 8:12:34and create a free tier account. Fill in
- 8:12:36the details, right? And you should have
- 8:12:37this free Azure portal for your usage.
- 8:12:40Okay? In my case, this is a paid
- 8:12:43account. This is the company's account.
- 8:12:44So, it's called as pay as you go. In my
- 8:12:46case, in your case, it would be a free
- 8:12:47tier account. But the functionality
- 8:12:49would be similar for you as well. The
- 8:12:51only thing is with the paid account, you
- 8:12:53have more services available to you and
- 8:12:56uh even the larger instances is
- 8:12:57something that you can actually go ahead
- 8:12:59and spawn and um use because you're
- 8:13:02paying for those, right? under free tier
- 8:13:04you don't have to worry about paying for
- 8:13:05them right so there are certain
- 8:13:07restrictions and limits there so do go
- 8:13:09ahead and register to Microsoft Azour's
- 8:13:12portal okay now coming back to the demo
- 8:13:15part what we are going to do now is we
- 8:13:18are going to create a Kubernetes cluster
- 8:13:21and on top of that we are going to
- 8:13:22deploy an application and the
- 8:13:24application would be a basic pre-built
- 8:13:26app by Microsoft Azure we are not going
- 8:13:28to create a new app I'll be sharing the
- 8:13:30code for the application so do not worry
- 8:13:33about that. So we are just going to go
- 8:13:35ahead and use that pre-built code and we
- 8:13:37are going to deploy that code on top of
- 8:13:39Kubernetes cluster that we have. Okay.
- 8:13:42So the main thing to note here is we
- 8:13:44have to see how easily the cluster is
- 8:13:45created. We are not concerned about the
- 8:13:48orchestration process at all here.
- 8:13:50Everything is taken care by your
- 8:13:52Microsoft Azure and that is what we are
- 8:13:54going to look into. So let's not waste
- 8:13:55any time just quickly go ahead and get
- 8:13:58an instance in place rather a cluster in
- 8:14:00place. Okay. So to do that we are going
- 8:14:02to click on this icon and say create a
- 8:14:05resource. Okay. Here you can see all the
- 8:14:07service domains that are there for
- 8:14:09offering. So I'm going to click on the
- 8:14:11containers one and click on Kubernetes
- 8:14:14service. Once you do that you see you'll
- 8:14:16be brought to this page and you'll get
- 8:14:18all the details right. AKS manages your
- 8:14:20hosted Kubernetes environment making it
- 8:14:22quick and easy for you to manage
- 8:14:24containerized applications. The main
- 8:14:26point is without having to container,
- 8:14:28orchestrate or have any expertise in
- 8:14:30that. Okay, it eliminates the burden of
- 8:14:33ongoing operations and maintaining,
- 8:14:34provisioning, upgrading, scaling your
- 8:14:36resources rather, which happens on
- 8:14:38demand here. So you don't have to worry
- 8:14:39about those things. So let's just go
- 8:14:41ahead and create a resource group. So
- 8:14:43for people who do not know what resource
- 8:14:45groups are, resource group is nothing
- 8:14:47but you can think of it as a small
- 8:14:49container or a folder where you put
- 8:14:51forth all the necessary things that are
- 8:14:54important for your resource to work. Now
- 8:14:56in this case our resources Kubernetes.
- 8:14:58So quite a few other nitty-g gritties
- 8:15:00related to it would be in the resource
- 8:15:02group. Okay. So let's just go ahead and
- 8:15:03create one. So I'm going to click on
- 8:15:06create new. Let's just say we have RG
- 8:15:12for demo.
- 8:15:14I'm going to give a simple name so that
- 8:15:15I can remember that. Okay. So I'm going
- 8:15:18to say okay. I'm going to create a
- 8:15:21cluster. I'm going to call it cube
- 8:15:23cluster. Okay. This is enough. So cube
- 8:15:26let's call it cube cluster. Okay. And
- 8:15:30this is in place. Where do I want it? If
- 8:15:32you're using a pay as you go model there
- 8:15:34won't be any restrictions here. If
- 8:15:36you're using free tier there might be
- 8:15:37some okay so just select any region that
- 8:15:40you want to do I'm going to randomly
- 8:15:41select a region now what region it
- 8:15:43should be my region would be
- 8:15:47okay let's pick this one and it would
- 8:15:49ask me how many nodes do you want to
- 8:15:51create let's create one since it's a
- 8:15:53very simple demo we do not need more
- 8:15:55nodes okay we've discussed what nodes
- 8:15:57are right so that is what we are doing
- 8:16:00we are creating a node here where our
- 8:16:02application would run basically so I'm
- 8:16:03going to say review or let's Just go
- 8:16:05ahead and see if we have all the
- 8:16:07settings. Node pools
- 8:16:10authentication. You have two options
- 8:16:11whether you want your server or rather
- 8:16:14your cloud platform to manage your
- 8:16:17identity pools and um basically create
- 8:16:20resources accordingly. You can do that
- 8:16:22or you can select a service principle
- 8:16:24which is an older way to do it where uh
- 8:16:26you use an Azure active directory to do
- 8:16:28that. So there's no rule here. You can
- 8:16:30go for this one as well. I'm just going
- 8:16:31to do this just because I've thought of
- 8:16:34showing it to you. I selected that it
- 8:16:36does not hold a lot of impact on our
- 8:16:37demo. Okay, just going to say create and
- 8:16:40review. Okay, so for creating this thing
- 8:16:42now it will review all the requirements.
- 8:16:44If the requirements are in place, what
- 8:16:47it will do is it will just go ahead and
- 8:16:49um create your cluster and put
- 8:16:51everything in place. Okay, so it says do
- 8:16:54you want to create it now? I'll say yes
- 8:16:55create. Okay, let's just refresh and see
- 8:16:58whether our u application is done.
- 8:17:02Now it's still deploying. Let's wait for
- 8:17:04this deployment to get in place and once
- 8:17:06it's done, we'll just go ahead and uh
- 8:17:09get these things in place. After this,
- 8:17:11the process is very simple. Okay, we are
- 8:17:14going to just go ahead and put in
- 8:17:15certain set of commands and a job would
- 8:17:18be done. So, you don't have to wait for
- 8:17:20too long. Post that. Okay, let's just
- 8:17:24refresh it again and see whether it's in
- 8:17:25place. Normally, it takes a couple of
- 8:17:27minutes. So, could take longer, right?
- 8:17:30But it's a very easy deployment process.
- 8:17:32So let me give you an idea as in what
- 8:17:34happens when you say that the deployment
- 8:17:36is happening. So first your Kubernetes
- 8:17:38will actually go ahead and launch a
- 8:17:41Linux instance to start. Okay. So once
- 8:17:44the Linux instance is in place that is
- 8:17:47when we'll actually go ahead and u put
- 8:17:50forth all our resources on top of it. In
- 8:17:52that Linux instance we'll set up a
- 8:17:54cluster right all the integrities that
- 8:17:55we need and on top of that cluster our
- 8:17:57application would start working. here in
- 8:18:00this case it would probably set up a
- 8:18:01cache could be a radius as well we'll
- 8:18:04have to go ahead and look into it
- 8:18:05whether it's that one okay and then
- 8:18:07accordingly we can go ahead and
- 8:18:10implement everything on top of that but
- 8:18:12we don't have to get into the
- 8:18:13complications of things it's a fairly
- 8:18:15simple process for us okay let's just go
- 8:18:18ahead and refresh it once more
- 8:18:25okay it's done your deployment has been
- 8:18:28complete is what it says is that means
- 8:18:29we are good to go ahead and use a
- 8:18:31resource. You can do other things as
- 8:18:33well. On top of it, it is suggesting
- 8:18:34what all you can do. Okay. So, we are
- 8:18:36going to do one of these things. Do not
- 8:18:38worry. So, just go to the resource in
- 8:18:39our case. Okay. And in this resource,
- 8:18:43you can see there's all the information
- 8:18:44that you need. Okay. You'll get to know
- 8:18:46where it is hosted and stuff like that.
- 8:18:48What kind of instance it is, where it is
- 8:18:50located, everything. One node pool is
- 8:18:52what you have, right? So, you have all
- 8:18:54the information to actually go ahead and
- 8:18:56connect to it. So in your case, I'm
- 8:18:58hopeful that it would happen faster than
- 8:19:00what you see in my case or on my screen
- 8:19:03rather.
- 8:19:04You see cloud shell is up and running.
- 8:19:07So let's just go ahead now and um
- 8:19:10basically get credentials
- 8:19:13right here. Let's get the credentials or
- 8:19:16merge a cluster. Okay. So that we can
- 8:19:19start using it. So how do we do that? We
- 8:19:21use this command. we say aks.
- 8:19:25Okay. And in this case what we are going
- 8:19:28to do is we are going to say get
- 8:19:30credentials.
- 8:19:34Okay. Now the next thing is what do we
- 8:19:37need resource group details. So I'm
- 8:19:40going to say resource dash group and I'm
- 8:19:44going to give the resource group name
- 8:19:46which I am certain that we should see if
- 8:19:50we just scroll up. Okay, so the resource
- 8:19:53name is RG for demo that we used. Okay,
- 8:19:56RG
- 8:19:57for demo. And what we also need is we
- 8:20:02need the name of the cluster and in that
- 8:20:06case it is cube cluster. So you can do
- 8:20:08it vice versa as well. You don't have to
- 8:20:10go this order. You can start by giving
- 8:20:13in the details for your cluster and then
- 8:20:17the detail for your resource group. I'm
- 8:20:18just going to hit the enter button. Now
- 8:20:22merge group cluster as a current context
- 8:20:26in this path is what it says. Okay. Now
- 8:20:29let's just go ahead and get the details
- 8:20:31for the node. In this case we know
- 8:20:33there's only one node but you could be
- 8:20:34working on multiple nodes, right? So in
- 8:20:36that case you have to use this command.
- 8:20:39You say cubectl. Now it is basically a
- 8:20:42clientside interactive tool for
- 8:20:44interacting with your cubernetes. Okay.
- 8:20:46So that is what cubectl is all about.
- 8:20:48Okay. And you say get nodes.
- 8:20:52If there are multiple nodes, it will
- 8:20:54give you multiple nodes. If there's only
- 8:20:56one node, it will give you only one
- 8:20:57node. So there you go. You can see that
- 8:21:00there's one node that we have with us.
- 8:21:02Okay. We have all the details. It's been
- 8:21:04running for 5 minutes. It says right
- 8:21:06because that is when we started the
- 8:21:07node. Okay. Now the next thing is we are
- 8:21:10going to go ahead and select the YAML
- 8:21:12file where we've actually put forth the
- 8:21:14details for our application. Right. So
- 8:21:17how do we do that? For that we are going
- 8:21:19to go ahead and use this command. Okay.
- 8:21:22Nano.
- 8:21:23Okay. Space Azure. The name of the
- 8:21:27application is or the application rather
- 8:21:29is related to voting. So that is why I'm
- 8:21:31going to use this name and I'm going to
- 8:21:33say
- 8:21:35yamel. Okay.
- 8:21:39Okay. So guys, I've already pasted a
- 8:21:41piece of code here because I was I tried
- 8:21:45implementing this demo before. So you'll
- 8:21:48see that there's code here. Okay. So in
- 8:21:50this case, what we are going to do is we
- 8:21:52are going to remove this code just to be
- 8:21:55safe. I'm going to just paste the code
- 8:21:57again. So basically this is where you'll
- 8:21:59have all the details. What is the API
- 8:22:01that is being used? What is the
- 8:22:02container port? Right? What is the
- 8:22:04memory that you are using? What call are
- 8:22:07you making? Right? All those details are
- 8:22:09here. Do not worry. I'll share the link
- 8:22:11to this piece of code in the
- 8:22:12description. If not, you can just look
- 8:22:14for Azure demos or getting started with
- 8:22:17Azure on your browser and you'll find
- 8:22:20this piece of code. It's available
- 8:22:21everywhere. You'll get this code on uh
- 8:22:23GitHub as well. I do not own this code.
- 8:22:26So I will not take any right in saying
- 8:22:29that this is something that I've
- 8:22:30created. It is a code that has been used
- 8:22:33and it is somebody else's work. Okay. So
- 8:22:36you may check out online the details.
- 8:22:37I'll also pass in the details in the
- 8:22:39description. Okay. So everything is
- 8:22:42removed. Now I'm just going to go ahead
- 8:22:43and paste my piece of code here. Okay.
- 8:22:47Going to say paste. And all the same
- 8:22:49code is again here with us. Okay. Now,
- 8:22:52how do I go ahead with it? In this case,
- 8:22:55I'm going to say justify, cut, uncut. Do
- 8:22:59I want to replace? I'm just going to say
- 8:23:01exit for now. So, it's Ctrl X in my
- 8:23:03case. And I'm going to say no will
- 8:23:06discard the changes. So, we'll say yes.
- 8:23:08So, Y. That means it will save my code.
- 8:23:11Okay. I'm going to hit enter now. So, it
- 8:23:13will take me back to my cluster. Okay.
- 8:23:16The next step is now what we are going
- 8:23:18to do is we are going to go ahead and
- 8:23:22call out this YAML file. Okay. So once
- 8:23:24we do that, this is how we are going to
- 8:23:26do it. We're going to say cubectl again.
- 8:23:28Okay. And
- 8:23:33slashf
- 8:23:35azure. What was the name again? / vote.
- 8:23:41Yl.
- 8:23:43Going to hit the enter button.
- 8:23:46And there you go. What it has done is it
- 8:23:48has created a voteback application. Its
- 8:23:51front is created. Its back is created.
- 8:23:53Right? So we need to see how it looks
- 8:23:56like. Right? So we are going to find out
- 8:23:58all the details as in if you want to
- 8:24:00watch this app working. We need the
- 8:24:02details for it. So we we are just going
- 8:24:04to go ahead and use a command called as
- 8:24:05get service. Okay. So get services in
- 8:24:08place. And in this case again my app
- 8:24:12name is your port but this time I want
- 8:24:16the front. Okay. So I'm going to say
- 8:24:18front and I'm going to say watch
- 8:24:22and hit the enter button.
- 8:24:26I basically made a blunder here and that
- 8:24:28blender is we have to call this command
- 8:24:31through cubectl. Right? So in this case
- 8:24:35again we'll have to type the remaining
- 8:24:37command again. So, I'm just going to do
- 8:24:38it quickly. Okay. Get service
- 8:24:42Azure what
- 8:24:46dash front
- 8:24:47watch
- 8:24:51and there you go. You have your external
- 8:24:53IP here. So guys at times what you see
- 8:24:55here your external IP if your system is
- 8:24:58very slow which is in my case but I
- 8:25:00don't know how it happened. It age is
- 8:25:01only 85 seconds is what it says. So
- 8:25:04normally it takes time for you to see
- 8:25:06this external IP. Okay. But luckily we
- 8:25:09can see it. So I'm going to just copy it
- 8:25:11here. Okay. And I'm going to paste it
- 8:25:13here. And this way we should be able to
- 8:25:15see the application that we've created.
- 8:25:17Okay. So you can see you can vote here.
- 8:25:19And let me vote for dogs twice thrice.
- 8:25:23And I can just go ahead and reset it as
- 8:25:25well. Okay. So guys actually go ahead
- 8:25:28and create a cluster. Okay. A suggestion
- 8:25:31here.
- 8:25:33You delet that is there. Delete this
- 8:25:35one. delete the resource group and also
- 8:25:36the Azure active directory. So if you
- 8:25:40want to see what all we did here, right,
- 8:25:42and how the performance went on a lets
- 8:25:45you track all if you want to take a look
- 8:25:47at the insights and stuff, if you click
- 8:25:49here, you'll have all all those details
- 8:25:51as well.
- 8:25:54So there you go. If I just refresh it,
- 8:25:56you should have all how long did we use
- 8:25:59the cluster. This is where the usage
- 8:26:00started. Okay, so you'll get all these
- 8:26:02details.
- 8:26:04So you can do that. So that's it. I
- 8:26:07believe it's clear to you people and you
- 8:26:10got to know what things we've worked on,
- 8:26:13how we've used
- 8:26:15these things and your Kubernetes cluster
- 8:26:18works. Okay. So we've created a simple
- 8:26:21Kubernetes cluster and explored it.
- 8:26:23Ensure when you go back you just delete
- 8:26:25just go to the resources and the
- 8:26:27resource group, the cluster and the
- 8:26:29active directory if any. Okay.
- 8:26:37Today% of all business solutions and
- 8:26:40services have moved to the cloud.
- 8:26:44Most are happening by utilizing cloud
- 8:26:46platforms which include software as a
- 8:26:48service infrastructure
- 8:26:50as a as a service. With projects being
- 8:26:53hosted on the cloud architecture, it
- 8:26:55makes perfect sense to solutions to
- 8:26:58continuously deliver value for
- 8:27:00enterprises. Building upon that
- 8:27:03Microsoft A400 exam or the Microsoft
- 8:27:07certified DevOps engineer expert. But
- 8:27:11what is the A400 exam? As described by
- 8:27:15Microsoft A400 certification training is
- 8:27:18an intermediate level course from
- 8:27:20Microsoft for professionals who want to
- 8:27:23gain knowledge of designing and
- 8:27:25implementing DevOps processes and
- 8:27:27practices for an enterprise. This 5-day
- 8:27:30a400 training course is ideal for
- 8:27:33professionals who combine people,
- 8:27:35processes, and technologies to deliver
- 8:27:37value to the organization. Some of the
- 8:27:40skills that are outlined by this
- 8:27:41curriculum include developing an
- 8:27:44instrumentation strategy which carries a
- 8:27:46weightage of about 5 to 10%, developing
- 8:27:49an SR which again carries a weightage of
- 8:27:515 to 10%. Then you have development
- 8:27:55on compliance plan which carries the
- 8:27:58weightage of 10 to 15%. As
- 8:28:02managing source control which has the
- 8:28:04same weightage. Apart from that, you
- 8:28:06also learn how to facilitate
- 8:28:08communication and collaboration between
- 8:28:11your teammates, stakeholders and vendors
- 8:28:13and define and implement continuous
- 8:28:16integration or CI which has the majority
- 8:28:19of the weightage which is about 20 to
- 8:28:2125% and finally you learn how to define
- 8:28:25and implement a continuous delivery and
- 8:28:28release management strategy which again
- 8:28:30carries a weightage of 10 to 15%. Now
- 8:28:33this is the entire skill set. But before
- 8:28:36you get ready to take on the world with
- 8:28:38your newly certified skill set, a
- 8:28:40candidate for this exam must be familiar
- 8:28:43with both Azure administration and
- 8:28:46development and must be an expert in at
- 8:28:49least one of these areas. Furthermore,
- 8:28:52there are other prerequisites that you
- 8:28:54should keep in mind before appearing for
- 8:28:56the A400 exam. Now even though these are
- 8:28:59not mandatory prerequisites, these are
- 8:29:01the ones which can improve your chances
- 8:29:03of qualifying the exam such as
- 8:29:05proficiency in agile practices the
- 8:29:07ability for designing and implementing
- 8:29:10DevOps practices for version control,
- 8:29:12configuration management, build
- 8:29:14compliance, release and testing. All of
- 8:29:16this by leveraging Azure technologies.
- 8:29:19Now that you know how you can qualify to
- 8:29:21give this exam, let's go ahead and look
- 8:29:24at who is this exam most beneficial for
- 8:29:26or who can take up a 400. First of all,
- 8:29:30this course is designed for
- 8:29:32professionals who are aspiring to clear
- 8:29:34the Microsoft certified DevOps engineer
- 8:29:36expert exam. Right? So individuals
- 8:29:39looking to establish their credibility
- 8:29:41and value in the market as experienced
- 8:29:44DevOps practitioners, agile
- 8:29:46practitioners and cloud computing
- 8:29:48professionals. Apart from that, this
- 8:29:50course is also meant for system
- 8:29:53administrators, software developers,
- 8:29:55project managers and technical leads and
- 8:29:58practically anybody that wishes or
- 8:30:00aspires to lead a DevOps team. So now
- 8:30:03that you understand who can take up this
- 8:30:05exam, the main question arises why
- 8:30:08should you take this exam? What are the
- 8:30:10benefits of taking the A400 examination?
- 8:30:14Now the DevOps market is expected to
- 8:30:16grow from $3.42 billion in 2018 and 19
- 8:30:21to 10.3 billion by 2023 at a compound
- 8:30:25annual growth rate of nearly 25%. Which
- 8:30:28means this industry is going to grow
- 8:30:31more than threefold in the next few
- 8:30:33years alone. Out of which Azure holds
- 8:30:3619% of the total global cloud
- 8:30:38infrastructure market which
- 8:30:40automatically qualifies you for a
- 8:30:42majority of the MNC's in the industry
- 8:30:45today. Not just that, this also has
- 8:30:48proven to give you a huge boost in your
- 8:30:50salary as a mid-level Azure DevOps
- 8:30:53engineer earns on an average of $145,000
- 8:30:58per year. Whereas a senior level Azure
- 8:31:00DevOps engineer can make up to $185,000
- 8:31:04per year. Apart from that, the Azure
- 8:31:06infrastructure is very ideal for DevOps,
- 8:31:09which is why a lot of companies are
- 8:31:11quickly moving to DevOps, which makes
- 8:31:13you a frontr runner in the race for all
- 8:31:15of these companies. Now, talking of
- 8:31:17companies, here are a few aggressively
- 8:31:20hiring for Azure certified DevOps
- 8:31:22professionals, including but not limited
- 8:31:25to Amazon, Ernston Young, Dell,
- 8:31:28Accenture, Microsoft, Google, and
- 8:31:30VMware. Now that you know what all is
- 8:31:33there in store for you. I'm sure you're
- 8:31:34curious to know what does the curriculum
- 8:31:37outline look like. So here it is. First
- 8:31:40of all, you shall be introduced to Azure
- 8:31:43DevOps and understand the important
- 8:31:44aspects of Azure as well as DevOps.
- 8:31:47Along with this, you also learn the role
- 8:31:49of a DevOps professional in an
- 8:31:51organization. Then you learn about
- 8:31:54implementing continuous integration
- 8:31:56followed by building containers with
- 8:31:58Azure DevOps where you learn to create
- 8:32:00and deploy a multicontainer application
- 8:32:03for your DevOps pipeline. Followed by
- 8:32:05that, you learn how to design a
- 8:32:07dependency management strategy as well
- 8:32:10as managing artifact versioning. Next
- 8:32:12up, you learn how to set up a release
- 8:32:14management workflow where you learn how
- 8:32:16to configure a CI/CD pipeline using YAML
- 8:32:19and manage your secrets using the Azure
- 8:32:21WA followed by which you implement
- 8:32:24deployment models and services where you
- 8:32:27configure infrastructure as a service
- 8:32:29and platform as a service on Azure.
- 8:32:31Followed by which you learn how to
- 8:32:33implement and optimize a continuous
- 8:32:36feedback mechanism. Next is the meaty
- 8:32:39part where you learn a bunch of
- 8:32:41different Azure tools for infrastructure
- 8:32:43configuration as well as a few
- 8:32:45third-party tools. And finally, you
- 8:32:48learn how to implement compliance and
- 8:32:50security where you learn how to manage
- 8:32:52and check code quality with Sonar Cloud
- 8:32:54on Azure DevOps. You also learn how to
- 8:32:57integrate Azour Key WA with Azure DevOps
- 8:32:59to access secrets in the Azure pipeline.
- 8:33:02And that was all about the course
- 8:33:04outline of the A400 curriculum. This
- 8:33:08certification exam not just enhances
- 8:33:10your skills as well as demonstrates it
- 8:33:13to your employers, thus making you gain
- 8:33:15that edge in the industry. The time is
- 8:33:18right to upskill and DevOps and cloud
- 8:33:21are two of the biggest domains in the
- 8:33:23industry to take advantage of the career
- 8:33:25opportunities that come your way.
- 8:33:35Let's move on and compare AWS DevOps
- 8:33:38versus Azure DevOps.
- 8:33:40So let's talk about the services that it
- 8:33:43provides. The Amazon Web Services code
- 8:33:46pipeline is a continuous delivery
- 8:33:48service for fast and reliable
- 8:33:50application updates. Code pipeline
- 8:33:53builds, tests, and deploys your code
- 8:33:55every time there is a code change based
- 8:33:57on the release process models you
- 8:33:59define. On the other hand, Azure DevOps
- 8:34:01services for teams to share code, track
- 8:34:04work, and ship software. Azure DevOps
- 8:34:07provides unlimited private git hosting,
- 8:34:09cloud bill for continuous integration,
- 8:34:12agile planning and release management
- 8:34:14for continuous delivery to the cloud and
- 8:34:16onremise. It also includes a broad
- 8:34:19integrated development environment
- 8:34:21support. In the next comparison, we will
- 8:34:24talk about what category of tech stack
- 8:34:26do they belong to. As you can see,
- 8:34:28Amazon web services code pipeline
- 8:34:30belongs to continuous deployment
- 8:34:32category of the tech stack while Azure
- 8:34:34DevOps can be primarily classified under
- 8:34:37integrated development environment
- 8:34:39tools. Now let's talk about the features
- 8:34:42of Amazon Web Services and Azure. As you
- 8:34:45can see, Amazon Web Services provides
- 8:34:47workflow modeling, AWS integration and
- 8:34:50it also has some pre-built plugins in
- 8:34:52it. Whereas Azure on the other hand
- 8:34:54provides agile tools like cananband
- 8:34:57boards, backlogs, scrum boards. And it
- 8:34:59also provides reporting tools like
- 8:35:01dashboards, widgets, PowerBI, etc. And
- 8:35:05it also allows you to integrate with git
- 8:35:07which provides free private repositories
- 8:35:09and pull requests. Now why do people
- 8:35:12like AWS is because it is extremely
- 8:35:15simple to set up. Whereas Azure on the
- 8:35:18other hand is a complete package. It's
- 8:35:20full and it's very powerful.
- 8:35:23Now let's move on and check out the
- 8:35:25users of AWS and Azure. As I've already
- 8:35:28mentioned, AWS is extremely simple to
- 8:35:31set up. It also has several managed
- 8:35:33services. It can be easily integrated
- 8:35:36with GitHub and it also has parallel
- 8:35:38execution. Deployment is completely
- 8:35:41automatic and there are manual steps
- 8:35:43available so you're never lost. Azure on
- 8:35:46the other hand supports open-source. It
- 8:35:48also has several integrations that is it
- 8:35:51can be easily integrated with GitHub and
- 8:35:53Genkins. It also has several project
- 8:35:55management features and the most
- 8:35:58important plus point of Azure is that it
- 8:36:00is free for stakeholders. I hope the
- 8:36:02uses between AWS and Azure are extremely
- 8:36:05clear. Now let's move on and talk about
- 8:36:07AWS and Azure clients. So Amazon web
- 8:36:10services is used by companies like Play
- 8:36:13HQ, Affirm, Curo Education, UP, Ready
- 8:36:16for and Bitbank Incorporation. Whereas
- 8:36:19Azure has clients like Microsoft,
- 8:36:21Kingsman Software, Evotech Digital,
- 8:36:24Muse, Energy to Market and QRPoint.
- 8:36:27Now the next important difference is
- 8:36:29with what tools that these cloud
- 8:36:32services can be integrated with. Amazon
- 8:36:34Web Services as you can see on the
- 8:36:36screen can be easily integrated with
- 8:36:38GitHub, Genkins, Amazon EC2, Amazon S3,
- 8:36:42AWS Elastic Beantock, Run Scope and
- 8:36:45CloudB. Azure on the other hand can be
- 8:36:47easily integrated with Git and GitHub,
- 8:36:49Docker, Slack, Genkins, Trello and
- 8:36:52Visual Studio. Now let's move on and
- 8:36:55compare the salary of an AWS DevOps
- 8:36:58engineer and Azure DevOps Engineer. As
- 8:37:00you can see on the screen already, the
- 8:37:02median salary for an AWS DevOps engineer
- 8:37:05is rupees 4 lak 67,000 rupees. Whereas
- 8:37:09the median salary for an Azure DevOps
- 8:37:11engineer is about rupees 6 lakhs 4,000
- 8:37:15rupees a year.
- 8:37:22Let's quickly jump on to some of the
- 8:37:25Azure DevOps interview questions. So the
- 8:37:27first question is what is DevOps? Of
- 8:37:30course, this is one of the first
- 8:37:32Microsoft Azure DevOps interview
- 8:37:34question that you will be asked. So the
- 8:37:36answer to this is DevOps is a set of
- 8:37:39cultural ideas, practices and
- 8:37:41technologies that improves an
- 8:37:43organization's capacity to provide
- 8:37:45applications and services at high
- 8:37:48velocity by changing and enhancing
- 8:37:50products at a quicker rate than
- 8:37:52traditional software development and
- 8:37:54infrastructure management methods. In
- 8:37:57simple terms, DevOps essentially speeds
- 8:37:59up the process of delivery of
- 8:38:01application and software services.
- 8:38:04Coming with our second question, why use
- 8:38:07DevOps? So this is a common Azure DevOps
- 8:38:10interview question. So how do we answer
- 8:38:12it? DevOps is significant because it is
- 8:38:15a software development and operation
- 8:38:17methodology that allows for faster
- 8:38:19product creation and simpler maintenance
- 8:38:22of existing installations. When problem
- 8:38:25arises, the DevOps team is able to
- 8:38:27listen to the user and provide the
- 8:38:29necessary features and repairs. It also
- 8:38:33facilitates the delivery of smaller
- 8:38:35features to clients in a quick and
- 8:38:37efficient manner and allows seamless
- 8:38:39software delivery. So this was the
- 8:38:41answer to why use DevOps. Let's quickly
- 8:38:44move on to our next question. How does
- 8:38:47DevOps work? So DevOps is about breaking
- 8:38:50down barriers between previously
- 8:38:52compartmentalized departments such as
- 8:38:54development and operations. These
- 8:38:56development and operations team
- 8:38:58collaborate across the whole software
- 8:39:00application life cycle from development
- 8:39:02and testing to deployment and operations
- 8:39:05under the DevOps paradigms. Going ahead,
- 8:39:08what is Azure DevOps? So, as I said
- 8:39:11before, Azure DevOps is a Microsoft
- 8:39:14application as a service platform that
- 8:39:16offers an end toend DevOps tool chain
- 8:39:19for building and distribution software.
- 8:39:21It also interfaces with the majority of
- 8:39:24the market's main products and is an
- 8:39:26excellent choice for coordinating a
- 8:39:28DevOps tool chain. This process includes
- 8:39:31testing automation, continuous
- 8:39:33integration as well as continuous
- 8:39:35delivery. People with both development
- 8:39:37and the operation skill work together
- 8:39:40and implement various tools for CI/CD
- 8:39:43and monitoring for quick response to
- 8:39:46customers requirement and fixing issues
- 8:39:48and bugs. Moving ahead, what are the
- 8:39:51benefits of DevOps? So there are five
- 8:39:54benefits of DevOps which we'll
- 8:39:56understand one by one. So first is team.
- 8:40:00DevOps practices let you move at a
- 8:40:02velocity you need to innovate faster,
- 8:40:05adapt to changing marketing better and
- 8:40:07become more efficient at driving
- 8:40:09business results. Second benefit is
- 8:40:12rapid delivery. So when you increase the
- 8:40:14pace of the releases, you can improve
- 8:40:17your product faster and build
- 8:40:19competitive advantage. Third is
- 8:40:21reliability. In this DevOps practices
- 8:40:24like continuous integration and
- 8:40:27continuous delivery can ensure the
- 8:40:29quality of application updates and
- 8:40:31infrastructure changes so you can
- 8:40:33reliably deliver at more rapid pace
- 8:40:36while maintaining an optimum experience
- 8:40:39for end users. At number four, improved
- 8:40:42collaboration. Under DevOps model,
- 8:40:44developers and operation teams
- 8:40:46collaborate closely, share
- 8:40:48responsibilities and combine their
- 8:40:50workflows. This reduces inefficiency and
- 8:40:53saves time as well. And finally, number
- 8:40:57five, we have security. So you can adopt
- 8:41:00a DevOps model without sacrificing
- 8:41:03security by using automated integrated
- 8:41:06security testing tools. So these were
- 8:41:08the five benefits of DevOps which makes
- 8:41:10it more demanding. Let's move on to
- 8:41:13number six. So the number six question
- 8:41:15is name a few DevOps tools. So the
- 8:41:18answer to this is some of the popular
- 8:41:20DevOps tools are Git, Selenium, Jenkins,
- 8:41:24Puppet, Chef, Anible, Negios, Docker. So
- 8:41:28you can answer any of the four DevOps
- 8:41:31tools which are easy to remember. Moving
- 8:41:34ahead with the next question. What are
- 8:41:36the popular DevOps tools for continuous
- 8:41:39integration and continuous deployment?
- 8:41:42So, Azure pipeline support Mac OS,
- 8:41:45Windows and Linux. So, some of the
- 8:41:48popular DevOps tools for continuous
- 8:41:50integration and continuous deployment
- 8:41:52are genkins and team. These two are the
- 8:41:55DevOps tools which provide you both
- 8:41:57continuous integration and continuous
- 8:41:59deployment. Quickly moving ahead with
- 8:42:01the next question. Question number eight
- 8:42:04that is what are Azure boards? So Azure
- 8:42:08board is a user interface that allows
- 8:42:10you to keep a track of task defects and
- 8:42:13features in your software project. It
- 8:42:15enables you to monitor all your ideas to
- 8:42:18each development stage in order to keep
- 8:42:21your team on track with all the
- 8:42:23essential code modification related to
- 8:42:26your work procedure. Azure boards
- 8:42:28include features like boards, sprints,
- 8:42:31work items, dashboards, backlogs,
- 8:42:34queries, etc. Going ahead, what is Azure
- 8:42:39repos? This is a basic Azure DevOps
- 8:42:41interview question, but it can be
- 8:42:43difficult to answer. So, the answer to
- 8:42:46this is Azure repos is a collection of
- 8:42:48version control tools for managing your
- 8:42:51code. Using version control as soon as
- 8:42:54visible whether your software project is
- 8:42:56huge or little is a smart idea. Version
- 8:42:59control systems are a piece of software
- 8:43:01that allow you to keep a track of
- 8:43:03changes to your code over time. Azure
- 8:43:06repos offer centralized version control
- 8:43:08system as well as the distributed
- 8:43:11version control system that is git. At
- 8:43:14number 10, what are containers?
- 8:43:17Containers are software packages that
- 8:43:19include all the components required to
- 8:43:21execute in any environment. Containers
- 8:43:24virtualize the operating system in this
- 8:43:26fashion, allowing them to operate
- 8:43:29anywhere from private data center to a
- 8:43:32public cloud or even a developer's own
- 8:43:35laptop. Containers also provide the
- 8:43:37means to package software code, its
- 8:43:40configuration, dependencies and packages
- 8:43:43into a single unit or object. Multiple
- 8:43:46containers can run on the same machine
- 8:43:48or share OS with containers for running
- 8:43:51fast, reliable and consistent deployment
- 8:43:54anywhere. Moving ahead, what containers
- 8:43:57does Azure DevOps support? So, Azure
- 8:44:00DevOps support the following containers
- 8:44:03such as Docker, Azure Kubernetes
- 8:44:06Service, ASP.NET with containers, Azure
- 8:44:09service fabric application with Docker
- 8:44:12support. So these are the containers
- 8:44:14which are supported by Azure DevOps.
- 8:44:16Moving ahead, what are Azure pipelines?
- 8:44:20Azure pipeline is a cloud service that
- 8:44:22allows us to automatically create and
- 8:44:24test our code projects. The Azure
- 8:44:27pipeline includes several features such
- 8:44:29as continuous integration and continuous
- 8:44:32delivery that allow us to test and build
- 8:44:34our code on regular and consistent basis
- 8:44:37and ship to any destination. It
- 8:44:40automatically develops and tests the
- 8:44:42code projects. It is a service on the
- 8:44:44Azure cloud that offers well with most
- 8:44:47project types and languages. Going ahead
- 8:44:50at number 13. What is the use of
- 8:44:53Selenium in DevOps? Selenium is widely
- 8:44:56used browser automation technology and
- 8:44:58testing teams heavily rely on it in
- 8:45:01DevOps pipeline. It is an open-source
- 8:45:04solution that saves money for testing
- 8:45:07teams and functional testers that are in
- 8:45:10charge of UI testing. It specializes in
- 8:45:13the form of regression and functional
- 8:45:15testing. At number 14, what are Azure
- 8:45:18test plans? This is another one of the
- 8:45:21popular interview questions asked in
- 8:45:23Azure DevOps. So the answer to this is
- 8:45:26Azure test plans is a service provided
- 8:45:29by Azure DevOps that offers a
- 8:45:31browserbased test management solution
- 8:45:34for exploratory scheduled manual and
- 8:45:37user acceptance testing. In addition,
- 8:45:40Azerest plans includes a browser
- 8:45:42extension for exploratory testing and
- 8:45:45getting feedbacks for the stakeholders.
- 8:45:48Additionally, it also focuses on
- 8:45:50automated testing. It combines the
- 8:45:53contribution from developers, managers,
- 8:45:55testers, product owners and user
- 8:45:58experience advocates and enhance the
- 8:46:01quality of the project. Moving ahead,
- 8:46:04what are the some important features of
- 8:46:06meme cachade? So, meme cashachade offers
- 8:46:08a wide variety of features. Some of them
- 8:46:11are like it is an open-source, it's a
- 8:46:14UDP or TCP server client program, it
- 8:46:18works as a standalone service. The
- 8:46:20caching nodes are very ignorant. So they
- 8:46:23don't have other nodes involved. They're
- 8:46:25also under the license of Blay software
- 8:46:28distribution and it reduces the database
- 8:46:30load. So these were some of the
- 8:46:32important features of meme caching.
- 8:46:35Quickly moving ahead at number 16. What
- 8:46:38is a dockpile effect and how can you
- 8:46:40prevent it? So a dopile effect refers to
- 8:46:43an effect that occurs when a cache
- 8:46:46expires and websites are attacked by
- 8:46:48several requests sent by the client at
- 8:46:51the same time. It indicates the expiry
- 8:46:53of cachier followed by the website being
- 8:46:55simultaneously hit by numerous respects.
- 8:46:58In simple terms, it indicates the expiry
- 8:47:01of cache followed by the website being
- 8:47:03simultaneously hit by numerous requests.
- 8:47:06This impact can be avoided by employing
- 8:47:09semaphore log. When a log expires in
- 8:47:12this system, the first process gains the
- 8:47:14lack and begins creating the fresh
- 8:47:16value. At number 17, what is continuous
- 8:47:19testing? What is the use of test
- 8:47:22automation in DevOps? As we know, DevOps
- 8:47:25is all about people, culture, and
- 8:47:27automation. In this continuous testing
- 8:47:29is the process of running automated
- 8:47:31tests as a part of the software delivery
- 8:47:34pipeline to get feedback on the business
- 8:47:37risks associated with a software release
- 8:47:40candidate as soon as visible. DevOps use
- 8:47:44test automation to use the test cases to
- 8:47:46find the flaws and save time. Unlike
- 8:47:49manual testing, automation test cases
- 8:47:52accelerate testing allowing you to get
- 8:47:55products to market faster. Moving ahead
- 8:47:58number 18. What is a forking workflow?
- 8:48:02So before we get to know what is forking
- 8:48:04workflow, let us know what is forking.
- 8:48:06So forking is a git clone process that
- 8:48:09is performed on server copy of the
- 8:48:12project's repository. The forking method
- 8:48:14supports open-source projects and
- 8:48:16isolates changes from the main
- 8:48:18repository until they are ready to be
- 8:48:20integrated. What is forking workflow?
- 8:48:23Poking workflow is a git clone process
- 8:48:25that is performed on a server copy of a
- 8:48:28project's repository. This method
- 8:48:31supports an open-source projects and
- 8:48:33isolates changes from the main
- 8:48:35repository until they are ready to be
- 8:48:38integrated.
- 8:48:40Moving ahead, what are some of the
- 8:48:42useful plugins in Genkins? So, it has a
- 8:48:45very simple answer. So there are many
- 8:48:48useful Jenkin plugins out of which would
- 8:48:50be describing few. So among them are
- 8:48:54Amazon EC2, Maven 2 project, HTML
- 8:48:58publisher, join, copy artifact, green
- 8:49:01balls and many more. So these are few
- 8:49:04useful Genkin plugins and it will be
- 8:49:06very easy for you to remember it.
- 8:49:09Quickly moving ahead with number 20. Can
- 8:49:12we move or copy Genkins from one server
- 8:49:16to another? So the answer to this is
- 8:49:18yes, it is possible. Genkins can be
- 8:49:21removed from one server to another just
- 8:49:23by cloning the job directory from the
- 8:49:25previous server to the new or the
- 8:49:27current one and later you can rename it.
- 8:49:30This enables moving an installation by
- 8:49:34copying the corresponding job title. So
- 8:49:36these were the top 20 Azure DevOps
- 8:49:38interview questions. So let's look on to
- 8:49:40some scenario based Azure DevOps
- 8:49:42interview questions. So the first one is
- 8:49:45we have 50 commits in develop branch out
- 8:49:48of which only five commits need to be
- 8:49:50pushed in the release branch which will
- 8:49:53eventually deployed in the production.
- 8:49:56Okay. So the question is we have around
- 8:49:5850 commits in the develop branch which
- 8:50:01is mostly used for development
- 8:50:03activities. So in that we have multiple
- 8:50:06comets and the release branch is used to
- 8:50:09release your changes into your proper
- 8:50:11environments like your stage production.
- 8:50:14So here out of 50 only five commits need
- 8:50:17to be posted into the release branch. So
- 8:50:20the best way to achieve it is through
- 8:50:23git cherrying. Git cherry picking is the
- 8:50:25act of picking a commit from a branch
- 8:50:28applying it to another. Git cherrypick
- 8:50:30can be useful for undoing changes. For
- 8:50:34example, say a commit is accidentally
- 8:50:36made to the wrong branch. So what you
- 8:50:38can do? You can switch to the correct
- 8:50:40branch and cherrypick the commit to
- 8:50:42where it should belong. More simply, it
- 8:50:45would be like a box of cherry in which
- 8:50:48you have to pick five best cherries out
- 8:50:50of it. So you start picking the best
- 8:50:52cherries and if you want to run this
- 8:50:54cherry picking, you need to use the g
- 8:50:57console. So using the gitline command,
- 8:50:59you can initiate the cherry picking. So
- 8:51:02let's move on to our second scenario. So
- 8:51:05in the second scenario, a developer has
- 8:51:08created an ASP.NET core application and
- 8:51:11now he wishes to automate the entire
- 8:51:13build and release process through Azure
- 8:51:16DevOps. Guide the developer with the
- 8:51:18entire end toend process and deploy the
- 8:51:21application on Azure web app using IA
- 8:51:24methodology. Okay. So guys as you can
- 8:51:27see that we have multiple questions and
- 8:51:30in this entire scenario which we are
- 8:51:32talking about. The first question is
- 8:51:34that there is a developer which is very
- 8:51:37much new to DevOps and he has reached
- 8:51:39out of the reaches of uh DevOps engineer
- 8:51:42and now he asked how to automate the
- 8:51:45entire build and release process and in
- 8:51:47the another scenario we need to deploy
- 8:51:50this on the Azure web app using the IA
- 8:51:54methodology. So the first step is to be
- 8:51:57taken by the developer to build the
- 8:51:58application locally. After that we
- 8:52:01create a Azure repos and push the source
- 8:52:04code in the remote repository along with
- 8:52:06the IA configuration file. And lastly we
- 8:52:10create a build pipeline classic or YL
- 8:52:13based in which we can build the solution
- 8:52:15using MS build or VS build. Run the code
- 8:52:18analysis through sonar cube vera code
- 8:52:21etc. Run code coverage. copy ARM or
- 8:52:25Terraform configuration files also
- 8:52:27publish the artifact either on
- 8:52:29fillershare or Azure pipeline drop
- 8:52:32location. So this was the answer to the
- 8:52:34scenario. Moving ahead with the next
- 8:52:37scenario. Here the developer named Ram
- 8:52:40has few comets changes in his local
- 8:52:43branch and now he has to empty the
- 8:52:46current work directory to accommodate
- 8:52:48emergency change. So how can Ram handle
- 8:52:51such scenario without losing his
- 8:52:53uncommit changes? So to achieve this he
- 8:52:57used get stash. What is get stash? Git
- 8:53:00stash is a command that takes your
- 8:53:02uncommitted changes that is both staged
- 8:53:04and upstaged and save them away from and
- 8:53:08save them away for later use and then
- 8:53:11reverts them from your working copy. So
- 8:53:13there are commands like get stash which
- 8:53:15stashes the uncommit changes and next is
- 8:53:19get stash list. So you can list all the
- 8:53:22stashed changes. Then there are other
- 8:53:25commands like get statch pop to reapply
- 8:53:28the most re recent stat changes and get
- 8:53:32stat drop to drop the most recent stat
- 8:53:35changes. So this is how he can overcome
- 8:53:37this scenario without losing any of his
- 8:53:40uncommit changes. Let's quickly look on
- 8:53:43to our next scenario that is a developer
- 8:53:46has developed a micros service
- 8:53:48application that is ASP.NET code and it
- 8:53:51automates the entire end to-end process
- 8:53:53to deploy the application on Azure
- 8:53:56Kubernetes service. Make sure to use
- 8:53:59pipeline as a code methodology for the
- 8:54:01entire build and release. So for this he
- 8:54:05needs the first step to be taken is by
- 8:54:07the developer to build the application
- 8:54:10locally. Then he needs to create an
- 8:54:12Azure report and push the source code in
- 8:54:14a remote repository along with the IAC
- 8:54:17configuration file. Then again he needs
- 8:54:20to create a build pipeline classic or
- 8:54:23EML based as we had discussed in the
- 8:54:26previous scenarios. Then after that he
- 8:54:29needs to use an ARM template or a
- 8:54:32Terraform configuration to create an
- 8:54:34Azure web app. later he can create a
- 8:54:37release pipeline and run the ARM
- 8:54:40template task and post web app creation
- 8:54:43he can run ASP.NET application
- 8:54:46deployment task. So this was the answer
- 8:54:48to this scenario. So let's check on to
- 8:54:52our last scenario that is a developer
- 8:54:54has developed an application module and
- 8:54:56while developing he made around 100
- 8:54:59commits locally. Now he needs to push
- 8:55:03all his changes into a remote develop
- 8:55:06branch as a single commit. We don't want
- 8:55:09the developers messy history in the
- 8:55:11develop branch. So the answer to this
- 8:55:14question is get squash. So what is g
- 8:55:17squash? G squash is a technique that
- 8:55:20helps you take a series of comet and
- 8:55:22condense it to the few comets. That
- 8:55:26means you can condense into one single
- 8:55:28commit and those 100 commits will be
- 8:55:31condensed and converted into one single
- 8:55:34commit. So you can use the get command
- 8:55:37line that is get rebase-en
- 8:55:40I head three where I represents
- 8:55:43interactive. So it is interactive head
- 8:55:46and three means it will take the last
- 8:55:49three commits you want to try on your
- 8:55:51console or get command or get command
- 8:55:55line. So this was the answer to this
- 8:55:57scenario. I hope this will help you out
- 8:55:59to crack your interviews. And with this
- 8:56:02we have come to an end to this full
- 8:56:04course on Azure DevOps. If you enjoyed
- 8:56:07listening to this full course please be
- 8:56:09kind enough to like it and you can
- 8:56:11comment on any of your doubts and
- 8:56:12queries. We will reply to them at the
- 8:56:14earliest. And do look out for more
- 8:56:16videos and playlist and subscribe to
- 8:56:18Edureka's YouTube channel to learn more.
- 8:56:20Thank you for watching and happy
- 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.