Publication des applications ASP.NET Core pour Linux

Lorsque Microsoft a publié l’implémentation open source multi-plateformes du ASP.NET Core fin 2014, l’un des changements stratégiques clés a été le support Linux récemment acquis. Pour de nombreuses organisations, la possibilité d’exécuter des applications Microsoft .NET (et en particulier des web services ASP.NET) sous Linux constitue une excellente occasion de consolidation vers un OS de production unique. La possibilité d’utiliser des outils de développement familiers sous Windows, puis d’héberger l’application résultante sous Linux en respectant les exigences IT, va permettre une réduction importante des coûts. En règle générale, on utilise Windows comme OS de développement car il prend en charge toutes les fonctionnalités de Visual Studio pour développer des applications ASP.NET Core et IIS pour héberger les applications résultantes.

La version open-source du .NET Core est multi-plateformes et prend en charge plusieurs OS en tant que cible de production, y compris diverses versions de Windows (Windows Server, Windows Nano Server) et de nombreuses distributions Linux (Ubuntu, Debian, Red Hat Enterprise Linux, Alpine, etc.). Le .NET Core prend également en charge de nombreuses architectures de processeurs, notamment Intel x86-64 (utilisé par la plupart des serveurs) et ARM (utilisé par les périphériques IoT et les téléphones mobiles).

Choisir le bon OS pour toutes les applications et tous les services d’une entreprise peut s’avérer très rentable, en particulier si vous pouvez consolider vos environnements de production en un seul OS et en une architecture de processeurs unique. Certaines des raisons pour choisir Linux comme système d’exploitation incluent :

  • Un impact sur la mémoire et sur le disque beaucoup plus faible dans les déploiements, aussi les virtualisations et les conteneurs (dans certains cas d’un facteur supérieur à 10).
  • Un support idéal pour d’autres plates-formes et langages de programmation, tels que Java, Python, PHP et Go. Windows peut ne pas prendre en charge certaines de ces langues.
  • Environnement familier pour de nombreux administrateurs système.

Le choix de Linux comme plateforme de production va vous permettre d’utiliser le pipeline de la build, de publication et de déploiement de bout en bout à partir de votre environnement de développement Visual Studio 2017. D’ailleurs, il faut savoir qu’il existe deux manières de publier une application .Net Core :  La publication dépendante du framework et la publication autonome

Publication dépendante du framework

Pour ce genre de publication, la sortie finale du build de l’application contient les fichiers DLL de l’application et toutes ses dépendances tierces, telles que les packages NuGet et les références de projet. Toutefois, les bibliothèques .NET Core et le runtime .NET Core, qui comprend le compilateur JIT (Just-In-Time), Garbage Collector et l’outil Dotnet, ne sont pas fournis avec l’application. L’installation partagée de ces composants doit être présente sur la machine cible. On peut utiliser les commandes suivantes pour restaurer les packages NuGet, compiler votre application, la publier en tant que package dépendant du framework, puis l’exécuter à partir du répertoire de sortie.

dotnet restore

dotnet build -c Release

dotnet publish -c Release -o out

dotnet out/myapp.dll

Bien que vous deviez installer les bibliothèques .NET Core et les composants d’exécution sur la machine cible, la publication dépendante du framework présente un avantage majeur. Le package produit est totalement indépendant de la plateforme et peut être exécuté sans modification sur toute plateforme prenant en charge .NET Core, quel que soit le système d’exploitation ou l’architecture du processeur.

Publication autonome

Lorsque vous utilisez la publication autonome, le package du build final de votre application contient les DLL, les dépendances de tiers, une copie complète des bibliothèques .NET Core gérées de votre application et des composants natifs, tels que le compilateur JIT et le garbage collector.

Certains de ces composants étant dépendants de la plateforme lorsque vous utilisez la publication autonome, vous devrez spécifier l’identificateur d’exécution d’une plateforme spécifique. Le package résultant ne s’exécutera que sur un système d’exploitation spécifique et selon une architecture de processeur spécifiée par l’identificateur d’exécution. Voici quelques exemples d’identificateurs d’exécution.

  • Linux-x64 : Cet identifiant d’exécution cible toute distribution Linux pour processeurs x86-64, à l’exception d’Alpine Linux. Des exemples de distributions Linux prises en charge incluent Debian, Ubuntu Linux, Red Hat Enterprise Linux et Fedora.
  • 3.6-x64 : Cet identifiant d’exécution cible la distribution Alpine Linux pour les processeurs x86-64. Alpine Linux est une distribution Linux légère, qui fonctionne bien dans les environnements de conteneur en raison de sa petite taille.
  • Win-x64 : Cet identifiant d’exécution cible toutes les versions de Windows pour les processeurs x86-64, y compris Windows Server 2008 R2, Windows Server 2016 et autres.
  • Win10-arm64 : Cet identifiant d’exécution cible les versions de Windows 10 ou Windows Server 2016 s’exécutant sur des processeurs ARM 64 bits.

