Building and testing resilient services
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.
- Nov 29Oslo Spektrum2 days08:00 - 16:00 UTCBjørn Einar BjartnesRoger Hoem-Martinsen11 490 NOK
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.
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.
Bjørn Einar is a .NET developer and architect. Ha 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 interests are domain driven design and functional programming. Keeping NRKs services up and running has been the main driver for his interest in resilient architecture.
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.