DevOps Quidgest

DevOps

Melhoria contínua

A fusão do Desenvolvimento (Dev) com as Operações (Ops), o DevOps, é o seguimento natural do Agile.

O primeiro princípio do manifesto para o desenvolvimento ágil de software[1] já deixava claro que “our highest priority is to satisfy the customer through early and continuous delivery of valuable software”: a maior prioridade é a entrega rápida e contínua de software valioso para o negócio.

Esta parece uma proposição neutra e universalmente válida, até nos apercebermos de quão distante está das práticas correntes das organizações.

A relação entre as tecnologias de informação (o IT) e as operações (o negócio) nunca foi pacífica. Representado por departamentos de sistemas de informação internos ou por fornecedores externos, o IT tradicional (pré DevOps) tem assumido posições pouco flexíveis, demorando muito tempo a dar resposta às aspirações das áreas que utilizam as suas soluções. E as áreas operacionais tendem a não transferir o seu conhecimento de processos e práticas para o IT, sendo certo que, a maior parte das vezes, o IT tradicional não aprecia e reage negativamente a estas sugestões, que considera “excessiva” customização[2].

No fluxo contínuo de criação de valor para o cliente, é necessária uma muito melhor colaboração entre as muitas funções envolvidas, isto é, uma reengenharia de processos que inclua também o IT.

O DevOps advoga a constituição de equipas conjuntas e diretas, solidariamente responsáveis, sem intervenção de terceiros.

Os terceiros habitualmente convocados (o Quality Assurance[3], uma coordenação, uma fiscalização de projeto) para criar uma ponte entre Dev e Ops, na prática destroem a nova relação de confiança que a cultura DevOps pretende instituir entre o desenvolvimento e as operações. E destroem, inevitavelmente, porque a sua única razão de existência é o pressuposto de essa confiança estar ausente[4].

Na cultura DevOps, a organização do desenvolvimento de software já não é por projeto, mas como um serviço contínuo que

  • deteta (e até antecipa) novas necessidades do cliente e modela os novos requisitos,
  • converte estes requisitos, rápida e imediatamente, em código,
  • integra, testa e garante a coerência de todas as componentes e do trabalho desenvolvido em paralelo por várias equipas,
  • entrega ou disponibiliza a nova versão ao cliente e
  • (a pedido ou após validação) coloca a nova versão em utilização produtiva pelo negócio / operações (Ops).

A comunidade DevOps, bastante forte, organiza todos os anos o All Day DevOps, um evento que, seguramente, vale a pena acompanhar. Enquanto não chega o de 2018, vale a pena assistir às 100 sessões de 2017[5].

O relatório da Puppet sobre o estado atual do DevOps (2018 State of DevOps Report)[6] é também uma referência útil.

A contribuição da Quidgest

O Genio é um fator decisivo na garantia de automatização de todo este processo.

Sem o Genio, o DevOps sofre de uma de três limitações

  • apenas começa na integração contínua e não inclui a fase de exploração de novos requisitos,
  • ou não tem forma de modelar esses novos requisitos
  • ou, entre a exploração / modelação e a integração contínua exige um esforço considerável de programação manual, sendo um facto que a programação manual estrangula o fluxo DevOps e acaba por deteriorar os seus resultados pretendidos.

O fluxo do DevOps pode ser mais lento ou pode ser mais rápido. Sendo a rapidez, naturalmente, o objetivo mais desejável e a vantagem competitiva a alcançar. De pouco vale dizer-se que se adota esta perspetiva se os tempos de disponibilização de versões melhoradas pelo desenvolvimento (Dev) às operações (Ops) permanecem muito longos.

O Genio da Quidgest contribui decisivamente para o sucesso desta perspetiva, ao interligar todo o processo:

  • modela os requisitos,
  • programa de forma automática e extremamente rápida o código,
  • integra o trabalho de várias equipas (através do GenioSVN),
  • prepara, testa e entrega (através de ferramentas open-source como Jenkins, a que a Quidgest pode recorrer, ao contrário de outras plataformas, por usar exclusivamente linguagens de programação padrão),
  • assegura a evolução automática da estrutura de dados e documenta, informa e prepara os utilizadores finais de modo a garantir a utilização produtiva da nova versão da solução.

O DevOps requer a existência de architecturally significant requirements. Na Quidgest, esses requisitos foram transformados em padrões, constituindo o conjunto de padrões relacionados com a engenharia do software.

O processo de integração requer uma ferramenta de controlo de versões (na Quidgest, o GenioSVN), com todas as funcionalidades associadas a repositórios, checkouts, baselines, updates, commits, gestão de conflitos, lista de mudanças, branches ou forks, revisão pelos pares e responsabilização (blame).

O Genio suporta um outro aspeto muito importante, que é a evolução em paralelo de duas camadas do modelo: o modelo de negócio (estrutura de dados, regras de negócio, interfaces e processos) e a tecnologia (arquiteturas, linguagens de programação, bibliotecas, padrões). Estas duas camadas garantem a continuidade e a integração de todo o processo.

Num processo de integração contínua, a evolução é também contínua. Tal garante 1) vidas úteis das soluções muito mais prolongadas e 2) inexistência de disrupções pela mudança de versões do software.

Os nossos clientes e parceiros na co-inovação, nomeadamente os que este ano premiamos, são um bom exemplo de aplicação prática de DevOps a grandes sistemas de gestão.

___________________

[1] http://agilemanifesto.org/principles.html
[2] A revista QuidNews nº 10 ilustrava, com uma pequena história “O aleijadinho e o alfaiate”, a páginas 25, o que a Quidgest pensa deste conceito de excessiva customização.
[3] O diagrama que, a esta data, ainda figura na página wiki correspondente https://en.wikipedia.org/wiki/DevOps#/media/File:Devops.svg ainda inclui o QA na equação, o que não nos parece fazer qualquer sentido
[4] Uma posição muito próxima é defendida por Asaf Yigal https://devops.com/devops-killed-qa/
[5] Disponíveis em https://www.alldaydevops.com/2017-all-day-devops-video-recordings Por exemplo “It’s Not Continuous Delivery If You Can’t Deploy Right Now”, por Ken Mugrage
[6] Acabado de publicar, a 12 de setembro