Thursday, April 13, 2023

Cloud and IT challenges


Cloud computing can help address many of the challenges that an IT department faces during the transition from a startup to a larger organization. Some of the ways the cloud can help are:
  • Scalability: Cloud services can easily scale up or down based on the company's requirements, providing flexibility as the organization grows. This allows the IT department to quickly provision resources to support new users, workloads, and applications without the need for large upfront investments in infrastructure.
  • Security: Cloud providers typically invest heavily in security, offering robust protection measures and tools to safeguard data and applications. By leveraging the security features offered by cloud providers, the IT department can ensure that sensitive data and systems are protected from potential threats. However, it's crucial to understand that security in the cloud is a shared responsibility, and the company must also take steps to protect its data and systems.
  • Integration: Cloud providers offer various tools and APIs that can facilitate the integration of new systems, tools, and technologies with the existing IT infrastructure. This can help streamline the integration process and ensure seamless interoperability between systems.
  • Compliance: Many cloud providers have built-in compliance features that help organizations meet regulatory requirements. By leveraging these features, the IT department can more easily ensure that the company's systems and data are compliant with industry standards and regulations.
  • IT Governance: Cloud services often come with built-in management and monitoring tools that can help establish a more structured and centralized approach to IT governance. This enables the IT department to track resource usage, manage access controls, and enforce policies consistently across the organization.
  • Talent Management: Leveraging cloud services can help reduce the need for specialized IT skills in-house, as many of the complex infrastructure management tasks are handled by the cloud provider. This allows the IT department to focus on higher-value activities and strategic initiatives while still benefiting from the expertise of the cloud provider's support team.
  • Change Management: Adopting cloud services can simplify the change management process, as the cloud provider typically handles updates, maintenance, and infrastructure changes. This can help reduce the impact of change on the organization and ensure a smoother transition to a larger structure.

While the cloud can significantly help address many of the challenges faced during the transition from a startup to a larger organization, it's essential to carefully evaluate the specific needs and requirements of the company to determine the most appropriate cloud services and deployment models. Additionally, it's important to remember that adopting the cloud requires a shift in mindset and an ongoing commitment to managing security, compliance, and governance effectively.

Monday, April 10, 2023

Modèle de language naturel tel que chatGPT pour les développeurs




Le développement de logiciels est une tâche complexe qui nécessite des compétences techniques et créatives. Les développeurs sont souvent confrontés à des défis tels que la conception de l'architecture logicielle, la résolution de bugs et l'amélioration de l'expérience utilisateur. Cependant, grâce à l'avancement de la technologie, les développeurs peuvent maintenant utiliser des outils tels que ChatGPT pour améliorer leur productivité et leur efficacité dans le processus de développement.


ChatGPT est un modèle de langage naturel basé sur l'architecture GPT-3.5 et maintenant GPT-4 d'OpenAI. Il peut comprendre le langage naturel et générer des réponses en fonction des entrées qu'il reçoit. Les développeurs peuvent utiliser ChatGPT pour effectuer diverses tâches, telles que la génération de code, la résolution de bugs, la planification de projets, la rédaction de documentation, et bien plus encore. Oui, Oui, ... essayer!

L'un des principaux avantages de l'utilisation de ChatGPT pour le développement est que cela permet aux développeurs de gagner du temps et de l'effort en automatisant certaines tâches. Par exemple, les développeurs peuvent utiliser ChatGPT pour générer du code à partir de descriptions en langage naturel, ce qui peut considérablement réduire le temps et les efforts nécessaires pour écrire du code. De plus, ChatGPT peut également aider les développeurs à trouver des solutions à des problèmes de code complexes en fournissant des suggestions de code.

ChatGPT peut également aider les développeurs à améliorer la collaboration et la communication au sein de l'équipe de développement. Les développeurs peuvent utiliser ChatGPT pour discuter de leurs idées et résoudre des problèmes de manière plus efficace en utilisant un langage naturel. De plus, ChatGPT peut également aider les développeurs à mieux comprendre les besoins des clients en analysant les commentaires et les réactions des utilisateurs.

Enfin, ChatGPT peut également aider les développeurs à améliorer leur compétence en programmation en fournissant des conseils et des astuces en temps réel. Les développeurs peuvent utiliser ChatGPT pour poser des questions sur des sujets spécifiques, tels que les bonnes pratiques de codage, les frameworks, les bibliothèques, et bien plus encore.

