


Des trucs hardcore : un voyage de reconstruction de plus de 30 000 lignes de code dans un système central
01 Parlons d'abord du bagage historique de ce système
Notre moteur publicitaire a connu des itérations pendant environ un an et demi avant cette reconstruction. Au début, il était ciblé sur des scénarios de recherche, avec un. une entreprise unique et des processus clairs.
1. Les scénarios commerciaux ont commencé à devenir complexes. En plus de la publicité sur les recherches, il devait également prendre en charge les recommandations de flux d'informations et des scénarios de recommandations similaires.
2. Le trafic publicitaire commence à augmenter rapidement. En plus de répondre aux exigences fonctionnelles, il faut également prendre en compte les performances.
Après le tri, la majeure partie de la logique de l'ensemble du moteur peut être partagée, nous avons donc défini un cadre principal et résumé les parties extensibles. Ainsi, chaque scénario peut mettre en œuvre certaines interfaces publiques selon la particularité de son propre métier. De plus, du point de vue des performances, nous avons sacrifié une certaine lisibilité du code et parallélisé une certaine logique.
Avec le développement des affaires, le scénario de recherche a commencé à entrer dans une période d'itération rapide, avec de plus en plus de nouvelles stratégies ajoutées, et notre cadre principal est progressivement devenu inflexible à cette époque.
1 Afin d'être compatible avec la logique particulière de recherche, nous devons ajouter divers jugements if dans d'autres scénarios pour contourner ces logiques.
2. Il existe de plus en plus de stratégies publicitaires, des dizaines au total. Lorsque le cadre perd sa structure claire, la mise en œuvre de certaines stratégies commence à devenir personnalisée, manquant de division hiérarchique et de conception abstraite enfichable.

