Quick note: DevOps Lessons Learned at Microsoft Engineering article on InfoQ

As I recently wrote in DevOps Days London: DevOps at Microsoft Engineering session, I presented at DevOps Days London about a few DevOps topics from inside Microsoft Engineering. They are some common topics I've seen beyond the most common DevOps practices.

I have also recently written an article for InfoQ on the same topic, where I basically have written down the information from my session. Check it out here:

DevOps Lessons Learned at Microsoft Engineering 

DevOps Days London: DevOps at Microsoft Engineering session

I have recently presented at DevOps Days London on the 19th of April 2016. It was an inspiring event with many presentations sharing DevOps culture stories, and an increasing focus on DevOps in the enterprise.

 My session covered a few DevOps culture topics that I identified from existing stories and presentations from Microsoft engineering as well as from internal conversations.

Check out the recording here: https://vimeo.com/165184757

The five topics in the session are:

  • Team Responsibilities - Merging the development and QA teams into 'software engineering' with all focusing on quality; bringing ops into the same org structure as engineering; creating feature teams with shared goals, and responsibilities.
  • Flighting Deployments - From a service like Visual Studio Team Services, to a mobile application like the OneDrive iOS mobile app, teams at Microsoft have realized the benefits of deployment rings, for controlled exposure and getting early feedback and experimentation 
  • Learning from customers: Direct Feedback -  From Office to Bing to Azure to mobile apps, giving customers an easy feedback form (like smiley/frowny icons in the app or website) and having User Voice or similar feedback venues helps develop a community, increase quality, and get customers closer to engineering teams
  • Idea Velocity -  Idea Velocity has been a big focus at Microsoft recently. At Bing, once their continuous delivery and testing at scale infrastructure was in place, they focused on allowing anyone in the team to experiment and get their ideas tested. This empowers individuals, allows product decisions to be made from real customer data, and incentivizes creativity.
  • Learning from Customers: Experimentation & Telemetry - Finally, to complement the direct feedback, nothing is better than telemetry to help with issues and to also help with making product decisions. 

The slides are here:

DevOps FoMO? Get up to speed on culture and continuous delivery with the DevOps Fundamentals Series

79fb384a-a0ed-46dc-9d22-b2e73526d229.png

DevOps has quickly risen to popularity as a culture shift that enables companies to achieve faster and higher-quality software delivery and increased customer satisfaction. 

If you have DevOps FoMO (fear of missing out), the DevOps Fundamentals series is for you. It explains key concepts and practices, and maps them to technical demos with Microsoft technologies. Regardless of your role at work, you can learn some practices to help your team!

If you're a software engineer (Dev), you'll learn how to get your solutions to production without issues, get insights directly from users, and ensure your dev environment is the same as others to avoid "it works on my machine!"

If you're a service engineer (Ops), you'll learn how the automation, configuration and deployment of environments will give you more time to understand the application and infrastructure architecture, and spend more time on proactive work.

You can watch the series on Channel 9, or from here - below is a description and the video of each session. 

Introduction to DevOps

It is a challenge to describe the DevOps culture, but at a high level it involves people, processes, and products (in this order). It requires development, testing, operations, business, and other teams to work together, efficiently, to deliver better and faster results to customers. This session covers the fundamentals of DevOps and helps you understand how they map to DevOps practices and how they can be implemented by a variety of products and tools. 

Infrastructure as Code

This session on Infrastructure as Code demonstrates and discusses the benefits of leveraging techniques, processes, and tool sets used in software development to manage the deployment and configuration of systems, applications, and middleware.

Automated Testing

This session on Automated Testing demonstrates and discusses the benefits of running load, integration, and unit tests automatically attached to Continuous Integration or some other means.

Continuous Integration

This session on Continuous Integration demonstrates and discusses the benefits of merging all working copies of developers' code with a shared mainline, producing a new build upon code check-in.

Continuous Deployment and Release Management

This session discusses the benefits and demonstrates Continuous Deployment and Release Management. Continuous Deployment, which usually comes after Continuous Integration (CI), is the ability to use the output from CI and deploy this new known good build to an environment automatically. This session also covers Release Management, which is the way to mature Continuous Deployment from just one environment to the rest of the environments in your pipeline.

Configuration Management

This session on Configuration Management demonstrates and discusses the benefits of handling changes systematically so that your systems maintain integrity over time.

Application Performance Monitoring and Availability Monitoring

This session on Application Performance Monitoring demonstrates and discusses the benefits of having visibility into key metrics about your applications, as well as alerts and logging about their health. It also covers the Availability Monitoring practice.

Advanced DevOps Practices

This session explains and demonstrates some advanced DevOps practices like Testing in Production, Fault Injection, User Telemetry, and A/B Testing.

Showing the latest Visual Studio Team Services Build run status on GitHub

If you have your code on GitHub and configured a build definition on Visual Studio Team Services for continuous integration you have probably wondered if it is possible to show the latest build status on your GitHub readme file.

And the good news is that YES, it's possible and very straight forward to configure, here's how.

Edit your Visual Studio Team Services build definition and go into the General tab. In there click the Badge enabled tickbox and then click the Save button to save the build definition: 

Once you have saved it, you will see a Show url... link that gives you the link to the latest build status badge:

Now, on the GitHub side (or any other place for that matter), you can use that as an image source. For example, in my Node.js + Azure DocumentDB sample I edited the readme.md file and added a normal html img tag with with the link from above. So now when the latest Visual Studio Team Services build is successful it looks like this:

And if it fails it looks like this:

The functionality is pretty simple at the moment, but useful if you just want to see the latest build status.

Announcing the DevOps Dimension show

My colleagues David Tesar, Oguz Pastirmaci and I have recently started a new show called DevOps Dimension. In this show we interview engineers that have gone through a DevOps culture change in their team and company.

You can subscribe and follow the show here:

https://channel9.msdn.com/Shows/DevOps-Dimension/

It doesn't go deep into technology, but instead focuses on DevOps practices being implemented in the industry. We interview experts from companies like Nordstrom and also teams from inside Microsoft. For example, here's the interview with the Bing team about Experimentation and Testing at Scale: