Explorer l’architecture de DevOps
Une architecture bien conçue ressemble à une autoroute capable de rapidement fournir de la valeur ajoutée à l’utilisateur final. Quand la conception n’est pas bonne, elle s’apparente plutôt à un vieux pont vétuste qui vous empêche d’atteindre vos objectifs finaux.
Introduction à l’architecture logicielle
La viabilité à long terme d’une architecture exige que sa conception, son implémentation, sa mise à niveau et ses inévitables modifications soient une réussite.
L’architecture reste abstraite tant qu’elle n’est pas opérationnalisée. C’est alors qu’elle prend vie.
William LeMessurier, l’un des architectes structure les plus distingués aux États-Unis, a orchestré, en tant que consultant en conception et construction, l’édification de la tour du siège social de Citicorp à New York. Cette tour fut achevée en 1977. L’année suivante, suite à l’appel qu’un étudiant de Princeton intéressé par la conception de la tour lui avait passé pour attirer son attention sur des failles possibles, LeMessurier découvrit que le bâtiment était en effet structurellement déficient.
L’édifice ne serait pas en mesure de supporter des vents de plus de 110 km/h, ce qui, selon les tables météorologiques, se produirait au moins une fois tous les 55 ans à New York. Dans ces circonstances, les joints de structure ne tiendraient pas et le bâtiment s’effondrerait, à commencer par le 13e étage. La tour était entièrement occupée à l’époque. LeMessurier a dû annoncer la nouvelle aux propriétaires et aux autorités de la ville.
Il s’est retrouvé devant un problème complexe et difficile impliquant sa responsabilité professionnelle. Il s’est vu obligé d’alerter de nombreuses personnes sur les failles structurelles afin de mobiliser leur coopération pour renforcer l’édifice avant qu’un ouragan ne le fasse s’effondrer.
Cet été-là, l’ouragan Ella est passé sur la ville. Le bâtiment était sécurisé. La tour Citicorp se tient toujours solidement debout depuis.
Important
L’architecture logicielle consiste à faire des choix structurels fondamentaux, qui sont coûteux à modifier une fois implémentés.
Ses caractéristiques sont les suivantes :
- Parties prenantes : celles-ci peuvent inclure les parties prenantes de l’entreprise, les équipes des applications, les équipes d’assurance qualité, les opérations, la sécurité et les utilisateurs.
- Séparation des préoccupations : pour réduire la complexité, séparez les préoccupations qui orientent la conception.
- Attributs attachés à la qualité : notamment la scalabilité, l’extensibilité, la fiabilité, la maintenabilité et la sécurité.
- Intégrité conceptuelle : l’architecture logicielle représente une vision globale de ce qu’elle doit faire et de la façon dont elle doit le faire pour maintenir l’intégrité de l’architecture, des données et des processus.
- Contraintes cognitives : les organisations sont contraintes de produire des designs qui sont des copies de leurs structures de communication.
- Styles récurrents : la discipline de l’architecture logicielle nous oblige à développer des méthodes standard de résolution des problèmes récurrents.
Une architecture aborde de nombreux domaines dont le nom se termine par « -ité» :
- auditabilité
- availability
- compatibilité
- composabilité
- configurabilité
- accessibilité
- adaptabilité
- rentabilité
- possibilités de personnalisation
- démonstrabilité
- déployabilité
- durabilité
- usage
- extensibilité
- flexibilité
- interopérabilité
- facilité de gestion
- portabilité
- prévisibilité
- reprisabilité
- fiabilité
- reproductibilité
- réutilisabilité
- extensibilité
- facilité d’entretien
- sociabilité
- simplicité
- testabilité
- durabilité
- traçabilité
- reproductibilité
Quand ils génèrent des logiciels, les architectes doivent déterminer les domaines les plus importants parmi tous ces noms finissant par « -ité ». Cependant, un grand nombre de ces facteurs s’opposent les uns aux autres.
Par exemple, il peut sembler difficile d’atteindre à la fois des performances élevées et une scalabilité extrême, car un équilibre subtile est alors nécessaire entre l’architecture, les opérations et de nombreux autres facteurs.
Ce processus décisionnel est une recherche d’équilibre. Peser le pour et le contre de chaque décision architecturale amène à faire des compromis, si souvent déplorés par les architectes.
Au cours des dernières années, les développements incrémentiels dans les pratiques d’ingénierie pour le développement de logiciels ont posé les bases d’une réflexion autour de la manière dont l’architecture évolue au fil du temps et de la manière de protéger les caractéristiques architecturales importantes pendant cette évolution.
Architecture DevOps
Gene Kim est un chercheur, auteur et visionnaire DevOps de renom. Il identifie trois éléments nécessaires à DevOps :
« Le premier est le composant culturel. Sans aucun doute, le deuxième a trait aux outils et à la technologie. Quant au troisième, il s’agit de l’architecture. Vous avez besoin pratiquer correctement la technologie, notamment l’automatisation. Vous avez besoin d’une culture digne de confiance. Et c’est l’architecture qui vous permet de réussir. »
Les recherches présentées dans l’ouvrage intitulé Accelerate ne montrent aucune corrélation significative entre le type de système et les performances de livraison pour de nombreux types de systèmes, notamment les nouveaux systèmes, les systèmes d’enregistrement, les logiciels commerciaux packagés, les logiciels mainframe et les logiciels intégrés. Ce qui est important, c’est la déployabilité et la testabilité.
Conseil
Une bonne architecture facilite le déploiement et les tests.
Architecture et organisation
La loi de Conway tire son nom du programmeur Melvin Conway, qui a introduit cette notion en 1967. Il reconnaît que la conception des systèmes est influencée par les structures de communications des organisations qui conçoivent ces systèmes :
Important
Loi de Conway : toute organisation qui conçoit un système (défini de manière générale) va produire un design dont la structure est une copie de la structure de communication de cette organisation.
Cette loi s’appuie sur l’idée que pour qu’un module logiciel fonctionne, de multiples auteurs ont besoin de communiquer fréquemment entre eux.
Ainsi, la structure des interfaces logicielles d’un système sera le reflet des limites sociales de l’organisation qui l’a produite, au travers desquelles la communication est plus difficile.
Compétences de l’architecture DevOps d’entreprise
Les architectes développent et affinent un large éventail de compétences, comme les suivantes :
- Vision globale
- Pensée systémique
- Connaissances métier
- Compétences interpersonnelles
- Influence et compétences de leadership
- Compréhension de l’architecture technique
- Expérience en gestion financière informatique
- Gestion du temps
- Exposition aux frameworks d’architecture d’entreprise
- Capacité d’expliquer l’informatique aux cadres dirigeants
- Compétences de présentation
- Compétences de coaching
- Compréhension de l’architecture des données et des opérations informatiques
Important
Mais quelle est la compétence la plus importante pour réussir au 21e siècle ?
La volonté et la capacité d’apprendre.