Introduction à l'analyse des exigences : parler d'architecture (5) Le chemin de croissance des architectes

J'ai également été engagé dans la recherche et le développement pendant quelques années, et j'ai effectué des travaux de conception architecturale au cours de cette période, y compris la transformation de monomères C # en microservices Java, et la transformation de monomères Python en microservices Java. J'essaie également de résumer quelques d'entre eux du point de vue de ma propre
expérience Points de connaissance, et en même temps décrire comment devenir un architecte logiciel qualifié, pour référence seulement, bienvenue pour discuter avec moi.

1. Définition d'architecte

Comme son nom l'indique, un architecte fait référence à une personne engagée dans des travaux d'architecture système dans une entreprise/équipe.
Tout d'abord, il doit être clair que l'architecte mentionné dans cet article n'est pas un poste, mais un rôle, c'est-à-dire une personne engagée dans des travaux d'architecture.

  • Chaque entreprise, voire différentes équipes d'une entreprise, ont des perceptions différentes des architectes, et les définitions et responsabilités des architectes sont également différentes ;
  • Dans chaque équipe, il y a plus ou moins de personnes qui font du travail d'architecture, comme le programme principal de l'équipe et les développeurs seniors ;

Cela ne veut donc pas dire que votre poste est architecte, et que vous avez atteint le niveau d'architecte ; de même, votre poste n'est pas architecte, mais vous êtes peut-être l'architecte reconnu par cette équipe.
Points auxquels il faut prêter attention en tant qu'architecte :
un architecte ne peut pas être séparé de l'environnement de développement existant, du statu quo du projet, de l'investissement en ressources de l'entreprise, etc., et ne peut pas s'asseoir dans un château en l'air et ordonner à l'équipe de se battre .

Classement des architectes

Selon les subdivisions des différents domaines, les architectes ont également des définitions de subdivision, qui comprennent généralement :

  • Architecte logiciel : responsable de la conception et de la planification de l'architecture globale du système logiciel, couvrant l'analyse des besoins, la sélection de la technologie, la division des domaines, le déploiement des applications, etc. ;
  • Architecte de données : responsable de la conception et de la planification du système de données, y compris l'entrepôt de données, la collecte et la gouvernance des données, etc. ;
  • Architecte réseau : responsable de la conception et de la planification du réseau global du système, y compris l'accès Internet, le routage et la commutation, le VPN et la sécurité du réseau, etc. ;
  • Architecte cloud : actuellement, le cloud computing est répandu, responsable du déploiement et de la planification du cloud computing, y compris la sélection de la plate-forme cloud, les capacités de gestion des conteneurs, la virtualisation, l'automatisation, etc. ;
  • Architecte de sécurité : Responsable de la planification de l'architecture de sécurité du système logiciel, y compris les politiques de sécurité globales, le contrôle d'accès, la gestion des vulnérabilités, les politiques d'audit, etc. ;
  • Architecte frontal : fait généralement référence à l'architecte de l'application de navigateur, responsable de la conception globale de l'architecture de l'application frontale, y compris le cadre frontal, la pile technologique, la compatibilité entre navigateurs et le conditionnement des capacités unifiées, l'optimisation des performances, etc. ;
  • Architecte d'applications mobiles : désigne généralement un architecte d'applications Android/iOS, responsable de la conception globale de l'architecture des applications mobiles, y compris la sécurité mobile, la pile technologique, la compatibilité multiplateforme, la conception des programmes de test, l'optimisation des performances, etc. ;
  • Architecte back-end : principalement responsable de la conception de l'architecture back-end de l'application, y compris la conception de la base de données, la conception de l'API, l'optimisation des performances, la sécurité des données, etc.

Les subdivisions ci-dessus ne sont pas nécessairement exhaustives et les limites de nombreux domaines ne sont en fait pas assez claires, telles que :

  • Les architectes logiciels couvrent généralement l'ensemble du système logiciel et doivent avoir une certaine compréhension de divers domaines et se concentrer (principalement sur le back-end)
  • Les architectes front-end et back-end doivent normaliser et revoir l'API ;
  • Par exemple, les architectes logiciels et les architectes de données doivent prêter attention à la sécurité des données et aux protocoles de transmission de messages intersystèmes.

