Please log in to watch this conference skillscast.
Distributed systems are difficult to build and test, so it is important that you identify weaknesses before they manifest in system-wide, aberrant behaviours. Tools such as docker and docker-compose standardise the process of defining system components and deploying them. However, current testing frameworks for these environments are often inadequate for performing end-to-end testing or Byzantine fault injection.
During this talk, you will explore the docker-compose-testkit. This is an open-source asynchronous testing framework (implemented in Scala) that allows docker containers to be instrumented (instrumentation sensors are modelled by Observables), deployed (e.g. by docker-compose) and then fault injected (fault injection points are modelled by Observers). Abstraction layers allow the same testing code to target both local environments and cloud environments (e.g. AWS, DC/OS, etc.).
A Scala DSL is introduced to define composable and modular state machines that allow one to both monitor these sensors at runtime and to match against expected outcomes. Using for-comprehensions, complex testing scenarios may be defined that allow for warm-up and fault injection.
You will discover full code demonstrating a wide range of example scenarios, along with live coding demonstrations.
The Call for Papers is now open for Scala eXchange 2017! Submit your talk for the chance to join a stellar line-up of experts on stage. Find out more.
YOU MAY ALSO LIKE:
- LDNUG September 2017 - #ProgNET Special with Richard Campbell (in London on 12th September 2017)
- Progressive .NET 2017 (in London on 13th - 15th September 2017)
- London Unreal Engine Meetup (in London on 20th September 2017)
- Fast Track to F# with Tomas Petricek & Phil Trelford (in London on 16th - 17th October 2017)
Chaos Engineering and Runtime Monitoring of Distributed Reactive Applications - Intermediate
Carl is a specialist in program analysis, distributed programming and machine learning. Extensive experience in implementing large scale reactive applications that target microservice and lambda architectures.