Introduction To DevOps and Azure DevOps

Are your customers demanding things faster and you are struggling to be responsive? I know the world is changed and rapidly changing but unfortunately, most software companies are struggling to perform at the same pace.
DevOps is a philosophy that has helped many companies to build the capability of delivering continuous value at much faster pace.

Team Foundation Server is a platform for integrated tools where real power comes by streamlining the end to end delivery flow using its integrated tooling the magic of cloud. I am about to begin a series of a blog that will cover end to end flow. I will take you from zero to hero, I will not just cover Team foundation server or visual studio team services. I will cover the DevOps concepts such as cultures of collaboration, Process improvement, automation, continuous integration, testing, Delivery, monitoring, and rapid remediation.

We will start with explaining DevOps concepts and high level and the people and process side of DevOps. These concepts are very important and will live longer than any technology. Tools are important but people and process that influence the tools are more important. Do not make this mistake of thinking that technology is not about people and process, first. Your competition will eat you alive the second you start thinking this.

Slide3

People – mean culture and DevOps  culture emphasizes the collaboration and communication between the roles of development and operations. There are some important cultural shifts, within teams and at an organizational level, that support this collaboration. An attitude of shared responsibility is an aspect of DevOps culture that encourages closer collaboration.

Process  – need to be light weight and Lean. We need to build quality into the development process. Kanban is one technique used to improve the process. We will talk more about Kanban later while talking on Agile.

Products – In order to make our process deliver quality work fast we need to implement techniques such as Continuous testing and ContinuousDelivery. Just like we need to break silos of people and people need to work together we also need tools to work together. It means we need Integrated tools to automate the delivery pipeline and monitoring Production for diagnosing issues and spotting potential improvements.

Automation facilitates collaboration. Automating tasks such as testing, configuration and deployments frees people to focus on other valuable activities and reduces the chance of manual errors.

Just like a vehicle, a driver of the vehicle and a map makes a difference in speed and accuracy to reach a destination. People, Process and product play the same role in software delivery. People drive the process and use tools to speed up the process. The process is our map that leads to a destination and if we use the right tool we get to that destination with speed and safety. If I need to go to a nearby town or city I may use a bike or a car (as a Product or tool) but if I need to go far away to another country I may use a plane and book a flight. If I don’t use any tool it will be too slow to reach the destination by just walking. Map of destination is even more important. If we don’t have a map then it doesn’t matter how fast we can go we may go away from our destination if the map is not correct.

Let’s understand some of the DevOpsy terms we hear. this will help build the foundation for a long journey we are about to begin 🙂

Agile Plan

The goal for modern application delivery is responsiveness, which relies on flexible scheduling, limiting work in process in favor of iterative experiments, and close team collaboration to facilitate real-time communication and eliminate wasteful handoffs. High performers have multidisciplinary feature crews who pull from a common product-backlog, minimize work in process, and deliver work ready to deploy live at the end of each sprint.

Version Control

Version control enables teams located anywhere in the world to communicate effectively during daily development activities as well as to integrate with software development tools for monitoring activities such as deployments.

Continuous Integration and Continuous Delivery

Continuous Integration refers to the practice of triggering an automated build and test sequence with every commit of code changes. Continuous Delivery extends this to trigger further testing and the deployment to production, with approval if necessary. CI/CD form the core DevOps flow, enabling a team to move software swiftly from initial idea through creation and validation into a production release without impediments or manual rework.

Cloud and Infrastructure

In the past, adding infrastructure was always bottlenecked and fixed cost to the budget. Nowadays, teams can use the Public and Hybrid Clouds to gain capacity on demand. With a well-managed cloud, your teams can provision resources as needed and move as fast as they need.

Testing

Testing used to be a slow, infrequent activity. So slow, that testing cadence would determine a team’s ability to release. DevOps strives for testing as a continuous activity, embedded into both the developer workflow and the pipeline used for continuous integration and continuous delivery.

Monitoring

Monitoring of running applications in production environments enables a DevOps team to detect issues as they occur, to mitigate the impact, and to understand the application health. Further monitoring of customer usage helps organizations form hypotheses and quickly validate or disprove experiments.

