Lab.png

Welcome to the DevOps Lab.

This lab is specifically for people who are new to DevOps and are interested in understanding the value DevOps brings to a software product.

I developed this lab because when I myself  was learning about DevOps, I could not find any simplified yet comprehensive examples. There are many examples out there that use sample applications, but the applications that were used as samples were more complex than I would have liked.

So, I developed a minimal viable product DevOps example. Think of it as a “Hello World” implementation for DevOps. I hope you find it helpful.

The Lab

The DevOps Roadmap Lab provides an end-to-end example of a DevOps implementation using a simplified e-commerce application called Sports Store, which runs on Azure.  This application is an ASP.NET MVC application based on the book Pro ASP.Net MVC 5. We use Visual Studio Team Services (VSTS)  to manage the Agile planning as well as the build and release process. The source is maintained using Git.

My goal is to simulate a real-life situation using this simplified application while incorporating all of the moving parts of a true production system. This allows us to focus on the DevOps process and de-emphasize the code details. The following topics are included:

  • Version Control – We use Git as our version control repository. All source code  for the lab is available on Git Hub.
  • Build Process – Whenever source code is pushed to the shared Git repository, it is compiled and the unit tests are executed. A set of artifacts are created that are used in the release process to deploy Sports Store in various environments.
  • Release Process – A release pipeline is used to gather the artifacts created in the build process and to deploy them to an environment.
  • Unit Test – Sports Store uses a set of unit tests to validate the code as it is being developed. Some unit tests are mocked and executed every time the code is checked into version control. Other unit tests hit the database. However, these tests are too slow to be run every time the code is checked in. We refer to these tests as integration tests, and they are run nightly.
  • Automated QA Testing – A set of automated QA tests has been developed to ensure that we have not broken any existing features. These tests are run in the build environment  each night as part of the scheduled release.
  • Load Testing – As we proceed with the development for a release, we run a set of load tests in the build environment to ensure that we are meeting our performance requirements. This also helps us fine-tune Azure for the proper pricing tier. 
  • Environment – The production environment is where Sports Store is used by our customers. The QA environment is used for testing by our delivery team. The build environment is a production-like environment used for integration testing, automated QA testing, and load testing. Software is released into the build environment each night, where these tests are then executed.
  • Infrastructure as Code – Sports Store runs on Azure using an SQL database, along with an app service for the website. Infrastructure as Code is a technique that defines the infrastructure that an application uses in code.

This lab is divided into various articles that explain how the above topics are implemented. Each article features a Learn More section that includes links to useful details . My hope is that this provides you with the information you need to re-create this lab.

You can also contact me and set up  a free meeting in which I will go over this lab with you and better accommodate your specific needs . Perhaps I can help you with your DevOps implementation.

Next, we will discuss some DevOps Lab details.