Archives pour la catégorie technique

Persistent storage in action: Understanding Red Hat OpenShift’s persistent volume framework – Red Hat Developer

Get started with Red Hat OpenShift’s persistent volume framework and deploy a MySQL database on OpenShift, with and without persistent storage.
— À lire sur developers.redhat.com/blog/2020/10/22/persistent-storage-in-action-understanding-red-hat-openshifts-persistent-volume-framework/

Keep your image small. Container -Docker la garder petite : Votre force!

Les 5 régles de base

1) Ne stockez pas de données dans des conteneurs - Un conteneur peut être arrêté, détruit ou remplacé. Une application version 1.0 fonctionnant en conteneur devrait être facilement remplacée par la version 1.1 sans aucun impact ni perte de données. Pour cette raison, si vous avez besoin de stocker des données, faites-le dans un volume. Vous devez également faire attention si deux conteneurs écrivent des données sur le même volume cela pourrait entraîner une corruption. Assurez-vous que vos applications sont conçues pour écrire dans un magasin de données partagé.

2) Ne distribuer pas votre application en deux parties - Comme certaines personnes voient les conteneurs comme une machine virtuelle, la plupart d'entre eux ont tendance à penser qu'ils devraient déployer leur application dans des conteneurs en cours d'exécution existants. Cela peut être vrai pendant la phase de développement où vous devez déployer et déboguer en continu; mais pour un pipeline de livraison continue (CD) vers l'assurance qualité et la production, votre application doit faire partie de l'image. N'oubliez pas: les conteneurs sont immuables.

3) Ne créez pas de grosses images – Une image lourde sera plus difficile à diffuser. Assurez-vous que vous ne disposez que des fichiers et bibliothèques requis pour exécuter votre application / processus. N’installez pas de packages inutiles et n’exécutez pas de «mises à jour» (yum update) qui téléchargent de nombreux fichiers sur un nouveau calque d’image. ( C’est détaillé plus bas avec deux exemples.)

4) N’utilisez pas une seule layer d’image – Pour utiliser efficacement le système de fichiers en layer, créez toujours votre propre couche d’image de base pour votre système d’exploitation, puis une couche pour la définition du nom d’utilisateur, une layer pour l’installation d’exécution, une autre pour la configuration , et enfin la layer application pour votre application. Ainsi il sera plus facile de recréer, gérer et diffuser votre image.

5) Ne créez pas d’images à partir de conteneurs en cours d’exécution (Idée de debutant?)- En d’autres termes, n’utilisez pas «docker commit» pour créer une image. Cette méthode pour créer une image n’est pas reproductible et doit être complètement prohibée. Utilisez toujours un Dockerfile ou toute autre approche S2I (source-image) totalement reproductible, et vous pouvez suivre les modifications apportées au Dockerfile si vous le stockez dans un référentiel de contrôle de source (git).

6) N’utilisez pas uniquement la balise « latest »sur une version stable- La balise « Latest » est equivalente à « SNAPSHOT » pour les utilisateurs de Maven. Les balises sont une bonne pratique du fait de la nature du système de fichiers en couches des conteneurs. Pour limiter les surprises lorsque vous construisez votre image quelques mois plus tard et qvous rendre compte que votre application ne peut pas s’exécuter car une couche parente (FROM dans Dockerfile) a été remplacée par une nouvelle version qui n’est pas rétrocompatible ou parce qu’une mauvaise La «dernière» version a été extraite du cache de compilation. La balise « latest » doit également être évitée lors du déploiement de conteneurs en production, car vous ne pouvez pas savoir quelle version de l’image est en cours d’exécution. Cependant si votre cycle le permet il est important de raffraichir vos CI/CD afin d’^étre au bon niveau de patch et de ne pas laisser trainer de CVE.

7) N’exécutez pas plus d’un processus dans un seul conteneur – Les conteneurs sont parfaits pour exécuter un seul processus (démon http, serveur d’applications, base de données), mais si vous avez plus d’un processus, vous risquez d’avoir plus de difficultés à gérer, récupérer les journaux et mettre à jour les processus individuellement.

8) Ne stockez pas les identifiants dans l’image. Utilisez des variables d’environnement – Vous ne souhaitez pas coder en dur un nom d’utilisateur / mot de passe dans votre image. Utilisez les variables d’environnement pour récupérer ces informations à l’extérieur du conteneur. Un bon exemple de ce principe est l’image Postgres.

9) N’exécutez pas de processus en tant qu’utilisateur root – « Par défaut, les conteneurs Docker s’exécutent en tant que root. À mesure que le docker mûrit, des options par défaut plus sécurisées sont disponibles. Utiliser root est dangereux pour les autres et souvent inutile, faite l’effort de contruire des containers rootleess. Votre image doit utiliser l’instruction USER pour spécifier un utilisateur non root pour les conteneurs à exécuter en tant que ”. ( Guidance for Docker Image Authors)

