dimanche 30 août 2020

Comment s'y retrouver dans le code de Grafana

Sans parler de devenir un développeur de la communauté Open Sources Grafana, non je souhaite simplement faire une plongée dans le code source pour avoir une meilleure vue cette plateforme et de son développement.

Communauté Open Source Grafana sur GitHub


Moi la première chose que j'ai découverte avec stupéfaction c'est que Grafana est écris en langage Go !  Je l'avoue je suis en admiration devant cette communauté. Car je suis un utilisateur de AdSense et de tous ces graphiques parce que je suis un développeur curieux j'ai toujours poursuivis un projet de "dahboard" afficher de superbes graphiques à partir des données.

Matlab est sans doute le premier outil avec lequel j'ai joué pour afficher des graphiques. Mais avec Grafana on atteint un sommet mais alors qu'elle est l'organisation, la structure des codes source de cette application.

Sinon, il y a bien sûr Excel qu'il ne faut pas dénigrer car il est fort efficace pour tout tas de graphiques c'est une première approche un peu simpliste mais fun pour découvrir ce métier que j'appelle data-analyste.

En même temps c'est bine joli l'open source et Grafana en est un exemple parfait les sources sont publiques certes ! Mais alors pour installer une plateforme ... accrochez vous ! Il faut clairement être spécialiste pour installer un container Docker dans Windows 10 oui c'est l'OS que j'affectionne, bref, ils vous propose moyennant finances de vous instancier une plateforme dans leur cloud.

Si vous installez la plateforme de base, certes vous pourrez faire des choses mais les plugins seront payants. Voilà le tour est joué vous êtes ficelé. 

Grafana Create an account

Vous voyez que vous ne pourrez faire un essai gratuit mais que vous êtes obligé d'entrer vos informations de facturation car l'objectif est de vous facturer l'utilisation de cet outil fantastique.

Mais qui a dit que l'opensource c'est gratuit, certainement pas moi. Et quand je vois le travaille produit par la communauté, je me dis qu'ils font bien de procéder ainsi.

Les différents types de codes

Grâce à Github, je vois :

Grafana - TS 57 % - JS 5,4 % - Go 26 % 

La constatation que Grafana est en Go !

En langage Go

C'est le répertoire pkg

Grafana - Langage Go

Il y a du monde et de très bonnes explications dans le fichier README.md. Il s'agit du Backend de Grafana. 

Et bien oui c'est l'avantage de l'opensource on sait comment c'est fait. Il faut que la documentation soit suffisante pour qu'un développeur par lui même puisse étudier le code et venir renforce l'équipe. Donc la documentation est de qualité.

En langage TypeScript

C'est la publique app autrement dit l'application front en Angular.

Grafana - Langage TypeScript applcation Angular

Ce sont les deux principaux langages des fonctionnalités de Grafana. A partir de là il y a tout ce qu'il faut comme documentation d'installation pour installer une machine de développement et rejoindre la communauté. Ils sont déjà plus de 1200 !

Ils font même de la politique, oui il y a un document indiquant comment doit se passer l'intégration d'une nouvelle ressource dans la team et les votes associés dans un document de GOVERNANCE.md (Gouvernance).

Set up your development environment

Avec un répertoire devenv : une aide à l'installation de votre environnement de développement qui commence par l'installation de Docker

Des scripts d'installation.

Grafana en action

Voici les métrics autour de Grafana, Wikimedia metrics :

Grafana Wikimedia Metrics

Voilà, Grafana est un très bon exemple à suivre en matière de communauté open source, ils sont en plein succès alors il faut les observer puisque les publications sont nombreuses et tenter de les suivre mais là aussi ils sont nombreux.

lundi 24 août 2020

C'est quoi Grafana ?

C'est incroyable le nombre d'outils dans le Développement Logiciel et le DevOps ! On parle alors de stack quand les uns s'appuient sur les autres, comme dans un empilement. Ici je découvre la stack Grafana, Jenkins, Kubernets, Cosmos. A quoi sert Grafana et qu'elle est la place de Grafana dans tout ça ?

Grafana Labs - Dashboard anything. Observe everything.

Grafana est une communauté de développeurs énorme, aujourd'hui il y a 1 213 contributeurs.

