Articles

Architecture TDD pour Services

Web

L’architecture TDD pour les services web est une méthode de développement qui permet de construire des applications robustes et fiables. Elle offre une grande flexibilité et des tests automatisés.

Au-delà des tests unitaires

It doesn’t have to be this way. By leveraging the same TDD techniques used for unit tests, developers can create tests that span services and data stores, while still providing the same level of confidence and quality. Such tests can be written in the same language as the codebase, using the same tools, and can be managed as part of the same process. This approach also provides a more complete view of the system under test, allowing for more comprehensive testing, earlier detection of errors, and a better overall development process.

Au-delà du test unitaire

Le développement piloté par les tests (TDD) est une technique bien reconnue pour améliorer le processus de développement, que ce soit pour le développement de nouveau code ou pour la correction de bogues. Tout d’abord, écrivez un test qui échoue, puis faites-le fonctionner de manière minimale, puis faites-le fonctionner correctement ; rincez et répétez. Ce processus maintient l’accent sur le travail à valeur ajoutée et tire parti du processus de test comme un défi pour améliorer la conception testée plutôt que de vérifier uniquement son comportement. Cela améliore également la qualité de vos tests, qui deviennent une partie plus précieuse du processus global plutôt qu’une pensée après coup.

Le discours commun sur le TDD tourne autour des unités relativement petites et en cours de traitement, souvent d’une seule classe. Cela fonctionne très bien, mais qu’en est-il des unités «livrables» plus importantes ? Lors de l’écriture d’un microservice, ce sont les services qui sont primordiaux, tandis que les différentes constructions d’implémentation sont simplement des outils pour atteindre cet objectif. Le test des services est souvent considéré comme étant hors du champ d’un développeur travaillant dans une seule base de code. Ces tests sont souvent gérés séparément, peut-être par une équipe distincte, à l’aide d’outils et de langages différents. Cela rend souvent ces tests opaques et de moins bonne qualité et ajoute des inefficacités en nécessitant un commit/deploy ainsi qu’une coordination avec une équipe distincte.

Cela n’a pas à être ainsi. En utilisant les mêmes techniques TDD utilisées pour les tests unitaires, les développeurs peuvent créer des tests qui couvrent les services et les magasins de données, tout en fournissant le même niveau de confiance et de qualité. Ces tests peuvent être écrits dans le même langage que la base de code, à l’aide des mêmes outils, et peuvent être gérés dans le cadre du même processus. Cette approche fournit également une vue plus complète du système sous test, permettant un test plus complet, une détection plus précoce des erreurs et un meilleur processus de développement global.

Source de l’article sur DZONE

Réduire la consommation CPU due à la collecte des déchets

La consommation CPU peut être réduite grâce à des méthodes innovantes pour la collecte des déchets. Découvrez comment cela est possible !

## Les cinq stratégies efficaces pour optimiser la performance des applications et réduire les coûts d’hébergement