10) Ne vous fiez pas aux adresses IP – Chaque conteneur a sa propre adresse IP interne et cela pourrait changer si vous démarrez et arrêtez le conteneur. Si votre application ou microservice doit communiquer avec un autre conteneur, utilisez des variables d’environnement pour transmettre le nom d’hôte et le port appropriés d’un conteneur à un autre.

En savoir plus sur – https://developers.redhat.com/topics/kubernetes

Exemples : Comment garder sa légéreté ?

Commencons par illustrer le problème, par une image toute fraiche de Fedora: latest (ou RHEL). (Utilisez le fedora docker pull: latest à l’heure de cet article version 32).

Une fois terminé, l’exécution de la commande docker images, montre une taille d’image de 204,7 Mo. Nous allons maintenant créer une image personnalisée qui contient JDK 1.8 et WildFly 20.0.0.Final, à l’aide du Dockerfile suivant (créer votre dockerfile). https://github.com/FROMENT/tinydocker/blob/main/fedora31

La construction de cette image donne une taille finale de 671.16 MB, et en faisant un historique du docker pour voir la taille de chaque layer. JDK 1.8 représente 239.54 MB, et WildFly a ajouté 230.7 MB à la taille totale de l’image – c’est beaucoup d’espace!

De plus, s’il vous prent l’envie de créer une image WildFly 21.0.0.Final.

Si vous ne souhaitez pas réinstaller JDK 1.8, vous pourriez être tenté de réutiliser l’image existante en remplaçant WildFly 20.0.0.Final par 21.0.0.FINAL. Ce faisant, vous vous attendez probablement à ce que cette nouvelle image ait presque la même taille de 671.1MB, mais en fai la taille d’image résultante augmentera à 728,1 Mo. L’image aura augmenté de 239.63 MB même si vous supprimez WildFly 20.0.0.Final avant d’ajouter WildFly 21.0.0.FINAL dans l’image docker. La différence de taille n’est pas due aux différences entre les versions de WildFly mais aux traces laissées en fonction des modalité de construction.


Copier lors de l’écriture

Afin de comprendre ce comportement, nous devons comprendre que le système de fichiers du conteneur Docker utilise une technique de copie sur écriture qui améliore le temps de démarrage du conteneur (incroyablement rapide!).

En comparant les conteneurs aux machines virtuelles ordinaires. Bien que cette technique contribue de plusieurs manières à rendre les conteneurs docker efficaces, elle peut entraîner une utilisation supplémentaire du disque; ainsi, les auteurs d’images docker doivent prendre en compte plusieurs choses pour éviter de créer de grosses images.

Pour expliquer: chaque instruction RUN dans le Dockerfile écrit une nouvelle layer dans l’image. Chaque couche nécessite de l’espace supplémentaire sur le disque; par conséquent, lorsque nous «déplaçons» WildFly, nous créons en fait une nouvelle couche. Afin de garder le nombre de couches au minimum, toute manipulation de fichier comme le déplacement, l’extraction, la suppression, etc., doit idéalement être effectuée sous une seule instruction RUN.

La ligne suivante, par exemple, installe WildFly dans le conteneur, et les commandes de téléchargement, d’extraction, de déplacement et de nettoyage sont effectuées sur une seule ligne. Cela donne une taille finale de 569,1 Mo:

   "cd /tmp && \
        curl -O https://download.jboss.org/wildfly/$WILDFLY_VERSION/wildfly-$WILDFLY_VERSION.tar.gz && \
        tar xf wildfly-$WILDFLY_VERSION.tar.gz && \
        mv /tmp/wildfly-$WILDFLY_VERSION /opt/jboss/wildfly && \
        rm /tmp/wildfly-$WILDFLY_VERSION.tar.gz"
Maldives

Yum Update

Qu’en est-il de l’utilisation de la mise à jour par yum?
Pour mieux illustrer la réponse à cette question, deux images: fedora: 31 et fedora: 32. Ces deux images personnalisées ont la même instruction de mise à jour RUN dnf -y dans leurs fichiers Docker respectifs, mais le résultat est que ce fedora: 31 a une taille de 562MB, tandis que le plus récent fedora: 32 a une taille de 436MB.

Le container Fedora: 31 est plus volumineux car il a fallu télécharger beaucoup plus de fichiers pour la mettre «à jour» avec Fedora: 32. Ainsi, cet exemple démontre que l’exécution des dernières versions des plates-formes existantes (par exemple Fedora 32 au lieu de 31) peut non seulement accélérer la création d’images, mais aussi économiser de l’espace en empêchant l’écriture de fichiers supplémentaires sur une couche intermédiaire.