Quand on utilise des conteneurs pour le déploiement, Microsoft fournit des images officielles sur Docker Hub, qui contiennent les dépendances natives de base requises par une application .NET Core autonome. Ces images sont étiquetées avec différentes balises runtime-deps, dont la taille est beaucoup plus petite que les balises runtime correspondantes. Par exemple, microsoft/dotnet:2.1-runtime-deps-alpine est une image de conteneur contenant uniquement l’image de base Alpine Linux et les dépendances natives, telles que libzlib et libcurl, requises par .NET Core sous Alpine Linux.

Comment choisir le type de publication ?

Pour décider si vous devez utiliser une publication dépendante du framework ou autonome, vous pouvez envisager les éléments suivants :

Taille finale de l’image

Avec la publication autonome, la taille finale de l’application packagée est souvent plus grande car elle inclut les assemblys d’exécution .NET Core et d’infrastructure, en plus des assemblys de votre application.

Partage d’exécution

Si vous déployez plusieurs applications .NET Core sur le même ordinateur ou si vous exécutez plusieurs conteneurs basés sur les images de conteneur .NET Core, utilisez une publication dépendante du framework pour que toutes les instances d’application partagent les mêmes fichiers d’exécution .NET Core et assemblys sur le disque.

Flexibilité de la plateforme

Avec la publication autonome, vous devez choisir une plateforme cible sur laquelle votre application sera exécutée. Vous ne pouvez pas créer l’application pour les systèmes d’exploitation Linux sur un processeur Intel 64 bits, puis l’exécuter sur un système d’exploitation Windows ou sur un système d’exploitation doté d’un processeur ARM. D’autre part, lors de l’utilisation d’une publication dépendant du framework, le build résultant peut être exécutée à l’aide du helper dotnet sur toute plateforme sur laquelle la version appropriée de .NET Core sera installée.

Dépendances minimales

Avec une publication autonome, vous minimisez les dépendances d’exécution requises pour l’hébergement de votre application.

Contrôle de la version et du service .NET Core

Quand vous utilisez la publication autonome, vous contrôlez la version exacte de .NET Core qui sera utilisée pour exécuter votre application.

Mohamed S.

Comment gérer son stress.

Parce que le monde de l’entreprise exige beaucoup de la part des salariés, l’anxiété et le stress prennent place dans notre quotidien. Voici donc quelques pratiques qui pourront vous aider à bien gérer le stress et tirer le mieux de vous-mêmes.

Je ne reporte pas à demain

Lorsqu’on est stressé, on a tendance à repousser les décisions à demain ou laisser des tâches suspendues. Ne procrastinez pas ! Le fait de résoudre un problème quand il se présente donne l’impression de cocher une case, et donc d’avancer.

Fixez-vous des objectifs sur du court terme. L’idée est de les atteindre d’ici la fin de la journée. Ils répondront à un plan d’action hebdomadaire que vous aurez réalisé à la fin de chaque semaine. Cette technique donne le sentiment que les choses avancent et permet d’acquérir de la confiance pour mieux affronter les difficultés qui se présentent sur vos projets.

Je recherche du soutien

Beaucoup de personnes sont confrontées au stress et ont tendance à se replier sur elles-mêmes et cacher qu’elles sont sous tension, de peur que les autres prennent ça comme un signe de faiblesse.

N’ayez pas peur de vous confier à votre entourage. Trouver quelqu’un qui pourra vous comprendre et voire qui se trouve dans la même situation que vous ou qui pourra vous partager son expérience, sera pour vous source d’apaisement et de potentielles solutions à vos problématiques.

Je me fixe des limites

Tout le monde n’est pas à l’aise de dire « non », surtout à son manager. Ainsi, faites part des points bloquants qui peuvent ralentir votre projet : faisabilité, échéance, temps de production, coûts, outils ; etc… Cela vous permettra d’insister sur les difficultés sur projet et de rouvrir la discussion pour redéfinir certains détails du projet.

J’accepte l’imperfection

Il est parfois bon de se surpasser pour gagner en compétences, en perfectibilité. Toutefois, le faire tout le temps peut engendrer une situation nocive : la quête de surpuissance. On est loin de la réalité, on cherche à faire ses preuves sans l’aide de personne, et constamment dans l’angoisse d’un éventuel échec toute erreur serait un désastre.

