{"id":827,"date":"2018-07-06T09:54:30","date_gmt":"2018-07-06T07:54:30","guid":{"rendered":"http:\/\/www.loicmathieu.fr\/wordpress\/?p=827"},"modified":"2018-07-06T09:54:30","modified_gmt":"2018-07-06T07:54:30","slug":"devfest-lille-2018","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/devfest-lille-2018\/","title":{"rendered":"Devfest Lille 2018"},"content":{"rendered":"<p>gRPC<\/h2>\n<ul>\n<li>Rappel r\u00e9seau, internet<\/li>\n<li>Probl\u00e9matique du format de donn\u00e9e dans les systeme distribu\u00e9 =&gt; modification difficile<\/li>\n<li>Historique des protocoles RCP : CORBA, RMI, EJB, SOAP, REST\n-&gt; 2008 Protocol Buffers : s\u00e9rialization (pr\u00e9mice du RCP chez Google : open sourcing partiel)\n-&gt; 2009 Thrift (Fb)\n-&gt; 2015 gRPC (bas\u00e9 sur Protocol Buffers)<\/li>\n<li>gRPC : syst\u00e8me de RPC avec Protocol Buffers comme s\u00e9rialization et bas\u00e9 sur des Interface Description Language et incub\u00e9 depuis peu dans la Cloud Native Fondation<\/li>\n<li>IDL : d\u00e9finit les m\u00e9thodes et les messages\n-&gt; retour aux principes des syst\u00e8mes SOAP<\/li>\n<li>Gestion native des &#8220;stream&#8221; de r\u00e9ponse avec pagination<\/li>\n<li>Les attributs des messages sont num\u00e9rot\u00e9 et typ\u00e9 pour pouvoir \u00e9voluer facilement\n=&gt; \u00e9vite le big bang ou le versionning dans l&#8217;URL<\/li>\n<li>Serialization Protocole Buffer par d\u00e9faut mais d&#8217;autre support\u00e9 (protocole buffer : taille divis\u00e9 par deux par rapport \u00e0 JSON)<\/li>\n<li>Transport binaire donc compact et performant<\/li>\n<li>HTTP\/2, 10 languages support\u00e9, &#8230;<\/li>\n<li>Plugin : log, auth, resilience, &#8230;<\/li>\n<li>streaming bi-directionel : stream de request (client -&gt; server) ou de response (server -&gt; client) de mani\u00e8re performant. Existance d&#8217;un EOL pour d\u00e9finir la fin de la stream<\/li>\n<li>s\u00e9curis\u00e9 par d\u00e9faut (TLS)<\/li>\n<li>Existe plugin gRPC  REST pour appel externe<\/li>\n<\/ul>\n<h2>M\u00e9trologie et alerting avec Prometheus et Grafana<\/h2>\n<ul>\n<li>Blackbox monitoring : monitoring comme vu par un end user (ping URL ?)<\/li>\n<li>Prometheus : syst\u00e8me de collecte de m\u00e9trique de soundcloud int\u00e9gr\u00e9 dans la CNCF\n=&gt; binaire (GO)\n=&gt; local storage (pas de cluster)\n=&gt; HA : on en d\u00e9marre deux\n=&gt; multi-dim time serie\n=&gt; requ\u00eatage via PromQL\n=&gt; syst\u00e8me sans agent : prometheus va chercher les m\u00e9triques sur les serveurs (pull) via des exporter (jmx par ex) &#8230;\n=&gt; existe une push gateway pour pouvoir pousser des m\u00e9triques vers prometheus (ex via un batch ou un script)\n=&gt; service discover (NDS, consul, docker, &#8230;)<\/li>\n<li>Push vs Pull :\n=&gt; en push les apps doivent \u00eatre configur\u00e9 pour envoyer les m\u00e9triques : configuration hell, risque de platnage de l&#8217;apps pour cause de monitoring, connaissance de la stock de monitoring, &#8230;\n=&gt; en pull : le conf se fait c\u00f4t\u00e9 syst\u00e8me de monitoring, mais limit\u00e9 par les capacit\u00e9s des collecteurs de m\u00e9triques (OS, JMX, &#8230;)<\/li>\n<li>Stock des m\u00e9triques de type compteur, gauge, histogramme, summary (histo avec percentille)<\/li>\n<li>Promql : requ\u00eatage basic via nom_metrique, nom_mertrique{tags}, operation possible (sum, rate, &#8230;), request, op\u00e9rateur logique, offset (dans le pass\u00e9), [periode], &#8230;\n<ul>\n<li>webUI permet de tester ses requ\u00eates<\/li>\n<\/ul><\/li>\n<li>Pour du dashboarding : grafana! : existe des dashbord fournit par la communaut\u00e9<\/li>\n<li>Alerting : g\u00e9n\u00e8re des alerte depuis des r\u00e8gles sur des requ\u00eates\n=&gt; vecteur d&#8217;alerte : mail, slack, &#8230;<\/li>\n<\/ul>\n<h2>Cookie:<\/h2>\n<p>Lou Montulli cr\u00e9ateur du cookie et dev sur Lynx. (1994, puis RFC en 1997 et 2000)\n-&gt; au d\u00e9part : web compl\u00e8tement stateless et le cookie a \u00e9t\u00e9 cr\u00e9\u00e9 pour pouvoir impl\u00e9menter un \u00e9tat c\u00f4t\u00e9 client\n-&gt; Brev\u00eat Netscape rachet\u00e9 par Fb &#8230;\n-&gt; les bases du cookie :\n=&gt; client request serveur -&gt; Server Set-Cookie : &#8220;42&#8221; -&gt; Nav dans jarre -&gt; client request 2 Cookie : &#8220;42&#8221;\n=&gt; cookie expir\u00e9 \u00e0 la fermeture de session par d\u00e9faut ou \u00e0 date pr\u00e9cise (Expires) ou en dur\u00e9 (Max-Age en seconde)\n=&gt; supression d&#8217;un cokie : expires avec date dans le pass\u00e9 ou max-age 0\n=&gt; d\u00e9finit sur un domain (ou sans) : domaine augmente la port\u00e9e du cookie par tous les hotes qui se terminent par la valeur (sans : egualit\u00e9 stricte)\n=&gt; pas possible de mettre un cookie sur un top level domain &#8230; pb des tld en deux partie (ex co.uk)  r\u00e9solu depuis une RFC de 2011 qui d\u00e9finit une liste\nde &#8220;suffixe publique&#8221; utilis\u00e9 par la pluspart des navigateurs (sauf eddge)\n=&gt; pas possible de mettre Domain=localhost\n=&gt; path : permet de limiter l&#8217;envoit des cookie sur certaines URL (commencent par le path)\n=&gt; un cookie d\u00e9pos\u00e9 en HTTPS sera accessible en HTTP sauf si d\u00e9pos\u00e9 avec l&#8217;attribut secure (envoit uniquement en HTTPS)\n=&gt; un cookie d\u00e9pos\u00e9 en HTTP pourra \u00eatre secure et envoy\u00e9 en HTTPS dans une requ\u00eates successive =&gt; draft pour ne suporter le secure qu&#8217;en https\n=&gt; un serveur ne re\u00e7oit que le cookie et ne sais donc pas s&#8217;il est secure : draft pour utilisation d&#8217;un prefix <strong>Secure\nni s&#8217;il est sur un domain ou un path pr\u00e9cise : prefix <\/strong>Host (RFC draft 2017)\n=&gt; attention : le port n&#8217;est pas pris en compte pour diff\u00e9rencier les cookie (n&#8217;ob\u00e9it pas \u00e0 la same origin policy)\n-&gt; Si on est sur une page example.com et qu&#8217;on app\u00e8lle une URL en cookies.rocks &#8230; les cookies de cookies.rocks vont \u00eatre envoy\u00e9 =&gt; CSRF !\n=&gt; nouvel attribut SameSite permet d&#8217;\u00e9viter le risque de CSRF en disant au nav de ne pas envoyer de cookie quand on est dans une page diff\u00e9rente\n-&gt; les cookie sont accessible en Javascript via document.cookie =&gt; faille XSS possible\n=&gt; attribut HttpOnly permet d&#8217;\u00e9viter que le cookie soit lu via JS et donc le XSS\n-&gt; les cookies permettent de tracer les utilisateurs via une simple image sur une page diff\u00e9rente car dans la requ\u00eates il y a le referer &#8230;\n=&gt; technique de traking qui d\u00e9tourne l&#8217;usage primaire &#8230;<\/p>\n<h2>Istio:<\/h2>\n<p>-&gt; Service Mesh : ajoute plein de services \u00e0 Kubernetes : zipkin, grafana, service graph, prometheus\n-&gt; ajout automatique depuis Kubernetes via des composant &#8220;Envoy&#8221; int\u00e9gr\u00e9 automatiquement dans les pod\n-&gt; service graph : graphe des services utilis\u00e9 par une requ\u00eate avec le nb req\/s\n-&gt; int\u00e9gration prometheus \/ grafana\n-&gt; int\u00e9gration zipkin : tracing des requ\u00eates dans tous les services &#8230; sans modification de l&#8217;apps existante!\n-&gt; d\u00e9ployement controll\u00e9 : canary deployement : d\u00e9ployer uniquement pour une partie des utilisateur et monitor\u00e9 ce canary\n=&gt; configuration \u00e0 faire dans Istio pour un canary deployement via un RouteRule qui d\u00e9finit des r\u00e8gles de routage (destination, request header, &#8230;)\n-&gt; traffic mirroring : possibilit\u00e9 de copier le traffic d&#8217;un service \u00e0 l&#8217;autre : ex envoyer tous en double sur le service 1 et 2 pour valider &#8216;en live&#8217; une nouvelle version\n-&gt; Pas encore en version finale &#8230; des bugs existent &#8230; surtout que c&#8217;est un ensemble de composants OSS externe &#8230;\n-&gt; Blue\/Green deployement : ppossibilit\u00e9 de router une fraction des utilisateurs vers le nouveau service\n-&gt; Dev par Google\n-&gt; Solution totalement modulable<\/p>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>gRPC Rappel r\u00e9seau, internet Probl\u00e9matique du format de donn\u00e9e dans les systeme distribu\u00e9 =&gt; modification difficile Historique des protocoles RCP : CORBA, RMI, EJB, SOAP, REST -&gt; 2008 Protocol Buffers : s\u00e9rialization (pr\u00e9mice du RCP chez Google : open sourcing partiel) -&gt; 2009 Thrift (Fb) -&gt; 2015 gRPC (bas\u00e9 sur Protocol Buffers) gRPC : syst\u00e8me de RPC avec Protocol Buffers comme s\u00e9rialization et bas\u00e9 sur des Interface Description Language et incub\u00e9 depuis peu dans la Cloud Native Fondation IDL :&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/devfest-lille-2018\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[],"class_list":["post-827","post","type-post","status-publish","format-standard","hentry","category-informatique"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1606,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/au-revoir-zenika-bonjour-kestra\/","url_meta":{"origin":827,"position":0},"title":"(Fran\u00e7ais) Au revoir Zenika, bonjour Kestra","author":"admin","date":"Tuesday January 10th, 2023","format":false,"excerpt":"Sorry, this entry is only available in Fran\u00e7ais.","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1508,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/4-ans-chez-zenika\/","url_meta":{"origin":827,"position":1},"title":"(Fran\u00e7ais) 4 ans chez Zenika","author":"admin","date":"Tuesday September  6th, 2022","format":false,"excerpt":"Sorry, this entry is only available in Fran\u00e7ais.","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":936,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/etre-speaker-a-devoxx-france\/","url_meta":{"origin":827,"position":2},"title":"(Fran\u00e7ais) Etre speaker \u00e0 Devoxx France","author":"admin","date":"Wednesday July 17th, 2019","format":false,"excerpt":"Sorry, this entry is only available in Fran\u00e7ais.","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":966,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/1-an-chez-zenika\/","url_meta":{"origin":827,"position":3},"title":"(Fran\u00e7ais) 1 an chez Zenika","author":"admin","date":"Tuesday September  3rd, 2019","format":false,"excerpt":"Sorry, this entry is only available in Fran\u00e7ais.","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":43,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/politique\/manifestation-des-usagers-contre-la-sncf\/","url_meta":{"origin":827,"position":4},"title":"Manifestation des usagers contre la SNCF","author":"admin","date":"Friday September 14th, 2007","format":false,"excerpt":"Bonjour, Je suis usager r\u00e9gulier de la ligne Lille - Bruxelles, je suis donc abonn\u00e9 SNCF\/Eurostar sur cette ligne. Ce matin, j'ai particip\u00e9 \u00e0 une manifestation d'usagers contre la SNCF pour se plaindre de plusieurs points: retard r\u00e9gulier du train au d\u00e9part de Lille (20mn de retard 1 \u00e0 2\u2026","rel":"","context":"In &quot;politique&quot;","block_context":{"text":"politique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/politique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":419,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/chti-jug-nosql\/","url_meta":{"origin":827,"position":5},"title":"Ch&#8217;ti JUG : NoSQL","author":"admin","date":"Monday December 20th, 2010","format":false,"excerpt":"Le 2 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur les technologie NoSQL anim\u00e9 par Olivier Mallassi. L'intervenant a commenc\u00e9 la conf\u00e9rence par un bref historique de la mani\u00e8re dont les donn\u00e9es on \u00e9t\u00e9 stock\u00e9es dans le monde de l'informatique: Au\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts\/827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=827"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts\/827\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}