The book of Iris

  • I. Overview

    1. Philosophy
    2. Core concepts
    3. Run, Forrest, Run
  • II. Nuts and bolts

    1. Request/reply pattern
    2. Broadcast pattern
    3. Tunnel pattern
    4. Publish/subscribe
  • III. Skyscrapers & spaceships

    1. Iris inside docker
  • IV. Case studies

    1. Embree decentralized
    2. RegionRank internals
  • V. Epilogue

    1. The night is dark and full of terrors

Philosophy

With the pervasion of cloud computing, the barrier of entry to large-scale distributed projects has been lowered significantly, even small teams gaining access to remarkable amounts of computing power. This phenomenon raised the importance of distributed messaging models for hiding the complexity of the underlying infrastructure, not just for end users, but for system designers as well.

A few major, state of the art messaging architectures are currently in use, among them, the historically popular centralized model and the challenger socket queuing model. The former solves most messaging requirements, but by its very nature, is hard to scale; while the latter does scale, but also reintroduces the complexity of network management which the centralized model originally set out to remove.

The key challenge is that the goals of simplicity, decentralization and security conflict each other in a general distributed computing case. The goal of Iris is not to compete with other generic messaging systems, but to provide a solution for a specific problem set - decentralizing backend services in cloud architectures - for which it achieves a fine balance between the desired goals.

About the “book”

This work is meant as an introductory guide for developing distributed cloud services based on Iris. The first few chapters focus on the general concepts behind the project and how to get it up and running, after which the basic building blocks are presented.

Advanced topics will follow such as solving more complex communication problems, handling certain faults gracefully and - spoiler alert - deploying containerized Iris services through docker ;). Finally, some live designs/systems will also pop up.

This introductory “book” is a work in progress, so check back for updates... and maybe some easter eggs :-"

Author's comments

Please note, that Iris was born as my PhD project, subject to a lot of heavy refactoring and experimentation. Although it is starting to outgrow its research status, there is still a long path till production stability could be claimed. Nonetheless, it has been successfully applied to decentralized ray tracing and is also the supporting pillar of RegionRank.

With the exception of a few valuable outside code contributions, Iris is a full time, free-solo project. This means, that without some official backing, its future will soon become questionable. If you can help in this aspect, please contact me. How could you help otherwise? Try it, code it, share it! :)