Grafana on Github
Grafana on Github

J'installe rapidement sur mon Windows l'exécutable serveur et je lance mon browser à l'adresse localhost:3000 ça marche tout seul.

Gafana - Install on Windows

Mais Grafana n'est pas tout seul c'est un éco-système qui intègre par exemple Graphite :

Utilisation de "Graphite" dans Grafana

Voici comme Grafana s'intègre dans l'Azure de Microsoft pour la création de Pipeline :

Microsoft - Pipeline CI/CD pour les charges de travail basées sur les conteneurs

Place de Grafana dans la Stack d'outils DevOps
Place de Grafana dans la Stack d'outils DevOps

Dans le cadre de cette Architecture DevOps, Grafana permet de visualiser les alertes et de mieux comprendre les mesures.

On y voit à l'oeuvre la stack : Visual Studio Code, GitHub, Jenkins, Kubernetes, Azure, Azure Monitor, Grafana. Moi je pourrais dire à peu prêt à quoi servent toutes ses briques mais vous avouerez que ça fait une belle pile !


Je poursuis ma découverte par les fundamentals de Grafana. L'angle de l'architecture devops que j'ai choisi pour la découverte de Grafana n'est pas le plus facile mais on a là la meilleure utilisation de Grafana intégré dans une stack DevOps :

Grafana fundatmentals

Pour les prérequis, il me faut Docker, Docker Compose et Git, rien de moins ...
Pour Docker, il faut Hyper-V.

Install de Hyper-V pour Windows

En cliquant sur "Add features".

The processor does not have required virtualization capabilities

Bref, pour moi ça va s'arrêter là ! Bon je trouve une VM avec Hyper-V capabilities, je lance l'installe de Docker ...


Stack Grafana - C'est pas gagné !

Bon, bas pour moi, malheureusement ça s'arrête là ... Grafana !

Autres outils du même genre ... c'est incroyable de voir l'émergence de tant d'outils. Si je trouve un article sur Grafana on va me parler de :

Prometheus

Kibana

Grafana Open Source

Si c'est OpenSource, alors il doit y avoir des sources sans doute sous github, voici donc :

GitHub - Grafana Labs

Là on est dans l'antre de la communauté Grafana ...

Grafana Create Free Cloud Account

Et on peut aller créer ses propres tableaux de bord en créant un compte au sein de Grafana Cloud :

Création d'un Tableau de Bord avec Grafana
Création d'un Tableau de Bord avec Grafana

C'est magnifique cette application écrite en langage Go et Angular.

Un mot de l'équipe Grafana, toujours sur GitHub :

Grafana - Team Members

Le créateur c'est Torkel Ödegaard qui à démarré Grafana en 2014 en partant de Kibana et en faisant un "fork" (une branche depuis le code source).

Mais bon ça ressemble à notre solution qui est toute fois beaucoup plus simple ... et la notre est en C# .NET avec ASP.NET Core Framework, c'est un peu mieux que du Go !

GitHub - DataMonitoring - Universal Dashboard

CQFD !

vendredi 21 août 2020

Un tour rapide de la Base de Données MongoDB

Cherchons à savoir ce que peut nous apporter MongoDB, alors que l'on connait déjà SQL Server, Oracle, MySQL, PostgreSql. Qu'apporterait de plus MongoDB ?


Je suis interpellé par l'article suivant :

mongoDB The database for modern applications

C'est curieux ces modes marketing ! Aujourd'hui, si vous désirez être "trendy" que je traduirai par être dans la tendance, il faut être "moderne" et là, vous pouvez jeter tous vos concurrents à la benne à ordures ...

MongoDB est une base de données sous forme de documents au format JSon. Alors là, on a une différence notable par rapport aux autres systèmes de base de données, je dirais une différence disruptive ;)

Le format JSON étant parfaitement ouvert cela signifie que vos datas vont pouvoir être traitées par MongoDB comme par d'autres outils classiques qui travaillent au format JSon et ça, c'est une réelle différence d'avec les autres solutions de bases de données que l'on pourrait dire fermée.

Alors existe t-il d'autres bases de données sous forme documents ? Et bien nous arrivons directement chez AWS (Amazon Web Service) avec une compatibilité MongoDB :

