Yaws : Yet Another

Xavier Van de Woestyne ~ @derniercriio

(Lille |> Elixir) 3 WHOAMI

I @vdwxv sur Twitter, @xvw sur Github ; I Erlang, OCaml, Elixir, Ruby etc. ; I Développeur à Dernier Cri ; I LilleFP. Qui a de l’expérience dans le tuning de BEAM et de OTP et du Lexer Erlang ? Figure 1: Ouf, moins de 4 personnes ! Sommaire

Objectif Faire une brève présentation des outils Erlang !

Plan

I Erlang et le web (Cowboy + blablabla) ; I présentation formelle de Yaws ; I applications structurées avec modernité et Appmode ; I et dans le futur ; I conclusion. “Erlang is the DSL for writing (web) servers” @pavlobaron

I Concurrent ; I la VM peut transformer les interactions avec des sockets en envois de messages ; I gen_(...) et inets. On peut imaginer écrire un serveur en ~40 lignes de codes. Et comment tenir la montée en charge ?

I gen_server I supervisor I application (pour la bogossitude)

C’est tellement simple qu’il existe des milliers de serveurs (web) sur les internets ! I Elli ; I Cowboy ; I Yaws ; I MochiWeb ; I Misultin ; I ...

Figure 2: aha Cowboy, le choix de !

En vrai, Cowboy n’est pas un serveur HTTP(s) . . .

I Bibliothèque Low-level ; I discutablement composable ; I très efficace ; I facile à prendre en main. C’était un choix qui s’inscrivait vraiment bien dans la vibe de Phoenix ! Les apports de Cowboy dans le monde Erlang

I Une culture de la bibliothèque spécialisée ; I une véritable culture de l’usage des high-order-function (sans troll) ; I de l’agilité (facile à maintenir et tout) ! I Phoenix. . . Pendant ce temps là, en 2001, Yaws !

I @klacke (Claes Wikstrom) ; I 2001, des compétitions de Floorball ; I le web comme medium, hors de question ’utiliser PHP ! “I was absolutely struck with horror when I finally realized how horrible the LAMP stack was, and in particular the ugliness of the PHP language.”

@Klacke (en 2001) Who is Klacke ?

I ASN.1 Compiler (le king de 1988) ! Who is Klacke ?

I ASN.1 Compiler (le king de 1988) ! I eprof Who is Klacke ?

I ASN.1 Compiler (le king de 1988) ! I eprof I ets et dets Who is Klacke ?

I ASN.1 Compiler (le king de 1988) ! I eprof I ets et dets I Who is Klacke ?

I ASN.1 Compiler (le king de 1988) ! I eprof I ets et dets I Mnesia I Erlang Bit Syntax Who is Klacke ?

I ASN.1 Compiler (le king de 1988) ! I eprof I ets et dets I Mnesia I Erlang Bit Syntax I Erlang distribué Yet Another Web Server :

I Un serveur embarqué ou stand-alone ; I Hyper stable et distribuable !

Perf (req/sec)

I > Apache I > I > Cowboy

Utilisateurs WhatsApp, Klarna entre autres. Yaws KESAKO

I HTTP 1.1 I URL/#arg rewriting I SSL support I cookie/session support I munin stats I CGI and FCGI I forward and reverse proxies I file upload I WebDAV I small file caching I SOAP support I haXe support I ehtml and exhtml I virtual directories I configurable deflate I ACLs I precompressed static files • configurable MIME types I JSON and JSON-RPC 2.0 I WebSocket support I GET/POST chunked transfer I streaming I multipart/mime support I PHP handling via FCGI I server-side includes I heart integration I both autoconf and rebar builds I logging in Apache common format I virtual servers I man pages and LaTex/PDF docs I JIT-compiled - yaws pages I Server-Sent Events I appmods I yapps Appmod et Yapps

I Arrêter de faire comme Apache ; I percevoir le framework comme une brique logicelle ; I avoir de belles URL’s. Bénéfices de Yaws

I De la performance de OUF ; I le serveur du futur (sans troll, Ocsigen blahblah); I si vous avez envie de faire du HaXe ! Et pour Elixir ?

I Un port de Yaws pour Elixir (et éventuellement Phoenix) ie: @Hyperaho ; I Elixir et Erlang sont Iso’s, pourquoi est-ce compliqué ? Conclusion

I Les besoins réels, via Elixir, pour construire une API ? (Plug, Ecto) ; I self-contained applications ; I LE FUTUUUUUR ? Questions ?

I Elixir et Yaws ? I Cowboy ? I OCaml :D