Responsabilités d'un architecte logiciel

  • 1. Une compréhension globale des besoins de l'entreprise
    En tant qu'architecte, le plus important est d'être compétent en affaires, et même requis pour devenir un expert du domaine. J'ai dit dans la première conférence de la série : trouver des problèmes est plus important que de les résoudre
    Si vous ne comprenez pas le métier, l'architecture conçue est inutile.

  • 2. Capacité à simplifier et à abstraire les problèmes
    C'est la capacité clé des architectes à concevoir et développer des systèmes logiciels de haute qualité, ce qui peut aider les équipes à mieux comprendre les besoins de l'entreprise et à concevoir et développer dans des environnements complexes.
    Prenons l'exemple du système de connexion utilisateur :

    • Le problème de connexion peut être simplifié comme suit : réception du type de connexion soumis par l'utilisateur, réception des informations d'identification soumises par l'utilisateur et vérification de la validité des informations d'identification de l'utilisateur.
    • Il est résumé comme une interface et fournit 3 méthodes :
      matchLoginType(HttpServletRequest request)si le type de connexion traité par la classe actuelle
      readCredential(HttpServletRequest request)lit les informations de connexion en fonction du type de connexion
      validCredential(UserCredential info)vérifie les informations de connexion
    • Ajoutez différentes implémentations, telles que l'implémentation de la connexion par mot de passe de compte, l'implémentation de la connexion WeChat, l'implémentation de la connexion LDAP, l'implémentation de la connexion par jeton, etc.
    • Quant à l'affichage frontal et aux méthodes d'interaction avec l'utilisateur, ce sont des détails relativement peu importants, il suffit de s'accorder sur des règles standard d'interaction entre l'interface frontale et l'interface dorsale.
  • 3. Proposer des solutions adaptées et réalisables avec des ressources limitées
    Nos ressources telles que logiciels/matériel/main-d'œuvre/temps sont limitées, et les architectes doivent autoriser ces restrictions pour rechercher des solutions optimales avec des ressources limitées.
    Par exemple : lorsque la période de construction est limitée, l'architecte doit être en mesure d'évaluer la situation réelle de l'entreprise, de démonter les modules/fonctions et de sélectionner la combinaison minimale de fonctions qui répond aux besoins de conception et de mise en œuvre prioritaires ; Pour effectuer la sélection de la technologie en fonction de
    la situation, il est nécessaire de mesurer la transition en douceur et les capacités d'affectation du personnel avec le moins d'impact sur l'entreprise.

  • 4. Pour répondre aux exigences de l'entreprise et assurer la qualité du système,
    les architectes doivent comprendre correctement les exigences de l'entreprise et produire les exigences non fonctionnelles requises par le système, y compris la fiabilité, les performances, la tolérance aux pannes, etc. ;
    puis concevoir des solutions techniques appropriées et continuer à suivre les processus, pour assurer la qualité.

  • 5. Évolutivité dans un délai prévisible
    Celle-ci est généralement divisée en deux aspects :

    • Les architectes doivent avoir une compréhension approfondie des exigences et être capables d'estimer les changements dans les exigences dans un certain laps de temps.Par
      exemple, les systèmes de connexion des utilisateurs ne doivent pas seulement concevoir des connexions de compte et de mot de passe, mais doivent ajouter des connexions de code de balayage WeChat, des connexions d'identité Google, etc. selon les caractéristiques des groupes d'utilisateurs ;
    • Les architectes doivent tenir compte de l'évolutivité du système, y compris l'expansion horizontale et l'expansion verticale, tout en tenant compte des coûts et en évitant une conception excessive :
      • Expansion horizontale : le système peut rapidement étendre la capacité des nœuds et disperser la capacité de charge des anciens nœuds lorsque le nombre de visites augmente ;
      • Extension verticale : un seul nœud du système dispose de capacités d'extension suffisantes, telles que l'amélioration du processeur, l'augmentation de la mémoire, l'augmentation de la bande passante du réseau, etc.
  • 6. Évolution continue dans le cycle de vie du système
    Les architectes surveillent, évaluent et améliorent continuellement le système en fonction de la croissance de l'entreprise.
    L'objectif ultime est d'améliorer en permanence la fiabilité et le débit du système sans affecter la croissance de l'entreprise.

