Sunday, March 22, 2020

Azure DevOps

What is Azure DevOps ?
Azure DevOps Services provides development collaboration tools including high-performance pipelines, free private Git repositories, configurable kanban boards and extensive automated and continuous testing capabilities.

Benefits :

Any language, any platform, any cloud

Fully integrated with end to end traceability

Easily build and push images to container registries like Docker Hub and Azure Container Registry. Deploy containers to individual hosts or kubernetes.

Difference between TFS-2019 and Azure DevOps :

On perm solution for Microsoft end-2-end tool is called TFS and the cloud solution for the same is called Azure Devops


DevOps Engineers must be proficient with Agile practices. They must be familiar with both azure administration.


Choosing a Deployment Pattern:

Traditional Deployment Pattern: 

Dev, QA, Prod - As  new builds are produced, they are deployed to  Dev, promoted to QA, and finally sent to Prod.

Modern Deployment Patterns:

Blue-Green Deployment is when you have two production environments that are as identical as possible, After deploying and testing on one, the environments are swapped once the tested environment is approved.

A Canary Release is only pushed to a small number of users. Therefore, its impact is relatively small should the new code prove to be buggy. Changes can be reversed quickly.

Dark Launching is the process of  releasing production-ready features to a subset of yours users before full release. This decouples deployment from release for feedback and testing.

Progressive Exposure Deployment  lets you expose the new software to a subset of users that you extend gradually over time. The impact ( also called blast radius ) is evaluated through observation, testing, analysis of telemetry  and user feedback.

How to test quickly this scenario using the Azure App Service ( Azure Webapp  ) ? 

Appservice > select the webapp > click on the Deployment slots feature. 

Why do we need the deployment slots ?
This is able to control the releases of an application into different environments on the same app.

We can test any deployment pattern using the deployment slots feature ( which is under the Azure App Service Plan ).





















Overview of Azure DevOps

What is Azure DevOps
Azure Repositories
Azure Pipelines
Azure Artifact
Azure Boards
Azure Test plans
Azure Libraries/ Variables / Key Vaults
Azure Dashboards
Azure Environments  ( Multistage Pipelines )
Azure Wiki
Azure Mobile DevOps

Some of the key concepts of the DevOps 

1. Infrastructure as Code  ( IaC )
2. Continous Integration
3. Automated Testing
4. Continuous Deployment
5. Release Management
6. App Performance Monitoring
7. Load Testing & Auto-Scale
8. Availability Monitoring
9. Change/Configuration Management
10. Automated Environment De-Provisioning
11. Automated Recovery  ( Rollback & Roll-Forward )



Source Code Management 

GitHub
Bitbucket
Preforce Helix
Azure Git 
Subversion
PVCS, CVS , VCS

CI/CD/ARA 

common CI/CD and ARA tools,

ARA means : Application Release Automation 

Azure Pipelines 
Jenkins
CircleCI
TravisCI
Bamboo
CodeShip
Spinnaker
TeamCity
XebiaLabs

Value Stream Manaagement

GitLab
CollabNet
Plutora
Tasktop
Azure DevOps 

Before these tools are called as the Application Management Tool ( Now it is known as the Value Stream Management ).

What is this Value Stream Management ?

From gathering requirement to the product release everything is seen in one tool, that is the value stream management.

Ppl can see the End-to-End traceability of the product and that can be seen here.


Common Infra Automation and Management 


Red Hat Ansible
Chef
Puppet
SaltStack
Terraform
Packer
Azure ARM  ( Azure Resource Manager Templates )
Cloud Formation

Serverless ( no need to have vms/servers/resources in place, if you have your code ready then the cloud providers will give an environment, you need to go and deploy your code in to an environment and cloud takes care of everything ).

Amazon AWS Lambda
Google Cloud Functions
Microsoft Azure Functions 
IBM Cloud Functions

DevOps For Databases 

Datical
DBMaestro
Delphix
Redgate
Microsoft SSDT 

Container Management 

Docker Enterprise
Kubernetes
Mesophere/Mesosphere DC/OS
Azure Kubernetes Service 
Azure Container Registry/Instance 
Amazon Elastic Container Service
Amazon Elastic Container Service for Kubernetes
Google Kubernetes Engine
Google Container Service


Alerting ( this is a part of the ChatOps ).

PagerDuty
VictorOps
OpsGenie ( Atlassian )
Azure DevOps Notifications 

you can easily configure messages to the above following tools.

DevSecOps 

Signal Sciences
WhiteSource
Aqua Security 
Immunio
Veracode 
Continuum Security
TwistLock
Microsoft Security tools 

App Performance Management 

AppDynamics
Azure Application Insights 
Datadog
Dynatrace
ExtraHop Enterprise
Nagios Log Server
Splunk Enterprise
New Relic
Azure Monitor 
AWS Cloudwatch


Application performance end to end.


Azure DevOps ( combines all the features/processes/pipelines in to a one CICD orchestrator platform ).

SCM
CONFIGURATION MANAGEMENT
CI & CD
VSM
BOARDS
ARTIFACTS
CLOUD
SERVERLESS

one tool serves all the purpose.

Deployment of Infrastructure : 

We can deploy to many resources for example,

1. On-premises servers
2. Infrastrcture as a Service ( IaaS )
3. Platform as a Service ( PaaS )
4. Function as a Service ( FaaS ) ( example : Web Apps )
5. Clusters