[english below]
Bonjour à tous,
J’ai le plaisir de vous inviter à la soutenance publique de ma thèse intitulé : Fluxional
compiler : seamless shift from development productivity to performance
efficiency, in the case of real-time web applications.
Ci-dessous, l'abstract de ma thèse.
Elle se déroulera le
Mardi 21 Juin à 14h, en Amphi Claude Chappe, dans le Batiment Chappe, sur le campus de la Doua (
ici).
La présentation sera en français, et les slides en anglais.
La
soutenance sera suivi d'un pot, auquel vous êtes également convié.
--
Dear all,
It is my pleasure to invite you to my PhD defense entitled:
Fluxional
compiler: seamless shift from development productivity to performance
efficiency, in the case of real-time web applications.
You can find below the abstract of my thesis.
The defense will take place on
Tuesday 21st June at 2pm in the Chappe
amphiteatre (
here).
It will be in french, with slides in english.
You are also invited to the following cocktail.
Merci / Thanks,
Cordialement / Sincerely,
Etienne Brodu
---
Abstract
Most
of the now popular web services started as small projects created by
few individuals, and grew exponentially. Internet supports this growth
because it extends the reach of our communications world wide, while
reducing their latency. During its development, an application must grow
exponentially, otherwise the risk is to be outpaced by the competition.
In the beginning, it is important to verify quickly that the service can respond to the user needs: Fail fast.
Languages like Ruby or Java became popular because they propose a
productive approach to iterate quickly on user feedbacks. A web
application that correctly responds to user needs can become viral.
Eventually, the application needs to be efficient to cope with the
traffic increase.
But it is difficult for an application to be at
once productive and efficient. When the user base becomes too
important, it is often required to switch the development approach from
productivity to efficiency. No platform conciliates these two
objectives, so it implies to rewrite the application into an efficient
execution model, such as a pipeline. It is a risk as it is a huge and
uncertain amount of work. To avoid this risk, this thesis proposes to
maintain the productive representation of an application with the
efficient one.
Javascript is a productive language with a
significant community. It is the execution engine the most deployed, as
it is present in every browser, and on some servers as well with Node.js.
It is now considered as the main language of the web, ousting Ruby or
Java. Moreover, the Javascript event-loop is similar to a pipeline. Both
execution models process a stream of requests by chaining independent
functions. Though, the event-loop supports the needs in development
productivity with its global memory, while the pipeline representation
allows an efficient execution by allowing parallelization.
This
thesis studies the possibility for an equivalence to transform an
implementation from one representation to the other. With this
equivalence, the development team can follow the two approaches
concurrently. It can continuously iterate the development to take
advantage of their conflicting objectives.
This thesis presents a
compiler that allows to identify the pipeline from a Javascript
application, and isolate its stages into fluxions. A fluxion is named
after the contraction between function and flux. It executes a function
for each datum on a stream. Fluxions are independent, and can be moved
from one machine to the other, so as to cope with the increasing
traffic. The development team can begin with the productivity of the
event-loop representation. And with the transformation, it can
progressively iterate to reach the efficiency of the pipeline
representation.