
Christopher Meiklejohn
Ph.D. Student at Carnegie Mellon University
Actions
Previously a practitioner, Christopher worked on large-scale distributed systems at Basho, Mesosphere, and Machine Zone. Before that, he managed software development for Berklee College of Music and worked in a data center where he supported the Boston Marathon and the various web properties of the Kraft Group (i.e. New England Patriots and the Revolution.) Presently, he is a PhD student at Carnegie Mellon University who spends his days thinking about how microservice applications fail.
Automated Resilience Testing of Microservices
Microservices introduce additional complexity: partial failure can render one or more required dependencies of a given service unavailable at any time. Worse, those failures can trigger cascading failures that result in app outages. Therefore, we should ensure our applications are resilient to partial failure *before* we deploy them.
In this workshop, we will use the Filibuster automated resilience testing tool for microservice applications to test both a Python and Java microservice application for resilience. Developers will start with an application that is not tolerant to failure of remote dependencies, write a functional test, and using that functional test and application adapt both to build a more resilient application.
This workshop is targeted at users who have written a microservice application before and it requires no previous knowledge about chaos engineering or resilience testing. It requires only previous knowledge of how to write a functional test against a HTTP or GRPC API. In short, this workshop is targeted at the Intro level, only requiring basic software engineering skills for the web and microservice applications.
Technical requirements: a working installation of
- Python 3
- Java 11
Pre-requisite knowledge: only knowledge of issuing HTTP or GRPC requests in a microservice application. However, sample applications will be provided so knowledge of how to do this from scratch in the target language is not required; only knowledge of how to understand what is happening in existing code.
Duration: 2 hours.
- 30 minute technical approach overview;
- 30 minutes working on Python;
- 30 minutes working on Java; and
- 30 minutes on advanced configuration of the tool.
Personal speaking (and other relevant) experience:
- Have previously spoken at StrangeLoop (2015), keynoted Erlang Workshop at ICFP, and have been an industrial conference speaker since 2013.
- Have delivered multiple tutorials at CodeMesh on building distributed applications in a multiple hour workshop session.
- Have served as co-instructor for an undergraduate software engineering course at Carnegie Mellon University where I not only wrote course material and lectures, but graded all assignments and resolved all technical issues experienced by students.
- Have served as TA for an undergraduate software engineering course at CMU where I managed all technical issues of students.
- Completed a course at Carnegie Mellon University on Computer Science Pedagogy that focused on the delivery of highly technical content to undergraduate-level audiences.
- Have published in major academic conference venues for distributed systems. The work presented in this workshop was presented in an academic systems conference in 2021.
Resilient Microservices without the Chaos
Microservice applications introduce additional complexity: partial failure can render one or more required dependencies of a given service unavailable at any time. Therefore, we should ensure our applications are resilient to partial failure *before* we deploy them.
In this talk, we will discuss a new approach for resilience testing, Service-Level Fault Injection Testing (SFIT) and a tool that implements SFIT called Filibuster. Filibuster verifies microservice application behavior under failure, starting from the existing functional tests that your organization is already writing. Filibuster combines static analysis, test synthesis, and principled fault injection to identify bugs before code ships to production. We will not only discuss the core algorithms behind Filibuster, but also discuss the challenges of technical transfer of academic code into the real world: from algorithmic adaptation to practical implementations of academic code based on a large microservice deployment that powers a popular app.
Personal speaking (and other relevant) experience:
- Have previously spoken at StrangeLoop (2015), keynoted Erlang Workshop at ICFP, and have been an industrial conference speaker since 2013.
- Have delivered multiple tutorials at CodeMesh on building distributed applications in a multiple hour workshop session.
- Have served as co-instructor for an undergraduate software engineering course at Carnegie Mellon University where I not only wrote course material and lectures, but graded all assignments and resolved all technical issues experienced by students.
- Have served as TA for an undergraduate software engineering course at CMU where I managed all technical issues of students.
- Completed a course at Carnegie Mellon University on Computer Science Pedagogy that focused on the delivery of highly technical content to undergraduate-level audiences.
- Have published in major academic conference venues for distributed systems. The work presented in this workshop was presented in an academic systems conference in 2021.
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top