Monday
Room 6
09:00 - 17:00
(UTC+02)
2 Days
Building and testing resilient services over HTTP
Users' patience with services not working is gradually decreasing as the quality of services online is improving. With current trends of moving services to the cloud and building smaller and network-intensive services, meeting these expectations can be challenging for us developers. We want to be able to build services that we can run confidently despite partial failures and outages.
In this workshop, you will learn how to simulate latency and failures in your web application and how to add strategies to deal with this. We will learn how changing the different parameters change the behavior of our application under load, and what trade-offs we ultimately must make. Because we build on HTTP and TCP/IP, we will also have fun sessions where we dig deeper into details in hands-on sessions to get a better understanding of the foundations on which we build.
We will start with introducing Polly, a resiliency and transient-fault-handling library for .NET applications.
We will then move on to using k6 for load testing a .NET Core web API. For resiliency strategies, we will use Polly and we will use Simmy for fault injection. This is red-green testing, but for performance and resiliency. As you work through the challenges, you will learn about service level indicators, service level objectives, and how to formulate and test such requirements. We will also work on some .NET specifics that we need to master regarding asynchronous programming to make sure the mechanisms work as intended.
In the last part of the workshop, we will focus on writing high-level tests in k6. We will share some of our experiences with such tests, and a simple process to help ensure system-level reliability and organizational coordination. You will gain a better understanding of k6, and reflect about some of the non-technical challenges of building reliable systems.
There are no prerequisites for the workshop, but you should have some experience building web applications to get the most out of the workshop. The workshop should be valuable to developers, testers and architects working with or with an interest in robustness and scalability. We will visit high-level concepts, such as talking to the business about SLOs, and nitty-gritty details of HTTP headers.
About the Instructors
Roger Hoem-Martinsen
Roger is a full-stack test developer with a varied background and a strong passion for building quality software solutions. In recent years, he has specialized in software testing. He started his career 15 years ago as a R&D engineer in signal processing, developing solutions for underwater communications. He has also worked with jet plane modems, gas detection systems, signal systems for railway, wireless condition monitoring systems and streaming services.
Bjørn Einar Bjartnes
Bjørn Einar is a .NET developer and architect working at 4Subsea. He has a background from automation systems in the energy sector and has for the last 6 years worked for NRK TV as a backend developer and architect in the streaming service. His main topics of interest are domain driven design and functional programming. Keeping NRK TVs services up and running has been the main driver for his interest in resilient architecture. In the search for robustness, he has also learned to love HTTP.