<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Karkael</title>
    <description>The latest articles on Forem by Karkael (@karkael).</description>
    <link>https://forem.com/karkael</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1638374%2F959c6db2-224b-48e5-a993-ae2e5ef4570e.jpg</url>
      <title>Forem: Karkael</title>
      <link>https://forem.com/karkael</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/karkael"/>
    <language>en</language>
    <item>
      <title>When the cloud isn't enough (triple modular redundancy)</title>
      <dc:creator>Karkael</dc:creator>
      <pubDate>Mon, 28 Oct 2024 18:42:27 +0000</pubDate>
      <link>https://forem.com/karkael/when-the-cloud-isnt-enough-triple-modular-redundancy-1lk1</link>
      <guid>https://forem.com/karkael/when-the-cloud-isnt-enough-triple-modular-redundancy-1lk1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;You're using a single source for your applications, and you're wrong.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dear administrator, I'm humbled to make this appeal to you, after yet another failure by our team to ensure the availability of our application. I'm going back to my engineering classes, taking the opportunity to optimize, cut costs and harmonize.&lt;/p&gt;

&lt;p&gt;This article is aimed at all applications that require a high level of availability or whose data is sensitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Triple modular redundancy, engineering curriculum
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Triple_modular_redundancy" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Triple_modular_redundancy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During your engineering courses, you must have studied processes for reinforcing your product: emergency stops, mistake-proofing, monitoring tools. Today, remember triple modular redundancy: a critical service must be available from at least 3 sources.&lt;/p&gt;

&lt;p&gt;For your application, this means you need to think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;provide a service from 3 sources,&lt;/li&gt;
&lt;li&gt;duplicate the data in 3 sources,&lt;/li&gt;
&lt;li&gt;allow a balance from one to the other.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf4stoicynydzox2wsgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf4stoicynydzox2wsgy.png" alt="Triple modular redundancy schema" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Standards, ISO-27001
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/ISO/IEC_27001" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/ISO/IEC_27001&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you're working with large entities or internationally, you need to ensure your customers' your ability to follow standards such as ISO-27001, which will enable you to work with industries in particular. These standards were introduced in 2005 and are regularly revised. &lt;/p&gt;

&lt;p&gt;ISO-27001 is based on 3 pillars:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confidentiality of information,&lt;/li&gt;
&lt;li&gt;Information integrity,&lt;/li&gt;
&lt;li&gt;Information availability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To obtain this certification, having a single data source and a single application source won't be enough: you'll have to apply triple modular redundancy. You can't depend solely on the server running on your premises, nor can you depend solely on a cloud. &lt;/p&gt;

&lt;h2&gt;
  
  
  The benefits of Clouds and internal servers
&lt;/h2&gt;

&lt;p&gt;The advantages of a cloud:&lt;/p&gt;

&lt;p&gt;✅ faster start-up,&lt;br&gt;
✅ no hardware management,&lt;br&gt;
✅ outsourced hardware technical skills (fewer employees),&lt;br&gt;
✅ standards already applied (e.g. redundancy),&lt;br&gt;
✅ flexibility and on-demand dimensions,&lt;br&gt;
✅ service close to the customer.&lt;/p&gt;

&lt;p&gt;The advantages of an in-house server:&lt;/p&gt;

&lt;p&gt;✅ complete, self-supervised management,&lt;br&gt;
✅ fixed costs,&lt;br&gt;
✅ information security assured,&lt;br&gt;
✅ easy migrations,&lt;br&gt;
✅ self-managed breakdowns,&lt;br&gt;
✅ controlled liability,&lt;br&gt;
✅ evolutions as needed,&lt;br&gt;
✅ servers developed to suit the customer, with no superfluous extras.&lt;/p&gt;

