Ben Tyler

Ben Tyler

Infrastructure Developer @ Booking.com

Experimenting with Superpowered Web Services: Phoenix on Riak_Core

Through Erlang, Elixir developers have access to some amazing tools for building resilient distributed systems. riak_core is one such tool: it provides the framework behind Riak’s high availability KV store. In this talk, I’d like to explore some unconventional architecture by using riak_core and Phoenix to build fault-tolerant stateful web applications. What happens when the app servers are also the database nodes? Can we avoid some of the traditional pitfalls of stateful servers? Is this a remotely good idea? Let’s take a look!

Talk objectives 

Objectives (targeting ~40 minutes):

1) Stateless/stateful setups for web applications — what do these words mean? 5 min

2) CAP in brief, consistent hash rings for distributing work: what are the tradeoffs? 5 min

3) riak_core - what does it do? Paraphrasing Mariano Guerra’s excellent work. 10 min

4) Build a Phoenix application that cohabitates on a riak_core hash ring. What superpowers do we gain from this? What do we have to watch out for? Can we do cool tricks with load balancing or channels? In-memory databases for super-speedy responses? 15 min

5) Loosely comparable systems in production/prior art (Microsoft Orleans, Facebook Scuba, others) 5 min

Target audience

Intermediate+ Elixir programmers, web developers, students of distributed systems.

Slides

Video

Ben works on service discovery, maps of the infrastructure, and human<->system reliability.

In short, elixir -e ‘use Bitwise; [296, 260, 276, 288, 176] > Stream.map(fn x -> x > (&»>/2).(2) end) > Enum.take(5) > IO.puts # JAPH, :)’

Github: kanatohodets