Le résultat de ces trois facteurs n’en est que plus probant : un isolement de ses collègues, car demander de l’aide serait un aveu de faiblesse, et une perte de confiance en soi causé le déni de ses erreurs et une gestion difficile de ses limites .

En se connaissant mieux et en acceptant ses limites, votre travail ne sera plus autant une source de stress.

J’adapte mon environnement de travail

Un proverbe me vient à l’esprit quand j’aborde ce point « Montre-moi où tu vis, je te dirai qui tu es ». Ce proverbe est applicable aussi à votre l’environnement de travail alors n’hésitez pas à donner vie à votre bureau : une petite plante peut être relaxante, par exemple, ou bien nettoyer votre plan de travail chaque soir peut vous aider à bien commencer la journée du lendemain.

J’évite les excitants

La cigarette, une consommation excessive de cafés ou de boissons énergétiques et d’autres excitants peuvent vous rendre plus nerveux et ne vous mettent pas à l’abri des réactions spontanées que vous pourriez regretter par la suite. Faire du sport est un moyen de déstresser et enlever les ondes négatives.

Ces techniques peuvent vous aider dans votre quotidien pour bien gérer votre stress. N’oubliez pas qu’en adoptant un mode de vie sain, votre stress peut réduire énormément : bien manger, faire d sport et surtout faire une bonne nuit de sommeil vous permettra d’aborder votre journée plus sereinement.

Zakaria A.

Dockeriser une application Angular

Docker est un outil qui permet de faciliter le déploiement des applications dans des conteneurs virtuels. Un conteneur permet de packager une application avec toutes les dépendances dont elle a besoin pour s’exécuter.

Dans cet article, nous allons voir comment créer et lancer une image Docker pour une application Angular. Nous allons nous baser sur Angular-CLI afin de générer une nouvelle application et NGINX comme serveur web pour déployer notre application dans un conteneur docker.

1. Création d’une application Angular

Vous devez avoir NodeJs installé dans votre machine afin de pouvoir installer Angular-CLI

Capture1

Pour générer une application Angular :

Capture2

Pour lancer l’application :

Capture3

L’application sera accessible depuis ce lien : http://localhost:4200

Capture42. Build Angular Application

Maintenant que notre application fonctionne correctement nous allons la packager avec Angular-CLI :

Capture5

Le build génère un dossier dist/ qui contient le code source compilé de notre application.

Remarque : –prod nous permet d’avoir un package optimisé (taille plus petite)

3. Installation docker

Pour installer docker sur votre machine veuillez suivre les instructions dépendamment du système d’exploitation que vous utilisez (Windows 10 Professionnel, MacOS) : https://docs.docker.com/install/

4. Création Image Docker

Nous allons utiliser le serveur web NGINX afin de déployer notre application. Il existe une image docker contenant NGINX sur docker hub (communauté de partage des conteneurs docker) sur laquelle nous allons nous baser pour cet article. Il faut créer un fichier Dockerfile qui contiendra les instructions pour créer notre image docker.

Capture6

Nous avons utilisé la version alpine pour avoir une image minimaliste (Taille ~ 5MB). Pour créer l’image nous avons besoin de lui spécifier un tag qui nous servira pour lancer le conteneur docker.

Capture7

Pour chaque ligne dans le fichier, docker va lancer des instructions afin de générer l’image.
Docker va générer les logs pour chaque étape (instruction) :

Capture8

Nous pouvons lister les images docker que nous avons sur la machine avec

Capture9

5. Lancer un conteneur Docker

Pour lancer l’image docker dans un conteneur en spécifiant le nom de l’image :

Capture10

Remarque : Nous avons besoin de définir un port interne (80) et externe (3000). Comme on a spécifié le port 3000 au lancement du conteneur, l’application sera accessible depuis le lien suivant : http://localhost:3000/

Capture10

Mais pourquoi je n’ai pas le même résultat qu’en local ? 

Pas de panique, si vous voyez cette page c’est que le conteneur a été lancé avec succès, il faut juste configurer un peu plus le serveur NGINX pour qu’il puisse faire le lien avec notre application Angular.

Pour ce faire nous allons modifier le fichier nginx.conf qui existe dans notre conteneur docker pour pouvoir accéder à notre application. Nous devons créer le fichier nginx.conf à la racine du projet Angular

Capture11

Avant de rebuilder l’image nous devons mettre à jour le Dockerfile pour charger le nouveau fichier de configuration de NGINX

Capture12

En relançant le conteneur docker, l’application devrait être accessible de nouveau.

6. Manager plusieurs conteneurs dockers