N’oubliez pas que les «mises à jour» déclenchent de nombreuses modifications de fichiers lors du téléchargement de nouveaux packages rpm et de leur installation. Comme expliqué précédemment, nous ne pouvons pas modifier les couches d’image précédentes, mais nous pouvons au moins nous débarrasser du cache rpm en une seule commande RUN. Avec une petite modification à RUN dnf -y update && dnf clean all dnf clean all </strong> , l’image est réduite de 358,2 Mo à 216,2 Mo (seulement 11,5 Mo de plus que le fedora original: 23 image). Donc, si vous avez besoin de faire une mise à jour, gardez à l’esprit que vous devez également nettoyer par la suite pour libérer autant d’espace que possible.

Article inspiré de Redhat.com
https://developers.redhat.com/blog/2016/03/09/more-about-docker-images-size/

Quels sont les avantages du developpement interne?

Comment puis-je présenter cela à mes managers?

Le développement d’une culture open source présente un certain nombre de gros avantages.

Avantages de l’équipe

Décentralisation de l’expertise

Quand quelqu’un quitte l’entreprise ou l’équipe, l’expertise est perdue. En ayant plus de personnes impliquées dans votre projet, vous décentraliserez cette expertise. La décentralisation de l’expertise permet de se prémunir contre les coûts cachés et croissants en raison du temps de montée en puissance phénoménal nécessaire pour exécuter les modifications d’un corps de code.

Moins de redondance d’effort

Avec une visibilité accrue sur quoi les autres équipes travaillent et les problèmes qu’elles ont résolus, il y aura moins de temps passé à reconstruire la roue. (Mais il en faudra du temps) Le code peut être réutilisé, partagé et modifié par plusieurs parties prenantes. Dans une culture de modularité, de partage et de réutilisabilité, il y a intrinsèquement moins de duplication des efforts. Il y a une prise de conscience accrue des problèmes que les autres équipes avec des piles technologiques comparables résolvent.

Ressources partagées sur les objectifs du projet

Quelle meilleure façon d’obtenir un meilleur productivité de fonctionnalités si il est possible de recevoir des contributions d’autres équipes? Avec une faible barrière à l’entrée et le partage des meilleures pratiques, d’autres au sein des organisations seront encouragés à contribuer car il n’y a pas de frais généraux importants – et de nombreux avantages – à le faire.

Déblocage

En encourageant les autres à contribuer à votre projet, vous leur donnez les moyens de se dissocier de la planification de votre équipe. Permettre à ceux qui ont la capacité de résoudre leurs propres problèmes en utilisant votre code est une chose puissante, un changement de culture important, suite à des années de mise en silot.

Modularité et réutilisation du code

Lors de l’écriture de code pour résoudre un problème très spécifique, le code n’est généralement pas pris en compte dans son propre ensemble de bibliothèques et repose à la place dans le projet parent. Beaucoup de temps est passé à copier / coller et à refactoriser le code pour répondre aux nouvelles exigences. La plupart sinon la totalité de ce temps pourrait être allégée si une approche plus généralisée avait été adoptée dès le début du projet. Il faut donc prendre la mesure du partage et des bon élements à co-élaborer, c’est un chalenge. Attention toutefois il est possible que les avantages de la co-elaborations impliquent de bien prendre en compte le choix client et le client est ici une communautés de développeurs dont il faut garantir la communauté d’intérêt.

Briser les murs

Quelle meilleure façon de faire parler les gens que de travailler ensemble sur des projets? Il y a toujours quelque chose à dire pour les happy hours et autres, mais de vrais liens sont forgés dans les tranchées de l’écriture de code, des discussions de conception et des révisions de code.  Il est important de meyttre en place des rituels en dehors de la structure du travail pour faciliter les échanges.

Avantages individuels

Pollinisation croisée

Comment peut-on mieux faire progresser sa carrière qu’en influent sur plusieurs projets? En passant du temps à contribuer à des projets en dehors de votre domaine spécifique, vous découvrirez des facettes de votre organisation qui autrement seraient rester opaques, vous opuvrez des portes à des opportunités en essayant quelque chose de nouveau.

Plus d’informations sur la «vue d’ensemble»

Un effet secondaire de la pollinisation croisée est d’adopter une vision plus holistique de l’architecture (deux mots galvodées et mal aimés) au sein de votre organisation. Vous pouvez souvent constater que vous avez pas vraiment bien compris ou que vous aviez une hypothèse erronée sur quelque chose avant de fouiller dans l’opérationnel du code et de l’infrastructure associée.

