Abstract
Quote
When writing todayβs distributed programs, which frequently span both devices and cloud services, programmers are faced with complex decisions and coding tasks around coping with failure, especially when these distributed components are stateful. If their application can be cast as pure data processing, they benefit from the past 40-50 years of work from the database community, which has shown how declarative database systems can completely isolate the developer from the possibility of failure in a performant manner. Unfortunately, while there have been some attempts at bringing similar functionality into the more general distributed programming space, a compelling general-purpose system must handle non-determinism, be performant, support a variety of machine types with varying resiliency goals, and be language agnostic, allowing distributed components written in different languages to communicate. This paper introduces the first system, Ambrosia, to satisfy all these requirements. We coin the term βvirtual resiliencyβ, analogous to virtual memory, for the platform feature which allows failure oblivious code to run in a failure resilient manner. We also introduce a programming construct, the βimpulseβ, which resiliently handles non-deterministic information originating from outside the resilient component. Of further interest to our community is the effective reapplication of much database performance optimization technology to make Ambrosia more performant than many of todayβs non-resilient cloud solutions.
Links
Notes
- Extremely aligned with how weβve been thinking about IPVM
- IPVM is alsoI designed for open permissions and parallelism
- The authors have more control over their stack from hardware to .NET
-
- Theyβre much more performance focused and run in a trusted setting
- On the network thereβs very few if any cases where IPVM be able to be match or beat them on performance, except when running totally locally in which case weβll do just fine
- Also advantage when working on content addressed data
- IPVM has some different constraints, but the basic outline is essentially the same
- For example, we need to understand if we can duplicate work to get multiple confirmations of some evaluation or query
- My personal bias is against cute names for concepts, like Impulses and Immortals
- Immortals are at least evocative of what they are. I had to think about why βImpulsesβ
- ~15 page papers are always an enigma to me. Theyβre either an all-day affair of slowly working through dense proofs, or they repeat themselves a bunch and talk about things from several angles and include some benches. This was (mercifully) the later!
Why I Read This
Recommended to Zeeshan Lakhani by Christopher Meiklejohn RE effects and failure in IPVM.