En conclusion, ChatGPT est un outil qui peut s'averer puissant pour les développeurs et qui pourrait aider à améliorer la productivité, la collaboration, la communication, la qualité du code et la compétence en programmation. Les développeurs qui utilisent ChatGPT peuvent bénéficier d'une meilleure efficacité et d'une réduction des efforts nécessaires pour mener à bien des projets de développement de logiciels.

Je vais dans un prochain article donner un exemple .... 

Wednesday, August 17, 2022

Modèle C4 et ArchiMate


Si vous lisez la description du modèle C4 (et je vous encourage vraiment à le faire), vous remarquerez que chaque type de diagramme est en fait une définition agnostique de métamodèle et d'outil d'un point de vue d'architecture : vous pouvez utiliser n'importe quelle solution que vous voulez pour créer un tel diagrammes, y compris stylo et papier et outils de dessin. 

Mais que se passe-t-il si vous travaillez dans un contexte où certains architectes utilisent ArchiMate ? Eh bien, dans ce cas, vous pouvez facilement tirer parti d'ArchiMate pour prendre en charge le modèle C4. Cela nécessite simplement un mappage entre le métamodèle C4 et ArchiMate :

  • La personne (Person) peut être associée à un acteur metier  (Business Actor)
  • Le système logiciel (Software System) et le conteneur peuvent être mappés au composant d'application (Application Component)
  • Le composant peut être mappé à la fonction d'application (Application Function)
  • L'élément de code (Code Element) est peut-être trop fin pour être utile dans ArchiMate, mais pourrait également être mappé à la fonction d'application (Application Function)
  • La relation peut être mappée sur la relation de déclenchement (la convention est que les déclencheurs vont de l'appelant à l'appelé)

Tuesday, August 16, 2022

HATEOAS (Hypermedia as the Engine of Application State) Une introduction



  • C'est un composant de l'architecture d'application REST qui la distingue des autres architectures d'application réseau. "Hypermédia" est un terme faisant référence à tout contenu contenant des liens vers d'autres formes de médias tels que des images, des films et du texte.
  • Il facilite la création facile de représentations REST par certaines API qui suivent le principe HATEOAS lorsqu'elles travaillent avec Spring et en particulier Spring MVC.
  • Dans le style architectural REST, nous pouvons utiliser les liens hypermédias dans le contenu de la réponse. Cela signifie qu'en traversant les liens hypermédias, le client peut naviguer dynamiquement vers les ressources appropriées.
  • La navigation dans les liens hypermédias fonctionne sur le concept similaire d'un internaute parcourant des pages Web en cliquant sur les liens hypertextes pertinents pour atteindre un objectif final.
Prenons un exemple. En supposant que nous ayons un service REST qui fournit différentes descriptions de produits ; pensez à certains sites de commerce électronique. Si nous obtenons une réponse JSON avec un produit de ce site Web avec l'aide de HATEOAS, cela pourrait ressembler à ceci:

========


{
    "productId": 123
    "productName": "Telé XYZ",
    "description": "La meilleure télé de la planète."
    "links": [{
        "rel": "self",
        "href": "http://localhost:8080/magasin/api/produits/123"

    }, {
        "rel": "details",
        "href": "http://localhost:8080/magasin/api/produits/123/details"

    }, {
        "rel": "ajoutPanier",
        "href": "http://localhost:8080/magasin/api/AjoutPanier/123"

    }]
}
Bon, alors, c'est du JSON avec des attributs qui sont des liens. Ça change quoi? La sémantique: rel et href

rel-
Il signifie « relation » et explique comment le lien se rapporte à l'objet que nous avons demandé. 
  • self – ce qui signifie que ce lien nous amène à l'objet, 
  • details – signifie que des informations détaillées sont disponibles, 
  • ajoutPanier – indique le processus d'ajout de ce produit à un panier.
href –
Une URL complète qui montre comment l'action peut être effectuée.

HATEOAS réduira le besoin de configurer les points de terminaison d'URL, ce qui est une bonne chose. Toutes ces URL (dans l'exemple) nous indiquant :
  • comment rechercher les détails du produit ? 
  • Comment ajouter un produit au panier ? 