&lt;p&gt;In this tangle of benefits, it's important to understand:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;that a cloud will help you get started and take good practices early in your application development ⭐, &lt;/li&gt;
&lt;li&gt;that it's in your interest to favor an in-house application and data service (as soon as possible) ⭐⭐, &lt;/li&gt;
&lt;li&gt;that you will need to switch to cloud in case of in-house problems and program a balance ⭐⭐⭐, &lt;/li&gt;
&lt;li&gt;that you'll need to enable service redundancy on the cloud ⭐⭐⭐⭐. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By choosing a triple redundancy of your service (by having at least 3 internal servers and clouds), you'll even be able to determine the qualitative data in case of conflict between two services: the two servers that give the same answer are right, the server that answers differently must correct its corrupted data ⭐⭐⭐⭐⭐.&lt;/p&gt;

&lt;h2&gt;
  
  
  Successfully balancing
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Encourage in-house use of the application: its fixed cost means you can budget correctly, while the cloud can take over in the event of overload or breakdown. Cloud costs are harder to predict. When only your in-house server is running, you save a lot of money on the cloud.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5zwoarkmviueog2ikbe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5zwoarkmviueog2ikbe.png" alt="Cloud type" width="800" height="744"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've decided how to disperse your services (how many internal servers and cloud servers) and once you've defined the type of service you need (FaaS, SaaS, PaaS, IaaS, On-Premise), then you can determine the cloud closest to your needs, start development with it, try to get the same level of service internally, and finally look for another cloud with the same level of service to get triple redundancy. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Consider working with at least one cloud that can provide services as close to the customer as possible, particularly to avoid additional download costs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Available tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Containers and management
&lt;/h3&gt;

&lt;p&gt;For simple development, I'd recommend pairs like Kubernetes and Docker, which can easily export a similar configuration between the local work environment, the internal server and all the clouds that enable this kind of IaaS. &lt;/p&gt;

&lt;p&gt;Developing with Kubernetes ensures that all servers are the same, and reduces the risk of getting different results (such as corruption).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbd2ux55rlo19p8ldouc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbd2ux55rlo19p8ldouc.png" alt="Kubernetes &amp;amp; Docker" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Software-as-a-Service
&lt;/h3&gt;

&lt;p&gt;For a simple, inexpensive web application, you'll need a domain name, HTTP server, file server and database, take your pick:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A registrar that allows balancing on its CNAME (OVH, Gandi, ...).&lt;/li&gt;
&lt;li&gt;AWS: lambda, S3, RDS&lt;/li&gt;
&lt;li&gt;Azure: Functions, Blob Storage, Database&lt;/li&gt;
&lt;li&gt;Google: Cloud Run, Cloud CDN, Cloud SQL&lt;/li&gt;
&lt;li&gt;A multitude of equivalents for in-house services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developing compatible SaaS is more difficult, but it does help to reduce runtime costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning, synchronization and security
&lt;/h2&gt;

&lt;p&gt;This redundancy calls for exceptional rigor and costly management. You'll also need to ensure that the perimeters are secure from one another, and that synchronization does not propagate attacks. You'll need to ensure 4 mandatory services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;determine the server closest to the client, to favor nearby downloads,&lt;/li&gt;
&lt;li&gt;always copy all data to other cloud and internal servers,&lt;/li&gt;
&lt;li&gt;check integrity regularly (e.g. daily at midnight UTC with hash keys) and deal with data corruption,&lt;/li&gt;
&lt;li&gt;produce synchronization reports. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Block-chain
&lt;/h2&gt;

&lt;p&gt;In the spirit of redundancy and data integrity, block-chain proposes a systemic approach to determining a secure, decentralized source. In reality, we're not far from a block-chain. &lt;/p&gt;