Grande exposition aux autres équipes

Quelle meilleure façon de s’impliquer avec d’autres équipes que de contribuer à leurs projets?
Si votre organisation prend en charge la migration entre équipes, cela vous donne une excellente occasion d’apprendre leur pile technologique, d’examiner les processus et les personnalités de l’équipe. Cela leur donne également une exposition à votre prisme, ce qui est inestimable si vous les interviewer.   

Exposition aux pratiques OSS

Vous n’avez jamais fait de travail open source, il n’y a pas à vous inquiétez, il y a des miriades de gens qui ne l’ont pas fait ou qui crois l’avoir fgait. Préparez-vous à un léger choc culturel ! 
La transparence et la communication sont essentielles à la fois en interne et en open source. Comme l’exposition initiale à cette culture est interne à votre organisation, vous réduisez la portée de l’interaction des parfaits inconnus dans le monde open source à des collègues contrôlés que vous connaissez personnellement ou par réputation. Vous serez généralement plus susceptible de poser des questions à des personnes que vous connaissez plutôt qu’à des inconnus.  

Mises en garde

Comme pour tout, il y a des pièges potentiels et des choses à penser si vous commencez à construire une culture sourcing interne… Il Ne faut pas faire l’éco,nomie de penser que se sera trivial.

Une chaussure ne convient pas à tous

Ce n’est pas parce qu’une communauté open source fait quelque chose qu’elle conviendra à votre équipe ou organisation dans son ensemble. En fait, les communautés open source fonctionnent toutes différemment en fonction de leurs besoins spécifiques. Choisissez ce qui fonctionne le mieux pour vous et les autres membres de votre organisation et ne cherchez pas La Solution universelle.

Changement de culture

Si vous êtes dans une entreprise depuis un certain temps, il y a de fortes chances que la documentation ne soit pas toujours très élevée sur la liste des priorités. Surtout si une serie de mode se sont succédés se concentrant sur la forme en oubliant le fond… Cela peut signifier que vous êtes habitué à travailler dans les limites de votre équipe ou d’un très petit sous-ensemble d’équipes au sein de l’entreprise et que ce mode de fonctionnement est encouragé car une culture du blame régne. Vous êtes aussi habitué aux barrières politiques plus ou moins invisibles entre les équipes et la technologie. Lorsque ces types de pratiques de développement sont courants au sein d’une entreprise, le développement collaboratif est en fait étouffé le changement passera par une prise de concience de cet état de fait par les dirigeants. Les pratiques qui ne se prêtent pas bien au développement collaboratif doivent être identifiées et doivent en quelque sorte changer pour vraiment favoriser un modèle d’approvisionnement interne. La manière dont ce changement est effectué dépend entièrement de vous et des équipes de l’entreprise. La quantité de travail requise variera considérablement d’une entreprise à l’autre. De même, le rythme du changement variera. Il est important de ne pas se décourager tant que des progrès sont réalisés.    

Gestion du fluage de la portée

Au fur et à mesure que « les projets » gagnent du terrain et que d’autres commencent à y contribuer, vous pouvez commencer à utiliser plus de fonctionnalités que vous ne l’aviez jamais imaginé. C’est là que l’importance pour le responsable et les responsables d’être sur la même longueur d’onde devient critique. Si une fonctionnalité ne correspond pas à la vision globale du projet, le responsable ou les responsables ne doivent avoir aucun scrupule à rejeter une proposition de fonctionnalité et expliquer pourquoi la fonctionnalité ne correspond pas à la vision du projet.

PS : Fluagee phénomène de déformation lente d’un métal solide soumis, dans un espace fermé et ne présentant qu’un trou d’échappement, à des pressions fortes et constantes, à une température normale ou supérieure à la normale, et qui le fait se comporter comme un liquide visqueux

En d’autres termes il faudrat vous attendre à un peu de visosité dans l’adoption et sa portée.

Les étapes

À présent, vous avez une idée de la façon dont la mise en œuvre d’une culture de développement collaboratif peut profiter à l’entreprise dans son ensemble. Vous avez maintenant une idée de certains des outils et pratiques nécessaires pour créer une culture source interne. Vous disposez également de quelques munitions pour favoriser l’adoption et la mise en œuvre de certains, sinon de tous, des outils et des pratiques. Développez-en également de nouveaux qui vous aideront à résoudre des problèmes spécifiques à votre organisation. Commençons par abattre ces murs et commençons à travailler ensemble  n’est pas une mince affaire et necéssite de grand changement. Établissons une culture collaborative qui peut demain dépasser la production totale générée par les sociétés de développement de logiciels classiques centrées sur l’équipe! Puis nous reviendrons sur le cycle de replis sur soi et les objectifs court terme plus tard …