Au quotidien, vous allez être amenés à travailler avec plusieurs conteneurs docker. Vous allez interagir avec des applications en backend (Java, .Net, NodeJS) et avec un ou plusieurs serveurs pour vos bases de données. D’où l’utilité d’avoir un outil qui vas nous permettre de manager plusieurs conteneurs à la fois sans nous soucier du paramétrage pour chaque conteneur (Port, nom de l’image, nom du conteneur docker, …). Cet outil est docker-compose.

Nous pouvons aussi utiliser docker-compose dans le cas d’un seul conteneur docker, pour éviter de configurer manuellement le conteneur docker au lancement comme on l’a fait juste avant. Dans cet article, nous allons configurer un seul conteneur docker pour notre application Angular.

Pour commencer, il faut créer un fichier docker-compose.yml (dans la racine du projet Angular) avec le contenu suivant :

Capture13

Si vous avez déjà builder l’image docker vous pouvez enlever l’instruction build. Le network « app-network » permet d’avoir accès à d’autres conteneurs dans le cas d’un déploiement avec plusieurs conteneurs. Pour lancer le conteneur, il faut lancer la commande :

Capture14

Comme on a défini le port 80 comme port externe, l’application sera accessible depuis ce lien : http://localhost/

Pour arrêter le conteneur c’est simple :

Capture15

7. Publier l’image dans docker hub

Pour pouvoir publier une image docker dans Docker Hub il faut avoir un compte. La création d’un compte est gratuite. Il suffit de suivre les instructions https://hub.docker.com/signup

Une fois le compte créé on peut créer des ‘repositories’ afin de pouvoir partager nos images avec nos équipes, client, ou la communauté dans docker hub. (La visibilité d’un repository peut être privée ou publique).

Pour se connecter à son compte, il faut exécuter la commande ‘docker login’ depuis le terminal et renseigner le username et le password.

Avant de publier l’image dans notre docker hub il faut rebuilder l’image comme on l’a fait au début en y ajoutant dans le tag le username et le repository. Pour garder un historique des images on peut ajouter dans le tag le numéro de la version publiée.

Capture16

Pour publier l’image :

Capture17

8. Exécuter une image depuis docker hub

Nous pouvons maintenant exécuter notre image en local directement depuis docker hub

Capture18

Si on veut utiliser docker-compose pour lancer l’image depuis docker hub, il suffit de remplacer la valeur dans l’option image et enlever l’option build.

9. Build Staging

Jusqu’à maintenant nous avons utilisé docker uniquement pour exécuter notre application Angular. Le build étant fait en amont, nous avons dû installer NodeJs en local sur notre machine pour pouvoir packager l’application. Si nous voulons rendre ce processus transparent pour n’importe quel client voulant exécuter notre application Angular depuis le code source, nous pouvons le faire grâce au multi stage build de notre image docker.

Pour y arriver nous avons besoin d’une image docker qui contiendra au préalable NodeJs installé dedans. Dans cet article nous allons nous baser sur l’image officielle de docker pour NodeJs.

Capture19

Pour builder et exécuter l’image docker vous pouvez suivre les mêmes étapes décrites précédemment. L’avantage d’avoir utilisé le build staging est que notre image finale contiendra uniquement notre application et le serveur NGINX. Angular étant une application statique nous n’avons pas besoin d’avoir NodeJs en mode RUN.

10. Nettoyer votre environnement

En manipulant docker sur votre machine vous allez au fur et à mesure créer plusieurs images ainsi que lancer plusieurs conteneurs. Pour faire un nettoyage de fond et libérer de l’espace vous pouvez lancer la commande suivante.

Capture20

Cette commande va supprimer tous les images, les conteneurs arrêter, les réseaux non utilisés et le cache des builds.

Conclusion

J’espère que cet article vous aidera à mieux comprendre et mettre en place docker dans votre projet Angular. Vous trouverez le code source des différentes étapes citées dans cet article sur GitHub : https://github.com/msouf/docker-angular

Bonne lecture !
Si vous avez trouvé cet article intéressant n’hésitez pas à le partager.

Soufiane MOHACHTOU

ElasticSearch

Qu’est-ce qu’Elasticsearch ?

ElasticSearch est une base de données NoSql et un moteur de recherche de données puissant basé sur Lucène. Il a été développé en Java et est distribué de façon open source sous licence Apache 2.0. En peu de temps vous pouvez disposer d’un moteur de recherche clustérisé, automatiquement sauvegardé et répliqué, consultable via une API REST. Il permet d’effectuer et de combiner des recherches variées sur des données structurées, non-structurées, de géolocalisation. Il utilise des API RESTful et JSON ce qui lui permet de dialoguer avec tous les langages.

  • Rapide Des recherches en temps réel.
  • Scalable D’un serveur local à une architecture distribuée gérant des péta octets de données
  • Tolérance aux pannes Haute disponibilité, réplication et sauvegarde automatique
  • Modulaire Un système de plugins permet d’ajouter des fonctionnalités à celles de base proposées par Elasticsearch : sécurité, monitoring, alerting, reporting, simplicité.