Nous n'en avons pas besoin codés en dur ou dans certains fichiers de configuration. Ils sont fournis par l'application. Si nous voulons vraiment avoir quelque chose dans nos fichiers de configuration, nous pouvons y placer les relations rel–. Dans toute application, nous avons différents appels d'API REST. Cela en fait un véritable avantage en quelque sorte.

Empaquetage et déploiement avec Spring Boot

 


Les options d’empaquetage flexibles de Spring Boot offrent un grand choix lorsqu’il s’agit de déployer votre application. Vous pouvez déployer des applications Spring Boot sur une variété de plates-formes cloud, sur des machines virtuelles/réelles, ou les rendre entièrement exécutables pour les systèmes Unix.


Ce document issue de la documentation officielle couvre certains des scénarios de déploiement les plus courants : Deploying Spring Boot Applications


En particulier pour K8s Spring Boot détecte automatiquement les environnements de déploiement Kubernetes en vérifiant la présence de variables « *_SERVICE_HOST » et « *_SERVICE_PORT » dans l’environnement. Vous pouvez remplacer cette détection par la propriété de configuration spring.main.cloud-plateforme.

Spring Boot vous aide à gérer l’état de votre application et à l’exporter avec http Kubernetes Probes à l’aide d’Actuator, l'outils de surveillance de SpringBoot.

Saturday, July 10, 2021

Pourquoi l'architecture logicielle est plus importante que jamais (réf: Continuous Architecture in practice)

L'amélioration continue vaut mieux que la perfection différée. -Mark Twain



L'objectif de l'architecture reste d'offrir une valeur ajouté commerciale, la vitesse de livraison croissante attendue des informaticiens (TIC) au sein des entreprises présente de nouveaux défis. Dans le même temps, la facilité d'utilisation et les attentes 24h/24 et 7j/7 des utilisateurs finaux sont dictées par l'expansion écrasante de la technologie dans la vie quotidienne : nous sommes passés des PC aux tablettes, aux smartphones et à la technologie portable. Les ordinateurs sont maintenant dans nos poches. Ils sont presque toujours connectés les uns aux autres et leurs capacités dépassent nos besoins! Les équipes de livraison de logiciels d'aujourd'hui doivent désormais fonctionner à l'heure et à l'échelle d'Internet et du cloud. Cela a considérablement accru les exigences des parties prenantes de l'entreprise et a entraîné l'adoption croissante de pratiques agiles, de livraison continue, de DevOps et même de DevSecOps.

Pour relever ces défis et atteindre l'objectif de création de valeur commerciale dans cet environnement en évolution rapide, il est plus important que jamais pour les activités d'architecture de permettre une livraison précoce et continue de valeur et de s'assurer que ce qu'elles font appuie cet objectif.
ON PEUT, PEUT-ÊTRE, SE POSER LA QUESTION, MAIS C'EST QUOI UNE ARCHITECTURE AU JUSTE?
Quand on parle d'architecture, on s'intéresse à l'architecture logicielle. Mais comment définir l'architecture logicielle ? Voyons quelques définitions courantes.
D'APRÈS INTERNATIONAL FEDERATION FOR INFORMATION PROCESSING (IFIP):
L'architecture logicielle fait référence aux structures fondamentales d'un système logiciel et à la discipline de création de ces structures et systèmes. Chaque structure comprend des éléments logiciels, des relations entre eux et des propriétés à la fois des éléments et des relations. L'architecture d'un système logiciel est une métaphore, analogue à l'architecture d'un bâtiment. Il fonctionne comme un modèle pour le système et le projet en développement, définissant les tâches nécessaires à exécuter par les équipes de conception.
L'architecture logicielle consiste à faire des choix structurels fondamentaux qui sont coûteux à modifier une fois mis en œuvre. Les choix d'architecture logicielle incluent des options structurelles spécifiques à partir des possibilités de conception du logiciel. . . .

