
Chris Ayers
Senior Customer Engineer @ Microsoft
Tampa, Florida, United States
Chris is a Senior Customer Engineer on the Fast Track for Azure team at Microsoft. Chris is an organizer for DevOpsDays Tampa Bay, Tampa Bay DevOps, and Tampa.Devs. He has a focus in modern applications built with DevOps, microservices, containers, Single Page Apps, RESTful APIs, and cloud technologies following agile practices. In his free time, Chris is a speaker at numerous meetups, an avid reader and a gamer.
Awards
Area of Expertise
Topics
From Zero to End-to-End Tests: A Beginner's Guide to Playwright
Playwright is a framework for building end-to-end tests for modern web applications that are resilient and run on any browser, any platform, and is cross language. Playwright tests are easy to author, fast to execute, and run on all popular web browsers.
In this session, we'll cover the basics of Playwright, create a new React project from scratch, and create end-to-end tests. We'll add them to our CI process so that the tests run automatically.
After this session, you'll understand why and how to use Playwright to test your applications.
SRE, DevOps, and Platform Engineering: Unraveling the Differences
In the dynamic world of software development, the concepts of Site Reliability Engineering (SRE), DevOps, and Platform Engineering have become increasingly prevalent, often used interchangeably and causing confusion among practitioners and organizations. This talk aims to demystify these terms and provide a clear understanding of their distinctions, objectives, and best practices for successful implementation.
We will begin by exploring the origins and core principles of each discipline, highlighting the differences in their focus and approaches. We will discuss how SRE emphasizes the reliability, scalability, and performance of software systems, while DevOps concentrates on bridging the gap between development and operations teams for seamless collaboration and continuous delivery. Moreover, we will examine how Platform Engineering focuses on creating robust, reusable infrastructure to empower developers to build, deploy, and operate their applications efficiently.
Join us for an enlightening journey into the world of SRE, DevOps, and Platform Engineering, and learn how to harness their potential to drive innovation, agility, and excellence in your software development lifecycle.
SlideOps: Presenting with MARP and GitHub
Delivering engaging presentations is essential for effective communication, yet traditional tools often hinder creativity and teamwork. Presenters grapple with rigid interfaces, limited sharing options, and the absence of version control—leaving them longing for a more agile and innovative solution. Fortunately, the answer lies in MARP, the trailblazing presentation tool that transforms the way we create and collaborate on slides. By harnessing the elegance of Markdown syntax and integrating with modern development workflows, MARP empowers you to craft visually stunning slides with unparalleled ease and efficiency.
In this session, we'll introduce you to MARP, the game-changer for presentation creation. We'll demonstrate how MARP's intuitive features, such as real-time preview, customizable styles, and integration with Visual Studio Code, revolutionize the slide-making process. But the innovation doesn't end there—MARP's compatibility with Git and GitHub Pages opens the door to even greater possibilities. Imagine hosting your presentations on GitHub Pages for easy sharing and automating updates with GitHub Actions—effortless and accessible presentations are now within reach!
Join us as we explore the full potential of MARP and guide you through the process of creating, hosting, and automating your slides. We'll delve into practical use cases, live demos, and best practices for using MARP in conjunction with GitHub Pages and GitHub Actions. Whether you're a developer, a technical writer, or an educator, this session will equip you with the knowledge to elevate your presentations and communication skills. Say goodbye to presentation woes and embrace the future of slide creation with MARP.
Infrastructure as Code (IaC) - Terraform, ARM, and Bicep
Infrastructure as Code is a methodology that is important in DevOps,. There are many flavors of IaC. During this session we’ll compare and contrast the different technologies and methodologies.
We will walk through a solution multiple times showing how things are implemented in each one and build / release the workflow.
After this session you'll understand:
- The Basics of IaC and IaC Workflows
- What is ARM, Bicep and Terraform
- How ARM, Bicep and Terraform Compare
Kubernetes Resiliency
Kubernetes is a platform many organizations choose for running scalable, reliable applications. However, configuring and running applications on Kubernetes can be complex and filled with pitfalls.
This session will focus on Kubernetes resiliency, from the Infrastructure to Components to the Applications themselves. We will talk about Kubernetes in general as well as AKS on Azure. We will talk about:
Infrastructure
- Single points of failure
- Availability zones
- Node pools
Components
- etcd
- API server
- kube-scheduler
Applications
- Pod disruption budgets
- Resource requests and limits
- liveness and readiness probes
After this session, you will know the things to look for in a cluster, and how to ensure your cluster and applications are more resilient.
Continuous Load Testing with GitHub Actions
Load Testing is an important part of our solutions. I've seen many organizations save that until right before release, which can lead to major issues and increased costs. Just like with security, we should shift-left on testing and incorporate it into our DevOps processes. By combining ephemeral environments through Infrastructure with Code and automated testing, we can reduce costs while increasing our confidence in our solutions.
After this session you will learn:
- Understand Manual Testing vs Testing in pipelines
- Review the typical problems with load testing
- Learn how to create and utilize JMeter tests with the Azure Load Testing service
- Learn how to integrate Infrastructure as Code and Continuous Load Testing on GitHub Actions
DAPR - Building Distributed Applications
Dapr is a new runtime that helps build microservice applications. It provides building blocks built on best practices for building platform agnostic microservices.
After this session you will know
- What is Dapr and what does it solve?
- How to install Dapr locally and in a cluster
- How to use the Dapr Building blocks
- State Management
- Pub / Sub
- Secrets
- Input/Output
- Service Invocation
Securely deploying Infrastructure as Code
We routinely scan our code for vulnerabilities, but what about our infrastructure? Our infrastructure as code can have as many secrets as our codebase. Many organizations are using Terraform with automated pipelines like GitHub Actions. How do we automatically scan our Terraform modules for misconfiguration or secrets? How can we configure Terraform to store state securely in the cloud for each environment?
During this session we will examine how to leverage open source tools to:
Scan for security and configuration issues using tools like tfsec, terrascan, and checkov
Securely configure Terraform backends like AzureRM
Securely pass variables and input into Terraform
Securely deploy Terraform to clouds like Azure
After this session you will have the tools and examples to securely deploy terraform to the cloud.
Building in the Cloud with Bicep
Infrastructure as Code (IaC) is a vital part of the operational excellence we strive for in modern scalable solutions. IaC allows us to create repeatable environments and reduce environmental drift.
There are many flavors of IaC supporting Azure: ARM, Bicep, and Terraform.
Bicep simplifies the authoring experience over ARM with a cleaner syntax, improved type safety, and better support for modularity and code re-use. Bicep also differs from Terraform in how state is managed, simplifying the deployments.
In this session, we’ll cover:
- Bicep Basics and Advanced Topics
- Parameters and variables
- Conditionals
- Loops
- Modules
- Private Registries
- CI/CD for Infrastructure as Code
- Repo structure and layout
- Deployment
After this Session you have the concepts and skills needed to build your infrastructure using Bicep.
Hands-On with Docker and Kubernetes
This workshop will be hands on along with presentations and demos. We’ll cover the basics and more advanced topics, starting with the fundamentals of containers and moving onto Kubernetes, attendees will learn how to create containers and run them on Kubernetes.
This workshop is great for attendees who are beginners to containers but also relevant to those with some knowledge of containers/docker and have heard of Kubernetes but not really worked with it.
Docker fundamentals
Running containers locally
Using container registries
Kubernetes fundamentals
Networking concepts
Kubernetes Secrets and Network Policies
Kubernetes Persistent Volumes
Readiness and Liveness Probes in a Kubernetes cluster
Using Applications Logs
Upgrade and Rollback Applications
.NET Configuration In Depth
Working as a consultant, something I often saw was teams moving from .NET Framework to .NET Core and .NET 5/6. As they adopted these new versions, they kept similar patterns and libraries. The teams weren't taking full advantage of the improvements in .NET. One of those areas is Configuration.
Configuration holds our secrets, connection strings, application settings, and other data. We have checked it in, stored it in a web.config and transformed it in a pipeline. Today there are a variety of ways to configure our applications securely.
This session will cover:
Strongly typed configuration
Configuration providers - JSON, XML, INI files; Environment variables; Command Line;Azure App Config; Key Vault
Dependency Injection
The Options Pattern
Feature Flags - The Art of the IF and Deployment
Feature flags have gained a lot of popularity with the rise of cloud-native applications. Feature Flags help increase agility, allowing you to deploy new features into a production environment for selected users. Feature Flags allow you to release features without restarting the app or deploying new code. They separate the release of new features from their code deployment.
After this session you'll not only be able to start implementing feature flags, but you'll also want to separate your releases from your deployments. You will understand:
- What feature flags are
- The types of feature flags
- Operationalizing Feature Flags
- Best practices around feature flags
- Implementing feature flags using
- Azure Application Configuration
- Launch Darkly
How I study for and Pass Certifications
Some people are good test takers, others aren’t. Leveraging the tools and resources available you can increase your chances of passing your next certification. During this session I’ll go over how I study and prepare for certifications.
We’ll cover:
- Resources
- Free
- Paid
- Practice Methodology
- Microsoft Certifications
- Linux Foundation Certifications
- Cloud Native Foundation Certifications
- Test Taking Tips
- Testing Center vs Taking it at home
Dev Containers in VS Code
The future on development is in dev containers: reproducible, versioned development environments that run on any machine with a Docker installation (Win/Mac/Linux).
If you want all users of your project to have a consistent, customized environment, dev containers can be added to your repositories. Dev Containers make onboarding new developers easy while reducing the time to get started.
After this session, you will be able to:
- Understand what dev containers are
- Know how to add and configure dev containers for a project
- Tool Installation
- Extensions
- Port Forwarding
- Installing software
Dev Containers currently require:
VS Code
VS Code Remote Containers extension
Docker Desktop
Devops is more than just Dev and Ops
DevOps is so much more than just a DevOps engineer or a DevOps team. You can do DevOps activities like automation or CI/CD without understanding the why of DevOps. We'll dive into why and how of DevOps and how it will benefit everyone in the organization. You'll walk away with a clear understanding of what devops is, how everyone in an organization can play a part with a production first, iterative mindset, and where to get started.
Monitoring and Troubleshooting with Azure Application Insights
Monitoring and troubleshooting a live, production application is vital. One of the most stressful things a team can do, is trying to diagnose a distributed system without adding to the disruptions. Application Insights, part of Azure Monitor, is a tool that can you can plug into your applications to get the data you need. It goes far beyond a simple, logging solution by automatically detect performance anomalies and providing a live view into your applications.
We will cover how to enable Application Insights in our applications, both on prem, or in the cloud. I'll share examples in C#, JavaScript, and Python. We'll explore the integrations with DevOps and development tooling. Together we’ll look at the way Application Insights provides a deep view into application performance, errors, and usage. Finally, we’ll look at how to detect anomalies before they become complete outages and get alerted.
After this session, you'll be able to use Application Insights to help you continuously improve performance and usability. When issues arise, you'll have the insights to resolve problems quickly.
Monitoring and troubleshooting a live, production application is vital. One of the most stressful things a team can do, is trying to diagnose a distributed system without adding to the disruptions. Application Insights, part of Azure Monitor, is a tool that can you can plug into your applications to get the data you need. After this session, you'll be able to use Application Insights to help you continuously improve performance and usability. When issues arise, you'll have the insights to resolve problems quickly.
Automate Azure DevOps
Need to setup a new project? Script and automate the creation of repos and git ignore files. Create your build pipelines, branch policies and release in a repeatable manner. Let's examine the Azure cli devops extension and REST apis to find out how to script almost everything in Azure DevOps.
Git Good with Advanced Git
Most of us use git every day, but how well do you know one of your most important tools besides cloning, committing, and pull requests? Are you comfortable rebasing? Do you really know the difference between Resetting or Reverting? Lets 'stash' some info and learn all the advanced features of one of our most used tools.
CI/CD with Github Actions
Learn about building and deploying applications using Github Actions. We will learn diverse ways to trigger our builds and build different types of applications.
We will work up from basics and fully understand how workflows run, how to select and call different actions, and how to handle configuration and secrets.
After this session you'll be able to build and deploy your software from GitHub. You will understand:
- GitHub Actions Runners
- YAML workflow syntax
- Workflow Triggers
- Variables
- Job Dependencies
- Conditionals
- Matrix Builds
- Outputs
- Environments
- Secrets
- Deployments to Container Registries & Azure
Dependency Injection and Unit Testing in .Net
A dive into dependency injection in .Net and ASP.Net applications. Followed by how dependency injection enables unit testing in .Net and EF core. Code examples of how to unit test at the controller, service, and data layers.
Starting an Allyship Journey
As someone that has been in my field for over two decades, it's hard not to notice that many of my coworkers have looked like me. Having diverse teams means we can more effectively learn from each other. Everyone has a different point of view, and by recognizing that and embracing it, we can drive creativity, innovation, productivity, performance, and personal relationships.
Learning about different cultures, races, genders and lifestyles makes me thankful for the opportunities I've had. I've also learned to recognize the challenges others face.
I choose to be an ally; a person who makes an intentional decision to understand, empathize, and act in support of others. Diversity and Inclusion happens one person at a time. Change happens one person at a time. Let's talk about taking those first steps.
- Why Me?
- How do I get started?
- Unconscious Bias
- What is Covering?
- What is Allyship?
Terraform on Azure
Using Terraform on Azure, using the AzureRM provider, has historically lagged a little behind some of the native Azure ARM APIs. Microsoft has released a new provider for Terraform, the AzApi provider that is a thin layer over the ARM Apis.
This will session will:
- cover the differences between the AzureRM and AzAPI Providers
- Authenticating to Azure
- Working with resources
- Working with state and AzApi
After this session you understand the new provider and why you might want to leverage this in your solutions.
Come Cloud with Us User group Upcoming
Cloud With Chris Upcoming
TechBash 2023 Upcoming
Developer Week '23 Upcoming
KCDC 2023 Upcoming
Prairie Dev Con Winnipeg 2023 Upcoming
Kubernetes Resiliency
Securely deploying Infrastructure as Code
Devoxx Greece 2023
Starting an Allyship Journey
Working with Dev Containers
DevOpsDays Tampa Bay
Organizer for DevOpsDays Tampa Bay
THAT Conference Wisconsin 2022
Building in the Cloud with Bicep
THAT Conference Texas 2022
Feature Flags - The Art of the IF and Deployment
.NET Virtual Conference 2022
THAT Conference Wisconsin 2021
Feature Flags - The Art of the IF and Deployment
Azure Advent Calendar
Video posted at: https://www.youtube.com/watch?v=W-i6s46uxdM&t=1s
Tampa Code Camp 2019
Automate Azure DevOps - https://speakerdeck.com/cayers/automate-azure-devops
DevOps Is More Than A Title - https://speakerdeck.com/cayers/devops-is-more-than-a-title
Tampa Bar Camp 2019
What is DevOps? - A discussion of what DevOps is and how everyone can benefit and participate in it.
Global DevOps Bootcamp
Local Keynote - Global DevOps Bootcamp is a global event that will be held on Saturday June 15th and is all about DevOps on the Microsoft Stack. Centrally organized by Xpirit and Solidify and offered to you by Nebbia Technology. During this 1-day event we will join (Microsoft) DevOps communities all around the world to talk, learn and play with DevOps concepts.
Azure Global Bootcamp
Azure DevOps - How and Why we want to close our feedback loops and enable faster development using Azure DevOps.
Orlando Code Camp
Application Insights - A discussion of what Application Insights can do, and how you can leverage it in your applications. There will be some demos in the Azure Portal as well as Visual Studio and Visual Studio Code in ASP.
The .NETwork
Dependency Injection and Unit Testing in .Net Core - Looking at industry best practices as well as Unit Testing and mocking our .Net Core projects.
Tampa Code Camp 2018
Functional Programming - Pure functions and the benefits of functional programming in C# and Javascript.
Good Software Development Practices - A discussion of the best practices in architecture and coding practices, including design patterns, naming, coding standards and more.
Tampa Azure Meetup
Application Insights – A Deep Dive - Diving in to how to leverage Application insights in your MVC and Angular applications.
Tampa Code Camp 2017
Dependency Injection and Unit Testing
Tampa Bar Camp 2017
Unit Testing - How to write and name effective unit tests. Mocking, Faking, and using dependency injection.
Tampa Bar Camp 2016
Raspberry PI - Developing applications on the Raspberry Pi and using pins to communicate with sensors and motors.