Culture

Organizational culture matters. If team members feel that they know how to innovate and take risks, they will go farther. Leadership that supports, stimulates, inspires and recognizes individual contribution makes a measurable difference.

Measurement

Measurement is key to being able to assess performance and target improvement. Measurement allows you to see the state of the app in production, the flow from idea to code to delivery, and the actual usage of the features you produce.

Outcomes

The point of DevOps is to achieve better outcomes. More frequent deployments allow you introduce new value more quickly. Higher deployment velocity gives you faster feedback on every change. Faster time to mitigate failures gives your users higher availability. More successful changes eliminate rework and let you go faster. All of these lead to more satisfied customers and more motivated employees.

Azure DevOPs Tools

Why Azure DevOps:

In a nutshell, Azure DevOps is the Integration Hub and a platform that connects tools to streamline your process and help people collaborate easily.

Track everything in one place

Its provide Complete suite and set of integrated tooling that is required to develop a software in a modern age. It provides tooling like Source Control, Agile planning, Testing, Build, Release Management

The picture is categorizing the tooling in different areas. Lets me explain each of these areas a bit.

Work Tracking

All projects need to track and manage work. Azure DevOps provides you Flexible Agile planning tools such as Sprints planning for Scrum and rich Kanban boards.

Source control

You need to backup and version control your code, right? Azure DevOps supports both distributed Git

and centralized TFVC version control. It has very tight Integration with Visual Studio and also provides IDE plug-ins for Cross-platform applications. Its also supports extra features such as social code reviews, code search and package management service to build, manage, version and share your software components.

etc.

Testing

TFVS provides tooling for both manual and automated testing. It also supports running your unit tests, performance and load tests as part of your build and release pipeline.

Automated Build

It provides easy to use tooling to support continuous integration for many apps, platforms or languages. It’s not just for .net, for example, you can code, build, test Java apps and deploy it to Linux.

Automated Release

It not only provide you tooling to enable continuous deployments and ship faster but also provide release management functionality to manage your releases.

Monitoring

After the release, you need to monitor how your applications are performing and how customers are using your applications. We should know more about our users and detect issues, diagnose crashes and track usage or potential issues they may face with rich availability, performance and usage information. Although it’s not the core part of Azure DevOps but Microsoft does provide other family products such as system centre service manager to monitor on perm and Application Insights to monitor apps on Azure or other clouds to get actionable insights through application performance management and instant analytics. This diagnostic information can also be attached to bugs during testing in Azure DevOps so the developer can reproduce the issues and find the cause instantly.

Reporting

Everything you do in Azure DevOps is get stored in the data warehouse which means you can build any report you need. Azure DevOps does provide out of the box reports and real-time customizable dashboards to get you started. It also provides features to build and save quires to get work tracking related data. It also Integrates with Power BI and on perm version of Azure DevOps Server integrate with Reporting Services and SharePoint.

Azure DevOps Can Help you

To streamlines your ALM processes, project management, development best practices,

Integrated Environment enable traceability through Link code, work items, tests, build and releases

It Automates your SDLC Processes

It Gives Visibility at all levels

And It’s a Collaboration Platform

if one thing I want you to remember is that Azure DevOps is not just a version control but an integrated platform that covers the managing the entire application lifecycle from start to end with full traceability which enables DevOps capabilities.

Also, It’s not just for Microsoft development technologies but same DevOps and Application lifecycle management tooling can be used for many other technologies and platforms. Microsoft slogan is that Azure DevOps is for any developer, any app on any Platform.

There are four areas I will be covering these are

  1. Plan & Track
  2. Develop & Test
  3. Release & Test
  4. Monitor & Learn

Slide2

We will cover these areas in two rounds. first round will be fast track and will cover the most commonly used features and less on theory. This is to make sure you are up and running with Azure DevOps in no time. The second round will be very detailed to make sure you have enough depth of knowledge and skill to master Azure DevOps.

but this is for future so stay tuned.

please leave comments what you would like me to cover and I will be happy to do my best 🙂