Inner Sourcing: la mécanique

Une série de blogs sur le sourcing interne: qu’est-ce que c’est, comment procéder pour le mettre en œuvre et quels sont les avantages et les pièges potentiels?

L’application à l’échelle d’une entreprise d’envergure mondiale et dont les métiers et les enjeux sont divers, régulés demande humilité et prise d’élan.

Les developments in house étaient légions il y a 25 ans, les équipes collaboraient et partageraient au travers de news group Gopher et de serveur de communauté et des dépôts de librairies, de mécanisme évolué de configuration de système complexes de bout en bout. Dés 2001, je me souviens utiliser skype en audio et vidéo entre la France et le Canada avec une ligne RNIS). Il n’y avait pas grand chose et tout le monde inventait et collaborait. C’était avant l’arrivée de la taylorisation et des DSI, avant que les marketeurs ne relookent les techniques et méthodes. Mais trêve de carabistouilles, ce qui hier était bon le redevient aujourd’hui avec des techniques et des outils démocratisés et matures. L’’experience et la mise en commun de toutes les forces pourraient bien devenir un succès. Au delà des compagnies du CAC40 en compte propre, l’initiative gagne l’europe. Il faut donc Oublier la dictature de l’utilisation sur étagère ? Le chemin est long et les embuches nombreuses ..

Quels sont les aspects fondamentaux de la création d’une culture collaborative de sourcing interne dans les limites d’une société avec du code source fermé.

Les piliers d’une culture de développement interne


undefined
Communication ouverte, intersociétés, collaborative et créative
La collaboration, la créativité et l’innovation réelle dépendent d’une bonne communication. Que ce soit par le biais de discussions en personne, de chats en temps réel, de listes de distribution ou de forums, il est important que les mécanismes soient détectables et cohérents.

Détectable – Découverte

Tout le monde dans l’entreprise peut facilement trouver des discussions qui se sont produites dans le passé.

Tous le monde doit utiliser le même mécanisme ou dépendre des intégrations qui regroupent leurs discussions d’équipe hors ligne dans un système commun.

Cohérent

Cela ne signifie pas qu’une seule méthode doit être utilisée.
Différents outils permettent d’atteindre différents objectifs.

Par exemple, Teams est un outil qui doit effectivement être utilisé à la place des e-mails.
Il permet un niveau de découverte beaucoup plus élevé que les e-mails, car toute personne disposant des privilèges requis pour voir le contenu peut trouver des fils de conversation dans les résultats de recherche. Il est également cohérent car tout le monde l’utilise.
A rapprocher de Confluence.

Vous trouverez de bonnes piste de réflexions sur la communication de groupe sur communicationtheory.org

Développement collaboratif inter-entreprises

De nouvelles fonctionnalités sont créées à partir de demandes de fonctionnalités entrées dans un système et sont hiérarchisées. Finalement, elles sont développées, testées et publiées par l’équipe projet sans assistance supplémentaire de l’équipe requérante. Bien que ce processus réponde aux exigences de la relation client, il ne se traduit pas par un partenariat de développement collaboratif.

Toutes les entreprises regorgent de talents inexploités. L’activation et l’encouragement des contributions inter-équipes profitent à l’équipe propriétaire du projet en enrichissant l’ensemble des fonctionnalités de leur produit.

Les contributeurs en profitent également car ils ne sont plus bloqués en attendant qu’une demande de fonctionnalité soit implémentée, ce sui un risque récurrent dans les grosses organisations qui n’ont pas muté à l’échelle.

L’une des habitudes est de nommer les équipes qui consomment leur production comme des clients. Cela doit être redéfini: le terme «client» implique des limites. Les «clients» doivent vraiment être considérés comme des «partenaires».

«Partenaire» implique l’ouverture et l’effort de collaboration. Tout le monde au sein d’une organisation doit être considéré comme un partenaire plutôt que comme un client, une distinction subtile mais importante.

Mise en œuvre et adoption


Malheureusement, la mise en œuvre et l’adoption ne sont pas normatives; une chaussure ne convient pas à tous.
Cependant, quelques pratiques clés peuvent être adoptées pour rendre un environnement de développement plus collaboratif.
Généralement, dans le monde des sources fermées, les équipes ont un propriétaire de produit ou un responsable technique.

Beaucoup de contributeurs, peu de committers

Les autres développeurs de l’équipe sont considérés comme des contributeurs. Pour aller vers une culture collaborative optimale, l’équipe doit évoluer. Bien que le propriétaire du produit ou le responsable technique ne change pas, à moins d’être exposé à un public (potentiellement) beaucoup plus large, le vrai changement s’applique au reste de l’équipe.

