From 7c0f21ae7f19f84f4dea17162831f5364ef1ff18 Mon Sep 17 00:00:00 2001 From: William Petit Date: Mon, 5 Mar 2018 19:07:27 +0100 Subject: [PATCH] CESI: Architectures N Tiers, ajout mini projet 'Alfred' --- .../presentation/img/architecture.png | Bin 0 -> 60588 bytes .../presentation/img/messaging_sequence.png | Bin 0 -> 22807 bytes .../presentation/mini_projet.md | 134 ++++++++++++++++++ .../ressources/alfred.epgz | Bin 0 -> 28412 bytes .../ressources/messaging_pattern.msc | 18 +++ 5 files changed, 152 insertions(+) create mode 100644 cesi/architecture_n_tiers/presentation/img/architecture.png create mode 100644 cesi/architecture_n_tiers/presentation/img/messaging_sequence.png create mode 100644 cesi/architecture_n_tiers/presentation/mini_projet.md create mode 100644 cesi/architecture_n_tiers/ressources/alfred.epgz create mode 100644 cesi/architecture_n_tiers/ressources/messaging_pattern.msc diff --git a/cesi/architecture_n_tiers/presentation/img/architecture.png b/cesi/architecture_n_tiers/presentation/img/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..e73054306bcbe7cd4d5a4fb4d6f9263fa422cb35 GIT binary patch literal 60588 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ɑHIJQVLy`>8!Sj;#`Wynru$pZuB{T(Ds!h;CF= z-WHH^4ITNpUq_U7Ybnmalq33$^tIUCS4GBlcHiRbgkC&F#;GcC^njGzDglYqdfl({4)CeN+!H9>FdSjW?+h~$OH0h^c~llWLlAN9X7|m!sFKNj z?V7LUM_o2&;_I%GCDN%c0s{?7eGl?ncdh!^z;ynpKTFyGQh9T8GvukGz5}SR6|s5w z?kxi&#P-X}e-`&?!$F8rut$S~AM>Nm1{fqRO}DJ|tvolFfuH`!-a3TbpwFZ`7iXaboJ4zk5f;B2EdHc+WBbD@lhTp% z!%9fw&(ad6BS5$ZWS4Vg_@*stgH(6Xq~SPLy>X#!!rRJA3I4k^SBE^)tK?WB3-4EU zK!Ld4LAi$ut&{R8C@WywM9HQ>$+7Iu)3dUYFY}O;Y=*%Pa?itcIKb?yem)_#A9SH~ ze*X9sP*ZA;c1T=q^7B^!9EY)!okU;*jshI|v6CBq7N*079VJtl7%2|0**rT#^1?-%h-2(#|-SaE_ zR&d6LS#iPaB81D;3XOvWj&>c$D+(jcPvA5PFvWy{cz%YHgJ9Z~bkZ&i-vsXv{Sq?* z@3yn^9@th;ZD2jaAOXz0!6>6{iUIDWqR-g z=mSt^xG#{0;RQ1u@Z|*(9%rr&)E}--NY|8Vs!%Ly>TSI7XWFVJs#@a(F(ll8QkfO= zgMtm)qqbHjv*)#BrfCchad1ipaCVLn#JVCB!j^Zwig`p5zeFvr=l%7RKN+KetICqg}r)38QJzIhOQiI zR&K=t1N5iPjt;sZ!*;*n;dW#zh0ROS0HDiipg=rT(a6{sga$YYql}_V@;)1OH=Hqd zU-{0RGnL8px^O(3zK)$^f<0loaiK)=%_m#$flXYv(EjL`!AbpqmT%Nr4joE2O+Z52j?6oj_lsJfp`tUm}pSi`46Ac}2%i1y`XZCwV94yX+jedxq6%f;_7 z_iFM1kFd5I-r({M)M1diKzCiOp%`n|D^g?TiIvMxe$sWe&dvKb7~Wm(GekkGkO`xY z0GvmR!C7Vi%>k4HXYObAJ9VMm7Me_P*h}Bb=z5BzQ7;*SiI~R`W>{;A~)7SRaCu>&VSl;2w zP&zzP-oJmIWqj@0HFahJ9Vc`IqROXO7+3cZeoEcVT$@I`m5Zafw*a!QG++{ViP%-? z&n?!#^kMU>7f%q;0#YcOm?>T^XuuroC{#|P?qYstk#mW+45j|hzueK;coC(-lcW0( Q-Vt$ETwW|kRQKus1)F>Y{r~^~ literal 0 HcmV?d00001 diff --git a/cesi/architecture_n_tiers/presentation/mini_projet.md b/cesi/architecture_n_tiers/presentation/mini_projet.md new file mode 100644 index 0000000..3794d78 --- /dev/null +++ b/cesi/architecture_n_tiers/presentation/mini_projet.md @@ -0,0 +1,134 @@ + + +# Mini projet +## "Alfred", assistant personnel décentralisé +### William Petit - S.C.O.P. Cadoles + +--- + + + +## Les "chatbots" + +> ou "agents conversationnels" + +- Interface homme/machine basée sur la "conversation" +- Regain d'intêret ces dernières années avec la montée en puissance de "l'intelligence artificielle" + +--- + +## IRC + +- Conception en 1988, [standardisation](https://tools.ietf.org/html/rfc2812) en 1993, inspiré du réseau Bitnet +- Protocole basé sur TCP et l'échange de messages au format texte +- Interaction avec le serveur basée sur des commandes `/join`, `/quit`, `/msg`... + +### Freenode + +- Mis en place en 1995 +- Un réseau de serveurs IRC dédié aux projets libres et open source +- Accès gratuit et maintenu par la communauté + +--- + +## NATS + +https://nats.io/ + +- Un bus de message basé sur le protocole TCP et des données échangées au format texte. +- Modèle abonnement/publication et requête/réponse +- Des connecteurs pour de multiples langages: [PHP](https://github.com/repejota/phpnats), [NodeJS](https://github.com/nats-io/node-nats), [Java](https://github.com/nats-io/java-nats), [etc](https://nats.io/download/) + +--- + +## Exemple de séquence d'échange + +![center 120%](./img/messaging_sequence.png?3) + +--- + +## Votre projet: Alfred, assistant personnel décentralisé + +- Observe les conversations sur un canal IRC +- Fournit des "services" sous la forme de "commandes" aux utilisateurs du canal +- Composé de services indépendants communicants via un bus de message (NATS) + +--- + +## Quels types de services ? (1) + +- Alfred fait une recherche Wikipédia et affiche le lien de la page associée lorsqu'un utilisateur mets le marqueur `!wiki` dans un message sur le canal IRC. +- Alfred fait une recherche Youtube et affiche le lien du premier résultat lorsqu'un utilisateur mets le marqueur `!yt` +- Alfred enregistre les messages des utilisateurs en base de données et fournit une interface Web qui permet de faire une recherche dans l'historique des messages. Une commande permet également d'effectuer une recherche dans l'historique. +- Alfred se connecte via IMAP à une boite de réception partagée et envoie un message sur le canal lorsqu'un courriel arrive sur cette boite. + +--- + +## Quels types de services ? (2) + +- Alfred affiche la liste de ses fonctionnalités lorsqu'un utilisateur utilise le marqueur `!help` +- Alfred publie automatiquement les messages d'un compte Twitter donné sur le canal de communication +- Alfred fait une recherche sur l'API OpenStreetMap et retourne le lien vers la carte interactive de l'adresse recherchée lorsqu'un utilisateur utiliser le marqueur `!map` +- Alfred publie la météo du jour à une fréquence donnée sur le canal de communication +- D'autres idées ? + +--- + +## Vue d'ensemble + +![center 100%](./img/architecture.png?2) + +--- + +## irc2nats + +- Une passerelle entre un serveur IRC et un serveur NATS +- Publie des messages avec le sujet `irc.message.` avec un corps de message au format JSON +- S'abonne aux messages avec le sujet `irc.message.send` et transfert le message NATS sur le canal IRC + +--- + +## NATS: tester l'envoi/réception de messages + +1. Télécharger l'utilitaire [nuts](https://forge.cadoles.com/wpetit/nuts/releases) pour votre système d'exploitation +2. Pour envoyer un message: + ```shell + ./nuts publish + ``` +3. Pour écouter les messages pour un sujet + ```shell + ./nuts subscribe + ``` + +--- + +## Objectifs de la journée + +Vous pouvez choisir le service que vous voulez implémenter parmi les exemples pour Alfred. Vous pouvez travailler en groupe ou seul. + +Vous pouvez également proposer votre propre idée, la seule contrainte est l'usage de NATS pour l'échange de messages et, si possible, d'utiliser une API externe. + +Si vous arrivez à implémenter une fonctionnalité en entier, vous pouvez l'améliorer ou passer à une autre. + +--- + +## Problématiques à résoudre + +> Réflechissez à ces questions pendant que vous travaillez sur vos services respectifs. Quelles réponses pourriez-vous me donner à la fin de la journée ? + +- Comment gérer l'échec d'une partie de l'application ? +- Comment superviser le bon fonctionnement de l'ensemble de l'application ? +- Comment partager des données persistentes entre les différents services ? (ex: la liste des utilisateurs de l'application ?) +- Comment gérer les droits sur certaines commandes ? (ex: commandes d'administration) + + +--- + +# Licence + +## CC BY-NC-SA 3.0 FR + +[Creative Commons - Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France](https://creativecommons.org/licenses/by-nc-sa/3.0/fr/) \ No newline at end of file diff --git a/cesi/architecture_n_tiers/ressources/alfred.epgz b/cesi/architecture_n_tiers/ressources/alfred.epgz new file mode 100644 index 0000000000000000000000000000000000000000..8dd25f9e30b040958d4a3f16ca69284185b86fb4 GIT binary patch literal 28412 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 [ label = "Connexion au serveur" ]; + Service_2->NATS_Server [ label = "Connexion au serveur" ]; + Service_3->NATS_Server [ label = "Connexion au serveur" ]; + ...; + Service_1->NATS_Server [ label = "Abonnement au sujet 'my.subject'" ]; + Service_2->NATS_Server [ label = "Abonnement au sujet 'my.subject'" ]; + ...; + Service_3->NATS_Server [ label = "Publication d'un message avec le sujet 'my.subject'" ]; + NATS_Server->Service_1 [ label = "Transfère du message 'my.subject' à l'abonné" ]; + NATS_Server->Service_2 [ label = "Transfère du message 'my.subject' à l'abonné" ]; + +}