Le tournant s'est produit fin 2019. En raison de la particularité du secteur de la publicité, le trafic a commencé à diminuer naturellement. De plus, l'équipe des opérations produits s'est concentrée sur la planification du travail pour la deuxième année. , ce qui nous a beaucoup aidé. Une bonne période fenêtre pour démarrer cette reconstruction.
Nous avons fixé la période de construction à 1 mois, et au final n'était en ligne qu'un jour plus tard que prévu. Bien que deux problèmes en ligne se soient produits, ils ont été découverts et réparés à temps pendant la période en niveaux de gris, et aucun problème hors ligne. ont été provoqués.
02 Quelles préparations avons-nous faites avant le refactoring ?
La quantité de code refactorisé cette fois est très importante, plus de 30 000 lignes, et c'est la partie centrale du moteur du système publicitaire. Avant le lancement, on peut s'attendre aux difficultés suivantes :
1 Résistance du côté des entreprises : La publicité est extrêmement orientée vers les affaires, même si cette restructuration peut apporter une efficacité R&D à long terme. ne peut pas améliorer directement les revenus de l'entreprise, et le cycle de développement ne sera pas trop court. Comment pouvons-nous obtenir le soutien des camarades de classe en commerce ?
▍Laissez tout le monde voir les points douloureux
Comme mentionné précédemment : avec l'itération commerciale, le cadre principal de notre moteur publicitaire est devenu flou et des dizaines de stratégies publicitaires sont dispersées dans différents scénarios commerciaux avec des configurations désordonnées.
En réponse à ces deux problèmes, nous avons commencé à trier les activités existantes un mois à l'avance, en lisant les anciens codes et en parcourant les documents d'exigences précédents. Enfin, nous avons classé les processus de base et les stratégies publicitaires des différents scénarios en un seul A. forme claire.
C'est ce tableau qui permet à la technologie et aux produits de voir clairement l'ensemble de notre pièce moteur pour la première fois, et de comprendre la complexité de l'entreprise et les goulots d'étranglement techniques actuels.
▍Après avoir clarifié les objectifs et les valeurs du refactoring
et fait ressentir à chacun les points douloureux, nous avons prévu deux objectifs principaux pour ce refactoring :
1. du cadre principal : modulariser le processus principal, redéfinir les protocoles des couches supérieure et inférieure et garantir des interfaces claires. Chaque niveau doit également être abstrait en interne et avoir une bonne évolutivité ;
2. Stratégies flexibles et configurables : les stratégies publicitaires sont classées et résumées en fonction des intentions commerciales, les conditions d'exécution des stratégies sont configurables de manière dynamique et les stratégies peuvent être branchées et déconnectées à volonté.
De plus, nous avons affiné les bénéfices attendus qui peuvent être apportés après avoir atteint ces deux objectifs fondamentaux :
1. Avantages techniques : la structure du code est plus claire, plus facile à comprendre et à maintenir ; l'évolutivité est améliorée et l'efficacité du développement du moteur sera encore améliorée.
2. Avantages commerciaux : les stratégies peuvent permettre une configuration et une expansion plus fines, et sont plus conviviales pour le support commercial ; une efficacité R&D améliorée peut accélérer davantage les itérations commerciales.
▍Le contrôle du rythme global
Le contrôle du rythme global est également un élément très important, permettant à chacun d'avoir une attente de temps en la matière.
Tout d'abord, nous avons fixé la durée de construction à 1 mois. D'une part, nous avons considéré le temps de cycle maximum acceptable du côté commercial, et nous espérions également une solution rapide sur le plan technique, d'autre part ; La Fête du Printemps approche et nous devons nous dépêcher avant la fermeture de l'entreprise. Connectez-vous avant de vous connecter et réservez un délai d'une à deux semaines pour éviter des situations inattendues.
03 Quelles expériences pouvez-vous partager pendant le processus de mise en œuvre ?
1. Solutions de conception technique de haute qualité
Nous concevrons des solutions techniques pour des projets avec un cycle de développement de plus de 3 jours. Cette reconstruction ne fait certainement pas exception.
L'architecture globale du framework, la conception du protocole entre les modules et la conception de l'évolutivité de la stratégie sont au centre de cette solution technique. L'équipe en a discuté pas moins de trois fois.
Une fois le grand plan finalisé, l'équipe a affiné davantage les parties publiques telles que la base de données, les champs d'interface, la structure du cache, les points enfouis dans les journaux, etc. Parce qu'il s'agit d'un développement collaboratif multi-personnes, l'équipe a accepté d'utiliser des documents comme l'interface de communication et les documents restent toujours synchronisés avec votre code.
2. Pré-refactoriser le code du framework
Ce PR est très critique et constitue l'étape la plus importante de la mise en œuvre de notre solution technique au code. Nous avons trié la structure du package reconstruite, la division des modules, la définition de l'API entre chaque couche et l'abstraction des différentes stratégies publicitaires, en ignorant d'abord les détails de mise en œuvre.
De cette façon, le code principal est essentiellement formé, qui peut clairement décrire notre cadre idéal. Nous avons ensuite organisé plusieurs revues de code centralisées et avons finalement formé une opinion unifiée.
Cette étape peut très bien éviter de se laisser entraîner prématurément dans les détails de mise en œuvre, ce qui entraînerait une attention insuffisante au framework principal et un code instable qui réduirait en fait l'efficacité.
3. Communication fréquente et mécanisme de révision du code couplé
Après être entré dans la phase de mise en œuvre détaillée, un point très important est : la compréhension de la logique existante. Le code moteur a été itéré pendant un an et demi. Il a été développé par de nombreuses personnes dans l'histoire, mais cette fois seuls trois étudiants ont participé à la reconstruction.
Pendant tout le processus, lorsque nous avons rencontré une logique de code peu claire, nous avons communiqué et vérifié à plusieurs reprises, et n'avons pas fait de suppositions subjectives. Cette mise en garde est en fait très importante.
De plus, pour la révision du code, nous avons confié à des étudiants connaissant ce métier la responsabilité de chaque module. Ils sont jumelés et le dispositif est flexible.
4. Plan de test efficace
La refactorisation n'a pas été effectuée, testez d'abord. Ce principe est souligné dans le livre « Refactoring » et est également au centre de notre discussion sur cette solution technique. Je le soulignerai ici pour le développer en détail.
Tout d'abord, nous avons conclu un accord dès le début : ne toucher à aucun ancien code et construire complètement un nouveau package pour la reconstruction. Cela facilite la comparaison des résultats avant et après la reconstruction et permet de mener simultanément des expériences en niveaux de gris en ligne.
Concernant le plan de test, les 4 points suivants méritent d'être appris :
1 Tests de bout en bout : Cette refactorisation n'implique pas d'ajustements fonctionnels, donc le comportement de l'extérieur. L'API ne le fera pas. S'il y a des changements, cette méthode de test de bout en bout est la plus efficace. Il s'agit du moyen le plus important de test de R&D et d'assurance qualité.
2. Test de fumée : Les étudiants en assurance qualité fournissent des cas de fumée et les étudiants en R&D effectuent le test de fumée. Avant le test de fumée, tous les cas de fumée doivent être réussis. Ce n'est pas courant dans la plupart des sociétés Internet, mais c'est absolument efficace pour les grands projets.
3. Vérification à double processus de l'environnement Sandbox : comme mentionné précédemment, le code avant et après notre reconstruction est conservé, de sorte que les paramètres d'entrée de l'environnement en ligne peuvent être capturés via des scripts sous forme de cas, puis les retours de l'API sont renvoyés. de manière automatisée. Les champs sont comparés un par un.
4. Expérience en niveaux de gris dans l'environnement en ligne : Les niveaux de gris sont très importants pour la reconstruction. Nous utilisons la plateforme ABTest existante pour libérer progressivement le trafic en niveaux de gris, de 5 %, à 10 %, à 30 % et enfin à 100 %. un rythme très prudent d'expansion des volumes a été établi, puis vérifié au moyen de journaux et de suivi d'indicateurs commerciaux.
Écrit à la fin
Revue de l'ensemble du processus de reconstruction, résumée dans les 7 points clés suivants :
7. soigneusement et être responsable de chaque ligne de code
Bien sûr, le facteur le plus important, ce sont les personnes. La refactorisation de projets à grande échelle met extrêmement à l'épreuve la capacité de collaboration de l'équipe. Si tout le monde est fiable, la refactorisation sera à moitié réussie. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La multiplication matricielle générale (GEMM) est un élément essentiel de nombreuses applications et algorithmes, et constitue également l'un des indicateurs importants pour évaluer les performances du matériel informatique. Une recherche approfondie et l'optimisation de la mise en œuvre de GEMM peuvent nous aider à mieux comprendre le calcul haute performance et la relation entre les systèmes logiciels et matériels. En informatique, une optimisation efficace de GEMM peut augmenter la vitesse de calcul et économiser des ressources, ce qui est crucial pour améliorer les performances globales d’un système informatique. Une compréhension approfondie du principe de fonctionnement et de la méthode d'optimisation de GEMM nous aidera à mieux utiliser le potentiel du matériel informatique moderne et à fournir des solutions plus efficaces pour diverses tâches informatiques complexes. En optimisant les performances de GEMM