Ils deviennent des committers plutôt que des contributeurs. La différence est subtile et donne de meilleurs résultats.

Un responsable technique ou propriétaire de produit est responsable de la vision globale, de l’architecture et de la feuille de route technique du projet. Ils sont chargés de fournir l’approbation finale des demandes de fonctionnalités et des documents de conception ainsi que de l’intégrité globale du projet.

Considérez les différences

Un committer est un acteur clé dans la vision, la feuille de route technique et l’architecture du projet. Le chef de file et tous les commettants doivent tous être sur la même longueur d’onde en ce qui concerne l’orientation et la vision du projet et être en mesure de communiquer cette orientation et cette vision aux autres parties prenantes.


Les committers et les leads ont les autorisations nécessaires pour fusionner leur propre code ainsi que les contributions des contributeurs externes.

Un contributeur contribue au projet, qu’il s’agisse de code, de documentation ou de tests, mais n’a pas accès au code de fusion directement au référentiel canonique ou à la branche principale du projet.

Automatisation


Les projets collaboratifs les plus réussis sont ceux qui maximisent l’automatisation. Mon mntra no code is a bug.

Il ne devrait pas être plus difficile de mettre en place et d’exécuter un projet de manière cohérente entre les anciens combattants et les nouveaux arrivants que «make build», «make install», «make run», etc. Rien de plus ne devrait être exigé. Les projets devraient également disposer de pipelines de construction et de test entièrement automatisés, permettant aux nouveaux contributeurs d’avoir confiance dans leurs soumissions avant la fusion du code. Les Infrastructures Sont en inclure à l’équation.

Les meilleures pratiques


En ayant un ensemble de bonnes pratiques bien défini à l’échelle de l’entreprise, vous favorisez la cohérence. La cohérence abaisse la barrière d’entrée pour les contributeurs de sauter d’un projet à l’autre. Dans la mesure du possible, les meilleures pratiques devraient être basées sur les meilleures pratiques open source, ce qui permet de garantir que:

  1. S’ils ont contribué à des projets open source et connaissent les meilleures pratiques, les nouveaux employés ont une barrière d’entrée plus faible.
  2. La barrière d’entrée pour l’inspection des dépendances (débogage, contributions, etc.) est abaissée.


Tout le monde n’adoptera pas les meilleures pratiques de la communauté open source pour son équipe. Utilisez ce qui vous convient.


Les meilleures pratiques à considérer pour l’adoption sont spécifiques à:

Configuration du projet (structure de répertoires, fichiers communs, etc.)
Utilitaires de test et d’analyse statique
Bibliothèques couramment utilisées
Normes de codage partagées

En assurant la cohérence entre les projets et les équipes dans ces domaines, vous contribuez à minimiser les frais généraux pour les contributeurs potentiels.
Un développeur travaillant sur un projet en Python devrait pouvoir passer à un autre projet Python appartenant à une autre équipe avec peu ou pas de frais généraux.

Marketing et communication

Le code est écrit. Le code est déployé. Code pourrit. Si personne d’autre ne le sait, personne ne le maintiendra activement.

«Construisez-le et ils viendront»
ne s’applique pas au code.

C’est plus « Construisez-le, commercialisez-le et essayez de construire une communauté active autour de lui »

C’ est un peu plus proche de ce qui est réellement requis pour un projet collaboratif réussi.

Exemple concret:

Docker. S’agit-il de la première technologie de conteneurisation? Nan.
Était-ce le mieux commercialisé et le plus accessible? Absolument!
Une méthode de communication cohérente est un pilier fondamental du succès de l’approvisionnement interne.

Sans une méthode de communication cohérente qui transcende les barrières de l’équipe, l’efficacité des efforts de sourcing interne est intrinsèquement limitée par un manque de transparence et de communication ouverte.
Lors de l’évaluation des outils de collaboration, il est important de définir les problèmes de communication que vous essayez de résoudre:

  • Allez-vous principalement discuter de la conception et de l’architecture du système?
  • Avez-vous principalement besoin de canaux pour faciliter la lutte contre les incendies des opérations?

Il est très important de définir les problèmes réels que vous essayez de résoudre (et non les conséquences de vos biais), car certains outils et méthodes peuvent en fait dégrader votre capacité à communiquer efficacement en tant que groupe.

Pour plus d’informations à ce sujet, voir http://communicationtheory.org/creativity-in-groups/.

VCS<>DVCS

