DevOps
DevOps est un terme désignant un groupe de concepts qui, bien que n’étant pas tous nouveaux, se sont transformés en un mouvement et se répandent rapidement dans la communauté technique. Comme tout terme nouveau et populaire, les gens peuvent avoir des impressions confuses et parfois contradictoires de ce qu’il est vraiment. A l’instar de la « qualité » ou de « l’agilité », DevOps est un concept assez vaste qu’il faut nuancer afin de bien le comprendre.
Définition de ce concept et de ses principes
Ce terme est issu de la collision de deux grandes tendances connexes. La première, également appelée « infrastructure agile » ou « opérations agiles », est née de l’application des approches Agile et Lean au travail d’exploitation. La seconde est une compréhension beaucoup plus large de la valeur de la collaboration entre le personnel de développement et d’exploitation à toutes les étapes du cycle de vie du développement lors de la création et de l’exploitation d’un service, et de l’importance des opérations dans notre monde de plus en plus orienté vers les services.
DevOps est donc une communauté de pratiques interdisciplinaires dédiée à l’étude de la construction, de l’évolution et de l’exploitation à grande échelle de systèmes résilients en évolution rapide.
Autrement dit, il s’agit de la pratique consistant à faire participer ensemble les ingénieurs d’exploitation et de développement à l’ensemble du cycle de vie des services, de la conception au soutien de la production en passant par le processus de développement.
Un premier corollaire à cela est que DevOps se caractérise également par le fait que le personnel d’exploitation utilise un grand nombre des mêmes techniques que les développeurs pour leur travail sur les systèmes.
Ces techniques peuvent aller de l’utilisation du contrôle des sources aux tests en passant par la participation à un processus de développement Agile.
À cette fin, le terme « DevOps » ne fait pas de distinction entre les différentes sous-disciplines de l’administrateur système. « Ops » est un terme général qui désigne les ingénieurs système, les administrateurs système, le personnel d’exploitation, les ingénieurs de mise à jour, les administrateurs de bases de données, les ingénieurs réseau, les professionnels de la sécurité et diverses autres sous-disciplines et appellations d’emploi. « Dev » quant à lui est utilisé comme raccourci pour désigner les développeurs en particulier. Néanmoins, en pratique, il est encore plus large et signifie « toutes les personnes impliquées dans le développement du produit ». Dès lors, cela peut inclure le produit, l’assurance qualité et d’autres disciplines.
Un concept proche de deux approches bien connues
DevOps a de fortes affinités avec les approches Agile et Lean. L’ancienne vision des opérations tendait à considérer d’un côté « Dev » comme regroupant les « créateurs » et de l’autre, « Ops » comme désignant les « personnes qui s’occupent de la création après sa naissance ». Or, cette vision n’était pas adaptée car elle traitait ces deux aspects comme des préoccupations cloisonnées. C’est suite à cette prise conscience que DevOps a été développé.
De cette façon, il peut être interprété comme une excroissance d’Agile : le développement agile de logiciels prescrit une collaboration étroite entre les clients, la gestion de produit, les développeurs et (parfois) l’assurance qualité pour combler les lacunes et itérer rapidement vers un meilleur produit. DevOps dit « oui, mais la prestation de services et la façon dont l’application et les systèmes interagissent sont une partie fondamentale de la proposition de valeur au client également, et donc l’équipe produit doit inclure ces préoccupations comme un élément de premier niveau ». De ce point de vue, il ne fait qu’étendre les principes Agile au-delà des limites du « code » à l’ensemble du service fourni.