Le 29 juillet, lors de la cérémonie de lancement de la 400 000e nouvelle voiture d'AITO Wenjie, Yu Chengdong, directeur général de Huawei, président de Terminal BG et président de la BU Smart Car Solutions, a assisté et prononcé un discours et a annoncé que les modèles de la série Wenjie seraient sera lancé cette année En août, la version Huawei Qiankun ADS 3.0 a été lancée et il est prévu de pousser successivement les mises à niveau d'août à septembre. Le Xiangjie S9, qui sortira le 6 août, lancera le système de conduite intelligent ADS3.0 de Huawei. Avec l'aide du lidar, la version Huawei Qiankun ADS3.0 améliorera considérablement ses capacités de conduite intelligente, disposera de capacités intégrées de bout en bout et adoptera une nouvelle architecture de bout en bout de GOD (identification générale des obstacles)/PDP (prédictive prise de décision et contrôle), fournissant la fonction NCA de conduite intelligente d'une place de stationnement à l'autre et mettant à niveau CAS3.0

La meilleure version du système Apple 16 est iOS16.1.4. La meilleure version du système iOS16 peut varier d'une personne à l'autre. Les ajouts et améliorations de l'expérience d'utilisation quotidienne ont également été salués par de nombreux utilisateurs. Quelle version du système Apple 16 est la meilleure ? Réponse : iOS16.1.4 La meilleure version du système iOS 16 peut varier d'une personne à l'autre. Selon les informations publiques, iOS16, lancé en 2022, est considéré comme une version très stable et performante, et les utilisateurs sont plutôt satisfaits de son expérience globale. De plus, l'ajout de nouvelles fonctionnalités et les améliorations de l'expérience d'utilisation quotidienne dans iOS16 ont également été bien accueillies par de nombreux utilisateurs. Surtout en termes de durée de vie de la batterie mise à jour, de performances du signal et de contrôle du chauffage, les retours des utilisateurs ont été relativement positifs. Cependant, compte tenu de l'iPhone14