VCS (c’est-à-dire Perforce, un système de contrôle de version centralisé), n’offre généralement pas les mêmes fonctions prêtes à l’emploi qui facilitent un modèle de sourcing interne que le DVCS (c’est-à-dire git, un système de contrôle de version distribué).
Bien sûr, vous pouvez sauter à travers des cercles dans certains VSC pour imiter les propriétés de DVCS (par exemple, configurer des cycles de révision de code ou verrouiller des branches), mais les flux de travail DVCS sont beaucoup plus adaptés aux modèles de développement et d’intégration flexibles de contributeurs externes (par exemple, flux de demande fork et pull à l’aide de GitHub).
Non seulement cela, mais prêt à l’emploi avec DVCS, les projets sont destinés à être divisés en référentiels distincts, chacun pouvant avoir une liste de committers entièrement indépendante des autres projets. Avec cette séparation claire des contrôles administratifs entre les projets, il est beaucoup plus facile d’adopter des contributeurs externes avec git qu’avec VCS.

Documentation

Une documentation de haute qualité doit être d’une importance capitale pour l’équipe.


Ce devrait être un citoyen de première classe, tout aussi important que le code deployé. Elle rend ou brise durablement votre capacité à contribuer au projet. Plus le développeur ou les documents d’intégration sont incomplets, plus la barrière d’entrée est élevée. Plus les documents utilisateur et les références d’API sont incompletes, plus il est difficile pour les gens d’intégrer efficacement le projet.
De manière optimale, chaque projet doit avoir une répartition entre les documents développeur et utilisateur.
Les premiers adaptés spécifiquement aux développeurs du projet et les seconds permettent aux gens d’utiliser simplement le projet.

Cette répartition permet aux utilisateurs et aux développeurs de se concentrer uniquement sur ce qui est le plus important pour eux. La documentation doit être générée à partir du code et des commentaires de code là où il est logique de préserver l’intégrité de la documentation. Les développeurs sont beaucoup plus abituer à mettre à jour les commentaires en ligne avec leur code que de mettre à jour les documents externes. Une documentation périmée peut être tout aussi mauvaise, sinon pire, qu’un manque global de documentation, car elle peut conduire le lecteur sur le mauvais chemin.

Ceci est délicat. Il s’agit d’une approche différente de éflexion et de réalisation des opportunités de généralisation, de modularité et de réutilisabilité lors de la conception des systèmes. Généralement, une réaction immédiate d’un développeur est «Hé, j’ai besoin de la fonctionnalité X dans le projet Y. Je vais juste plonger dans le code. « 
Même si une conception complète est effectuée, c’est généralement pour un projet spécifique.
Dans les deux cas, vous vous retrouvez avec du code spécifique au projet qui n’est pas modulaire, extensible ou réutilisable.

Solutions généralisées


Les solutions généralisées prennent du temps à concevoir, à mettre en œuvre et à tester.
Avoir la capacité de reconnaître où vous faites des hypothèses et de valider ce sont les bonnes à faire ou à déterminer une solution alternative sans hypothèses peut être une chose difficile à faire et necessite beaucoup d’essais et d’erreurs, c’est là que le culture no Blame est importante, il faut savoir expérimenter pour apprendre, inutile de blamer un bébé qui aprend à marcher, c’est la maitrise de ses chutes successives qui lui permettra un jour d’avancer avec assurance.

Cependant, à long terme, penser aux problèmes et développer des solutions généralisées ne profite pas seulement à vous, mais aux autres au sein de votre organisation. Au lieu de copier / coller et de refactoriser, le code modulaire et les bibliothèques peuvent être réutilisés par plusieurs équipes et étendus. Attention toutefois au risque de forte dépendance.

Important: Ce n’est pas une règle stricte!
Ce ne sont que quelques-uns des outils et des meilleures pratiques adoptés par les projets open source afin de créer une culture de développement ouverte et collaborative.

Beaucoup d’autres peuvent être découverts lorsque les équipes commencent à travailler avec plus de collaboration.
De plus, toutes les implémentations de ces concepts ne seront pas également répartis entre les équipes et les organisations, et ils ne doivent pas non plus l’être. Ce qui est important, c’est que les concepts soient appliqués et que des interfaces cohérentes soient fournies entre les organisations afin d’avoir la plus faible barrière d’entrée possible pour les nouveaux contributeurs et d’atténuer autant que possible la duplication des efforts.

Dans le prochain article de cette série, nous verrons quels sont les principaux avantages de la culture de sourcing interne et évidement les pièges potentiels à connaître.

La barrière de Corail

No-Ops _ Scary word ? C’est quoi et pourquoi ?

If a startup launches with a NoOps model from the beginning, they have the potential of staying lean for longer. The saved resources can be put towards other aspects of business growth, like marketing.