Tous les langages de programmation modernes tels que Golang, Node.js, Java, .NET, Python, etc. effectuent une collecte automatique des déchets afin de supprimer les objets non référencés de la mémoire. Bien que cette collecte automatique des déchets offre un certain confort aux développeurs, elle peut avoir un coût : une consommation excessive du processeur. Les cycles constants consacrés à la collecte des déchets entraînent deux effets secondaires :

  • Dégradation des performances de l’application : étant donné que les cycles du processeur sont constamment dirigés vers la collecte des déchets, les performances globales de l’application seront affectées.
  • Augmentation des coûts d’hébergement cloud : cela augmente vos coûts d’hébergement cloud. Dans le but de réduire les coûts d’hébergement cloud, Uber a récemment ajusté sa collecte des déchets pour réduire l’utilisation du processeur.
  • Dans cet article, nous nous penchons sur cinq stratégies efficaces qui peuvent aider à atténuer ce problème, permettant aux développeurs d’optimiser les performances de l’application et de limiter l’impact sur les dépenses d’hébergement.

    Pour optimiser les performances d’une application et réduire la consommation du processeur liée à la collecte des déchets, il existe plusieurs stratégies. La première consiste à utiliser un logiciel spécialisé pour gérer la mémoire. Ces outils surveillent la mémoire et libèrent les objets non référencés avant que le système ne le fasse automatiquement. Cela permet aux applications de fonctionner plus rapidement et plus efficacement.

    Une autre stratégie consiste à utiliser des outils pour profiler le code et identifier les objets qui sont stockés dans la mémoire et qui ne sont plus utilisés. Ces outils peuvent également aider à trouver des bogues qui peuvent entraîner une fuite de mémoire et à éliminer les objets non référencés.

    Enfin, il est possible d’utiliser des outils pour surveiller le comportement des applications et analyser leur utilisation de la mémoire. Ces outils peuvent aider à identifier les applications qui consomment beaucoup de mémoire et à prendre des mesures pour réduire leur consommation. Cela permet aux applications de fonctionner plus rapidement et plus efficacement.

    Source de l’article sur DZONE

    Exécuter mes applications Go de manière sans serveur - Partie 2

    Dans cet article, je vais vous montrer comment exécuter vos applications Go sans serveur, en utilisant des services cloud et des outils de développement. Partie 2 de cette série de tutoriels !

    ## La première partie de cette série vous a présenté le AWS Lambda Go API Proxy et comment ses implémentations d’adaptateur spécifiques au cadre / package (pour gorilla / mux, echo et net / http) vous permettent d’exécuter des applications Go existantes en tant que fonctions AWS Lambda frontées par Amazon API Gateway.

    Le premier volet de cette série vous a présenté le AWS Lambda Go API Proxy et comment ses implémentations adaptées au framework/package spécifique (pour gorilla/mux, echo et net/http) vous permettent d’exécuter des applications Go existantes en tant que fonctions AWS Lambda frontées par Amazon API Gateway. Si vous ne l’avez pas encore fait, je vous encourage à y jeter un coup d’œil pour avoir une compréhension de base du AWS Lambda Go API Proxy.

    Le AWS Lambda Go API Proxy prend également en charge Gin, qui est l’un des frameworks web Go les plus populaires ! Ce billet de blog suivant démontrera comment prendre un service de raccourcissement d’URL existant écrit à l’aide du framework Gin et le faire fonctionner en tant que fonction AWS Lambda sans serveur. Au lieu d’utiliser AWS SAM, nous allons changer un peu les choses et utiliser le AWS CDK pour déployer la solution.

    Pour cela, nous allons créer une base de données DynamoDB pour stocker les URL raccourcies et une fonction Lambda pour gérer les requêtes entrantes. La fonction Lambda sera appelée par Amazon API Gateway et répondra aux requêtes GET et POST. La fonction Lambda utilisera la base de données DynamoDB pour stocker et récupérer les URL raccourcies. Une fois la base de données configurée et la fonction Lambda créée, nous allons utiliser le AWS CDK pour déployer le tout sur AWS.

    Source de l’article sur DZONE

    4 Règles pour Diriger des Équipes Dev en Période Économique Difficile

    Diriger une équipe de développement en période économique difficile peut être un défi. Voici 4 règles pour vous aider à y parvenir !

    Une perspective peu reluisante pour de nombreuses entreprises technologiques en 2023

    ## Une perspective peu reluisante pour de nombreuses entreprises technologiques en 2023

    Michael Stahkne explained that communication should be frequent and transparent. He believes that “it’s important to be honest and open about the challenges the company is facing and the decisions that need to be made.” This helps to create a sense of trust and understanding between the leadership and the team.

    Carolyn Vo agreed, adding that “it’s important to be clear about the decisions you’re making and why you’re making them.” She also suggested that leaders should “take the time to explain the context of the decisions, so that everyone understands why they are being made.”

    2. Utiliser des bases de données pour prendre des décisions éclairées

    Les dirigeants doivent prendre des décisions en temps de crise et il est important qu’ils disposent des informations nécessaires pour prendre des décisions éclairées. Lewis Tuff a expliqué que les bases de données sont un outil précieux pour les leaders car elles leur permettent d’accéder à des informations précises et à jour.

    Il a expliqué que les bases de données peuvent être utilisées pour collecter des données sur les performances des employés et les tendances du marché, ce qui peut aider les dirigeants à prendre des décisions plus éclairées. Il a également souligné que les bases de données peuvent être utilisées pour surveiller les performances des produits et des services, ce qui peut aider les dirigeants à prendre des décisions plus judicieuses.

    3. Faire preuve de flexibilité et d’adaptabilité

    Les dirigeants doivent être flexibles et adaptables en temps de crise. Carolyn Vo a expliqué que les dirigeants doivent être prêts à modifier leurs plans en fonction des circonstances changeantes. Elle a souligné que les dirigeants doivent être prêts à s’adapter aux changements et à prendre des mesures rapides pour s’assurer que l’entreprise reste compétitive.

    Michael Stahkne a également souligné l’importance de la flexibilité et de l’adaptabilité en temps de crise. Il a expliqué que les dirigeants doivent être prêts à prendre des risques calculés et à s’adapter aux changements du marché et à l’environnement concurrentiel. Il a également souligné l’importance d’utiliser des bases de données pour prendre des décisions éclairées et de se concentrer sur la recherche de nouvelles opportunités pour l’entreprise.

    Source de l’article sur DZONE

    Mise en œuvre de la découverte de services avec Spring Cloud (2e partie)

    Dans cette deuxième partie, nous allons voir comment mettre en œuvre la découverte de services avec Spring Cloud. Préparez-vous à apprendre comment configurer et déployer vos services !

    Partie 2 de l’Article Spring Cloud: Comment Implémenter le Service Discovery (Partie 1)

    Dans la première partie de cet article, Spring Cloud: Comment implémenter le service de découverte (Partie 1), nous avons vu les bases du Service Discovery dans le contexte de Spring Cloud. Nous avons vu que la composante Netflix OSS Eureka est toujours le choix principal. Dans ce post, nous allons discuter de certains sujets supplémentaires liés à Eureka, tels que :

    API Java Client

    API REST

    Sécuriser le serveur de découverte et les services clients

    Combiner le Service Discovery avec la Configuration Distribuée

    Service Discovery : API Java Client

    Dans les exemples de la première partie de cet article, l’enregistrement et le récupération des fonctionnalités étaient exécutés sous le capot et nous avons seulement vu les résultats des tests de l’architecture entière en appelant un point de terminaison REST client. Il existe également une manière d’interagir avec l’API Eureka de manière programmatique, en utilisant des appels de méthodes Java. Un choix possible serait d’utiliser la classe EurekaClient. Par exemple, si nous voulons obtenir toutes les instances d’un service identifié par un ID particulier, nous pourrions écrire le code suivant, supposant que nous avons un client implémenté comme une application Spring Boot exposant des services REST :

    EurekaClient eurekaClient = new EurekaClient.Builder().build();

    Applications applications = eurekaClient.getApplications(« SERVICE_ID »);

    List instances = applications.getInstances();

    Une fois que nous avons obtenu la liste des instances, nous pouvons parcourir cette liste et récupérer les informations dont nous avons besoin, telles que l’adresse IP et le port sur lesquels le service est en cours d’exécution. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance.

    Service Discovery : API REST

    Eureka fournit également une API REST qui peut être utilisée pour interagir avec le serveur de découverte. Cette API est très similaire à l’API Java client, mais elle est plus adaptée aux scénarios où nous devons interagir avec le serveur de découverte depuis un environnement non-Java ou depuis un script. Par exemple, si nous voulons récupérer toutes les instances d’un service spécifique, nous pouvons appeler l’URL suivante :

    http://:/eureka/apps/

    Cette URL retournera une réponse JSON contenant toutes les informations relatives à ce service et à ses instances. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance, en appelant des URL spécifiques.

    Service Discovery : Sécurisation du serveur et des services clients

    Enfin, il est important de noter que le serveur Eureka et les services clients doivent être sécurisés pour éviter toute attaque malveillante. Par exemple, nous pouvons configurer Eureka pour utiliser HTTPS pour sécuriser les communications entre le serveur et les clients. Nous pouvons également configurer Eureka pour authentifier les clients et leurs requêtes en utilisant un système d’authentification basé sur des jetons. De plus, il est possible de configurer Eureka pour

    Source de l’article sur DZONE

    Gérer l'accès avec Azure Bastion et Azure PIM

    Gérer l’accès à vos ressources cloud de manière sécurisée et efficace avec Azure Bastion et Azure PIM : découvrez comment ces services peuvent vous aider !

    Comment Faire Fonctionner le Gestionnaire d’Accès Privilégié (PAM) d’Azure pour une Application Cloud?

    Azure PAM is a service that helps organizations protect their cloud applications from cyber risks by monitoring, detecting, and preventing unwanted privileged access. It works by providing users with a secure way to access their applications, and it also helps organizations maintain control over who has access to what.

    Comment Azure PAM Fonctionne-t-il pour une Application Cloud?

    Azure PAM est une solution qui peut être configurée pour s’adapter à votre application cloud. Il est conçu pour fournir un contrôle granulaire des accès privilégiés et des autorisations, ce qui permet aux organisations de mieux gérer leurs applications et de réduire le risque de compromission.

    Le processus de configuration d’Azure PAM commence par la définition des rôles et des autorisations appropriés pour chaque utilisateur. Une fois que ces rôles et autorisations sont définis, Azure PAM peut être configuré pour surveiller et détecter tout accès non autorisé ou non désiré. Une fois que ces accès sont détectés, Azure PAM peut alors prendre des mesures pour les bloquer ou les limiter.

    Une fois que la configuration est terminée, Azure PAM peut être testée pour s’assurer qu’elle fonctionne correctement et qu’elle offre la protection nécessaire. Les tests peuvent inclure la vérification des autorisations, le test de la détection des accès non autorisés et le test de la prise en charge des protocoles de sécurité. Ces tests peuvent être effectués manuellement ou automatiquement, selon les besoins de l’organisation.

    Enfin, une fois que tous les tests sont terminés et que toutes les fonctionnalités sont validées, Azure PAM peut être mis en production et utilisé pour protéger l’application cloud. En plus de fournir une protection contre les risques informatiques, Azure PAM peut également aider les organisations à améliorer leurs processus de gestion des identités et à réduire leurs coûts liés à la sécurité.

    Source de l’article sur DZONE

    Ne Pas Utiliser de Credentiels dans une CI/CD Pipeline

    Les pipelines CI/CD sont des outils puissants, mais il est important de ne pas utiliser de credentiels sensibles pour éviter les risques de sécurité.

    Comment Donner un Accès Sécurisé à des Services Tiers Sans Utiliser de Clés Secrètes

    OpenID Connect (OIDC) is a protocol that allows users to authenticate themselves with an external identity provider, such as Auth0 or Okta. It works by exchanging an access token between the identity provider and the application. This token is cryptographically signed and contains a set of claims about the user, such as their name, email, and other attributes. The application can then use this token to authenticate the user and grant them access to resources.

    En tant qu’utilisateur qui construit et maintient des infrastructures cloud, j’ai toujours été méfiant du point de vue de la sécurité lorsque je donne un accès à des services tiers, tels que les plateformes CI/CD. Tous les fournisseurs de services prétendent prendre des précautions strictes et mettre en œuvre des processus infaillibles, mais les vulnérabilités sont toujours exploitées et les erreurs arrivent. Par conséquent, ma préférence est d’utiliser des outils qui peuvent être hébergés en interne. Cependant, je ne peux pas toujours avoir le choix si l’organisation est déjà engagée auprès d’un partenaire externe, tel que Bitbucket Pipelines ou GitHub Actions. Dans ce cas, pour appliquer un IaC Terraform ou déployer un groupe d’échelle automatique, il n’y a pas d’autre choix que de fournir à l’outil externe une clé secrète API, n’est-ce pas ? Faux ! Avec la prolifération de OpenID Connect, il est possible de donner aux plates-formes tierces un accès basé sur des jetons qui n’exige pas de clés secrètes.

    Le problème avec une clé secrète est qu’il y a toujours une chance qu’elle soit divulguée. Le risque augmente plus elle est partagée, ce qui se produit lorsque des employés quittent et que de nouveaux arrivent. L’un d’entre eux peut le divulguer intentionnellement ou ils peuvent être victimes d’une hameçonnage ou d’une violation. Lorsqu’une clé secrète est stockée dans un système externe, cela introduit un tout nouvel ensemble de vecteurs de fuite potentiels. Atténuer le risque implique de changer périodiquement les informations d’identification, ce qui est une tâche qui n’ajoute pas de valeur perceptible.

    OpenID Connect (OIDC) est un protocole qui permet aux utilisateurs de s’authentifier auprès d’un fournisseur d’identité externe, tel qu’Auth0 ou Okta. Il fonctionne en échangeant un jeton d’accès entre le fournisseur d’identité et l’application. Ce jeton est signé de manière cryptographique et contient un ensemble de revendications sur l’utilisateur, telles que son nom, son adresse électronique et d’autres attributs. L’application peut ensuite utiliser ce jeton pour authentifier l’utilisateur et lui donner accès aux ressources.

    Les jetons OIDC sont une alternative intéressante aux clés secrètes pour donner aux plates-formes tierces un accès limité aux ressources cloud. Les jetons sont générés par le fournisseur d’identité et peuvent être limités à une durée de vie spécifique et à un ensemble de revendications spécifiques. De plus, ils peuvent être révoqués à tout moment par le fournisseur d’identité si nécessaire. Les jetons OIDC sont donc une solution plus sûre et plus flexible pour donner aux plates-formes tierces un accè

    Source de l’article sur DZONE

    De zéro à héros: Apprendre Web3 avec Infura et Python

    Devenez un héros du Web3 en apprenant à utiliser Infura et Python ! Découvrez comment créer des applications décentralisées avec ces outils puissants.

    Comment démarrer avec le Web3

    Pour commencer

    Même si je code depuis la fin des années 90, je suis vraiment un débutant complet dans le monde de Web3. Je ne suis pas un expert, donc je n’essaierai pas d’expliquer les fondamentaux. Il y a beaucoup de guides et de tutoriels de contenu excellents là-bas. Je suggère de commencer par la documentation Infura, qui est très complète et compréhensible.

    Comprendre les prérequis

    Avant de commencer à développer des applications Web3, il est important de comprendre les prérequis. Tout d’abord, vous devez comprendre les principes fondamentaux de la blockchain et des crypto-monnaies. Ensuite, vous devez comprendre le protocole Ethereum et la plate-forme Ethereum. Enfin, vous devez comprendre le langage de programmation Solidity et le framework Web3.js. Une fois que vous avez compris ces concepts, vous pouvez commencer à développer des applications Web3.

    Test

    Une fois que vous avez compris les prérequis, vous pouvez commencer à tester votre application Web3. Pour ce faire, vous pouvez utiliser un service d’API tel que Infura pour accéder à la blockchain Ethereum. Vous pouvez également utiliser Python pour interagir avec la blockchain via Infura. Une fois que vous avez mis en place votre environnement de développement, vous pouvez commencer à tester votre application Web3 en utilisant des outils tels que Truffle et Ganache. Vous pouvez également tester votre application sur un réseau réel en utilisant un service tel que MetaMask.

    Source de l’article sur DZONE

    Étapes pour les développeurs vers l'IT durable.

    Les développeurs sont à la pointe de l’innovation technologique. Mais comment peuvent-ils adopter une approche durable pour leurs projets IT ? Découvrez les étapes à suivre !

    Les conséquences réelles de quelque chose d’aussi abstrait que le logiciel

    Même quelque chose d’aussi abstrait que le logiciel a des conséquences concrètes. Les centres de données consomment environ 1 % de l’énergie mondiale et ces serveurs à haute consommation représentent une fraction minime de l’utilisation totale de l’énergie informatique. Il est temps pour les développeurs informatiques de prendre au sérieux la réduction de leur empreinte carbone.

    Aller vert peut prendre plusieurs formes, y compris l’écriture de meilleurs codes, des modifications matérielles et des changements dans la culture du lieu de travail. Les professionnels de l’informatique peuvent utiliser les techniques suivantes pour minimiser l’impact environnemental.

    La première étape consiste à optimiser les bases de données. Les bases de données sont un élément essentiel des systèmes informatiques et peuvent consommer une quantité significative d’énergie. Les développeurs peuvent réduire la consommation d’énergie en optimisant leur base de données. Cela peut être fait en réduisant le nombre de requêtes, en réduisant le nombre de tables et en supprimant les données non utilisées. Les développeurs peuvent également améliorer l’efficacité des bases de données en utilisant des outils tels que l’indexation et la compression des données.

    Deuxièmement, les développeurs peuvent réduire leur empreinte carbone en réduisant le nombre de serveurs nécessaires. Les serveurs sont l’un des principaux consommateurs d’énergie dans les centres de données et peuvent facilement être réduits en consolidant plusieurs serveurs sur un seul serveur. Les développeurs peuvent également réduire le nombre de serveurs en utilisant des technologies telles que le cloud computing et le virtualisation. Ces technologies permettent aux développeurs d’utiliser plusieurs serveurs virtuels sur un seul serveur physique, ce qui permet une meilleure utilisation des ressources et une réduction des coûts.

    Enfin, les développeurs peuvent également réduire leur empreinte carbone en modifiant leur culture de travail. Les développeurs peuvent encourager l’utilisation de technologies plus écologiques telles que les écrans à LED et les imprimantes à faible consommation d’énergie. Ils peuvent également encourager l’utilisation des transports publics ou du covoiturage pour se rendre au travail et encourager le télétravail pour les employés qui le peuvent. Enfin, ils peuvent encourager les employés à recycler et à adopter des pratiques plus respectueuses de l’environnement.

    Même si le logiciel est abstrait, il a des conséquences concrètes sur l’environnement. Les professionnels de l’informatique peuvent réduire leur empreinte carbone en optimisant leurs bases de données, en réduisant le nombre de serveurs nécessaires et en modifiant leur culture de travail. En adoptant ces techniques, les développeurs informatiques peuvent contribuer à la protection de l’environnement et à la préservation des ressources naturelles pour les générations futures.

    Source de l’article sur DZONE