Concept de base

Un cluster Elasticsearch peut contenir plusieurs index qui, à leur tour, contiennent plusieurs types. Ces types contiennent plusieurs documents.

Image 1

Correspondance entre une base de données relationnelle et Elasticsearch

SGBDR Elasticsearch
Base de données Index
Table Type
Ligne Document
Colonne Champ ou propriété

Document

Un simple enregistrement dans un index Elasticsearch. Un document est structuré comme un objet JSON.

Index

Un index est un espace logique de stockage de documents de même type, découpé sur un à plusieurs shards.il peut être répliqué sur zéro ou plusieurs shards. Quand un shard tombe en panne le contenu est répliqué dans un réplicat. L’index correspond à une base de données relationnelle (exemple : MySQL), il est composé d’un ou plusieurs types .
Exemple : base de données : CATALOGUE

Shards

C’est une partition de l’index on distingue deux types de shards :

  • Primary Shards : Par défaut, l’index est découpé en 5 Primary Shards.
  • Secondary Shards : Il s’agit de copies de Primary Shards.

Node

Un node correspond à un processus d’Elasticsearch en cours d’exécution.

Comment installer Elasticsearch ?

Le prérequis à l’installation d’ElasticSearch est l’installation de Java 6 sur la machine destinée à héberger Elasticsearch. Assurez-vous donc que Java 6 est installé sinon installez-le, puis téléchargez Elasticsearch le zip sur https://www.elastic.co/fr/downloads/

Image 2

Une fois l’archive téléchargée, il suffit de la décompresser pour installer ElasticSearch :

Image 3

Le répertoire bin contient le script de lancement Elasticsearch et le script d’installation de plugins (respectivement Elasticsearch.bat et plugin.bat pour Windows). Cliquez sur le fichier Elasticsearch.bat.

Image 4

ElasticSearch est bien démarré (started) la dernière ligne le confirme et on peut vérifier qu’ElasticSearch s’est correctement lancé il suffit de taper URL suivante http://localhost:9200/ dans un navigateur Web. Si tout se passe bien, on aura l’interface ci-dessous : « status 200 » confirme que notre serveur Elasticsearch fonctionne.

Image 5

Comment indexer et rechercher avec ElasticSearch ?

ElasticSearch utilise des API RESTful et JSON ce qui lui permet de dialoguer avec tous les langages. Il supporte les principales méthodes HTTP (GET, DELETE, PUT et POST).

http://host:port/index/type/[_action|id]

  • index : Nom de l’index
  • type : Nom du type de document
  • _action : Nom de l’action à effectuer
  • id : Identifiant du document

Indexation d’un document

