Blog

Des articles sur l’industrialisation, la culture IT, le DevOps, la qualité…

Le principe de Liskov, ou ce que ça veut dire d'être un enfant

En programmation orientée objet, les participants de l’environnement sont représentés comme des encapsulations autonomes décrivant complètement les attributs et les comportements du sujet. Ainsi, sans que ce soit un prérequis absolu à la POO, il est pratique de faire hériter des objets d’autres pour éviter la répétition ; on dit alors que l’objet A est fils de l’objet B. Seulement voilà, il arrive qu’en réalité A n’est pas vraiment un fils de B. Comment reconnaître ce cas, en quoi c’est grave et comment régler le problème ?

    09-09-2022

    6min

    La consommation mémoire de cat

    Combien cat consomme en mémoire vive ? Cette consommation croît-elle avec la taille du fichier ? Ces questions peuvent paraître triviales, mais posez-vous la question de la fréquence où vous utilisez cet outil… et la fréquence où vous vous interrogez sur le poids du fichier que vous faites ingérer à cat. On ne se pose tout simplement pas la question, précisément parce que l’outil ne bronche pas ; tout passe, et sur toute machine. C’est génial, mais alors pourquoi ?

      02-09-2022

      4min

      Oubliez ce que vous pensez savoir sur semver

      Il existe une diversité de systèmes de numérotation des logiciels, du plus simple (n+1) au plus exotique (suivant les décimales de Pi). Dans le lot, semver décrit une numérotation en trinôme M.m.p où M représente des changements non rétro-compatibles, m représente des changements rétrocompatibles et p représente des correctifs. Puisque chaque système vise à bien communiquer aux consommateurs, semver semble la solution parfaite.

      Semble seulement, car en fait cet idéal de communication parfaite n’est pas atteint ; le problème est la nature d’un changement rétro-incompatible. Dans la théorie, une rupture de compatibilité est simple : il s’agit d’une possibilité enlevée au consommateur.

        26-08-2022

        3min

        Configurer un routage statique entre deux réseaux

        Une architecture réseau digne de ce nom applique le principe de moindre privilège : chaque réseau est de préférence isolé et spécifique à un usage. Mais parfois, il existe des serveurs à mi-chemin entre deux réseaux, comme par exemple un serveur web1 devant accéder à son propre réseau « web », mais également au réseau « backend ». Dans ce cas, nous devons mettre en place un routage.

        Pour un contexte aussi simple, le routage le plus rapide et le plus pratique est le routage statique. Pour en créer un de toute pièce, imaginons donc que nous ayons une topologie de réseau comme suit :

        Separated networks

          19-08-2022

          4min

          Transférer un tablespace MySQL chiffré au repos sur un autre serveur

          Si vous avez lu le billet évoquant le chiffrement at rest, une question a dû vous traverser l’esprit : si une table chiffrée ne permet pas sa recomposition, comment la migrer légitimement sur un autre serveur ?

          Afin de garantir l’intérêt du chiffrement au repos et se prémunir d’un accès au disque, un accès logique au serveur MySQL est nécessaire à tout transfert. La commande MySQL qui permet cet export est :

          FLUSH TABLE utilisateurs FOR EXPORT
          

          Grâce à elle, nous allons pouvoir répéter le processus du billet précédent (structure -> discard -> import), à la différence que nous avons désormais des informations clés pour poursuivre.

            12-08-2022

            3min

            Comment ça fonctionne, le streaming adaptatif ?

            Dans le billet Qu’est-ce-que c’est le streaming à débit adaptatif ? nous avons vu en quoi l’assouplissement des contraintes de qualité était primordial pour l’universalité du streaming.

            Rentrons maintenant dans la technique. Dans le streaming simple, le fichier est découpé en segments (ou chunks) de telle sorte que le fichier global n’a pas besoin d’être téléchargé entièrement pour commencer la lecture, uniquement le segment. Ce sont ces éléments qui sont placés dans le buffer.

              05-08-2022

              3min

              Qu'est-ce-que c'est le streaming à débit adaptatif ?

              … et pourquoi c’est nécessaire ?


              La qualité de nos fichiers multimédia augmente avec le temps, c’est indéniable. Nous étions à 480p au début d’Internet, à 720p il y a peu, et désormais en 4k. Forcément, le poids augmente en conséquence : la prochaine évolution, la 8k, pèse un poids estimé à 589Mo par minute.

              Nous savons tous intuitivement comment ces fichiers multimédia se lisent sur Internet : la vidéo se bufferise et si le préchargement avance plus vite que la lecture de la vidéo, tout roule. Sinon ça mouline :

                29-07-2022

                2min

                Normaliser sa configuration là où le templating n'existe pas

                Lorsqu’on produit une pile technique avec plusieurs environnements, nous devons variabiliser les configurations de nos outils pour différencier les contextes d’exécution. Pour cela, comment procède-t-on ? Est-on condamné à créer autant de fichiers que d’environnements (ex: mysql.{local,testing,prod}.cnf) pour ne téléverser et n’exploiter que le bon ?

                Ça pose des problèmes évidents, dont le plus grave est que vous ne verrez que le fichier X est mauvais qu’au moment de l’utiliser, donc après son déploiement, pas avant.

                  15-07-2022

                  2min

                  Mettre en place le chiffrement au repos de MySQL

                  Dans l’article précédent, nous avons vu qu’une table non chiffrée « at rest » pouvait être considérée comme librement accessible : la facilité avec laquelle nous l’avons piraté était insolente.

                  Chiffrer une base de données MySQL 8 au repos signifie que le chiffrement se fait de façon totalement transparente : les données en clair ne sont qu’en RAM, les fichiers sur le disque sont chiffrés avant écriture, et déchiffrés avant lecture. La consommation habituelle reste inchangée.

                    17-06-2022

                    3min

                    Comment exploiter les tables d'un serveur MySQL non sécurisé

                    En tant que base de données, MySQL est un composant sensible d’une pile technique, il est donc important de le protéger des attaques. Le chiffrement au repos (dit aussi « data at rest » ou « Transparent Data Encryption ») est l’un de ces mécanismes de protection, permettant de se prémunir d’un vol de disque.

                    Nous verrons bientôt comment mettre en place ce chiffrement au repos d’un serveur MySQL, mais avant cela, voyons plutôt pourquoi cette protection est importante. Pour ce faire, nous allons nous mettre dans la peau d’un pirate informatique attaquant un serveur MySQL 8.

                      10-06-2022

                      4min