&lt;p&gt;Depending on your data format, you can use blockchain. My guess is that most applications will need services that handle data in very different formats (user, file, checkout, auth), and your CDN or PostgreSQL servers deserve synchronization services at their scale. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Make sure you're not dependent on a single data source. An in-house server and a cloud can work in a complementary way. You'll get a secure, robust application that's ready to work with global companies.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Quand le Cloud n'est pas suffisant (triple redondance modulaire)</title>
      <dc:creator>Karkael</dc:creator>
      <pubDate>Mon, 28 Oct 2024 18:30:54 +0000</pubDate>
      <link>https://forem.com/karkael/quand-le-cloud-nest-pas-suffisant-triple-redondance-modulaire-24pl</link>
      <guid>https://forem.com/karkael/quand-le-cloud-nest-pas-suffisant-triple-redondance-modulaire-24pl</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Vous utilisez une seule source pour vos applications, et vous avez tort.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Très cher administrateur, c'est avec humilité que je te fais cet appel, après un nouvel échec de notre équipe à assurer la disponibilité de notre application. Je reviens vers mes cours d'ingénieur, j'en profite pour optimiser, diminuer les coûts et harmoniser.&lt;/p&gt;

&lt;p&gt;Cet article s'adresse à toutes les applications qui ont besoin d'un fort taux de disponibilité ou dont les données sont sensibles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Triple redondance modulaire, cursus ingénieur
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Triple_modular_redundancy" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Triple_modular_redundancy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Durant vos cours d'ingénieur, vous avez forcément étudié des procédés pour renforcer votre produit: arrêts d'urgence, détrompeurs, outils surveillance. Aujourd'hui, rappelez-vous de la triple redondance modulaire: un service critique doit être disponible par au moins 3 sources. &lt;/p&gt;

&lt;p&gt;Pour votre application, cela signifie que vous devez penser à:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fournir un service par 3 sources,&lt;/li&gt;
&lt;li&gt;dupliquer la données en 3 sources,&lt;/li&gt;
&lt;li&gt;permettre une balance de l'un à l'autre.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf4stoicynydzox2wsgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf4stoicynydzox2wsgy.png" alt="Triple modular redundancy schema" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Normes, ISO-27001
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/ISO/IEC_27001" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/ISO/IEC_27001&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lorsque vous travaillez avec de grandes entités ou à l'international, vous devez assurer à vos clients la capacité à suivre des normes comme l'ISO-27001, qui vous permettra notamment de travailler avec les industries. Ce sont des normes qui sont apparues en 2005 et révisées régulièrement. &lt;/p&gt;

&lt;p&gt;L'ISO-27001 repose sur 3 pilliers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La confidentialité de l'information,&lt;/li&gt;
&lt;li&gt;L'intégrité de l'information,&lt;/li&gt;
&lt;li&gt;La disponibilité de l'information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour obtenir cette certification, avoir une seule source de donnée et une seule source applicative ne sera pas suffisante, vous allez devoir appliquer la triple redondance modulaire. Vous ne pouvez pas dépendre que du serveur qui tourne dans vos locaux, vous ne pouvez pas non plus dépendre que d'un cloud. &lt;/p&gt;

&lt;h2&gt;
  
  
  Les apports des Clouds et des Serveurs internes
&lt;/h2&gt;

&lt;p&gt;Les avantages d'un cloud:&lt;/p&gt;

&lt;p&gt;✅ démarrage plus rapide,&lt;br&gt;
✅ pas de gestion matérielle,&lt;br&gt;
✅ compétences techniques matérielles sous-traitées (moins de salariés),&lt;br&gt;
✅ des normes déjà appliquées (ex: redondance),&lt;br&gt;
✅ flexibilité et dimensions à la demande,&lt;br&gt;
✅ service au plus près du client.&lt;/p&gt;

&lt;p&gt;Les avantages d'un serveur interne:&lt;/p&gt;

&lt;p&gt;✅ gestion entière supervisée soi-même,&lt;br&gt;
✅ coûts fixes,&lt;br&gt;
✅ sécurité de l'information assurée,&lt;br&gt;
✅ migrations faciles,&lt;br&gt;
✅ pannes gérées soi-même,&lt;br&gt;
✅ responsabilité maîtrisée,&lt;br&gt;
✅ évolutions au besoin,&lt;br&gt;
✅ serveurs développé pour correspondre au client, sans superflus.&lt;/p&gt;

