Votre question ne semble faire aucune hypothèse sur la plate-forme / le système d'exploitation dont il s'agit. C'est pourquoi il peut être judicieux d'ajouter une réponse sur la façon dont cela est généralement fait / traité dans un environnement mainframe, où les «ingénieurs» (comme dans le titre de votre question) sont en fait des groupes de personnes étaient des dizaines (peut-être des centaines) de personnes impliqué. Ma réponse est basée sur l'utilisation du produit SCM où je suis le plus familier (je ne sais pas s'il est nécessaire de divulguer le nom du produit).
1. Architecture
Voici les points saillants de la façon dont je répondrais à votre question:
- Tout le code (et les artefacts connexes comme les exécutables, etc.) est stocké dans des fichiers qui, ensemble, sont ce que nous appelons la structure de la bibliothèque .
- Pour chaque environnement sur chaque système cible (éventuellement distant), il y a un serveur (une "tâche démarrée" dans le mainframe), qui s'occupe de TOUTES (répétez: TOUTES) mises à jour de tout dans la structure de la bibliothèque. Il y a quelques exceptions (comme les responsables de la sécurité ou l'équipe de gestion de l'espace), mais à part cela, personne (répétez: personne) n'a l'autorisation d'appliquer des mises à jour à n'importe quel fichier de cette structure de bibliothèque. En d'autres termes: le serveur obtient une autorisation de mise à jour exclusive sur toute la structure de la bibliothèque . Attention: les gens d'OPS iront bonkers si vous entrez pour limiter leur accès (au début, ils vont résister ...), alors assurez-vous d'être couvert par la haute direction (CxO) pour imposer ces règles d'accès ...
- Le logiciel réel change mon composé d'un seul composant (un minuscule correctif de code au milieu de la nuit ...), ou il peut également s'agir de centaines ou de milliers de sources, d'exécutables ou de tout autre artefact (pendant un week-end de sortie). Pour les rendre gérables, les choses qui devraient être déplacées (plus ou moins) ensemble, en même temps, sont regroupées dans ce qu'on appelle un package de modifications logicielles .
Avec ce qui précède en place, tout type de mise à jour à appliquer par le serveur à la structure de la bibliothèque ne sera possible que via un flux de travail bien défini, que nous appelons le cycle de vie d'un package de modifications logicielles (SDLC si vous préférez). Pour réellement exécuter les différentes étapes de ce flux de travail, voici ce qu'il faut pour y arriver:
- Seul le serveur exécutera les étapes requises (et préconfigurées).
- Le serveur ne fera qu'une étape spécifique (= mettre à jour quelque chose quelque part dans la structure de la bibliothèque), après que les approbations requises (des êtres humains) aient été rassemblées pour effectuer une telle étape.
- Les approbations ne peuvent être accordées que par des utilisateurs qui ont un rôle qui leur permet (= autorisation) d'émettre de telles approbations.
2. Rôles et autorisations
Le serveur s'assurera que l'utilisateur essayant de faire quelque chose (comme «approuver quelque chose») ne pourra le faire que si les autorisations de l'utilisateur sont appropriées. Cette partie est facile. Mais vous ne voulez pas utiliser le système SCM pour administrer toutes ces autorisations pour tous les utilisateurs impliqués, c'est ce qui appartient à votre système de sécurité (pas le système SCM!), Afin que vous puissiez adapter votre flux de travail (dans votre système SCM) pour aller vérifier ces autorisations chaque fois que cela est approprié. Les étapes ci-dessous fournissent plus de détails à ce sujet.
Étape 1: configurer les autorisations (dans le système de sécurité)
Définissez des entités de sécurité dans votre système de sécurité, avec des noms bien définis pour ces entités. Quelques échantillons (ajoutez autant d'échantillons similaires pour répondre à vos propres besoins):
PrmUnit
, utilisé pour obtenir la permission de demander une promotion pour dire test d' unité .
PrmQA
, Utilisé pour obtenir l' autorisation de demander un Promouvoir dire Qa -Test (supposons que c'est le niveau de test le plus élevé).
PrdEnduser
, utilisé par les utilisateurs finaux impliqués dans un certain niveau de test, pour indiquer qu'ils sont satisfaits des résultats produits par une sorte de test. Et à cause de cela, ces utilisateurs finaux sont d'accord avec le changement progressif dans la structure de la bibliothèque.
PrdRelmgnt
, utilisé par les gestionnaires de versions pour autoriser une activation en production (= le dernier / plus haut niveau dans la structure de la bibliothèque).
Définissez des groupes d'utilisateurs dans votre système de sécurité. Quelques échantillons (ajoutez autant d'échantillons similaires pour répondre à vos propres besoins):
GrpDevs
, ce qui (par exemple) correspond à vos développeurs (probablement plus que juste 1).
GrpEnduser
, ce qui (par exemple) correspond à vos utilisateurs finaux (au moins 1, de préférence avec des utilisateurs plus similaires).
GrpRelMgnt
, ce qui (par exemple) correspond à vos gestionnaires de versions (au moins 1, de préférence quelques utilisateurs supplémentaires).
Accordez des autorisations , également à l'aide de votre système de sécurité, pour autoriser l'accès à des " entités de sécurité " sélectionnées pour des " groupes d'utilisateurs " sélectionnés. Pour continuer l'exemple ci-dessus, voici ce qui semble approprié (adaptez-vous à vos propres besoins):
- Le groupe
GrpDevs
a accès à (uniquement!) L'entité de sécurité PrmUnit
.
- Le groupe
GrpEnduser
a accès à (uniquement!) L'entité de sécurité PrdEnduser
.
- Le groupe
GrpRelMgnt
a accès à (les deux!) Entité de sécurité PrmQA
et PrdRelmgnt
.
Étape 2: configurer le flux de travail (dans le système SCM)
Une fois les autorisations configurées dans votre système de sécurité (comme à l'étape 1), tout ce qui reste à faire dans votre système SCM est de configurer la façon dont les différentes étapes du style de vie correspondent aux entités de sécurité associées dans votre système de sécurité. Autrement dit, seuls les utilisateurs qui ont l'accès approprié à l'entité de sécurité requise sont autorisés à demander au serveur d'effectuer l'étape correspondante dans le flux de travail.
Voici quelques exemples de la façon dont vous configureriez votre système SCM pour que la magie se produise:
- Si un utilisateur y a accès
PrmUnit
, cet utilisateur est autorisé à demander un test de promotion en unité . Évidemment, les utilisateurs du groupe GrpDevs
sont les utilisateurs autorisés pour cela (remarque: pas, par exemple, les utilisateurs du groupe GrpRelMgnt
).
- Si un utilisateur y a accès
PrmQA
, cet utilisateur est autorisé à demander un test de promotion au contrôle qualité. Évidemment, les utilisateurs du groupe GrpRelMgnt
sont les utilisateurs autorisés pour cela (remarque: pas, par exemple, les utilisateurs du groupe GrpDevs
ou du groupe GrpEnduser
).
- Si un utilisateur y a accès
PrdEnduser
, cet utilisateur est autorisé à autoriser la modification à aller de l'avant dans la structure de la bibliothèque (ce qui est généralement une condition préalable pour que les utilisateurs du groupe GrpRelMgnt
puissent même réviser une modification). De toute évidence, les utilisateurs du groupe GrpEnduser
sont les (seuls) utilisateurs autorisés pour cela.
- Si un utilisateur y a accès
PrdRelmgnt
, cet utilisateur est autorisé à autoriser une activation en production (= le dernier / plus haut niveau dans la structure de la bibliothèque).
3. Attendez-vous à l'inattendu et soyez prêt
Ce qui précède n'est qu'un schéma directeur, qui, espérons-le, aidera à comprendre comment, en fin de compte, c'est le serveur qui s'occupe de la séparation des tâches ... à condition que vous ayez la couverture CxO pour vous imposer des règles d'accès qui ne plairont pas à tout le monde.
Pour compléter l'image comme expliqué ci-dessus, le serveur crée une piste d'audit (journalisation) de tout ce qui se passe dans le système. Pour qu'à tout moment, il soit toujours possible de répondre à des questions comme
Que s'est-il passé quand et pourquoi, et quel utilisateur autorisé l'a effectivement approuvé ... dès le départ?
Mais le plus difficile est probablement de disposer d'outils de reporting adéquats (et de savoir comment les utiliser). Au moins pour (facilement) satisfaire les demandes des auditeurs informatiques (leurs questions peuvent être très difficiles). Mais aussi pour pointer vers les enregistrements de journaux pertinents dans votre système SCM pour répondre à toutes sortes de questions «Que s'est-il passé» dans les situations de crise où (une partie de) la production est en baisse.
PS: Je laisse le jugement de chacun si ma réponse est oui ou non conforme à DevOps.