LambdaConf 2018

Rock-Solid Haskell Services

The workshop is presented by Roman Gonzales who is working for FP Complete and it leverages the company's experience building highly-reliable services in Haskell

The overall architecture of the system is based on Matt Parson's Three Layer Haskell Cake, which is very reminiscent of Alistair Cockburn's Hexagonal Architecture and DDD

It boils down to enforcing a strict separation between resources, business services and core domain logic

To those 3 layers, Roman, drawing from his experience as a Clojure developer, adds a Zero Layer which is responsible for managing the lifecycle of components in such a way that they can be disposed of and restarted at will. This gives the developer the ability to interact with the "complete" system directly in the REPL and be able to reload any part of it at will

The componentm library provides the needed tools for this, and the ability to report failures at startup/teardown time, as well as some timings on how much time each component took to startup and teardown. Note that I am slightly annoyed that all logging done happens to be text-based which to me seems like an anti-pattern: Logging issued at the application level should be structured and only ever converted to human-readable format when it is needed

Of course the greatest benefit of this approach is the shortening of the feedback loop it provides

Roman spends quite a long time presenting another tool he wrote to manage configuration, etc.

the presenter then introduces capataz which is a Haskell implementation of supervision trees

the workshop proceeds to deployment and production concerns, with Release It! as a reference pooint, and some definitions on various issues that can happen to a system:

source of strains:

timeouts are very rarely transient which means retries should be delayed

circuit breakers allow keeping track of the state of a 3rd party system

the last stage of the workshop goes to deploying all the services that have bben built. The presenter introduces (localstack)[https://localstack.cloud/] a tool to simulate part of AWS stack locally.

From Zero to Live with Functional Javascript

This 2 hours workshop was given by Ian Thomas, CTO of SkyBet. It was a fast-paced overview on how to build modern javascript applications based on FP principles. The workshop is based on his git repo and builds a complete 12 factor app from the ground up. It contains lot of materials and the session was way too short to get more than a glimpse of it, but it's definitely interesting material when one wants to build JS-based microservices.

Ian Thomas also gave a keynote on how FP helps break the fear cycle which prevents large code bases from changing.

Seeking Refuge from Unsafe JavaScript

Another workshop dedicated to Functional Javascript, presented by David Chambers. It goes through the various pure FP constructs provided by sanctuary, a library which basically provides Haskell on top of JS. Sanctuary provides algebraic data types and all the classical functions we have come to love from Haskell, and more.