Devops core principles
CI/CD basics
CI/CD with asp.net core webapi and Angular app
Iac Why and What?
Demo using Azure and Azure Devops
Docker why and what ?
Demo using Azure and Azure Devops
Kubernetes why and what?
Demo using Azure and Azure Devops
5. Fundamentally, DevOps is the activity of
optimizing the development-to-operations
value stream by creating an increasingly
smooth, fast flow of application changes
from development into operations, with
little waste.
Definition of DevOps
6. DevOps is a software development
methodology that combines software
development (Dev) with information
technology operations (Ops).
The goal of DevOps is to shorten the
systems development life cycle while
also delivering features, fixes, and
updates frequently in close alignment
with business objectives.
Definition of DevOps
7. DevOps DevOps core principles
Customer-Centric
Action
“feedback loop”
Create with the end
Mind
“understanding
customers
needs”
End to End
responsibility
“fully accountable for the
products ”
Cross-Functional
Autonomous
Teams
Continuous
Improvement
“include minimizing waste
and optimizing speed, costs,
and ease of delivery.
”
Automate
Everything You
Can
“some joke
hacker-scripts”
8. Continuous Integration
Continuous Integration elements
Version Control
System “Azure
Repos, git, apache
subversion, TFVC”
Automated Build
Process “Azure
DevOps , Gradle
”
Package
Management
System “Azure
Artifacts, NuGet,
NPM, Chocolatey
”
Continuous
Integration
System “Azure
DevOps, TeamCity,
Jenkins,”
9. • What is the difference between Continuous Delivery and Continuous
deployment ?
CD vs CD
code build test staging production
Someone or some
group need to approve
before deploy
10. Demo: CI/CD with asp.net core webapi and Angular app
https://dev.azure.com/nashmetech/DemoApp
Demo
13. Why this is Important ?
Business value is what organizations expect
from technology today and that value needs to
Be devolved quickly and efficiently
A new methodology is required that
embraces modern development and
operational practices
14. Why Infrastructure as Code
• Facilitates auditing by making it easier to trace what was deployed, when, and how (In
other words, improves Traceability).
• Provides consistent environments from release to release.
• Greater consistency across development, test, and production environments.
• Automates scale-up and scale-out processes.
• Allows configurations to be version controlled.
• Provides code review and unit-testing capabilities to help manage infrastructure changes.
• Treats infrastructure as a flexible resource.
• Its possible to perform blue/green deployments. This is a release methodology to minimize
downtime, where two identical environments exist, one is live and the other is not. Updates
are applied to the server that is not live, and when testing is verified and complete, it is
switched to become the live environment and the previous live environment is no longer
the live environment i.e. they are swapped. It can also be referred to as A/B deployment.
• Immutable means that the service is not updated. If a change is needed to an environment,
a new one is deployed and the old one taken down.
15. Modularization
Benefits of modularization
The following list are benefits of modularization:
• Easier to re-use components across different scenarios
• Easier to manage and maintain you code
• Easier for new team members to ramp up and understand how infrastructure and components relate and are used
• Easier to sub-divide up the work and responsibilities across teams and area owners
• Easier to troubleshoot
• Easier to extend and add to your existing infrastructure definitions
16. • Azure Resource Manager templates are written in JSON “class for
developers”.
A JSON document is essentially a collection of key-value pairs. Each key is a
string, that's value can be:
• string
• number
• Boolean expression
• list of values
• object (which is a collection of other key-value pairs)
ARM
18. ARM Template
• Parameters : VM name, admin username, admin password domain name.
• Variables: network configurations, storage configurations,
• Functions: function to create unique name for each resource.
• Resources: template components “network card, storage, location ”
• Outputs: For example, you might want to receive your VM's IP address or fully qualified domain name (FQDN),
information you do not know until the deployment runs.
20. • Chef
• Puppet
• Ansible
• Cloud-init with Azure
• Terraform with Azure
Third Party and Open Source Tool integration with Azure
21.
22. • Install software process in any computer
• We can avoid this by using containers
Containers why? What is the problem ?
Download software
Run installer
Get some error during the
installation
Troubleshoot issue
Run installer
Get another error !
containers makes it really easy to install
and run software without worrying about
setup or dependencies
26. What is Docker trying to Achieve ?
Windows
Liunx
MAC
It is following the build
once, run anywhere
approch
Any cloud
On-premises
Software is
written in any
development
language
27. • docker version
• docker run hello-world
• let us see diagrams
Hello Word from Docker
29. Create a new container process
• check diagram ” Create container”
30. • docker run hello-world
• docker run --name some-nginx -d -p 8080:80 nginx
• docker run -d --hostname my-rabbit --name some-rabbit -p
15672:15672 rabbitmq:3-management
Create docker from images
31. Container Registries
• Docker images can be stored locally
• Use container registries to share
images
• Docker Hub hosts public images
• - https://hub.docker.com/
- Also supports private image
hosting
• Azure Container Registry (ACR)
• - Store containers in Azure
• - Can build images automatically
32. • store image in docker hub
• docker login
• docker push image ..
• store image on Azure Container Registries (ACR)
• az acr login
• from Azure DevOps CI CD
Demo
33. Tip # 1: if you want really understand docker do not follow below courses
to understand docker
• Docker for nodejs developer
• Docker for .net developer
• Docker for java developer
Tip # 2: Linux commands essential (for sure not all now)
Tip # 3: you need to learn and do practices in real projects.
Advice to get started with docker