VT2020-Flogo-Fiche

= Résumé =

Flogo est un framework entièrement codé en Golang ultra léger qui permet la création d'applications événementielles de manière très simplifiée à l'aide d'un Web UI très intuitif.

Il utilise la notion de triggers et de actions pour construire l'application.

= Triggers et Actions =



Triggers
Les triggers gèrent tout ce qui est réception de données et l'envoi de réponses.

C'est également ces triggers qui vont par exemple paramétrer le port via lequel on va recevoir/envoyer les flux de données.

Handlers
Un handler est simplement ce qui permet d'attribuer les événements aux actions.

Actions
Les actions c'est ce qui va gérer toute la logique de l'application et les différentes opérations qui vont être effectués après réception des données.

C'est également les actions qui vont déterminer ce qui va être renvoyé pas l'application avant de passer par les trigger.

= Exemple d'interface de projet avec le web UI =

Voici un exemple de ce que peut donner un projet un peu plus complexe que celui que j'ai mis dans ma [démonstration].



= Déploiement et compatibilités =



Dépoloiement

On a le choix entre plusieurs possibilités de déploiement ce qui est très agréable :

On peut déployer l'application sur un cloud avec AWS lambda, ce qui est pratique car Flogo a un support natif de AWS lambda ce qui permet d'avoir des fonctions serverless et donc avoir moins de ops. Cela permet de consommer moins de ressources mais aussi d'économiser de l'argent.

On peut aussi publier dans un container avec Docker. On connaît tous les avantages d'un tel déploiement donc c'est en effet très intéressant.

On peut également déployer comme un binaire statique pour intégrer l'application à des objets orientés IoT (internet des objets).

Compatibilités

Si vous utilisez Apache Kafka ou Pulsar vous pouvez très facilement faire par exemple du Machine Learning à l'aide de Flogo et revenir dans Pulsar ou Kafka.

= Structure du projet =

Si vous adorez coder et ne souhaitez pas utiliser le web UI, vous pouvez ! Vous allez avoir besoin d'un fichier JSON et de fichiers Go.

Metadata

Pour la metadata, Flogo utilise tout simplement un fichier JSON. Les champs nécessaires sont les suivants :

- name : nom de l’activité

- version : version de l'activité

- type : type de contribution

- title : titre de l’application

- description : description de l’application

- settings : un tableau qui contient les paramètres de l’activité

- input : un tableau qui contient les paramètres des entrées

- output : un tableau qui contient les paramètres des sortie

Logique

Pour la logique de l'application, Flogo utilise des fichiers Go. On aura besoin de trois fichiers : activity.go, activity_test.go et metadata.go.

- activity.go contient l'implémentation de l'activité en go.

- activity_test.go contient les test unit de l'activité.

- metadata.go contient la metadata basique de input, output et settings.

= Un peu de recul sur cette technologie =

Il est important de prendre du recul sur cette technologie avant de vouloir l'utiliser.

Notons d'abord les points positifs :

- Très léger (20 à 50 fois plus léger que Java ou Node.js). En effet Java et Node.js sont souvent critiqués car c'est très lourd, ici nous n'avons pas ce problème.

- Flexibilité de déploiement. On a pu voir les différentes possibilités pour déployer l'application, le fait d'avoir le choix est toujours très agréable.

- 100% open source. Très pratique pour votre plaisir de dev ou hacking !

- Web UI très intuitif. Le principal avantage de cette technologie, une personne ne maîtrisant pas parfaitement les notions de l'IoT peut très facilement faire une application.

- Augmente la productivité. Même si vous êtes très à l'aise en codage, vous gagnez quand même du temps grâce au web UI qui fait beaucoup de travail à votre place.

Les points négatifs :

- Il n'est pas possible de développer de front-end. En effet si vous souhaitez avoir une interface jolie, vous devez la coder vous-même.

- Vous ne pouvez pas non plus faire des analyses avec cette technologie.

- Le git est peu mis à jour et on sait pas trop si on aurait des retours en cas de problème.

= Sources =

Site officiel : http://www.flogo.io/

Github : https://github.com/tibcosoftware/flogo

= Veille Technologique 2020 =
 * Année : VT2020
 * Sujet : Flogo
 * Slides : [[Media:Project_flogo.pdf|Slides]]
 * Auteur : William NELSON