This concept involve maturity and in fact a very good way to transform huge compagnies, too able to manage efficiently a transformation at scale with respect of culture.

That means also that all Ops must involve to make and operate template as the code and be able to push update the plateforme in secure way. Behind the scene It peoples build automation infrastructure and scripts to be able to update zero-day , increase monitoring and ability to be aline why the business.

Challenges of NoOps

The ideas of the NoOps movement are sound, in fact NoOps itself is not without its challenges. The idea of NoOps is based on believe that automation can handle every use case, and eliminates the need for any human intervention.

But is not true! Many organizations forget is that containerized services can still fail and need maintenance. Selft care Don’t means microservices-based don’t need an emergency response team in place during the nights to bring up any container that had crashed (which happened more often you thought).

Although you have to consider the element of failure which probably needs human intervention, NoOps is still able to remove the most need for human intervention — DevOps. In fact Ops have to maintains improve and fix path upgrade the service they provide.

What Are the Benefits of NoOps?

There are many benefits to be gained by adopting a NoOps model. The first of which is that it maximizes development time.

This process is further sped up by providing many preconfigured templates for running a specific type of application, like a apache, Node.js microservice,appache, iam module. This means no time is wasted on configuring and securing your application deployment as everything is pre-configured by the template. This kind of easy-to-use experience is also referred to as Developer Experience (DX).

This also implies that hitting milestones will be easier and quicker. With this sped-up development time, companies create opportunity to generate revenue sooner, since the software can be completed ahead of schedule.
Furthermore, NoOps allows developers and operations teams to do what they do best: develop and operate.

Both departments of a business can double down and become more productive thanks to the extra focus and time gained by this continuous development model.

So What is NoOps?

NoOps is a new development approach that involves relieving developers of needing to constantly work with operations members, speeding up deployment time, testing, and workflow.

It stems from the popular model of developers and operations teams working closely called DevOps.

DevSecOps A Complete Guide – 2019 Edition (English Edition)

Instead of working together, service providers give development teams the proper cloud infrastructure, patching, backups, and resources to work on their own. This model is highly accurate on a cloud path. Preferably to have to get 1000 équipes that should apprehend total process and ops constraints, you can do it for web hosting with an endpoint to streams, data, and so on.

The programmers no longer require feedback and approval during development, and can operate completely independently.

This also allows the operations department to focus on what they do best: project management, talent acquisition, provide a save model and update, patch, secure , optimize cost the solution used, and so on.

However, NoOps is typically most beneficial for startups that begin with this continuous development model. It is much more difficult to switch to NoOps when you have existing environments, pipelines, and deployment procedures.

As an example, NoOps seems no work well for enterprises that are stuck with a monolithic legacy application. In fact its pretty false, ops and dev already use to not speak together. This would necessary require a re-write of most of their codebase and have a to make it fit with the NoOps ideology but dev-ops is not really a good way. In this case, the no-ops have to federate and propose platform build in this model, auto resilient, including system security and infrastructure build. It operation include depot and template maintenance use as starter buy dev team. That means Ops strink but Ops are main actors and update the platform and rebuilt all applications based on last master depot each-time its needs.

Additionally, if a company adopts NoOps later in the business cycle, they may have to shrink the size of their operations team and upskill. In other way in fact, today most of the legacy is not really uptodate and is a vulnerability and this approach seems a way to reduce the gap. Stop to use ours foots, use your brain.

PROJET ARTHEMIS: Thriller scientifique
Rue de Rivoli post covid-19 un matin.

My Thoughts

Continuous development model of any form in general is on the way. If you’re one of them, stop dreaming deployment and start looking forward to it by taking advantage of NoOps. Because share too many constraints and points of view are challenging, you have to simplify the schema and mutualized the solution and ingeniously on few services and fully automated it from birth to death, with observability. Stop thinking if it depends on the application, pay per use makes everybody able to get a autocorrect infrastructure, and the small need helps to make bigger for huge needs at a reasonable cost.

NoOps is an excellent choice when scaling, sharing is possible. Optimizing development and automating common procedures.

NoDev NoOps NoIT: Principles governing the ideology, methodology and praxeology of informed IT decision making.

This approach was created out of the DevOps model with the goal of further automation and faster rollouts.

It’s most suitable for companies at the beginning of the path, as it’s more challenging to reshape an entire business once a model like DevOps is already in place. So don’t miss the good way!

Copy or contact a NoOps service provider if you believe this is the direction you’d like to take your development team and start reaping the benefits today.

Somewhat we need to copy dev con use toolchain to push their codes. Ops automation builds, maintain self-care platform able to rebuild all platform each time is need base on gitops and gitcode on the master branched.

DevSecOps Complete Self-Assessment Guide (Anglais)