Exigences de compétence pour les architectes logiciels

En tant qu'architecte logiciel approprié, vous devez généralement avoir les capacités suivantes :

  • 1. Capacité technique
    L'architecte doit d'abord être un excellent technicien. On peut dire que l'architecte qui n'a pas l'expérience de sous-tableau de sous-base de données n'est vraiment pas qualifié. Il doit être :
    • Programmeurs seniors :
      les architectes doivent avoir une riche expérience dans le développement de programmes, quels que soient les modèles de conception, les principes HashMap, les arbres B+, etc. ;
      certains systèmes de base ou conceptions de cadres généraux nécessitent généralement que les architectes écrivent et guident le code ;
    • Connaissances de terrain multitechniques :
      les architectes doivent avoir une étendue technique suffisante pour comprendre différentes connaissances techniques de terrain, telles que la compréhension du processus de rendu du navigateur frontal, la pile technologique de développement client, les principes d'envoi et de réception kafka, les théories connexes distribuées et certaines implémentations de produits, conteneurs et K8S, la technologie d'équilibrage de charge, etc., peuvent proposer une sélection de technologie, un schéma de déploiement et une mise en œuvre appropriés face à des problèmes spécifiques ;
    • Experts en résolution de problèmes et pompiers :
      les architectes doivent avoir une riche expérience en résolution de problèmes et être capables de résoudre de nombreuses maladies difficiles et diverses que les techniciens ordinaires ne peuvent pas résoudre ; avoir une
      expérience parfaite du processus de résolution de problèmes, comme donner la priorité à la récupération des accidents de production, puis effectuer la localisation des défauts Un ensemble complet de solutions à résoudre;
    • Ingénieurs d'exploitation et de maintenance appropriés :
      certains problèmes urgents ou particuliers nécessitent un diagnostic en ligne par les architectes ; lorsqu'ils réapparaissent hors ligne, les services correspondants doivent être déployés ; les
      architectes doivent également avoir de l'expérience dans le déploiement/l'exploitation et la maintenance/la surveillance de certains services communs, tels que Centos, Windows, superviseur, crontab, redis, mysql, kafka, etc. ;
      de plus, dans certaines petites et moyennes équipes, il n'y a généralement pas de personnel d'exploitation et de maintenance à temps plein, et l'architecte est également responsable de l'exploitation et de la maintenance ;
  • 2. Analyse commerciale et capacité abstraite.
    Les architectes doivent avoir une compréhension approfondie des connaissances de l'industrie. Ce n'est qu'en devenant des experts dans le domaine qu'ils peuvent convertir les besoins des utilisateurs en exigences techniques avec plus de précision et de clarté. Dans le même temps, les architectes doivent avoir des capacités abstraites
    , c'est-à-dire transformer les exigences techniques en Il s'agit d'une architecture abstraite et spécifique avec une bonne évolutivité ;
    par exemple, un système de centre commercial peut être résumé comme suit :
    connexion -> panier -> commande -> paiement ->
    service de livraison et d'authentification générale, service de commande et le service de paiement peut être abstrait en même temps, les services de gestion des stocks et les protocoles de transmission de messages entre les services, etc.;
    en même temps, lorsque vous voyez le produit, vous savez que vous devez concevoir le tableau de classification, le tableau de données SPU et la table de données SKU, et l'évaluation du produit doit être séparée dans un service d'examen indépendant.
    Remarque : Les six principes de conception s'appliquent également à la conception de l'architecture logicielle. La responsabilité unique, les principes d'ouverture et de fermeture, l'isolation des interfaces, etc. doivent également être pris en compte lors de la division des limites de domaine et de la division des modules.
  • 3. Capacité de gestion
    Ce point est relativement important. D'une manière générale, les architectes doivent également avoir une capacité de gestion d'équipe, y compris une forte capacité de communication et de compréhension, une capacité de gestion de l'avancement du projet et d'allocation des ressources, une capacité de collaboration d'équipe et de motivation de l'atmosphère ; la chose la plus importante est la communication
    et compétences de compréhension, si vous ne pouvez pas comprendre les questions soulevées par les autres, vous ne pouvez pas exprimer clairement vos pensées, vous ne pouvez même pas trouver et définir clairement les problèmes, et encore moins parler d'actions de suivi.
    Un autre point que je pense est la franchise. Les membres de l'équipe communiquent entre eux tous les jours. S'ils ne sont pas assez francs, les membres le percevront facilement, et ils seront dégoûtés et malhonnêtes. De nombreux problèmes ne seront pas exposés, ce qui peut éventuellement conduire à des projets. échec.
  • 4. Capacité d'apprentissage
    Les architectes doivent avoir une capacité d'apprentissage et une capacité d'adaptation relativement bonnes, ainsi qu'une forte prévoyance, et doivent souvent participer à diverses formations ou échanges en ligne et hors ligne pour comprendre et suivre l'évolution constante de la technologie et des tendances de développement de l'industrie.
    Dans le même temps, les architectes doivent également avoir de bonnes capacités de synthèse et de précipitation, y compris le résumé de l'expérience technique, la collation et la sortie des spécifications techniques, la rédaction des runbooks d'exploitation et de maintenance et la sortie des documents de formation.