&lt;p&gt;Dans cet enchevêtrement d'avantages, il faut comprendre:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;qu'un cloud vous aidera à démarrer et prendre des bonnes pratiques tôt dans le développement de votre application ⭐, &lt;/li&gt;
&lt;li&gt;que (dès que possible) vous avez intérêt à favoriser un service interne de l'application et des données ⭐⭐, &lt;/li&gt;
&lt;li&gt;que vous aurez besoin de cloud en cas de problème en interne et programmer une balance ⭐⭐⭐, &lt;/li&gt;
&lt;li&gt;que vous devrez permettre une redondance du service sur le cloud ⭐⭐⭐⭐. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;En choisissant une triple redondance de votre service (en ayant au moins 3 serveurs internes et clouds), vous allez même pouvoir déterminer la donnée qualitative en cas de conflit entre deux services: les deux serveurs qui donnent la même réponse ont raison, le serveur qui répond différemment doit corriger sa donnée corrompue ⭐⭐⭐⭐⭐.&lt;/p&gt;

&lt;h2&gt;
  
  
  Réussir la balance
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Favorisez l'utilisation de l'application en interne: son coût fixe vous permet de prévoir un budget correctement, tandis que le cloud peut prendre le relais en cas de surcharge ou de panne. Le coût d'un cloud est plus difficile à prévoir. Lorsque seul votre serveur interne tourne, vous faites de grosses économies sur le cloud.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5zwoarkmviueog2ikbe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5zwoarkmviueog2ikbe.png" alt="Type de cloud" width="800" height="744"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quand vous aurez choisi comment disperser vos services (combien de serveurs internes et serveurs clouds) et quand vous aurez défini le type de service nécessaire (FaaS, SaaS, PaaS, IaaS, On-Premise), alors vous pourrez déterminer le cloud le plus proche de vos besoins, démarrer le développement avec lui, tenter d'obtenir le même niveau de service en interne, et enfin chercher un autre cloud avec le même niveau de service pour obtenir la triple redondance. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pensez à travailler avec au moins un cloud qui peut mettre à disposition des services au plus proche du client, notamment pour éviter les surcoûts liés au téléchargement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Les outils disponibles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Conteneur et gestion
&lt;/h3&gt;

&lt;p&gt;Dans le cadre d'un développement simple, je recommande plutôt des couples comme Kubernetes et Docker, qui peuvent facilement exporter une configuration similaire entre l'environnement de travail local, le serveur interne et tous les clouds qui permettent ce genre de IaaS. &lt;/p&gt;

&lt;p&gt;Développer avec Kubernetes permet d'assurer que tous les serveurs sont les mêmes, et diminue les risques d'obtenir des résultats différents (comme une corruption).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbd2ux55rlo19p8ldouc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbd2ux55rlo19p8ldouc.png" alt="Kubernetes et Docker" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Software-as-a-Service
&lt;/h3&gt;

&lt;p&gt;Dans le cadre d'une application web simple et peu coûteuse, vous avez besoin d'un nom de domaine, d'un serveur HTTP, d'un serveur de fichiers et d'une base de donnée, choisissez:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un registar qui permet la balance sur ses CNAME (OVH, Gandi, ...).&lt;/li&gt;
&lt;li&gt;AWS: lambda, S3, RDS&lt;/li&gt;
&lt;li&gt;Azure: Functions, Blob Storage, Database&lt;/li&gt;
&lt;li&gt;Google: Cloud Run, Cloud CDN, Cloud SQL&lt;/li&gt;
&lt;li&gt;Une multitude d'équivalents pour les services internes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Développer des SaaS compatibles est plus difficile, mais ça permet de diminuer les coûts sur l'exécution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nettoyage, synchronisation et sécurité
&lt;/h2&gt;

