Functional DevOps: Event Processing in Clojure
Riemann (riemann.io) is an event stream processor, usually deployed as a router for events generated by software systems. As Kyle Kingsbury, the author states: “Riemann’s job is to process, analyze and react to the event stream”. In effect, event stream processing is functional transformation writ large; events from various sources (e.g., hardware stats, application metrics, network data etc) are received then grouped, filtered, mapped, averaged, coalesced, forwarded, etc.
Riemann is written in Clojure. Riemann is also configured via Clojure. It’s “parentheses all the way down”.
But does a tool for functional transformation of data require a functional language? To what extent does the implementation language impact the capabilities Riemann exposes to the end user?
This presentation will take a deep dive into both the capabilities of the configuration system and the core Clojure implementation to see why a functional language is such a good choice to implement this type of application.