Question

Si vous deviez auditer une application Java pour détecter les pires pratiques en matière de haute disponibilité et de reprise après sinistre, vous rechercheriez probablement des adresses IP codées en dur et une mise en cache sous-optimale des descripteurs de liaison. Que faut-il envisager d'autre?

Était-ce utile?

La solution

Absence d’enregistrement des actions / états.

Une application Java devrait pouvoir reprendre son état d'origine lorsqu'elle s'est plantée.
Cela signifie qu’il devrait exister un mécanisme capable d’enregistrer ce qui a déjà été fait (pour ne pas tout refaire lors de la prochaine exécution).

Cela signifie également qu'un tel programme Java devrait toujours atteindre le même état après le même ensemble d'actions identiques . (Faire quelque chose deux fois donnerait le même résultat, et les actions déjà effectuées ne doivent pas être refaites, mais simplement sautées.)

Cet enregistrement peut prendre plusieurs formes (fichier, base de données, métadonnées dans un référentiel de type, ...), mais le fait est que les applications Java désirant récupérer le plus rapidement possible doivent savoir ce qu’elles ont déjà fait.

Autres conseils

Manque d'installations de surveillance. Tôt ou tard, toutes les applications vont échouer. Lorsque cela se produira, vous voudrez le savoir avant tout le monde.

Absence de journalisation. Si vous ne trouvez pas ce qui a tué votre application, il est très difficile de la réparer. Ceci est particulièrement désagréable lorsque vous rencontrez des échecs très intermittents avec des cas difficiles à reproduire.

Étant donné que le suivi approprié est déjà mentionné, j’ajouterais qu’un plan d’urgence est en place. Cela peut être quelque chose d'aussi simple que: si cela se produit, alors nous le faisons, si cet autre événement se produit, alors nous le faisons. Ensuite, lorsque des problèmes surviennent, il vous suffit de suivre le plan (précédemment testé) au lieu de paniquer tout le monde et de prendre des décisions rapides.

Comme je le vois, il y a deux aspects essentiels à ce que vous demandez. Je ne pense pas que cela dépend de la langue, et vous avez utilisé une application Java comme exemple. J'espère donc que cela ne vous dérange pas que je ne parle pas spécifiquement de Java.

Basculement / HA : C’est à cet endroit que vous identifiez votre SPoF - Points de défaillance uniques. Les exemples incluent les adresses codées en dur comme vous l'avez mentionné, mais également les applications qui stockent des données de manière non réplicable, telle qu'un disque local. D'autres éléments peuvent être la mise en cache des recherches DNS "trop ??longues", ne pas rétablir les connexions coupées, rechercher des informations matérielles spécifiques (adresses MAC, CPU, dongles, étiquettes de partition, Mo ou numéros de série de lecteurs, etc.). J'ai vu tous ces problèmes comme des problèmes entraînant des solutions de contournement inutiles pour que le BCP / DR fonctionne correctement.

Intégrité des données : Comment les données sont-elles stockées? Utilise-t-il un format / une structure personnalisée? Si tel est le cas, il existe un "vidage et restauration". mécanisme? Le service doit-il cesser de servir les clients ou le dégrade-t-il pour effectuer des sauvegardes? Est-ce qu’il écrit des données sur un périphérique de manière asynchrone et, dans l'affirmative, à quelle fréquence est-il "vidé"? sur le disque (parfois cela dépend de l'application, d'autres pas tellement)? Le verrouillage de fichiers, les délais et les capacités de stockage entre mémoire persistante font également partie de cette action.

Regardez essentiellement ce qui vous obligerait à travailler. Regardez ensuite comment cela s'est passé et vous allez probablement commencer à développer deux éléments de connaissance importants: les modèles à utiliser pour améliorer BCP / DR et, comme vous l'avez mentionné, les anti-modèles qui causent des problèmes. Injecter ces types de questions dans le processus de développement, dès que possible, aidera vos développeurs à déterminer les modèles et les anti-modèles que vous recherchez. Souvent, le simple fait de poser des questions évite les problèmes.

La meilleure chose à faire est de planifier un temps d'arrêt et de le tester. Vous trouverez beaucoup plus de problèmes à le faire. Une fois que tout est documenté, demandez à quelqu'un d'autre de le faire sans votre aide. ;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top