Le 11 avril, Huawei a officiellement annoncé pour la première fois le plan de mise à niveau de 100 machines HarmonyOS 4.2. Cette fois, plus de 180 appareils participeront à la mise à niveau, couvrant les téléphones mobiles, les tablettes, les montres, les écouteurs, les écrans intelligents et d'autres appareils. Au cours du mois dernier, avec la progression constante du plan de mise à niveau de 100 machines HarmonyOS4.2, de nombreux modèles populaires, notamment Huawei Pocket2, la série Huawei MateX5, la série nova12, la série Huawei Pura, etc., ont également commencé à être mis à niveau et à s'adapter, ce qui signifie qu'il y aura davantage d'utilisateurs de modèles Huawei pourront profiter de l'expérience commune et souvent nouvelle apportée par HarmonyOS. À en juger par les commentaires des utilisateurs, l'expérience des modèles de la série Huawei Mate60 s'est améliorée à tous égards après la mise à niveau d'HarmonyOS4.2. Surtout Huawei M

Un système d'exploitation informatique est un système utilisé pour gérer du matériel informatique et des logiciels. C'est également un programme de système d'exploitation développé sur la base de tous les systèmes logiciels. Alors, quels sont les systèmes informatiques ? Ci-dessous, l'éditeur partagera avec vous ce que sont les systèmes d'exploitation informatiques. Le soi-disant système d'exploitation consiste à gérer le matériel informatique et les logiciels. Tous les logiciels sont développés sur la base des programmes du système d'exploitation. En fait, il existe de nombreux types de systèmes d’exploitation, notamment ceux à usage industriel, commercial et personnel, couvrant un large éventail d’applications. Ci-dessous, l'éditeur vous expliquera ce que sont les systèmes d'exploitation informatiques. Quels systèmes d'exploitation informatiques sont les systèmes Windows ? Le système Windows est un système d'exploitation développé par Microsoft Corporation des États-Unis. que le plus

Linux et Windows sont deux systèmes d'exploitation courants, représentant respectivement le système Linux open source et le système Windows commercial. Dans les deux systèmes d'exploitation, il existe une interface de ligne de commande permettant aux utilisateurs d'interagir avec le système d'exploitation. Sur les systèmes Linux, les utilisateurs utilisent la ligne de commande Shell, tandis que sur les systèmes Windows, les utilisateurs utilisent la ligne de commande cmd. La ligne de commande Shell dans le système Linux est un outil très puissant qui peut effectuer presque toutes les tâches de gestion du système.

Explication détaillée de la méthode de modification de la date système dans la base de données Oracle. Dans la base de données Oracle, la méthode de modification de la date système consiste principalement à modifier le paramètre NLS_DATE_FORMAT et à utiliser la fonction SYSDATE. Cet article présentera en détail ces deux méthodes et leurs exemples de code spécifiques pour aider les lecteurs à mieux comprendre et maîtriser l'opération de modification de la date système dans la base de données Oracle. 1. Modifier la méthode du paramètre NLS_DATE_FORMAT NLS_DATE_FORMAT correspond aux données Oracle

Après avoir installé le système d'exploitation Win10 sur nos ordinateurs, certains amis peuvent rencontrer un écran bleu du système et demander le code d'erreur 0xc0000428 lors de l'utilisation de l'ordinateur. Ne vous inquiétez pas de ce genre de problème, l'éditeur pense que nous pouvons d'abord résoudre le problème sur le système pour voir s'il est causé par le matériel ou le logiciel, puis résoudre le problème de manière ciblée. Jetons un coup d'œil à ce que l'éditeur a fait pour les détails spécifiques ~ Comment résoudre le problème de 0xc0000428 dans le système win10 1. Redémarrez continuellement, puis forcez l'arrêt trois fois pour permettre au système win10 d'entrer automatiquement dans les options de démarrage avancées. 2. Dans l'interface des options de démarrage avancées du système Win10, ouvrez dans l'ordre : Dépannage-Options avancées-Paramètres de démarrage, dans Paramètres de démarrage.
