axelson

axelson

Scenic Core Team

7) ElixirConf US 2018 – Architecting Flow in Elixir - From Leveraging Pipes to Designing Token APIs – René Föhring

ElixirConf US 2018 – Architecting Flow in Elixir - From Leveraging Pipes to Designing Token APIs – René Föhring (@rrrene)

This talk is about ‘architecting flow’, which basically means ‘organizing and structuring what is done when, where and by which actor’ during the execution of our programs.

Making this top-level flow of data and responsibility obvious and comprehensible for the major parts of our applications is self-serving: When it’s easy to get the general flow of a program, it is easier to reason about changes, onboard new people into the team and communicate across teams.

In this talk, we’ll look at the spectrum of techniques to Architect Flow in Elixir. The audience will learn to reason about the trade-offs of each approach. We’ll look at the use of pipes and with macros in smaller programs. We’ll learn how to use the Token approach to create binding contracts between different parts of bigger programs. And we’ll discuss how to (and when NOT to) use metaprogramming to build custom DSLs for the most common use-cases in larger domains.

Audience: Intermediate, Advanced
Topics: architecture

All talks are available in the ElixirConf US 2018 Talks List or via the elixirconf2018 tag

Most Liked

rrrene

rrrene

Credo Core Team

I did not come up with the name in general.

Looking at workflow engines, BPMN specifically, the data structure which runs through a business process and gets enriched with information by the activities is called a “Token” (the name also reminded me how a Kerberos token is often used to transport information unrelated to authorization).

This “Token” we’re talking about is often called a “context” in the OOP space - there might be a RequestContext, an ExecutionContext, a SessionContext and so on. But we’re already using “context” for the bounded contexts we generate in Phoenix >= 1.3.

That’s why I decided “Token” was a good name to talk about this very relevant concept in Elixir :+1:

ckhrysze

ckhrysze

This was one of the talks I was able to attend live, and although I was able to tell René in person at one point during the conference, I want to reiterate that I really loved the pacing of this talk. I mean, I quite enjoyed the content as well, but the pacing is what stuck with me.

axelson

axelson

Scenic Core Team

@rrrene This was one of my favorite talks in the conference. It really helps me to organize my thoughts around basic dataflow and transformation in an application. Does the name “token” for the last pattern (used by Plug.Conn, Ecto.Changeset, Absinthe.Resolution) come from somewhere or is that a term that you devised yourself?

Where Next?

Popular in Talks Top

axelson
ElixirConf 2017 - Working with legacy databases in Ecto - @geo Often when starting an Elixir or Phoenix proj...
New
axelson
ElixirConf 2017 - Elixir Power Tracing - Gabi Zuniga Tracing is a technique for tracking events during a pro...
New
Lawrence_elixir
@voltone - Security advocate, BEAM enthusiast Learn you some ‘ssl’ for much security! Talk in three words: TLS, security, troubleshooti...
New
axelson
ElixirConf 2017 - Live APIs with GraphQL Subscriptions - @bruce and @benwilson512 APIs have gone live with G...
New
AstonJ
Just starting to go up - did you attend? Have any faves? Here are the keynotes:
New
CodeSync
Code Sync: Vaxine, the Rich CRDT Database for ElixirPhoenix Apps | James Arthur | Code BEAM America 2022 Comments welcome! View the <spa...
New
axelson
ElixirConf 2017 - Managing Tables With Elixir and OTP - Robert Beene We’ve all waited for a table at a resta...
New
Lawrence_elixir
ElixirConf EU 2019 talk videos ElixirConf EU 2020 - Early bird tickets on sale now! Website: http://www.elixirconf.eu Twitter: www.t...
New
ElixirConf
ElixirConf: ElixirConf 2023 - German Velasco - Using DDD concepts to create better Phoenix Contexts Comments welcome! View the <span cla...
New
rodrigues
Day 1 Keynote about Lumen - An alternative BEAM implementation, designed for WebAssembly by @rcm765 @KronicDeth @bitwalker...
New

Other popular topics Top

sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29603 241
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement