Azure well architected operational excellence 1 introduction - VishalPatangay/My-devops-repo GitHub Wiki

THis module is part of AZ-400: Develop an instrumentation strategy

How operationally mature is your cloud environment? Are you incorporating modern practices such as DevOps into the way your organization operates? Are you able to assess the health of your infrastructure? Are adverse events visible and actionable? Are you provisioning resources manually, or have you automated them to reduce risk and increase efficiency?

https://docs.microsoft.com/en-us/learn/modules/azure-well-architected-operational-excellence/1-introduction

Design, build, and orchestrate with modern practices

Modern practices involve organizational shifts and adopting new tooling in order to improve the operational agility of an organization.

Devops

DevOps is the union of people, processes, and products to enable continuous delivery of value to end users. Essential DevOps practices include agile planning, continuous integration, continuous delivery, and monitoring of applications.

Azure DevOps is a suite of products and tools that teams adopting DevOps practices can use to plan, develop, deliver, and operate their solutions. Azure Boards is a part of Azure DevOps that helps teams plan and track work. Azure Boards has modern agile tools like Kanban boards, backlogs, dashboards and scrum boards.

GitHub is the most widely-used platform to build, deliver, and share software. At its core, GitHub is a version control platform that enables a global community of individuals and teams to collaborate on software development projects(public and private).

Continuous Integration and Continuous Delivery (CI/CD)

Continuous Integration (CI) is the practice of building and testing code every time a team member commits changes to version control. Committing code triggers an automated build system to grab the latest code from the shared repository, and then build, test, and validate the full master branch.

Continuous Delivery (CD) is the process to build, test, configure and deploy from a build environment to a production environment. Multiple testing or staging environments create a release pipeline to automate the creation of infrastructure and deployment of a new build.

Azure Pipelines is a cloud service that you can use to automatically build and test your code project and make it available to others. It works with just about any language or project type, and integrates with GitHub, GitHub Enterprise, Azure Repos, and other version control systems. Azure Pipelines combines continuous integration (CI) and continuous delivery (CD) to constantly and consistently test and build your code and ship it to any target.

Microservices

A microservices architecture consists of services that are small, independent, and loosely coupled. Each service can be deployed and scaled independently. Microservice architectures are often adopted for new applications that are adopting DevOps practices.

Microservice architectures are technology agnostic, but you often see containers or serverless technologies used for their implementation. Continuous deployment and continuous integration (CI/CD) is frequently used to increase the speed and quality of development activities.

REST calls are the most common mechanism used for communication. Your developers will be able to identify and resolve code defects earlier in the development cycle.

Use monitoring and analytics to gain operational insights

Monitoring is the act of collecting and analyzing data to determine the performance, health, and availability of your business applications, and the resources on which they depend.

When it comes to monitoring and analytics on Azure, we can bundle services into three specific areas of focus:

Core monitoring Deep infrastructure monitoring Deep application monitoring

Core monitoring

Core monitoring provides fundamental, required monitoring across Azure resources.This area of focus gives you insight into things like the health of the Azure platform, changes being made to your resources, and performance metrics. Azure provides services to give you visibility into four key core monitoring areas: activity logging, the health of services, metrics and diagnostics, and recommendations on best practices.

Activity Logging

Every change that is submitted to the Azure platform is tracked in the Azure Activity Log, which gives you the ability to trace any action that is taken on your resources. Using Activity Log to answer these types of questions will help you troubleshoot issues, track changes, and provide auditing of what's happening in your Azure environment. Activity Log data is only retained for 90 days, although you can archive your data to a storage account or send it to Azure Data analytics for further analysis.

Deep Infrastructure Monitoring

Deep application monitoring

Application Insights provides telemetry collection, query, and visualization capabilities. Instrumenting this level of monitoring requires little to no code changes; you only have to install a small instrumentation package into your application. Application Insights is cross platform, supporting .NET, Node.js, or Java.

Azure Activity Log records all events that have been performed on your resources on the Azure platform, including deletion of resources.

Application Insights will help you detect and diagnose issues and understand usage for your web apps, services, and API calls in your application.

Infrastructure as a Code

https://docs.microsoft.com/en-us/learn/modules/azure-well-architected-operational-excellence/4-use-automation-to-reduce-effort-and-error

Application Insights helps you monitor and analyze your application, it does not offer automation. Mounting ISO images with custom OS installations is not a common strategy for configuring VM. Azure Automation is a great way to automate the start/stop of virtual machines in off-hours.

Testing strategies for your application

If you had a new feature that you wanted to gain insight into whether or not it improves the user experience, which acceptance testing strategy would be the most appropriate?A/B test - This would allow you to test one experience with some users, and different experience with others. You could then analyze the results to determine the impact of the new user experience.