&lt;p&gt;Cette redondance impose une rigueur exceptionnelle et avec un management coûteux. Vous allez aussi vous assurer que les périmètres sont sécurisés les uns par rapport aux autres et que les synchronisations ne propagent pas d'attaque. Vous devrez vous assurer de 4 services obligatoires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;déterminer le serveur le plus proche du client pour favoriser les téléchargements proches,&lt;/li&gt;
&lt;li&gt;toujours copier toutes les données dans les autres serveurs cloud et internes,&lt;/li&gt;
&lt;li&gt;s'assurer de l'intégrité régulièrement (ex: tous les jours à minuit UTC avec des clefs de hash) et régler les corruptions de données,&lt;/li&gt;
&lt;li&gt;produire des rapports de synchronisation. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Block-chain
&lt;/h2&gt;

&lt;p&gt;Dans l'esprit de la redondance et de l'intégrité des données, la block-chain propose une approche systémique pour déterminer une source sûre et décentralisée. En réalité, on n'est pas loin d'une block-chain. &lt;/p&gt;

&lt;p&gt;Selon votre format de donnée, vous pouvez faire appel à la block-chain. J'estime que la plupart des applications auront besoin de services qui gèrent des données dont les formats seront très différents les uns des autres (user, file, checkout, auth), et vos serveurs CDN ou PostgreSQL méritent des services de synchronisation à leur échelle. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Assurez-vous rapidement que vous n'êtes pas dépendant d'une seule source de données. Un serveur interne et un cloud peuvent travailler de façon complémentaire. Vous obtiendrez une application sécurisée, robuste et prête pour travailler avec les entreprises internationales.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>productivity</category>
      <category>french</category>
    </item>
    <item>
      <title>When the cost of quality (COQ) overwhelms the project</title>
      <dc:creator>Karkael</dc:creator>
      <pubDate>Mon, 23 Sep 2024 14:16:24 +0000</pubDate>
      <link>https://forem.com/karkael/when-the-cost-of-quality-coq-overwhelms-the-project-33do</link>
      <guid>https://forem.com/karkael/when-the-cost-of-quality-coq-overwhelms-the-project-33do</guid>
      <description>&lt;p&gt;As I'm looking for a new job as a web developer, I'm looking at my reasons for leaving a wonderful company with a senior position to join another project. Let me tell you how the extra cost of quality made me lose my footing. &lt;/p&gt;

&lt;h1&gt;
  
  
  Companies naturally evolves from feature-oriented to quality-oriented
&lt;/h1&gt;

&lt;p&gt;Software development is successful when the customer is satisfied and the company has sufficient revenue. There is a break in the life of the project: it's &lt;strong&gt;when there are enough customers to provide support services&lt;/strong&gt;. In this case, the company chooses to focus on the quality of the most lucrative functions, and to redistribute expenses towards building customer loyalty. Congratulations, you're part of a sustainable company!&lt;/p&gt;

&lt;p&gt;Here is an exhaustive list of practices to focus on quality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The basics: hire skilled employees, use ticketing &amp;amp; versionning flow, follow standard practices of your choosen tools.&lt;/li&gt;
&lt;li&gt;Contribute for continuous improvment (plan, try, measure, standardize).&lt;/li&gt;
&lt;li&gt;Add or switch for some better tools (read benchmarks).&lt;/li&gt;
&lt;li&gt;Add automated tests (unit tests, end-to-end tests, non-regression testing).&lt;/li&gt;
&lt;li&gt;Add automated workers (linters, code-analysers, automated code-reviewers).&lt;/li&gt;
&lt;li&gt;Delegate checks to machines (CI/CD).&lt;/li&gt;
&lt;li&gt;Forcing more manual tests or hire manual-testers.&lt;/li&gt;
&lt;li&gt;Dedicated teams (release, cybersecurity, compliance), audits, formations.&lt;/li&gt;
&lt;li&gt;Run AI in your project. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's a big difference in quality rules between a business-to-business software with 150 users and thousands of functions, and a retail application for 100k simultaneous customers and only one purchase function. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja193wlvf6oqdvv66pc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja193wlvf6oqdvv66pc0.png" alt="Cost of quality is sum of cost good quality and cost of bad quality where both extremes are exceeding any budget" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your company will add more quality rules, sometimes after a critical problem, sometimes in anticipation of problems. The more rules you add, the more expensive quality becomes. You can then calculate the cost to obtain quality (COQ):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cost of bad code =
  Human time for resolving issues + Bad reputation