La documentation de l'architecture logicielle facilite la communication entre les parties prenantes, capture les premières décisions concernant la conception de haut niveau et permet la réutilisation des composants de conception entre les projets
D'APRÈS INTERNATIONAL STANDARDS ORGANIZATION AND INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS (IEEE)
Architecture : Concepts ou propriétés fondamentaux d'un système dans son environnement incorporés dans ses éléments, leurs relations et dans les principes de sa conception et de son évolution.
AIE TOUJOURS PAS CLAIRE, VOYONS POURQUOI RÉALISER DES ARCHITECTURES
Au moins 4 raisons..
  1. Atteindre les exigences d'attributs de qualité pour un système logiciel. L'architecture concerne la mise en œuvre d'exigences d'attributs de qualité importantes, telles que la sécurité, l'évolutivité, les performances et la résilience.
  2. Définir les principes directeurs et les normes d'un projet ou d'un produit et développer des plans directeurs. L'architecture est une vision du futur et des outils de support pour aider à communiquer la vision. Les Blueprints permettent d'abstraire l'architecture à un niveau approprié pour prendre des décisions commerciales et techniques. Ils facilitent également l'analyse des propriétés et la comparaison des options.
  3. Créez des services utilisables (et peut-être même réutilisables). Un aspect clé de l'architecture logicielle consiste à définir de bonnes interfaces pour les services.
  4. Créez une feuille de route vers un état futur de l'informatique. L'architecture traite des activités de planification de la transition qui mènent à la mise en œuvre réussie d'un plan informatique.
Maintenant que nous avons une définition de travail de l'architecture logicielle, on peut aborder avec sérénité le parcours d'architecte logiciel 😉😇

Tuesday, July 6, 2021

Mentor, coach, tuteur, parrain quelles différences


Mentorat


Le mentoring, ou mentorat consiste à soutenir et à encourager les personnes à gérer leur propre apprentissage afin qu'elles puissent maximiser leur potentiel, développer leurs compétences, améliorer leurs performances et devenir la personne qu'elles veulent être. La relation 'mentorale' conjugue transferts et/ou partage de savoirs (savoir-faire et savoir être), bienveillance et confiance entre le mentor et le mentoré. Le mentor offre un soutien au mentoré en lui transmettant des connaissances et lui prodiguant des conseils dans le but de l’aider à progresser dans sa carrière, faire aboutir un projet, gagner en compétence… Le mentorat peut être formel ou informel. Dans un environnement informel, les mentorés se fixent des objectifs, mais ils ne sont généralement pas mesurables et les relations ne sont pas structurées. Dans une relation de mentorat formelle, il existe des objectifs réalisables et mesurables définis et fixés avec des exigences déterminées.

Pourquoi le mentorat est-il important ?

Un bon mentor peut aider le mentoré à devenir plus efficace au travail, à acquérir de nouvelles compétences, à développer une plus grande confiance en soi et à prendre de meilleures décisions pour la croissance globale de sa carrière.
Les mentors aussi acquièrent de nombreux avantages, notamment la satisfaction de voir les autres se développer ; perspectives générationnelles et culturelles élargies; renforcement des compétences techniques, de leadership et interpersonnelles; et continuer à expérimenter de nouvelles idées et perspectives

Comparons le mentorat au autres modes d'accompagnement:

 Le coaching a pour but d’aider un « coaché » à trouver ses propres réponses dans le cadre d’une démarche personnelle ou professionnelle grâce à un « coach » formé aux techniques de l’accompagnement. Le coach ne connaît à priori rien du métier du « coaché ». Alors que le mentorat vise avant tout la transmission de savoirs, le coaching est une relation qui permet d’atteindre un ou des objectifs de développement définis dans le temps.

Dans le tutorat, le « tuteur » transmet sa connaissance d’une tâche, d’un savoir, savoir faire ou savoir-être et accompagne le « tutoré » dans l’apprentissage d’un nouveau métier ou d’une nouvelle tâche. Il s’assure que les savoirs sont acquis à la fin de la mission. Il y a généralement évaluation du tutoré par son tuteur alors que cette notion n’existe jamais dans le mentoring.

Le « parrain » prend en charge les premiers pas de son « filleul » qu’il guide pour lui éviter des difficultés de parcours. Il répond aux questions mais il n’y a dans la plupart des cas pas d’objectif précis, de fin dans la relation, ni de contractualisation.


Si vous souhaitez être mentoré ou implémenter le mentoring dans votre institution ou votre entreprise, contacter mentor@pascal-fares.fr (micro-entreprise enregistré à Paris -900 438 227-) 




Domptez l'IA : Mon guide personnel pour mieux parler à Gemini

On a tous vécu ce moment. Vous ouvrez Gemini, vous tapez une question rapide... et la réponse est "mouais". Pas fausse, mais pas t...