AWS - Qu'est ce qu'une base de données de document ?

Vous comprenez maintenant pourquoi vous ne cesser d'entendre parler de plus en plus de MongoDB. Les bases de données document existent depuis toujours mais aujourd'hui nous avons le format JSon qui est adopté par l'ensemble des acteurs et poussé par Amazon vous imaginez le plaisir qu'ils ont à tailler des croupières aux autres acteurs du marché.

Pour ceux qui souhaite utiliser mongoDB sous windows :

MogoDB - Install On Windows

Donc, si vous optez pour le format document avec vos BD, vous allez très certainement vous faire avaler par AWS et son Cloud.

Pour aller plus loin sur le classement des différents types de Base de données, la découverte des avantages et des inconvénients, je vous propose un article aussi complet que possible :

cartelis - Choisir le bon type de base de données pour son projet d’entreprise

Voilà, avec cela, nous avons fait le tour de mongoDB, ce n'est ni nouveau, ni une révolution, c'est simplement une solution développée par des gens qui ne voulaient ni de MS SQL, ni d'Oracle ni d'une autre solution existante mais qui souhaitait développer leur propre solution.

lundi 17 août 2020

C'est quoi l'outil collaboratif Umbreon

Vous savez que j'affectionne particulièrement les applications collaboratives alors aujourd’hui il s'agit de découvrir Umbreon une plateforme collaborative qui permet de lancer une rétrospective en mode agile afin de consulter, de rapprocher vos équipes.

La période est propice à l’émergence de plateforme permettant le travail à distance et c'est une très bonne chose. Voici une plateforme permettant l'animation de réunions, de brainstorming, de rétrospectives,  de votes à distance, et plus encore en mode Agile.

Umbreon - Plateforme collaborative pour animer vos équipes en modes Agile

Le site de présentation est très pro en mode responsive vous allez devoir vous inscrire pour tenter un essai gratuit. Un petit wizard rapide vous accueil à votre inscription sur la plateforme. Et vous pouvez créer votre première activité.

Pour ma part je choisie le "scrum master poker" :


Ajouter une légende

Je créé une story voyage à New York en expliquant qu'il s'agit d'estimer s'il on croit que le voyage va pourvoir se dérouler dans de bonnes conditions.