Ces capacités nécessitent essentiellement un apprentissage et un exercice continus, tels que la capacité abstraite, ce qui signifie une analyse de la demande à long terme, une division des frontières de domaine et une comparaison avec des conceptions de projets similaires pour découvrir les lacunes de votre propre conception et effectuer l'apprentissage et la reconstruction.
Il ne faut pas oublier que la technologie ne fait pas tout. De nombreux scénarios peuvent être résolus grâce à l'optimisation de la demande plutôt qu'à des solutions techniques complexes. Je donnerai quelques exemples plus loin dans l'article.

Voici une carte de compétences Geek Time Architect, à laquelle vous pouvez vous référer :
Cette image sera toujours signalée par CSDN comme une violation de l'image, vous pouvez rechercher par vous-même :
Carte de compétences Geek Time Architect

Partagez-en 2 de plus sur https://roadmap.sh/
insérez la description de l'image ici : feuille de route des capacités front - end et feuille de route des capacités back-end—insérez la description de l'image ici

2. Comment grandir

Partagez une image :
insérez la description de l'image ici
l'image ci-dessus provient de "Pattern" de M. Wu Jun , vous pouvez la lire attentivement :

  • Base de référence : les connaissances en ingénierie que vous maîtrisez varient d'une personne à l'autre, par exemple, les experts ont une base de référence élevée et les novices une base de référence faible ; la première chose que nous
    devons faire est de nous positionner, de trouver notre propre base de référence et de continuer à apprendre à améliorer notre ligne de base.
    De nombreuses inventions faites par des scientifiques civils au cours de leur vie ne sont pas reconnues parce que leur niveau de référence est inférieur à celui de cette époque, et ils utilisent directement leurs anciennes connaissances au lieu d'apprendre.
  • Limites : restreintes par la physique, l'environnement et même la cognition personnelle, les limites réalisables, telles que la vitesse de la lumière, le nombre maximal de connexions d'une seule machine, le débit maximal d'une seule machine, etc. ; lorsque nous apprenons et s'améliorant, il faut préciser les limites de cette direction pour éviter
    l'inefficacité du toss
  • Échelle : Le chemin et la méthode jusqu'à la limite, vous devez apprendre à acquérir des connaissances ou à explorer par vous-même la méthode qui vous convient.
    Remarque : Limité par la cognition personnelle de chacun, les différentes ressources et si la méthode d'exploration est efficace, de moins en moins de personnes peuvent atteindre la limite, donc l'échelle est convergente.

