1. Écrivez certaines configurations qui doivent être modifiées dans le fichier Propriétés
Par exemple, le nombre de threads utilisés lorsqu'une exécution simultanée n'est pas définie pour être configurable dans le fichier de propriété. Ensuite, votre programme peut fonctionner sans heurts et sans inventé dans les environnements de développement et les environnements de test, mais une fois déployé sur des ensembles de données productifs et traités en tant que programme multithread, une IOException sera lancée. La raison peut être que l'environnement en ligne provoque simultanément autre chose. Si le nombre de threads peut être configuré dans le fichier Properties, il est très facile de faire une seule application enfileuse. Nous n'avons plus besoin de déployer et tester à plusieurs reprises les applications pour résoudre des problèmes. Cette méthode convient également à la configuration des URL, des serveurs et des numéros de port.
Il est recommandé d'utiliser des fichiers d'attribut pour externaliser ces configurations, et le format de fichier est OK avec les propriétés, YAML, HOCON et JSON. La classe suivante met en œuvre la prise en charge de l'injection de printemps pour les fichiers dans ces formats, y compris le support d'espace réservé.
https://github.com/superhj1987/aweson-libs/blob/master/src/main/java/me/rowkey/libs/spring/config/awesomepropertyplaceholderconfigurer.java
2. Simuler autant que possible l'environnement en ligne pendant le test
Un scénario typique du processus de production consiste à utiliser seulement 1 à 3 comptes pour les tests, et ce nombre devrait être de 1 000 à 2 000. Lors de l'exécution de tests de performances, les données utilisées doivent être vraies et sans cesse. Les tests de performances qui ne sont pas proches de l'environnement réel peuvent entraîner des performances, une expansion et des problèmes de multithreaux imprévisibles. Ici, nous pouvons également utiliser l'environnement de pré-libération pour résoudre certains problèmes.
3. Le traitement tolérant aux pannes doit être effectué pour tous les appels externes et services internes.
Qu'il s'agisse d'un appel RPC ou d'un appel de service tiers, nous ne pouvons pas tenir pour acquis que la disponibilité est de 100%. Les délais d'appel de service et la réessayer ne sont pas autorisés, ce qui affectera négativement la stabilité et les performances de l'application.
4. Le système doit suivre le principe des autorisations minimales lors de la conception d'un système de sécurité
Les services Web sont partout, permettant aux pirates de l'exploiter facilement pour les attaques de déni de service. Par conséquent, lors de la conception d'un système, vous devez suivre le principe des «autorisations minimales» et adopter la liste blanche et d'autres méthodes.
5. Les documents suivants sont requis
Écrivez une documentation de test unitaire et ayez une bonne couverture de code.
Dessin de conception de haut niveau: décrit tous les composants, interactions et structures.
Dessins de conception détaillés: spécifique à la conception du niveau de code et à certains processus de logique clés.
Document de composition du système: explique tous les fichiers de composition, fichiers de configuration, etc. du système.
Les documents DML et DDL au niveau de la base de données, en particulier les instructions de requête SQL, doivent passer par DBA ou l'examen des développeurs de base avant de pouvoir être lancés.
Non seulement pour les processus de développement traditionnels, mais même pour le développement agile, ces documents sont essentiels, sinon cela provoquera de grands inconvénients dans la maintenance et le transfert ultérieurs.
6. Faites du bon travail dans la surveillance, la récupération des erreurs, la sauvegarde et d'autres fonctions clés du système
Pour certains modules fonctionnels cruciaux du système, ils doivent être surveillés pour les empêcher d'affecter le fonctionnement du système et provoquer des pertes non estimées. De plus, si possible, essayez de récupérer après avoir suivi le défaut et envoyez une alarme si la récupération échoue. Pour certains fichiers de données très importants, des sauvegardes redondantes doivent être effectuées pour éviter certains échecs soudains et perte de données.
7. Concevez certaines colonnes faciles à suivre l'historique et à organiser lors de la conception de la base de données.
Par exemple, Create_time et Update_time peuvent indiquer le temps de création et de mise à jour de l'enregistrement. create_by et update_by peut indiquer qui a créé et mis à jour l'enregistrement.
De plus, la suppression des enregistrements n'est parfois pas vraiment supprimée. À l'heure actuelle, il est nécessaire de concevoir une colonne qui représente l'état de cet enregistrement, comme la colonne «active» ou «inactive».
8. Faire un plan de retour de projet
Lorsque la nouvelle fonction est lancée, s'il n'y a pas de plan de recul, il peut être pressé et que les services en ligne ne deviennent pas disponibles pendant un certain temps. Il existe un bon plan de recul qui vous permet d'effectuer des opérations connexes de manière ordonnée et de restaurer le système à un état de course dans un délai contrôlé.
9. Avant le lancement du projet, une analyse quantitative doit être effectuée
Une analyse quantitative doit être effectuée pour la mémoire, la base de données, les fichiers, le cache, etc. utilisées dans le projet. Il estime l'occupation de l'espace à l'avenir et fournit une référence pour l'attribution de la machine de fonctionnement et de maintenance. Empêcher que le stockage insuffisant soit causé par la croissance rapide du volume de données. Ceci est très important, sinon il est facile de rendre les services en ligne indisponibles.
10. Développer un plan de déploiement du système.
La plate-forme pour le déploiement du système est une partie cruciale. La description de la plate-forme de déploiement ne peut pas être limitée à un serveur ou deux bases de données, au moins elle doit inclure
11. Choisissez l'outil / technologie le plus approprié
Dans de nombreux cas, les développeurs utilisent une langue ou un outil qu'ils souhaitent apprendre dans un système de production. Habituellement, ce n'est pas la meilleure option. Par exemple, utilisez une base de données NoSQL pour des données qui sont déjà en fait une forme relationnelle. Qu'il s'agisse d'une langue ou d'un outil, il existe des scénarios applicables. Nous ne pouvons pas rechercher l'innovation, et nous ne pouvons pas utiliser "Self" comme norme.
12. Avoir des réserves de connaissances suffisantes dans certains domaines techniques clés.
Modèle de conception
Tigne JVM "Problème de concurrence" multithread
Problèmes de transaction, y compris les problèmes de performances de transaction distribués, y compris GC, l'informatique et d'autres caches
Grâce à cet article, j'espère que des amis qui pourront aider à développer des programmes Java, merci pour votre soutien à ce site!