Cost of good code =
  Human time for quality + Cost of dedicated machines

Cost to obtain quality =
  Cost of bad code + Cost of good code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Why the hell any company would choose bad-quality?
&lt;/h1&gt;

&lt;p&gt;They don't! No company would allow crappy code with security issues. No, they wouldn't. But you have to recognize that quality is clearly not the priority when you have no customer, no budget and the concept is still evolving. &lt;/p&gt;

&lt;p&gt;You then need to hire people who are quick to develop a saleable product, you need to focus on highly anticipated features that will set you apart from the competition or improve your public image. &lt;/p&gt;

&lt;h1&gt;
  
  
  Force developer have good practices
&lt;/h1&gt;

&lt;p&gt;A company that is making progress and maintaining good relations with its customers will evolve its profile to match those customers. The company will also evolve the profile of its developers in this direction, by imposing rules that are of interest. Developers take on board the new rules, change their habits and acquire reflexes for their working day.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Customers expectations -&amp;gt; developers new reflexes&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  But don't lock the development
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbyf8ehbztj9ueqmerq9c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbyf8ehbztj9ueqmerq9c.jpg" alt="Old train with coal motor" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, companies can become over-costly on quality and forget to develop new products. As a result, marketing-commercial-product plans dilate and new products are delayed. &lt;/p&gt;

&lt;p&gt;A company with quality overruns can be identified by a decrease in technical work time, a lengthening plan, rules that prevent novelty, difficulty with change, long processes, interminable meetings with little added value.&lt;/p&gt;

&lt;p&gt;A good practice is following continuous improvement.&lt;/p&gt;

&lt;p&gt;To get started, define your actual status: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;by listing what matter for current customers, &lt;/li&gt;
&lt;li&gt;by listing opportunities,&lt;/li&gt;
&lt;li&gt;by measuring time to market, &lt;/li&gt;
&lt;li&gt;by measuring quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next steps are to plan numerous improvements, select and implement a few at a time, then check that they're working for you. An improvement could be adding good-practices or reducing processus. &lt;/p&gt;

&lt;h1&gt;
  
  
  Example of quality surcharge on web-development
&lt;/h1&gt;

&lt;p&gt;It's time to share my personal experience with you. Several companies have followed this path and ended up, in spite of myself, being unable to develop new functions in their applications, as a result of an accumulation of rules, which often took them out of Agile good practice, in order to have over-control, or to protect themselves from a non-existent risk, or finally because the company was no more expecting new features.&lt;/p&gt;

&lt;p&gt;The company I work for started with a CI/CD and unit tests on main features. Now we changed for a custom CI/CD with AWS, running unit tests for 75% coverage, running non-regression tests for 40% user journeys, with 20% employees dedicated for QA, 1/3 week for release production with 90% employees of the company (product, quality, developers, infra). The cost of quality is actually 80% of the budget (employees and AWS CI/CD) and there is no more time for new feature here. Actually, the customers are satisfied by product, but are awaiting for some expected features, and quality issues are from product (no more technical issues).&lt;/p&gt;

&lt;p&gt;It's time to change company mind and find a better fit for customer expectations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh5jeajhhgxqiarp3rcb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh5jeajhhgxqiarp3rcb.jpg" alt="The shinkansen train, the fastest train in world" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;In order to control the cost of obtaining quality, we need to ensure customer loyalty and develop our customer base, and adapt quality, costs and time to market. It's not uncommon to fall into the trap of over-quality. In IT, however, you have to keep inventing new things to ensure the longevity of your business, and controlled risk-taking remains the best strategy. &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>development</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