Donc, pour résumer, il n'y a pas de raccourci pour continuer à grandir :

  • Continuez à apprendre et améliorez votre base
    Souvent, l'épiphanie que vous pensez n'est que les compétences de base des autres. par : Liu Run
  • Pratique, pratique continue, induction, résumé, compréhension
    Ne pensez pas que vous n'avez pas le temps, dans le livre recommandé de 5 minutes pour les écoles de commerce, il y a une section spéciale vous enseignant la gestion du temps, il suffit de l'écouter pendant 5 minutes.

En combinant théorie et pratique, nous savons qu'il existe deux types de connaissances :
1. Ce que les autres vous disent ou ce que vous apprenez dans les livres est de la théorie ;
2. Ce que vous expérimentez vous-même est de la pratique ;
seule la théorie est facile à oublier ; seule la pratique ; Vous ne sait pas quoi promouvoir.

Mon expérience :
1. Pour les fosses sur lesquelles j'ai marché, je dois effectuer un examen pour comprendre pourquoi le problème s'est produit et quelle en est la raison essentielle. 2.
Pour les fosses sur lesquelles d'autres ont marché, je vais essayer de marcher dessus. dans l'environnement de test pour approfondir mon impression et explorer l'essence

Enfin, je voudrais partager un problème d'apprentissage que j'ai vu sur Zhihu, qui est très intéressant :
Quelqu'un à Zhihu a posé une question : Les anciens avaient une bonne politique, une politique moyenne et une politique basse, pourquoi beaucoup de gens ont choisi la politique basse ?
Une réponse très élogieuse l'a dit. En prenant l'apprentissage comme exemple, il existe trois stratégies :

  • La meilleure politique : un plan d'étude rigoureux, suspendu à la poutre, et dansant au son du poulet ;
    évidemment, c'est trop difficile, et peu de gens peuvent le faire ;
  • Stratégie moyenne : plan d'étude lâche, lire un livre par semaine/mois ;
    cette stratégie moyenne n'est pas mauvaise, beaucoup de gens la choisiront, même faire un plan de temps, mais le processus d'exécution est facile à interrompre, quel téléphone mobile me manque tellement , jetez un oeil sur Douyin , buvez un verre entre amis, ça ne durera pas 1 ou 2 mois
  • Mauvaise politique : Apprentissage aléatoire, apprenez dès que vous y pensez
    La plupart des gens choisissent cela, y compris moi, la fragmentation des connaissances est très grave et il est facile d'oublier

3. Livres recommandés

domaine technique

Ces trois livres sont vraiment ennuyeux à lire, vous pouvez les lire une fois pour vous faire une idée, vous entraîner un moment et les relire à votre retour.
insérez la description de l'image ici

domaine non technique

Dans le même temps, nous ne devons pas seulement nous concentrer sur le domaine technique, mais également faire attention à certaines connaissances en dehors du domaine technique ; nous
recommandons particulièrement fortement l'école de commerce de 5 minutes de Liu Run, qui est une série audio, chaque audio dure environ 5 minutes , couvrant la connaissance des affaires, l'innovation des produits, l'autogestion, la gestion d'équipe, l'amélioration des performances et d'autres aspects de la connaissance,
certaines personnes n'ont pas une haute opinion de lui sur Zhihu, mais pour moi dans le domaine technique, beaucoup de connaissances sont presque éclairantes, et naturellement c'est aussi pour moi Cela m'a beaucoup aidé pour ma croissance et mon travail, et je recommande fortement l'apprentissage.
insérez la description de l'image ici

4. Informations étendues

Voici deux examens de certification pour les architectes. Les étudiants qui souhaitent améliorer leurs capacités architecturales peuvent l'essayer. Le
contenu impliqué dans la certification est relativement complet et peut améliorer les capacités personnelles dans leur ensemble, alors ne le retenez pas. C'est tout à fait correct d'étudier aux fins de l'examen, ou même simplement étudier sans l'examen.

Certification TOGAF