Nous allons indexer le document article dans l’index EXteam pour cela j’utilise Postman (https://www.getpostman.com/ ) qui est un testeur d’API :

Après avoir cliqué sur Send, l’index EXteam sera créé ainsi que le type article qui contient le document

Figure 1 : Création d’un index et indexation d’un document

Image 6

Rechercher d’un document par son ID

Pour chercher un document par son ID il faut :

Après la validation nous retrouvons notre document que nous avions indexé sous format JSON.

Image 7

Recherche d’un document par texte (ex : Elasticsearch)

Pour chercher un document par son ID il faut :

Après la validation nous retrouvons le document qui contient le mot Elasticsearch.

Image 8

FOSElasticaBundle

Installer FOSElasticaBundle pour Symfony2,3

Après avoir installé Elasticsearch, lancez la commande ci-dessous pour installer le bundle

$ composer require friendsofsymfony/elastica-bundle

N’oublions pas d’ajouter le Bundle dans le fichier AppKernel.php :

Image 9

Maintenant que le bundle est installé passons à sa configuration.

Configuration du bundle

Image 10

Image 11

Mapping

Ajouter au même niveau settings les lignes suivantes :

Image 12

Image 13

Importer le fichier de mapping elasticsearch.yml dans config.yml :

Image 14

Indexation des tables

Image 15

Faites une recherche. Exemple de fonction de recherche :

Image 16

Image 17

 

Mamadou BAKHAYOKHO

Partager sur LinkedIn Partager sur Facebook Partager sur Twitter

Iron Triangle

L’« Iron Triangle » est un concept développé par Dr. Martin Barnes dans le début des années 1970, s’identifiant par un triangle dont chaque sommet représente les trois composantes cruciales d’un projet et leur interrelations, que sont (ces trois points peuvent être différents selon les sources, parfois :

  • Les ressources : les coûts à immobiliser pour ce faire
  • Le temps : la priorisation et le temps imparti pour le projet
  • Le périmètre défini du projet : les fonctionnalités prévues

Pourquoi « Iron Triangle »?

Parce que l’on ne peut changer une des contraintes sans impacter les deux autres composantes

Dans l’Iron Triangle traditionnel, seulement les fonctionnalités définies au préalable vont rester fixes. Les ressources et le temps vont être estimés au mieux, mais seront les variables à considérer pour mener à bien un projet avec tout ce qui a été demandé. En d’autres termes, c’est une approche « Cycle en V » ou encore « Waterfall » du product development.

Et dans le monde agile ?

Contrairement aux projets cycle en V, dans un projet AGILE les composantes de temps et de ressources sont fixées à l’avance. C’est dans ce cas où les fonctionnalités ne seront pas forcément définies à l’avance, bien au contraire. Un socle de base est souvent convenu pour test de fonctionnalités (ce que l’on appelle le MVP pour Minimum Viable Product).

Cette approche permet de répondre, notamment dans le domaine du développement, aux délais de mise sur le marché en développant les fonctions essentielles du produit mais en sacrifiant certaines fonctionnalités jugées non indispensables. Etant très flexible, le but est de récupérer un maximum de retours des utilisateurs sur la valeur (à le service/fonctionnalité mises en avant) délivrée. Ceci permettra une adaptation du produit en retirant, ajoutant définitivement ou créant des fonctionnalités compte tenu des retours utilisateurs récupérés.

Image 1

Mais comment définit-on la valeur afin de mener à bien un projet AGILE ?

Comme dit plus haut, ce sont les retours des utilisateurs qui vont pouvoir beaucoup aider à cerner les fonctionnalités attendues afin de prioriser les futures améliorations. Néanmoins, la valeur ne se limite pas à ça.

Le Modèle de Kano développé par Noriaki Kano 1984, permet de prendre en compte les attentes explicites ainsi que de faire émerger certains besoins latents ou implicites des potentiels clients.

Image 2

Ci-dessus le modèle de Kano schématisé sur le point de vue de la perception client

Cet outil est souvent piloté par un questionnaire en deux parties distinctes :

  • La première pour traiter les perceptions du client devant des caractéristiques produit.
  • La seconde partie pour traiter les perceptions client en l’absence de ces mêmes caractéristiques. (I.e. les questionnaires de satisfaction que l’on reçoit régulièrement par email sont un exemple de ce style de questionnaire, souvent orientés pour déceler de potentiels besoins pour adresser de nouvelles fonctionnalités, services, etc.)

Après la réalisation de cette étape cruciale, et une fois les besoins bien identifiés, ceux-ci doivent être priorisés. Cette étape est extrêmement importante pour pouvoir être réactif au vu des attentes client.

Une méthode est très utilisée, notamment dans le domaine du développement : la méthode MoSCoW. En d’autres termes :

  • Must have : Les besoins vitaux pour l’utilité produit
  • Should have : Les besoins qui seraient nécessaires
  • Could have : les besoins qui seront plus perçus comme du confort
  • Won’t have : des besoins que l’on peut qualifier un peu de “luxe” et qui n’ont qu’un impact faible

Une fois ces deux étapes effectuées, cela permet d’avoir une vision beaucoup plus claire des besoins des clients. Cela aura aussi permis de mettre en avant tous les points clés d’un produit en posant des questions aux clients, et par conséquent d’aligner les parties prenantes du projet pour mener à bien celui-ci.

Pour conclure, ceci n’est qu’un aperçu du sujet mais il existe d’autres étapes intéressantes pour maximiser le ciblage de ces besoins. Néanmoins le framework qu’offre la méthode AGILE est beaucoup plus dynamique et orienté sur le besoin client du moment. Les remises en question et adaptations sont donc fréquentes. La valeur à fournir n’est pas quelque chose qui est défini au prime abord, mais évolue durant tout le cycle du produit.

 

François N.

Sources :
Source 1  Source 2  Source 3

Comment motiver au XXIe siècle ?

En matière de motivation des employés, on peut facilement rapprocher la méthode traditionnelle à la fameuse expression « La carotte ou le bâton ». L’entreprise promet de récompenser les salariés les plus performants et parallèlement, de punir les moins bons.

Selon Dan Pink dans La vérité sur ce qui nous motive (Riverhead Books, 2009) ; plusieurs expériences démontrent que ce système de motivation pouvait faire ses preuves pour des tâches simples et répétitives, mais qu’il devenait inefficient voire contre-productif pour des activités plus créatives et scientifiques Dans les années 2000, aux Etats-Unis, les activités considérées comme créatives (réflexion, conception, etc) représentaient 70% du travail à réaliser tandis que les tâches mécaniques et le suivi de processus ne représentaient que 30% du travail.

Aujourd’hui, tenir compte de la différence des natures du travail est essentielle, surtout quand on est manager. Ainsi, pour présenter un travail de type mécanique et considéré comme peu valorisant, il est conseillé d’adopter les démarches suivantes :

  • Expliquer le contexte, donner le cadre et montrer à quel point il est importance de le faire
  • Reconnaître que la tâche n’est pas toujours amusante mais qu’elle justifiera d’un récompense à la clé
  • Laisser les employés réaliser la tâche de façon autonome (chacun à sa façon)

À l’inverse, quand il s’agit de tâches plus créatives, les effets de la méthode traditionnelle peuvent s’avérer être l’opposé du résultat souhaité sur l’individu ou l’équipe. Les effets les plus couramment observés sont les suivants :

  • Augmentation de la concentration
  • Accoutumance au système de la carotte : efforts = récompense obligatoire
  • Diminution de la motivation intrinsèque
  • Vision à court terme privilégiée
  • Réduction de la performance et de la créativité
  • Incitation à tricher, simplifier et développer un comportement immoral

Les expériences et études menées par les économistes, psychologues et sociologues du monde entier (Titmuss, Gluksberg, Twain …) au sujet de la motivation montrent depuis plusieurs années que lorsque l’on demande une tâche créative à son équipe, les éléments clés de la réussite sont :

  • L’autonomie : faire comme on veut et où on veut
  • La maîtrise : ni trop facile, ni trop difficile
  • La finalité : ce qu’on fait a un sens dans la vie, en adéquation avec nos valeurs

Ci-après un récapitulatif permettant d’appréhender ces 3 piliers de la motivation :

Conditions de l’autonomie Lois de la maîtrise Domaines de manifestation de la finalité
  1. Décider de ce qu’on fait.
  2. Quand on le fait.
  3. Comment on le fait.
  4. Avec qui on le fait.
  1. C’est un état d’esprit (selon Carol Dweck) composé du :
    –  Fixed Mindset : nos croyances déterminent notre manière d’interpréter nos expériences.
    –  Growth Mindset : Envisager nos possibilités non pas comme étant finies mais améliorables à l’infini.
  2. C’est une souffrance, qui suppose des difficultés et une pratique délibérée en vue de s’améliorer.
  3. C’est une asymptote (on ne l’atteint jamais à 100%).
  1. Les objectifs : où le profit est un moyen.
  2. Le discours : mettre l’accent sur autre chose que l’intérêt personnel.
  3. La politique : permettant aux salariés de trouver eux-mêmes un sens à ce qu’ils font.

3

Quelques outils pour faire progresser son équipe vers le nouveau système : motivation 3.0

Accorder pendant 6 mois 10% de temps libre aux collaborateurs pour se consacrer à développer des idées/projets de leur choix, en dehors de leur travail.
Variante : tous les 3 mois  accorder 24h d’autonomie avec une production obligatoire à rendre le lendemain en s’inspirant du défi « FedEx days ».

Encourager des récompenses spontanées entre collègues.
Exemple : tout salarié qui fait quelque chose d’exceptionnel peut se voir verser une prime de XX euros par un collègue, en temps réel. Les primes peuvent être issue d’un pot ou budget commun financé par l’entreprise.

Faire un audit anonyme d’autonomie :

Poser 4 questions notées de 0 à 10 + une question ouverte pour recueillir les idées. Faire ensuite une moyenne par question (domaine ) et une moyenne générale de l’autonomie :

Q1 : Etes-vous autonome dans vos tâches et dans la façon d’occuper vos journées de travail ?
Q2 : … dans votre emploi du temps, vos heures d’arrivée et de départ et la façon d’occuper vs heures de travail ?
Q3 :  … dans la façon dont vous assumez vis responsabilités au travail ?
Q4 : … par rapport à la composition de votre équipe au travail i.e le choix de vos collaborateurs/contributeurs ?

Céder le contrôle.
Impliquer les salariés dans la détermination des objectifs.

Adopter un vocabulaire « non contraignant ».

Au lieu de convoquer les collaborateurs, leurs permettre de venir voir les managers par eux-mêmes dans le cadre d’une permanence hebdomadaire, par exemple.

Travailler sur la finalité.
Demander aux salariés « Quelle est la finalité de votre entreprise ? », regrouper les post-it et faire un bilan par la suite pour en tirer des conclusions constructives.

Constituer une équipe équilibrée.

Assigner des tâches ni trop faciles ni trop difficiles pour éprouver la sensation de « flow » i.e. de fluidité dans le travail.
Encourager la collaboration plutôt que la compétition.
Faire évoluer les collaborateurs dans le temps.
Motiver l’équipe avec une finalité plutôt qu’une récompense (mission commune).

5

La récompense et la rémunération sous motivation 3.0

La récompense

Toute récompense extrinsèque doit être inattendue et offerte une fois le travail terminé. Il est également recommandé d’envisager des récompenses non matérielles comme des félicitations/feedbacks pour valoriser ses collaborateurs et leurs témoigner de la reconnaissance.

Quelques règles de base :

  • La récompense doit être adéquate et cohérente, en comparaison à des travaux similaires et/ou à la concurrence
  • Le travail demandé doit respecter les 3 piliers de la motivation : autonomie, maîtrise et finalité
  • L’urgence et l’importance du travail ont été expliqués.

La rémunération

La rémunération n’est pas un élément de motivation en soi. Un manque de rémunération est en revanche un facteur majeur de démotivation, par conséquent il est recommandé ce qui suit :

  • Veiller à l’équité interne et externe
  • Payer un peu plus que la moyenne pour :
  • Attirer les meilleurs talents
  • Réduire le turnover
  • Améliorer l’implication des collaborateurs
  • Échapper aux primes occasionnelles
  • Si on évalue la performance, utiliser des critères larges, orientés vers le long terme et une rémunération variable pas trop importante pour ne pas se focaliser dessus
  • Toute récompense doit aider à atteindre la maîtrise i.e. il faut récompenser/complimenter sur la méthode et non sur le résultat.

Avec tous ces éléments en tête, vous avez toutes les clés pour manager autrement, susciter et maintenir durablement la motivation de votre équipe.

Juba N.A.

La cooptation : une stratégie gagnante en cabinet de conseil et ESN !

« Les amis de mes amis sont mes amis »

Cet adage vaut en mathématiques, en amitié, mais également et plus que tout en Société de Conseil !

Chez EXteam, nous avons l’objectif d’avoir 50% de nos recrutements par le biais de la cooptation.

Qui de mieux qualifié que nos collaborateurs experts pour détecter l’expertise et le Mindset ?
Le lien de confiance établi nous permet de nous reposer sur eux pour valider le potentiel des futurs collaborateurs !

Nous favorisons donc toute l’année la cooptation en récompensant les embauches initiées par nos collaborateurs par une jolie prime qui va de 1500€ à 3000€ (selon les initiatives, la qualité des propositions et les concours en place).

Les concours ponctuels sont encore plus attractifs pour rebooster les propositions de CV !
Justement, pour cette nouvelle saison estivale qui démarre, nous venons de lancer le Grand Concours de l’été : EXTEAM COOPT’AIRLINE : Cooptez, voyagez !

Cooptation

Le suivi des candidatures et de leurs statuts se fait sur notre Réseau social Interne pour toujours plus de transparence !

Si vous êtes à la recherche d’une super société de conseil, avec une vraie identité, et que vous souhaitez vous aussi pouvoir monter à bord de l’EXTEAM COOPT’AIRLINE, n’hésitez pas à nous envoyer vos CV à recrutement@exteam.fr

EXteam recrute un EXPERT TECHNIQUE JAVA/DEVOPS (H/F)

Mission :

– La réalisation d’audits d’applications JEE, préventifs ou curatifs, principalement orientés disponibilité, performances et sécurité.
– La prise en charge des missions de conseil et expertise JEE à destination des équipes en charge de la réalisation des applications ainsi que les équipes en charge des infrastructures d’hébergement de celles-ci.
– La participation et/ou le pilotage des task forces en tant qu’expert Java/JEE.
– Expertise et accompagnement dans la mise en place des toolchains Dev’Ops

Environnement technique :

Expérience de plusieurs années en développement Java/JEE
Très bonne connaissance de frameworks java du marché (servlet, web services, spring, Angular, hibernate .)
Bonnes compétences: IBM Websphere Application Server ou autre solution de serveur d’application JEE
Une maitrise de la sécurité WEB
Une connaissance des outils d’introspection (Introscope, dynaTrace) est un plus.
Expérience en tant qu’utilisateur ou concepteur de toolchain de développement et des outils du marché (Git, Jenkins, et/ou autres)
Expérience de la méthodologie scrum agile

Welcome Night EXteam #1

Intégration

Première édition de la Welcome Night EXteam jeudi dernier ! Au programme, une rencontre entre nos plus récentes recrues, leurs Guild Masters et les membres du siège. Une soirée placée sous le signe de la bonne humeur, autour d’un buffet, de jeux vidéo et d’un Time’s Up géant pour lier tout le monde !

Contact

N’hésitez pas à nous solliciter pour vos projets ou pour en savoir plus sur nos expertises, nos offres et nos domaines de compétences.