Je trouve un lien, pour inviter des anonymes, à venir voter à ma story "Voyage à New York". Je peux inviter à voter ... (maj le lien a disparu, c'est bien normal avec le temps mais vous pourrez le faire avec votre compte).

C'est ludique graphique, ça manque peut être de "title" pour expliquer ce que l'on peut faire en cliquant sur les boutons au sein d'une activité. Mais de l'aide est là et cela permet de comprendre comment les concepts Agiles ont été implémentés au sein de la plateforme. C'est très intéressant.

Je comprends que je ne peux voir les votes qu'une fois que tous les participants ont estimé la story ...

C'est plein d'activités différentes à tester ...

Je vous propose de découvrir sur le site Umbreon :

Rétrospective - Retour à l'école
C'est un cas d'utilisation complet qui permet de comprendre les possibilités concernant cette activité de Rétrospective avec vos équipes en mode collaboratif.

N'hésitez pas à laisser votre commentaire.

vendredi 7 août 2020

TeamViewer - Comment accéder à distance en remote desktop avec Team Viewer

Pour des raisons de sécurité vous devez vous interdire de vous connecter aux ordinateurs distants en utilisant le simple RDP de windows par défaut car il est sujet à de nombreuses attaques.

En tous les cas, voici un post très bien fait et complet sur la sécurisation du RDP.

deltasight - Sécuriser un serveur RDP sur le port 3389

Alors TeamViewer est prêt à vous aider ... Il suffit de l'installer sur l'ordi source et sur l'ordi cible de relever l'ID et le Mot de passe de l'ordi cible et de se connecter à partir de l'ordi source.

Vous obtenez l'écran suivant :

Team Viewer - Se connecter à distance

Seulement, je ne pige pas encore pourquoi mais avec une Machine Virtuelle Azure, il me faut être connecté sur la machine virtuelle pour que TeamViewer me propose de me connecter. Ce qui ne m'arrange pas car je souhaitai pourvoir invalider la connexion RDP ... J'espère que vous me suivez ce n'est pas simple.

Si je me déconnecte de la Machine Virtuelle, je clique simplement sur la fermeture de la fenêtre de Remote Desktop Connection, alors que la machine est encore en fonctionnement et que TeamViewer s'exécute au sein de cette machine et bien je ne peut pas me connecter ...

TeamViewer - VM Azure connexion impossible

Je ne comprends pas encore pourquoi ...

Je viens d'installer également Team Viewer sur une autre machine à laquelle je souhaite accéder et je remarque une case qui m'oblige à créer un compte Team Viewer, je m'exécute.

Team Viewer - Assign to account
 
Du coup j'accède à la console de gestion de mon compte d'utilisateur :

Team Viewer - Console de gestion
Team Viewer - Console de gestion

Je vois mes deux machine celle sur laquelle je travaille et celle à laquelle je souhaite me connecter.

A partir de là, j'ai pu à peu prêt tout faire sauf que j'ai toujours le même problème, il me faut être déjà connecté en RDP à la machine pour accéder avec TeamViewer ce qui n'a pas de sens.

Par hazard en cliquant à gauche à droite je découvre le bouton : "Contrôle à distance en utilisant le mot de passe" :

Team Viewer - Contrôle à distance en utilisant le mot de passe

Et là ça y est pas besoin de mettre connecté en RDP. Je dirais que c'est l'authentification windows qui n'accepte pas un utilisateur avec une connexion sans mot de passe. Donc quand vous êtes coeecté en RDP vous avez entré votre mot de passe vous pouvez alors vous connecter avec Team Viewer.

Sinon il faut utiliser la Connexion à distance en utilisant le mot de passe. Il y a vraiment plein d'autres possibilité de collaborer avec Team Viewer.

CQFD !








mercredi 5 août 2020

C'est quoi le langage Go ?

Je connaissais le jeu de Go et j'adore c'est un jeu que je préfère aux échec car comme le dit Lao-tseu aux échecs vous ne pouvez être que gagnant ou perdant alors qu'au Go c'est bien plus subtile ... Il était important pour moi, en tant que programmeur, d'évoquer ici le Langage Go et d'en avoir une connaissance minimum.

Mais alors le langage Go ? C'est quoi ! Je travaille dans la programmation depuis toujours alors un nouveau langage c'est intéressant. Mais j'ai l'impression qu'aujourd'hui les grands acteurs du digital créent un langage à chaque fois qu'ils ont une problématique à résoudre. C'est un peu le sens de la vidéo que j'ai écouté sur le site et le problème qu'ils ont eu avec le C++.

Wikipédia - langage Go

C'est un langage créé par Google pour de la programmation système. Avec le Go Langage, la gestion de la mémoire est assurée par un ramasse-miettes ...

Exemple de langage Go dans GitHub avec la communauté open source Grafana, c'est 26% de Go Langage (Go Lang) :

https://github.com/grafana/grafana/search?l=go

Et le site officiel du Langage Go :

Site Officiel du langage Go

Pour les novices que nous sommes, une première page à lire attentivement sur le Langage de programmation en langage Go :

Go Effective Go
Et une remarque amusante, il me semble, sur les semicolons "{". Ils ont trouvé le moyen de vous obliger à la mettre en bout de ligne et non au commencement d'une nouvelle ligne. Sempiternelle guéguerre entre ceux qui écrivent "façon java"

if () {
}

et ceux qui écrivent "façon C"

if ()
{
}

En Go la "façon C" n'est pas autorisée, Amusant ! Non ?

En cherchant un peu plus, je trouve que le Go s'appelait Golang ... c'est Disney qui possède le nom de domaine go.com, Google n'a pas eu le choix que de changer de nom de domaine et de choisir un autre nom pour son langage le Go Lang.

Le langage Go est open source : golang/go

Et maintenant, j'aimerais trouver un IDE voir un compilateur pour le langage Go ...

Je trouve un éditeur pour le langage Go chez JetBrains : GoLand

JetBrains - IDE GoLand pour le langage Go
JetBrains - IDE GoLand pour le langage Go

Quelques Info sur cet IDE : GoLand documentation
Là j'ai l'impression que vous pouvez démarrer la programmation en Go.

Un petit conseil de curieux, chez JetBrains, il n'y a pas que le langage Go, ce site JetBrains est une mine d'or pour tous les outils de développement ...

Je trouve encore cette page sur le langage Go :

Je suis un dev - Comprendre le Go en 5 minutes
L'essentiel sur la genèse du langage Go, ses créateurs, leurs objectifs.

golandbot.com - Golang tutorials series
Quelques exemples et des tutoriels, ont est à la racine du Golang

https://youtu.be/cN_DpYBzKso
Une conférence d'un des trois créateurs Rob Pike sur le sujet : Concurrence n'est pas Parallélisme et donc la cause de la naissance du langage Go.

http://www.usingcsp.com/cspbook.pdf
Je mettrais ici aussi un lien vers le livre de Tony Hoare - Communicating Sequential Processes qui est certainement la raison pour laquelle le Go à vu  le jour. Dans une conf Rob Pike nous intime l'ordre,  si on ne l'a pas encore lu de cesser tout le reste et de rentrer chez soi le lire alors ...

Et puis l'avenir du Langage Go :
The Go Blog - Toward Go 2

Bon, ben voilà, je ne connaissais pas ce langage Go, je ne savais même pas que Docker est écrit en Go  ... comme quoi, on apprend toujours.

mardi 4 août 2020

C'est quoi Azure DevOps ?

Je connais Azure, le cloud de Microsoft. DevOps c'est un ensemble de techniques de programmation donc les deux ensembles cela doit vouloir dire : Techniques de programmation dans l'Azure ... ?

Microsoft Azure DevOps
Planifiez plus intelligemment, collaborez mieux et livrez plus rapidement avec un ensemble de services de développement modernes.

C'est quoi Azure DevOps ?
C'est quoi Azure DevOps ?

C'est parce que je trouve ce terme dans la lecture d'une annonce pour l'emploi et qu'il m'interpelle car je ne suis pas certain de savoir parler d'Azure DevOps que je creuse pour trouver ce que c'est plus précisément ...

Finalement on me propose de démarrer rapidement en me loguant, je me logue ... et je tombe sur mon bon vieux Team Foundation Server, le bon vieux TFS d’antant qui comme toute chose se retrouve maintenant dans l'Azure et qui s'est appelé un moment Azure Team ... Donc c'est tout simplement le Gestionnaire de Codes Sources de Microsoft ... (comme github ou gitlab).

Si vous faites du développement logiciel vous savez ce qu'est un gestionnaire de code source un outil qui vous permet de développer vos codes en équipes de n'avoir qu'une source dans laquelle tous les contributeurs viennent commiter (ranger, sauver) leurs codes.

Là, je vous montre comment utiliser GitHub dans Visual Studio.

Bref, rien de très nouveau sous cette nouvelle appellation ...

Azure DevOps c'est ce bon vieux TFS à la mode Azure

Azure DevOps c'est donc Team Foundation Server dans le Cloud avec un peu de gestion de projet façon Agile autour ..

Et pour aller plus loin, je trouve ceci :

Microsoft - Concevoir un pipeline CI/CD à l’aide d’Azure DevOps

Avec un joli graphique pour expliciter des différentes étapes du développement d'un projet :

Processus DevOps au sein de l'Azure Cloud de Microsoft

C'est plein de bon trucs de DevOps à la sauce Microsoft. Avec pour moi la brique la moins connue c'est certainement Azure Application Insights l'outil d'optimisation de performances pour les applications Web à creuser absolument.

Azure Application Insights

Je détaille cette brique qui me semble être la plus récente, la moins connue. Si vous installez un petit package d'instrumentation (SDK) Azure Application Insights instrumentalise votre application pour la superviser. Des données de télémétries ont alors dirigées vers un ressource Azure Application Insights.

Azure DevOps - Application Insigths
Azure DevOps - Application Insigths

Les Insights sont "Des conseils d'optim" afin d'optimiser le fonctionnement de vos applications.

Voilà, nous avons maintenant une  meilleure vision de ce qu'est l'Azure DevOps sans avoir à lire les dizaines et les dizaines de pages de la documentation Microsoft for dummies.