TOGAF est l'abréviation de The Open Group Architecture Framework. Il est développé par The Open Group et est mis à jour en permanence. The Open Group est une alliance de l'industrie technologique à but non lucratif.
L'Open Group définit TOGAF comme "la norme mondiale pour l'architecture d'entreprise", qui fournit un ensemble de méthodologies et de meilleures pratiques de gestion.
TOGAF a été utilisé par 80 % des entreprises Forbes 50 et a été hautement reconnu et activement promu par les principales sociétés informatiques internationales telles que HP, IBM, Kingdee, Oracle et SAP. Dans la pratique de l'architecture d'entreprise chinoise, le taux d'approbation TOGAF dépasse 50 %.
Présentation officielle de TOGAF : https://www.opengroup.org/togaf
Présentation de l'encyclopédie Baidu : https://baike.baidu.com/item/TOGAF/9832356

Voici un bref aperçu du modèle de compétences pour la certification TOGAF :

  • 1. Compétences générales : leadership, travail d'équipe, communication interpersonnelle, éloquence, rédaction, analyse logique, gestion des parties prenantes, gestion des risques ;

  • 2. Compétences et méthodes d'affaires : analyses de rentabilisation, scénarios d'affaires, structure organisationnelle, processus d'affaires, planification stratégique, gestion budgétaire, vision stratégique, indicateurs d'affaires, culture d'entreprise, investissements hérités, fonctions d'affaires ;

  • 3. Compétences en architecture d'entreprise : conception de processus métier, conception de rôles, conception de structure organisationnelle, conception de données, conception d'applications, intégration de systèmes, normes de l'industrie informatique, conception de services, conception de principes architecturaux, conception de vues et de perspectives, conception de blocs de construction, modélisation de solutions, avantages analyse, interaction métier, comportement système, gestion de projet ;

  • 4. Compétences en gestion de programme et de projet : gestion de programme, gestion de projet, gestion du changement d'entreprise, gestion du changement, gestion de la valeur ;

  • 5. Connaissances et compétences informatiques générales : méthodes et outils de développement d'applications informatiques, langage de programmation, application d'agent, application de consommation d'informations, application de fourniture d'informations, gestion du stockage, réseau, service Web, infrastructure informatique, gestion des actifs, accord de niveau de service, systèmes, commerciaux prêts à l'emploi, continuum d'entreprise, planification de la migration, outils de gestion, infrastructure ;

  • 6. Compétences informatiques : génie logiciel, sécurité, gestion des systèmes et des réseaux, traitement des transactions, localisation et annuaire, interface utilisateur, opérations internationales, échange de données, gestion des données, graphiques et images, services du système d'exploitation, services réseau, infrastructure de communication ;

  • 7. Environnement juridique : droit des contrats, droit de la protection des données, droit des marchés publics, fraude, droit commercial

Concepteur d'architecture système pour examen souple

L'architecte système est une certification avancée des qualifications techniques professionnelles en informatique et en logiciels, reportez-vous à l'introduction officielle : https://www.ruankao.org.cn/platform/details?code=03_03

Ses exigences d'examen :
(1) maîtriser les connaissances de base du matériel informatique, des logiciels et du réseau ;
(2) être familiarisé avec le processus de développement du système d'information ;
(3) comprendre les normes de développement du système d'information et les normes informatiques communes ;
(4) être familiarisé avec le middleware grand public et la plate-forme de serveur d'applications ;
(5) Maîtriser la technologie de base de la modélisation de système logiciel et de la conception d'architecture de système ;
(6) Maîtriser les technologies de sécurité de l'information, la stratégie de sécurité et la connaissance de la gestion de la sécurité ;
(7) Comprendre les bases des lois et réglementations relatives à l'informatisation et aux technologies de l'information (8)
Comprendre les caractéristiques de l'industrie de l'utilisateur et construire une conception de système appropriée en fonction des caractéristiques de l'industrie ;
(9) Maîtriser les connaissances de base en mathématiques appliquées ;
(10) Maîtrise de la lecture et compréhension correcte de la littérature anglaise dans des domaines connexes

On peut voir qu'il reste encore beaucoup à savoir.

épilogue

Les cinq chapitres d'Architecture Talk s'achèvent ici.
Dans les articles suivants, je listerai quelques cas d'analyse de la demande que j'ai vécus, ainsi que les solutions techniques de conception que nous adoptons.

Je suppose que tu aimes

Origine blog.csdn.net/youbl/article/details/131515254
conseillé
Classement