Baixe o app para aproveitar ainda mais
Prévia do material em texto
i DevOps em Sistemas de Informação Francisco de Oliveira Rato Implementação em Operações de Tecnologias de Informação Dissertação apresentada como requisito parcial para obtenção do grau de Mestre em Gestão de Informação i MEGI 2 0 1 7 Título: DevOps em Sistemas de Informação Subtítulo: Implementação em Operações de Tecnologias de Informação Francisco de Oliveira Rato MGI i ii NOVA Information Management School Instituto Superior de Estatística e Gestão de Informação Universidade Nova de Lisboa DEVOPS EM SISTEMAS DE INFORMAÇÃO por Francisco de Oliveira Rato Dissertação apresentada como requisito parcial para a obtenção do grau de Mestre em Gestão de Informação, especialização em Gestão de Sistemas e Tecnologias de Informação. Orientador: Prof. Doutor Rui Gonçalves Novembro de 2017 iii DEDICATÓRIA À minha família e amigos, Que atinjam sempre os seus objetivos e sejam felizes à sua maneira iv AGRADECIMENTOS Aos meus pais, Paulo e Célia, por toda a ajuda e confiança depositada ao longo dos anos, sem eles nenhum dos meus graus académicos seria atingível – que todo o seu esforço e sacrifício empregue em prol do meu desenvolvimento enquanto pessoa tenha todos os frutos por eles idealizados; Ao meu irmão Guilherme, um sincero agradecimento pela companhia ao longo destes anos e que os ensinamentos e exemplos que lhe transmiti enquanto irmão lhe sejam sempre úteis. Aos meus avós, Martinho e Clementina, pelo carinho e apoio que me deram desde que nasci e por terem formado a sua filha de forma exemplar o que me ajudou a ultrapassar muitas dificuldades ao longo da vida. Que vivam estes e muitos outros momentos de felicidade por longos anos. Ao meu falecido avô Júlio, que sempre foi um forte sustento para o meu pai e um exemplo para mim – que a sua memória perdure por muitos anos. À sua mulher Lurdes, por todo o carinho demonstrado em diversos momentos da minha vida e à minha avó Filipa pelo apoio à formação pessoal do meu pai. Aos meus tios, Marta, Rui e Isabel, e ao meu primo Daniel, por todo o afeto transmitido durante o meu crescimento e apoio à formação do meu pai e irmão e ao resto da minha família, tios e primos de outros graus e afastados, pelos bons momentos vividos e amizade genuína. Aos meus amigos, e em especial, ao António Fernandes e Filipe Passinhas, que me ajudaram a ultrapassar muitos desafios ao longo da vida e foram cruciais para o meu crescimento – todo o seu apoio ao longo destes anos é devidamente reconhecido e será para sempre estimado. Ao meu colega e amigo, Bernardo Martins, por todo o seu apoio e companheirismo durante a elaboração desta dissertação, que me ajudou a prosperar e auxiliar à finalização do mestrado. Ao meu orientador Prof. Dr. Rui Gonçalves, pela disponibilidade revelada, assim como pelas críticas, correções e sugestões feitas. Aos meus colegas e amigos da Accenture, que me ajudaram no desenvolvimento enquanto profissional e me proporcionaram bons momentos a nível pessoal , a todos um sentido agradecimento. Por fim, a uma das pessoas mais importantes na minha vida, Carlota Lousada, que apesar de só ter conhecido no último ano do curso, se revelou essencial para atingir os meus objetivos e me apoiou incessantemente ao longo dos últimos três anos. Um agradecimento também à sua família por todo o afeto e amizade durante estes anos. v RESUMO Nas últimas décadas verificaram-se grandes alterações aos paradigmas de desenvolvimento de software. Desde o final dos anos 80, o foco era essencialmente a análise de requisitos, evoluindo, nos anos 90, para a programação orientada a objetos, que abriu caminho para a implementação de metodologias como o Rational Unified Process (RUP), introduzido o desenvolvimento por iterações, que transfere o ênfase do planeamento para o desenvolvimento, até aos anos 2000, onde foram introduzidas as metodologias Agile, um conjunto de princípios em que os requisitos e soluções evoluem através da colaboração e auto-organização de equipas especializadas. Com esta evolução natural do Agile, surge o conceito de DevOps. Apesar de semelhantes, ambos os conceitos possuem diferenças intrínsecas: o primeiro representa uma mudança de abordagem (pensamento), enquanto o que o segundo implementa uma mudança cultural nas organizações. A seguinte dissertação contem o desenvolvimento do tema proposto, DevOps em Sistemas de Informação, uma metodologia de desenvolvimento que se baseia na interdependência entre o desenvolvimento de software e operações de tecnologias de informação, sustentado por um framework teórico, relevância e importância do estudo, metodologia e devidos resultados, onde serão apresentados alguns casos de estudo sobre o tema e suas particularidades, e, por fim, as conclusões da pesquisa. PALAVRAS-CHAVE DevOps, Agile, Tecnologias de Informação, Entregas Contínuas, Metodologias de Desenvolvimento vi ABSTRACT Over the last few decades, we have witnessed major changes to the software development paradigms. Since the end of the 80s, the prominence was essentially on requirements’ analysis, evolving, later in the 90s, to object oriented programming, which opened the way for development methodologies such as the Rational Unified Process (RUP), that introduced iterative and incremental development, transferring the emphasis from planning to development, until the turn of the century, where agile methodologies were introduced as a set of principles in which results and solutions evolve through collaboration and self-organization of specialized teams. With this natural evolution of agile, arises the concept of DevOps. Although similar, both concepts possess underlying dissimilarities: the f irst stands for a behavioral change, while the second drives a cultural change inside organizations. The following thesis contains the embodiment of the proposed subject, DevOps in Information Systems, a development methodology based on the interdependence between software development and information technology operations, sustained by a theoretical framework, importance and relevance of the study, research methodology and its achieved results, where the author will present a few case studies on the main topic and its characteristics and, at last, the conclusions of the study. KEYWORDS DevOps, Agile, Information Technology, Continuous Delivery, Development Methodologies vii ÍNDICE 1. Introdução .................................................................................................................... 1 1.1. Relevância e Importância do Estudo ..................................................................... 4 1.2. Objetivos................................................................................................................ 8 2. Revisão da Literatura .................................................................................................... 9 2.1. Contextualização do Tema ....................................................................................9 2.2. Contexto Cronológico .......................................................................................... 11 2.3. Introdução ao DevOps ......................................................................................... 12 2.4. Conceitos Associados ao DevOps ........................................................................ 16 2.4.1. Integração Contínua (Continuous Integration) ............................................ 16 2.4.2. Entregas Contínuas (Continuous Delivery) ................................................... 18 2.4.3. Implementação Contínua (Continuous Deployment)................................... 20 2.4.4. Integração dos Conceitos ............................................................................. 21 2.5. Paralelismo com Agile ......................................................................................... 23 3. Metodologia ............................................................................................................... 26 3.1. Processo de Investigação .................................................................................... 27 4. Resultados e Discussão............................................................................................... 29 4.1. Introdução ........................................................................................................... 29 4.2. Caso de Estudo: “SCoT” – Ministério da Administração Interna ........................ 29 4.2.1. Problema ...................................................................................................... 29 4.2.2. Solução ......................................................................................................... 30 4.2.3. Arquitetura ................................................................................................... 31 4.2.4. Benefícios ..................................................................................................... 32 4.3. Outros Casos de Estudo....................................................................................... 33 4.3.1. Capgemini..................................................................................................... 33 4.3.2. Yahoo Answers ............................................................................................. 34 4.3.3. Cliente do Sector Industrial .......................................................................... 36 4.4. Análise Comparativa............................................................................................ 38 5. Conclusões .................................................................................................................. 41 6. Limitações e Recomendações para Trabalhos Futuros .............................................. 46 7. Bibliografia.................................................................................................................. 47 viii ÍNDICE DE FIGURAS Figura 1 - Adoção Geográfica do DevOps e por Indústria .......................................................... 2 Figura 2 - Comparação da alocação de tempo a tarefas de TI................................................... 3 Figura 3 – Valor relativo à adoção do DevOps ........................................................................... 7 Figura 4 - Ciclo de Desenvolvimento de Software ................................................................... 14 Figura 5 - Representação Esquemática do conceito Integração Contínua .............................. 17 Figura 6 – Representação Esquemática do conceito Entregas Contínuas ............................... 18 Figura 7 - Representação Esquemática do conceito Implementação Contínua ...................... 20 Figura 8 – Interfaces Funcionais do SCoT................................................................................. 30 Figura 9 – Arquitetura do SCoT ................................................................................................ 31 ÍNDICE DE GRÁFICOS Gráfico 1 – Gartner Hype Cycle .................................................................................................. 4 Gráfico 2 – Gartner Hype Cycle de desenvolvimento aplicacional (2015) ................................. 5 ÍNDICE DE TABELAS Tabela 1 – Análise comparativa dos três conceitos associados ao DevOps ............................ 22 Tabela 2 – Comparação entre DevOps e Agile ......................................................................... 24 Tabela 3 – Analise Comparativa dos Casos de Estudo ............................................................. 40 ix LISTA DE SIGLAS E ABREVIATURAS TCO Total Cost of Ownership - Estimativa financeira que determina os custos diretos e indiretos de um produto ou sistema; ROI Return on Investment - Benefício para um investidor resultante de certo investimento efetuado em algum recurso; TTM Time to Market - Tempo gasto no desenvolvimento de um certo produto, desde a sua conceção ao produto final; SCM Software Configuration Management – Conjunto de tarefas responsáveis pelo controlo e rastreamento de alterações em determinado software; TDD Test Driven Development – Desenvolvimento orientado para ciclos curtos baseado em casos de testes diretamente associados aos requisitos inicialmente estabelecidos; OLAP Online Analytical Processing – Capacidade para manipular e analisar um grande volume de dados sob múltiplas perspetivas. DAD Disciplined Agile Delivery – orientação agile na entrega e conceção de soluções de TI RAC Oracle Real Application Clusters SOA Service-Oriented Architecture – arquitetura de software cujo princípio é as funcionalidades implementadas pelas aplicações serem disponibilizadas na forma de serviços 1 1. INTRODUÇÃO Relatórios recentes confirmam que a performance das Tecnologias de Informação (TI) fornece valor para o tipo de negócio em que estão inseridos. Empresas de TI de alta performance têm um forte e positivo impacto no desempenho geral das organizações que servem e, tais resultados, devem-se maioritariamente à organização geral dos serviços, onde a estratégia tem de ser corretamente definida desde o início de determinada tarefa (Bitterer, 2011). O “2015 State of DevOps Report” refere que estas empresas entregam e implementam soluções de software 30 (trinta) vezes mais rápido que as suas análogas e conseguem reduzir até 200 (duzentas) vezes os prazos de entrega inicialmente idealizados. Outros números refletem ainda que tais empresas experienciam 60 (sessenta) vezes menos falhas e, caso existam, conseguem recuperar das mesmas 168 (cento e sessenta e oito) vezes mais depressa (Forsgren, Kim, Kersten & Humble, 2015). Com estes resultados, é percetível que existe um pensamento lean na gestão de projetos atual, o qual pode ser definido como uma filosofia de gestão centrada na melhoria da produtividade, reduzindo ou eliminando custos e tempos, visando promover atividades que realmente acrescentam valor para o cliente (Loukides, 2012; Womack & Jones, 2010). O pensamento lean consiste também num conjunto de princípios que visam simplificar o modo como uma organização produz e entrega valor aos seus clientes enquanto os “desperdícios” são eliminados. O ponto de partida é reconhecer que apenas uma pequena fração do tempo e esforço de uma organização é convertida em valor (Womack & Jones, 2010). Após definido o valor de um produto ou serviço na perspetiva do cliente, todas as atividades que não acrescentam valor devem ser eliminadas (Bass, Weber & Zhu, 2015). O DevOps é essencial no contexto tecnológico moderno, sendo um atributo chave para atingir vantagens competitivas. O contexto do tema escolhidoassenta essencialmente na otimização de processos e operações, sendo as abordagens idealizadas para o tema relativas a metodologias de desenvolvimento, gestão de equipas e gestão operacional. A importância do estudo poderá resumir- se à necessidade imediata de mudança de paradigmas de desenvolvimento em Portugal e, como é o caso dos engenheiros de software, a necessidade de uma melhor compreensão dos contextos de negócio e dos objetivos para os quais os sistemas são desenhados e construídos. Compreender o conceito de DevOps implica, também, um entendimento dos contextos empresariais e de negócio, tal como o contexto técnico e operacional, de maneira a possibilitar um melhor entendimento de fenómenos a todos os intervenientes no processo produtivo (Bass, Weber & Zhu, 2015). 2 Na década de 80, a manufatura foi revolucionada pela aplicação de princípios lean. Hoje em dia, são as TI que os têm de adquirir. Quando se aplica práticas lean na tecnologia – limitando os processos de trabalho, monitorizando a qualidade e produtividade e usando estes dados para melhorar os procedimentos de tomada de decisão – obtém-se resultados (Cawley, Wang, Richardson, et al., 2010). Por mais que as organizações considerem que já adotam práticas que ficaram conhecidas como DevOps, o seu uso não é ainda prescritivo, existindo uma variedade de diferentes manifestações de uso em termos de definição e padrão entre as organizações (Braga, 2015), o que eventualmente poderá levar à mudança de cultura das empresas, tornando-as orientadas para a performance, subindo os níveis de produtividade e aumentando a satisfação dos empregados no local de trabalho (Bass, Weber & Zhu, 2015). Por fim, e sendo possível prever e medir a performance das organizações, iremos ter melhorias nas mesmas áreas que as possibilitaram, incluindo ainda o aumento na performance financeira da empresa em geral (Watson & Wixom, 2007). Conforme é possível observar no esquema em baixo, a adoção desta metodologia tem crescido bastante no mercado e os percussores da mesma pertencem, na sua maioria, aos Estados Unidos da América. Na Europa é um fenómeno mais recente e com menor impacto, mas de acordo com as “Indústrias” (à direita) conseguimos inferir que uma das principais áreas de impacto são as tecnologias, e que é apenas uma de diversas áreas onde estes procedimentos podem ter consequências. Figura 1 - Adoção Geográfica do DevOps e por Indústria (Fonte: Forsgren, Kim, Kersten & Humble, 2015) 3 A temática oferece também inúmeras vantagens que não se registam com outras metodologias, ágeis ou não. Desde serviços digitais orientados ao cliente a complexos sistemas de informação empresariais de larga escala, é facilitada a gestão dos ambientes de TI e de negócio juntamente com resultados tangíveis, tais como a redução em 20% dos custos de entrega, um aumento até 50% do time to market (TTM) e a capacidade de gerar atributos adicionais em dias – ao invés de semanas, ou até meses. O esquema seguinte ilustra uma análise comprativa entre alguns indicadores de performance, medidos em horas por trabalhador, entre projetos orientados ao DevOps e projetos com arquiteturas tradicionais de Tecnologias de Informação. Corroborando a informação exposta nos parágrafos anteriores, as estatísticas apresentadas demonstram que as equipas perdem ligeiramente mais tempo a automatizar tarefas, gastam menos tempos em atividades administrativas, resolvem “incêndios” (termo utilizado para classificar erros inesperados) menos frequentemente e que, em geral, não necessitam de fazer tantas horas-extra com as equipas de TI tradicionais. Figura 2 - Comparação da alocação de tempo a tarefas de TI (Fonte: Mathaisel, 2013) 4 Neste contexto será explorada a organização geral do conceito de DevOps, os princípios e benefícios, e ainda a análise de alguns casos de estudo, inferindo a cadeia de valor que este tema verdadeiramente representa. No final, o autor conta obter uma reflexão elaborada sobre o tema, com a devida sustentação fortalecida ao longo do corpo desta tese, encontrando-se dotado, aquando do seu desenvolvimento e conclusão, de conhecimentos que lhe serão úteis futuramente e a quem cons ultar este documento. 1.1. RELEVÂNCIA E IMPORTÂNCIA DO ESTUDO Tendo em conta os argumentos anteriores, resta-nos uma interrogação lógica: qual a utilidade do DevOps para o contexto empresarial que vivemos? Para explicar o estado da aceitação e reconhecimento do termo, recorri ao gráfico 1 da Gartner, conhecida empresa de investigação tecnológica, denominado “Hype Cycle”. Este gráfico serve precisamente para manter um acompanhamento das novas tendências a nível tecnológico, que está diretamente interligado à teoria da difusão de inovações elaborada por Everett Rogers, em que uma difusão é descrita como “(…) o processo sobre o qual certa inovação é comunicada através de certos canais ao longo de um determinado período de tempo.”. Esta teoria enfatiza ainda que existem quatro elementos associados a esta teoria, que são “(…) a inovação, canais de comunicação, tempo e o sistema social” – e que são identificados em cada estudo de uma difusão (Rogers, 2003). Gráfico 1 – Gartner Hype Cycle (Fonte: Sicular, 2013) 5 Ora, de acordo com a teoria de difusão de inovações, o DevOps está plenamente dependente da população de praticantes que estaremos a analisar. Ainda assim, podemos identificar duas grandes maiorias de praticantes, a maioria antecipada e tardia de adotantes. A maioria antecipada foram os que seguiram os princípios do DevOps numa fase temporal mais antiga, ou seja, adotaram-no mais cedo que os da maioria tardia. Em relação ao Hype Cycle descrito em cima, um estudo de 2015 da Gartner, coloca a maioria antecipada no slope of enlightment, que poderemos traduzir para a “encosta da iluminação”, que significa a interiorização do tema e aplicação para as tarefas rotineiras do dia-a- dia – particularmente, corresponde ao aperfeiçoamento da metodologia e boas práticas associadas no gráfico. A maioria tardia estava localizada no peak of inflated expectations (pico das expectativas inflacionadas), ou seja, já estavam a adotar o termo fora da tendência geral e ainda não tinham bem definidas as suas prioridades e objetivos. Gráfico 2 – Gartner Hype Cycle de desenvolvimento aplicacional (2015) (Fonte: Ashutosh, n.d.) 6 De acordo com a Gartner, num estudo relativo a 2015 de Sobejana & Wilson, o DevOps era colocado no pico das expectativas inflacionadas, mas com uma previsão de 5 a 10 anos (legenda) até chegar à plena produtividade. Neste estudo é também destacado que “muitas iniciativas transformacionais não são suficientemente focadas na redução de riscos, no entanto, através uso iterativo de DevOps e a sua adoção a nível arquitetónico, é possível acrescentar valor enquanto se reduz riscos e custos operacionais”, e é precisamente aqui que encontramos o verdadeiro valor do DevOps: é uma abordagem estratégica e processual que cria valor automatizado e otimizado para o negócio (Sobejana & Wilson, 2016). Transitando para a relevância financeira do tema, são inúmeros os casos e empresas que testemunharam vantagens com esta abordagem. De acordo com um artigo da consultora McKinsey & Company sobre a reorganização das TI para uma entrega de software mais rápida, as três maiores fontes de valor da adoção do DevOps são: Melhorias no TTM, redução da periodicidade de ciclos e aumento da produtividade (fig. 3). Tal é explicado pela eliminação de tarefas de validação de novas alterações, sendo tal facto alcançado através da gestão de versionamento e automatização da implementação e testes destasnovas alterações. A McKinsey, por Bossert, Ip & Starikova, destaca ainda o caso da Netflix, que criou uma arquitetura centrada na cloud que possibilita centenas de alterações de software por dia – e tudo devido a uma equipa DevOps que não necessita de requisitar recursos da equipa de Operações, pois todas as alterações efetuadas são integradas automaticamente na infraestrutura da Netflix, utilizando uma plataforma web-based onde todos os testes são efetuados para um nicho limitado de utilizadores. Quando as alterações forem validadas, o tráfego é redirecionado para as versões mais recentes, e constantemente acompanhadas por um processo automatizado de monitorização que assegura um plano de contingência caso algo não corra como planeado: o trafego é redirecionado para a versão antiga até se consumar o aperfeiçoamento. Por este mesmo motivo, a Netflix consegue implementar novas alterações dentro de horas, enquanto outras empresas concorrentes necessitariam de meses (Bossert, Ip & Starikova, 2015). 7 Ainda sobre o tema da relevância, a Infosys apresenta-nos alguns casos de sucesso da implementação da metodologia, como por exemplo, no artigo “Global bank improves service quality and saves US $2 million with Agile & DevOps” (n.d.), um banco que aumentou a qualidade do seu serviço com recurso a práticas de Agile e DevOps. A consultora optou por uma solução que transformou pessoas (sessões de formação sobre as práticas destas metodologias, coaching para várias linhas do negócio e fomentação da colaboração entre departamentos), processos (avaliação da maturidade do sistema, implementação de SCRUM e Kanban – culminando num framework DAD e gestão de releases utilizando práticas lean) e tecnologias (automatização de testes, integração contínua, entregas automatizadas, entre outras). A solução acabou por acelerar tempo entre ciclos de 12 para 3-4 semanas, otimizou custos e aumentou a qualidade e segurança do serviço em 25% e poupou 2 milhões de dólares graças aos princípios de Agile e DevOps. Figura 3 – Valor relativo à adoção do DevOps (Fonte: Bossert, Ip & Starikova, 2015) 8 Para finalizar, realço também o caso “DevOps helps US-based technology major reduce operations cost by 20%” (n.d.), descrito pela Infosys, de uma empresa de tecnologia sediada nos Estados Unidos da América que possibilitou uma redução nos custos operativos em 20%. Com o objetivo de aumentar a frequência de releases e reduzir TTM, a empresa pretendia aumentar o valor do negócio e melhorar a experiência dos seus clientes sem afetar a qualidade e disponibilidade do sistema. Como solução, a Infosys desenhou um programa transformacional de DevOps que possibilitou a entrega mais rápida de novos atributos, juntamente com um aumento da eficiência e redução dos custos de operação. Simultaneamente provou-se o aumento da qualidade de serviço através da diminuição significativa de incidentes de prioridade 1 e 2, sendo os novos lucros aproveitados para financiar outros programas transformacionais internos. 1.2. OBJETIVOS A organização geral do trabalho seguirá uma estrutura de desenvolvimento desde a introdução do conceito de DevOps até à sua comparação com outras metodologias semelhantes, passando pela análise dos impactos da sua implementação e utilização. A revisão da literatura dará início à investigação, sendo importante entender diversos conceitos teóricos, e suas aplicações, para que se torne mais fácil de alcançar os resultados inicialmente idealizados. O objetivo geral da dissertação é providenciar ao leitor um melhor entendimento das práticas arquiteturais e técnicas modernas e, acima de tudo, os padrões relativos à adoção da metodologia DevOps. Estas praticas, quando corretamente implementadas, levam a um conjunto de benefícios, que serão conjugados com uma análise de impactos da implementação da metodologia nas tecnologias de informação. Partindo deste objetivo procurar-se-á identificar necessidades, obstáculos e finalidades da aplicação do DevOps, obtendo, numa visão mais detalhada, um entendimento da importância deste conceito, percebendo todos os envolvimentos e contornos associados à correta e eficaz gestão operacional de sistemas de informação. Em adição a isto, serão apresentados casos de estudo que pavimentam o caminho desde a adoção destas práticas aos resultados operacionais positivos. Este estudo tem como finalidade atingir as seguintes metas: I. Apresentação e definição do conceito II. Análise dos benefícios da implementação da metodologia DevOps III. Exposição dos impactos e riscos do DevOps em Operações de TI 9 2. REVISÃO DA LITERATURA 2.1. CONTEXTUALIZAÇÃO DO TEMA As metodologias de desenvolvimento, para além dos princípios em que se centram, consistem numa divisão da etapa de desenvolvimento em várias fases com o intuito de aumentar a produtividade, o planeamento e a gestão (Whitten, Lonnie & Kevin, 2003). A metodologia escolhida pode incluir uma definição prévia das entregas e dos impactos, que são criados e concluídos por uma equipa de projeto para desenvolver ou manter uma aplicação. As metodologias de desenvolvimento mais comuns incluem o modelo em cascata, prototipagem, desenvolvimento iterativo e incremental, espiral, Rapid Application Development (RAD) e vários tipos de metodologias ágeis (Agile). Para auxiliar ao paralelismo e comparações entre temas presentes ao longo do documento, será dado um especial ênfase a estas últimas metodologias, chamadas ágeis, que correspondem a um conjunto de princípios definidos no Manifesto Agile (2001) dentro dos quais os requisitos e soluções evoluem através da colaboração entre equipas autogeridas e organizadas. Os quatro fundamentais princípios deste manifesto compreendem indivíduos e interações sobre processos e ferramentas, software funcional sobre documentação, colaboração com clientes sobre negociação de contratos e repostas a mudança sobre planeamento. Promovem planeamento adaptativo, desenvolvimento evolutivo, entregas antecipadas e melhorias contínuas, encorajando uma resposta rápida e flexível a qualquer género de transformações e/ou alterações no processo produtivo (Shafer & Debois, 2008). A classificação agile deve-se ao facto de a metodologia não ter métodos específicos para concretizar os princípios enumerados anteriormente, contudo, vários outros processos surgiram como resultado da implementação destes princípios, como por exemplo, o Agile Unified Process (AUP), métodos Crystal Clear, eXtreme Programming (XP), Kanban ou SCRUM. As disrupções tecnológicas associadas aos segmentos de negócio colocam, constantemente, pressão sobre os tradicionais modelos empresariais. As quebras de negócio, entre as quais podemos realçar os modelos operativos variáveis, o foco inexorável em custos e mais-valias, sucessivas preocupações com segurança e conformidade com normas, novas relações entre empresas e a procura incessante por informação cada vez melhor e mais acessível, exigem que todas as tarefas sejam efetuadas com a máxima prontidão. Em termos tecnológicos, começam a surgir nos últimos anos novas evoluções tecnológicas, tais como os serviços cloud, analytics, In Memory, Internet of Things e plataformas de computação híbrida, que dão lugar a novas preocupações, nomeadamente com interfaces para os utilizadores, segurança e acessibilidade de dados, middleware e APIs, mas também a novas oportunidades que não eram possíveis encetar no passado. 10 Contudo, estas novas preocupações pressionam os sistemas de informação empresariais a executar com fidúcia e rapidez, e surgem também novos desafios, como o alto Total Cost of Ownership (TCO),rigidez (incapacidade de adaptação às necessidades crescentes do negócio), aumento da complexidade, extensão do período de retorno (ROI), taxas de execução mais lentas e a proliferação de “silos”, que se podem definir como sistemas de informação sem contacto com outros sistemas. Nitidamente, os modelos mais recentes de operações de TI não se adaptam aos ambientes velozes de negócio, e o DevOps aponta à resolução destes conflitos, juntamente com o aumento do Time to Market (TTM) e segurança dos sistemas empresariais. 11 2.2. CONTEXTO CRONOLÓGICO De forma a providenciar um contexto cronológico sobre a evolução do conceito, é apresentado em seguida uma timeline de eventos importantes que culminaram com a origem e implementação do DevOps no mundo tecnológico: Taiichi Ohno e Eiji Toyoda desenvolvem o Toyota Production System (TPS), o precursor do pensamento lean na Indústria; Publicação da obra “The Goal: A Process of Ongoing Improvement” por Eliyahu Goldratt, que introduz a “Teoria das Restrições”, focada na identificação e resolução de bottlenecks; Integração Contínua surge como prática em equipas, e como prática core na metodologia ágil Extreme Programming (XP). Reunião de 17 adotantes de metodologias de desenvolvimento “leves” que culmina no “Manifesto Agile”, em que a prioridade estabelecida é “(…) desde as primeiras etapas do projeto, satisfazer o cliente através da entrega rápida e contínua de software com valor.” (Beck, Beedle, van Bennekum, et al., 2001); Primeira conferencia DevOpsDays em Gent (Bélgica), organizada por Patrick Debois, onde se definiu o acrónimo DevOps para o conjunto de práticas que visavam o aumento da corelação entre equipas de desenvolvimento e operações; Primeiro livro sobre Entregas Contínuas e primeira edição da newsletter “DevOps Weekly”; Grandes fornecedores de software começam a utilizar extensivamente o termo e a desenvolver soluções com base nos seus princípios; Publicação da obra “The Phoenix Project” por Gene Kim (e outros) com uma nova visão e métodos de otimização de processos de negócio das organizações de TI inspirada nos princípios do DevOps; Começam a surgir relatórios de empresas como a Amazon e Etsy com resultados bastante positivos relativos à taxa de entrega, possibilitados pela adoção do DevOps no processo produtivo; II Conferência Empresarial de DevOps em San Francisco juntando os representantes de grandes organizações a nível global de áreas como governo, serviços financeiros, retalho, média, entre outros, enfatizando o estatuto do DevOps como conceito global e adaptável a qualquer indústria. 1948-1975 1984 2009 2001 2010 2011 2013 2014 2015 12 2.3. INTRODUÇÃO AO DEVOPS Para competir num ambiente com mudanças tão aceleradas e repentinas, as organizações têm de adaptar novas metodologias de operações de Tecnologias de Informação. As novas propostas de estratégias resumem-se a aplicações líquidas, inteligentes ou conectadas. Para concorrer com agilidade e rapidez, as empresas modernas não conseguem financiar a construção e implementação de novos sistemas de informação massivos, sendo necessária uma nova maneira de construir e gerir as soluções de software – onde desponta uma nova policitação de subdivisão de aplicações conforme o seu âmbito e características. As aplicações líquidas são uma proposta de subdivisão do sistema em componentes me nores, que podem rapidamente ser construídos usando novos métodos de desenvolvimento, por forma a entregar software de forma contínua, suportando as necessidades dinâmicas do negócio (Daugherty, 2016). Aplicações inteligentes resumem-se à utilização de inteligência de software nas aplicações e processos para responder aos aumentos de volume, velocidade e complexidade dos sistemas, dotando estas diligências com a capacidade de automatização, métodos analíticos e auto governança. Como consequências, não só assistimos a uma melhoria nas aplicações, como também na sua construção, ajudando a transformar complexidades em resultados de alta performance (Fox & Guestrin, 2015). Por fim, as aplicações conectadas surgem devido à necessidade das empresas defenderem a sua posição no mercado e assegurar rentabilidade, e como solução desenharam-se novos ecossistemas de conectividade para aplicações, não só em tablets e smartphones, mas também em pipelines de manufatura, equipamentos industriais e na indústria automóvel, tornando as empresas negócios sem fronteiras. Para estas aplicações, é necessário novas estratégias de ecossistemas através do planeamento da integração de tecnologias operacionais. Neste seguimento, surge o conceito de DevOps, que se pode definir como uma disciplina de engenharia que otimiza o Desenvolvimento e Operações, de maneira a capacitar a concretização dos objetivos do negócio através de rápido feedback, estabilidade e aumento da capacidade de resposta do serviço de TI, enquanto automatizam o processo de entrega de software e mudanças nas infraestruturas. Traduzindo para uma forma menos exaustiva, suponha-se que algum interveniente num determinado processo produtivo introduz uma inovação – é do cargo da camada operacional do processo produtivo empreender e implementar esta inovação o quanto antes, para que os resultados desta inovação possam ser demonstrados o mais rapidamente possível, sendo a rapidez no feedback uma das mais altas prioridades. O DevOps possibilita entregas contínuas, e, como tal, a definição e execução de estratégias associadas a aplicações líquidas (Croker & Rendell, 2009). 13 Este conceito é uma abordagem à entrega de software que visa juntar developers, operações de TI, controlo de qualidade e outros num grupo altamente colaborativo, possibilitando, logicamente, um aumento da colaboração entre diferentes segmentos do processo produtivo através da eliminação de entraves na comunicação, e, para além disto, assegurando a concretização dos objetivos e requisitos de negócio previamente estabelecidos graças a rápido feedback e uma infraestrutura estável, responsiva e flexível. Equipas de desenvolvimento são usualmente conduzidas pela procura incessante de soluções inovadoras e, assim sendo, têm tendência a ser proponentes naturais de mudança, enquanto as equipas de Operações são responsáveis pela estabilidade dos sistemas e vêem qualquer ameaça à estabilidade do sistema como um risco. O DevOps procura ultrapassar este paradoxo através da construção de uma relação de confiança e qualidade por todo o ciclo de desenvolvimento. Um dos seus grandes objetivos é o estabelecimento de uma cultura e ambiente onde a construção, teste e entrega de software possa acontecer de forma mais confiante, rápida e frequente, procurando mitigar os receios de mudança, deployments de risco, falta de confiança e unidades de trabalho desarticuladas. Os resultados podem rapidamente ser demonstrados aos stakeholders pois a rapidez no feedback é das suas maiores prioridades (Floris, Chintan & Maya, 2014; Samovskiy, 2010). Graficamente, podemos resumir o intuito do conceito da seguinte forma: 14 A interpretação usual associada ao DevOps é que as empresas têm os seus departamentos de TI divididos em dois silos: Desenvolvimento e Operações. Conforme podemos observar no esquema acima, ambos têm objetivos opostos e elevadas obrigações para com o outro. O DevOps procura combinar estes silos numa unidade colaborativa e empática, balanceando os seus objetivos e obrigações. Existem cinco práticas que resumem sucintamente a otimização da entrega de soluções de TI pelo DevOps: A automatização dos processos de entrega de software, referido anteriormente,que se centra na estandardização e aceleração na construção e deploy de processos, na gestão de recursos aplicacionais e gestão das configurações de software (SCM); integração contínua de sistemas, que conjuga conceitos avançados de SCM, testes unitários automatizados, análise frequente de código e, novamente, possibilitada pela automatização da construção e deploy de processos; pipelines de integração, que não é mais do que a orquestração e automação do processos do ciclo de desenvolvimento (ver fig. 4); Operações automatizadas, isto é, a possibilidade de recuperação imediata de dados e a monitorização e deteção de anomalias; Estruturação da infraestrutura e integração de novos serviços, como por exemplo Big Data e serviços Cloud, de maneira a gerar um ambiente estável, com escalonamento dinâmico e deteção e remediação de falhas. Figura 4 - Ciclo de Desenvolvimento de Software (Fonte: Autoria Própria) 15 Com as exigências impostas aos developers de software e com os serviços de Tecnologias de Informação constantemente pressionados pelo negócio (onde estão inseridos), clientes e stakeholders, existe a necessidade de desenvolver e entregar soluções como nunca antes. Encontrar a maneira mais produtiva de trabalhar e aumentar a qualidade do serviço torna-se essencial, e o DevOps assenta na consagração e industrialização destes termos. É também um conceito inerente às metodologias Agile, graças à sua habilidade de mover rápida e eficazmente o ciclo de desenvolvimento (fig. 4). O DevOps analisa rigorosamente cada fase do processo de desenvolvimento de software, por forma a definir processos mais rigorosos, ágeis e eficientes e, consequentemente, um produto final de qualidade. Porém, este conceito não é novo, o que mudou ao longo dos anos foram as expectativas dos clientes. A metodologia era aplicada recorrentemente no processo de desenvolvimento iterativo, querendo o cliente apenas uma solução eficaz e de baixo custo. Hoje em dia, os clientes pretendem o uso constante de ferramentas e conceitos agile para otimizar o processo acima referido, ambicionando uma perspetiva transparente sob que soluções são concebidas e como é que são desenhadas/idealizadas. Para atingir o seu propósito, é necessário orientar corretamente as prioridades (anteriormente referidas) do DevOps, sendo exigidos tipicamente os seguintes parâmetros: Automatização de Software e Infraestrutura o A velocidade de execução de processos acelerou demasiado para se realizaram tarefas mundanas “manualmente”, reduzindo substancialmente o risco de falha destas tarefas. Gestão Eficaz de Ambientes: o Os ambientes de desenvolvimento devem ser previsíveis, constantemente disponíveis e não intrusivos. Gestão do Ciclo de Vida das Aplicações e de Configurações: o É necessário um planeamento correto e eficiente, assegurando a rastreabilidade das todas as aplicações envolvidas, de forma a garantir o pleno controlo de todas as funcionalidades. 16 Ferramentas: o Certificar que, em todos as etapas, a correta tecnologia está a ser empregue, sendo imprescindível uma administração coerente de serviços inócuos (ex.: software irrelevante ou inútil para o processo produtivo). Colaboração: o Garantir a comunicação e cooperação entre equipas, departamentos ou segmentos, evitando o isolamento de silos, pois o âmbito é demasiado abrangente. 2.4. CONCEITOS ASSOCIADOS AO DEVOPS Atualmente, para competir num mundo empresarial de alto ritmo as empresas têm de ser flexíveis e de rápida adaptação. Software está no cerne de praticamente qualquer negócio, e a capacidade de emparelhar continuamente todas as exigências de determinada atividade e segmento empresarial está-se a tornar a diferença entre as empresas de sucesso e as que estagnam. Para ir ao encontro destes requisitos da melhor forma, surge o conceito de entregas contínuas, atingidas através de complacentes serviços de DevOps de índole estratégica, transformacional e administrativa. As entregas contínuas pavimentam também o processo de alterações culturais na empresa através de um novo modelo de governança, introduzindo automação nos processos produtivos. No seguimento da investigação sobre DevOps há três termos que frequentemente aparecem associados a esta metodologia: Entregas Contínuas (Continuous Delivery), Integração Contínua (Continuous Integration) e Implementação Contínua (Continuous Deployment). Estes três termos, apesar de aparentarem serem redundantes, têm definições diferentes, e muitas vezes confusas para o público, que serão explicadas em seguida. 2.4.1. Integração Contínua (Continuous Integration) Na mesma linha de pensamento do que foi referido anteriormente sobre entregas contínuas, surge o termo de integração contínua, que se resume à prática de integração e testes de código desenvolvido continuamente, muitas vezes com o intuito de concretizar o processo de entrega contínua. O processo em si passa por fundir (merge) cópias trabalháveis várias vezes por dia para um repositório partilhado onde, mais tarde, poderá será revisto e aprovado por colegas dentro de uma determinada equipa (Duvall, Matyas & Glover, 2007). 17 O objetivo desta abordagem é evitar problemas de integração, ou seja, através de uma combinação de testes automatizados e, em alguns casos, desenvolvimento guiado por testes (TDD), é possibilitada a deteção rápida e prematura de problemas. Dado que a integração é feita com tanta frequência, existe menos back-tracking para descobrir onde é que algo falhou e é possível investir mais tempo na construção de novas características. Para o DevOps a integração contínua é vista como uma pedra basilar. Através do merge contínuo referido anteriormente impede-se a criação de demasiados projetos / soluções de desenvolvimento paralelos, evitando casos de conflito de código. Na prática, esta abordagem envolve um servidor centralizado que ininterruptamente importa alterações ao repositório central e, caso existam falhas na compilação, é esperado que a equipa se reorganize para as resolver, com uma perspetiva evolutiva do tema, ou seja, que sejam cada vez menores as ocorrências de falhas na compilação automatizada – que é um dos princípios do DevOps. Neste caso, a integração contínua oferece uma janela real-time sobre o estado atual do sistema e métricas de certificação de qualidade, permitindo também a envolvência constante de todos os elementos da equipa responsável, sem exceção das Operações. Em suma, a grande vantagem que o conceito traz é a criação de uma forma transparente em que todos os stakeholders podem monitorizar, agir e contribuir positivamente para a evolução de determinado projeto sem a disrupção associada a reuniões de status ou redrobramento de esforços (Fitzgerald & Stol, 2014). Controlo de Qualidade • Integração no Sistema • Testes de Interface • Segurança Servidor de Integração • Compilamento • Testes Unitários • Análise de Código Repositório de Controlo de Fontes • Versionamento Developer • Alterações • Novas funcionalidades Notificações de Sucesso / Insucesso Figura 5 - Representação Esquemática do conceito Integração Contínua (Fonte: Autoria Própria) 18 2.4.2. Entregas Contínuas (Continuous Delivery) Avançando para o termo de entregas contínuas, é um conceito referente à produção de software em curtas iterações com recurso à automatização de processos, permitindo às equipas entregas mais frequentes que o normal. O ênfase recente em integração contínua, testes integrados, monitorização constante e feedback derivado de processos analíticos apontam para uma tendênciageneralizada na indústria de desenvolvimento de software: aumentar a capacidade de resposta. As consequências derivadas desta abordagem são a redução de custos, tempo e riscos associadas ao processo de entrega, possibilitando atualizações (updates) incrementais com vista à melhoria e otimização constante do produto (Chen, 2015). Tomando como exemplo um caso em que os testes aplicacionais são validados de forma constante ao longo do processo de desenvolvimento, e com certificação de qualidade, então torna-se possível entregar software em qualquer ponto do tempo. Entregas Contínuas não significam entregas literais, mas sim a filosofia e empenho em assegurar que o código / software desenvolvido está sempre release-ready, ou seja, pronto a entregar, estando sempre pendente uma autorização final de go-live manual, conforme indicado na figura 6. Figura 6 – Representação Esquemática do conceito Entregas Contínuas (Fonte: Autoria Própria) Entregas Contínuas Desenvolvimento Integração Testes Entrega Monitorização Release 19 DevOps e Entregas Contínuas partilham o background de métodos agile e pensamento lean: pequenas e rápidas mudanças de maneira a trazer valor para os utilizadores finais, reduzindo falhas e o risco das operações (Floris, Chintan & Maya, 2014). A proposta de valor apresentada pelo conceito desdobra-se nos seguintes tópicos: Time To Market: Concede uma redução do Time to Market até 50% através da entrega racionalizada de software Taxa de Entrega e Qualidade: Aumentar produtividade da equipa e conceber novas funcionalidades mais rapidamente Risco: Deteção e identificação antecipada de preocupações de qualidade e redução, até 30%, de defeitos durante o ciclo de desenvolvimento (ver Fig. 4). Segurança: Fase operacional mais estável e segura e as mudanças são sistematicamente auditáveis. No entanto, não devemos confundir Entregas Contínuas com DevOps. DevOps possui um âmbito mais abrangente, e centra-se na mudança de paradigmas culturais, especificamente sobre colaboração entre equipas envolvidas na entrega de software (developers, ativos operacionais, gestores de qualidade, gestores administrativos, etc.) e como automatizar os processos de entregas e releases (termo utilizado como referência ao lançamento de uma nova versão de um produto de software) (Humble & Farley, 2010). Por outro lado, as entregas contínuas são uma abordagem à automatização anteriormente referida, com um foco particular na rápida execução e frequênci a das mesmas. Ambos têm objetivos finais comuns, e, por norma, são utilizados em conjunto para os atingir. Em suma, entregas contínuas não significa que cada alteração desenvolvida é imediatamente implementada, significa sim que cada alteração está sempre pronta a ser implementada. 20 2.4.3. Implementação Contínua (Continuous Deployment) O último conceito interligado ao DevOps é implementação contínua. Este termo é muitas vezes descrito como a progressão natural de entregas contínuas: todas as alterações que sejam validadas nos testes automatizados são automaticamente implementadas no sistema, sendo que muitos autores associam esta abordagem a empresas sem constrangimentos regulatórios ou relativos a requisitos dos utilizadores finais (Humble & Farley, 2010). Existem casos em que, dependendo da indústria, é expectável a existência de um período de espera antes de um go-live de uma nova alteração. Por exemplo, na indústria de telecomunicações, faz sentido que exista um período de alinhamento de todos os sistemas de informação existentes antes de uma determinada alteração no sistema, caso contrário poderemos testemunhar métricas mal geradas que podem culminar em prejuízo para o negócio. O objetivo passa também por perceber onde é que poderemos utilizar este método, ou até que ponto é que será vantajoso, pois o sucesso das implementações contínuas passa por uma analise de viabilidade rigorosa. Em seguida apresento uma representação esquemática do conceito para facilitar a compreensão do mesmo. Em suma, a grande diferença das entregas para a implementação contínua é a questão da automatização do processo de release, logo que estejam reunidas todas as condições – validação dos testes – resultando na formalização de várias alterações por dia, isto é, aumentando a frequência de releases. Figura 7 - Representação Esquemática do conceito Implementação Contínua (Fonte: Autoria Própria) Entregas Contínuas Desenvolvimento Integração Testes Entrega Monitorização Release 21 2.4.4. Integração dos Conceitos Para finalizar esta sequência explicativa sobre o âmbito de cada um dos três conceitos referidos, é necessária uma comparação direta dos conceitos. Integração contínua, como vimos, é um termo direto que tem como objetivo facilitar o processo de releases. Mas Entregas Contínuas (Continuous Delivery) e Implementação Contínua (Continuous Deployment), apesar de partilharem o acrónimo C.D. (em inglês), têm diferenças significativas que se revelam críticas para o negócio. Resumindo o que foi descrito nos capítulos anteriores, Integração Contínua (Continuous Integration) reside na ação de fundir (merge) o código desenvolvido num repositório partilhado por uma determinada equipa tantas vezes quanto possíveis. As alterações são validadas através de um programa de testes automáticos e, ao fazê-lo, evitam-se futuros problemas de integração que podem advir de uma nova entrega de software. Esta abordagem coloca um grande ênfase em testes automatizados para garantir que, em qualquer momento, a aplicação/sistema está disponível (Duvall, Matyas & Glover, 2007). Entregas Contínuas (Continuous Delivery) acaba por ser uma extensão da Integração Contínua (Continuous Integration) com a garantia que se podem implementar novas alterações de forma sustentável, ou seja, para além da automatização de testes, existe também uma automatização do processo de release que a torna possível através de um processo manual. Em teoria, entregas contínuas permite decidir quando se enceta a entrega de software – diária, semanal, mensal – alinhada com os requisitos do negócio. Por fim, com recurso à Implementação Contínua (Continuous Deployment), todas as mudanças que passam pelo pipeline de alterações são automaticamente integradas nas versões live do sistema. Não existe intervenção humana, e só um teste falhado impede que as alterações sejam implementadas (Chen, 2015). Em suma, Implementação Contínua é considerada uma excelente forma de acelerar o ciclo de feedback dos clientes e de tirar pressão das equipas pois passam a não existir dias dedicados a releases, alterando o foco principal das equipas de desenvolvimento exclusivamente para conceber e implementar novas funcionalidades (Humble & Farley, 2010). Numa única frase, integração contínua é parte integrante da Implementação e Entregas Contínuas, e Entregas Contínuas é bastante similar a Implementação Contínua, com a variante de, na segunda, a componente de entrega de software ser automática. 22 Em baixo é apresentada uma tabela resumo dos custos e benefícios de cada prática referida anteriormente: Prática Custos Benefícios Integração Contínua (Continuous Integration) Criação de testes automatizados para todas as novas funcionalidades É necessário um servidor de integração que responsável pela monitorização e gestão do repositório e execução dos testes automatizados A equipa de Desenvolvimento deve fundir (merge) novas alterações de software o mais frequentemente possível Menos defeitos registados após o go-live dasalterações Releases mais facilitadas, pois os problemas de integração já foram endereçados Menos alterações de contexto no desenvolvimento Redução dos custos de testes devido ao servidor de integração automatizada Alteração do foco de controlo de qualidade para qualidade do serviço Entregas Contínuas (Continuous Delivery) Necessários alicerces de integração contínua e abrangência quase total do servidor de integração Entregas têm de ser automatizadas, apesar de o desencadeamento ser manual As alterações têm de ser previamente acordadas com o cliente, pois existirão características incompletas durante todo o processo de entrega de software Eliminação da complexidade na entrega de software Eliminação de tempo alocado à preparação de releases Aceleração do ciclo de feedback Menos pressão sobre decisões mundanas (encoraja-se rápidas iterações) Implementação Contínua (Continuous Deployment) Cultura de testes aperfeiçoada – a qualidade das releases irá depender da qualidade dos testes A documentação tem de acompanhar as entregas de software As alterações têm de estar perfeitamente alinhas com o cliente e coordenadas com os outros departamentos da organização Os desenvolvimentos são acelerados pois não existem pausas para planeamento de releases Pipelines de desenvolvimento são integrados automaticamente após cada alteração Redução de riscos das releases e, em caso de problemas, mais facilmente corrigidas Clientes observam melhorias incrementais, e a qualidade aumenta todos os dias (em vez de todos os trimestres, meses ou anos) Tabela 1 – Análise comparativa dos três conceitos associados ao DevOps (Fonte: Pittet, n.d.) 23 2.5. PARALELISMO COM AGILE Apesar de o Agile ser um termo vago, é certamente mais comum as pessoas ficarem confusas com o leque de definições associadas ao DevOps, sendo que a falta de definição do termo culmina, frequentemente, em interpretações erradas do tema. A confusão mais comum é confundir Agile com SCRUM e DevOps com entregas contínuas. Dado que tanto os princípios de DevOps como os de Agile englobam filosofias lean, como por exemplo colaboração e comunicação, os seus significados muitas vezes coincidem, sendo, no entanto, conceitos diferentes. Vários estudos comprovam uma forte correlação entre a satisfação do cliente e o desempenho do negócio, espelhado através das respostas imediatas e a entrega oportuna de soluções ao cliente, e de onde se conclui que as organizações que adotaram desenvolvimentos agile testemunharam um aumento no número de entregas e, com isto, nasceram os conceitos de entregas contínuas e DevOps (Liu, Y, Li, & Liu, W, 2014; Humble & Farley, 2011). Um dos principais objetivos desta última metodologia é definir um ambiente onde possam ocorrer entregas de aplicações mais fiáveis e com menos falhas e, como já foi referido, assenta na comunicação entre os dois grupos operacionais de TI – Desenvolvimento e Operações (Samovskiy, 2010). Os utilizadores de DevOps começam a utilizar cada vez mais recursos, como por exemplo processos de automatização de entregas, que possibilitam a conclusão dos seus objetivos e métricas e a adoção de boas práticas de desenvolvimento, nomeadamente princípios agile (Collier, 2011; Httermann, 2012). A chave do DevOps é a entrega de soluções num tempo ótimo, assegurando mínimas disrupções e interrupções. 24 Estando os dois termos definidos, alinhemos as ideias relativamente ao âmbito dos dois conceitos: Âmbito Agile DevOps Metodologia vs. Entrega Desenvolvimento agile não passa de uma metodologia de desenvolvimento, uma vez que o software seja entregue, a equipa assignada descompromete-se do mesmo, avançando para o próximo sprint em mãos Assenta na entrega mais controlada possível e não depende em nada da metodologia de desenvolvimento (iterativa, incremental,…) associada Interdisciplinaridade vs. Silos Todos os membros de uma equipa são vistos como tendo capacidades de exercer qualquer função em ordem do progresso Assume que existem equipas de desenvolvimento e equipas de operações, e que estarão separadas em termos de funções Comunicação O SCRUM é o método mais comum de comunicação: reuniões diárias onde se revê a performance, progresso e planeamento de cada membro – sem documentação extensiva Envolve documentação relativa a design e especificação técnica para que toda a equipa e até end users do software percebam os impactos da release Dimensão da Equipa Tipicamente equipas pequenas Múltiplas equipas a trabalhar de formas diferentes Agendamento Planeamento feito para um futuro próximo (semanas ou meses) – promove rapidez na entrega Calendarização para minimizar disrupções no sistema – prioritiza disrupções mínimas Tabela 2 – Comparação entre DevOps e Agile (Fonte: Autoria Própria) Existe, no entanto, uma conexão histórica entre DevOps e Agile desde a Conferência Agile de 2008 quando Patrick Debois (consultor de TI que introduziu o tema de colmatar as diferenças entre projetos e operações através do uso de técnicas Agile em desenvolvimento, gestão de projetos e administração de sistemas) e Andrew Clay Shafer (consultor de TI, cofundador da Puppet Labs, que dedicou a carreira a formar pessoas capazes de melhorar tecnologias e processos de forma a otimizar serviços de software através de práticas e ferramentas de DevOps) se conheceram num seminário sobre “Infraestruturas Agile” (Kim, Humble, et al., 2015). Desenvolvimentos agile podem ser implementados de diversas formas, incluindo SCRUM, Kanban, Extreme Programming, entre outros, e, por natureza, é uma mudança dos dogmas de desenvolvimento, e pode ser, muitas vezes, uma mudança tão profunda, que se estende a toda a organização, nomeadamente aos departamentos de marketing e recursos humanos. 25 Começando pelo SCRUM, podemos seguramente assumir que é um conhecido framework associado à gestão de desenvolvimento de software composto por sprints – ciclos de trabalho intensivo de uma a quatro semanas – que é frequentemente conjugado com curtas reuniões diárias de progresso (Schwaber & Beedle, 2002). Para a comunidade DevOps, o SCRUM é útil para monitorizar trabalho planeado e, para a componente de Operações, apenas uma percentagem do trabalho é planeada – releases com mudanças no sistema, alterações de fontes de dados, upgrades de sistema – contudo existe uma proporção elevada que não é planeada (ou até prevista), como por exemplo, análises de performance, falhas inesperadas do sistema ou até falhas de segurança. Estes eventos exigem resposta imediata, e apesar da utilidade do SCRUM para gestão de backlog, não existe tempo para planear ou prioritizar temas. Por esta razão, muitas equipas que abraçaram o DevOps passaram a olhar para além do SCRUM para, por exemplo, o Kanban, um método de visualização do fluxo de trabalho de forma a balancear as exigências de clientes com os recursos disponíveis, facilitando a identificação de bottlenecks (Anderson, 2010). Desta forma, as equipas conseguem controlar os dois tipos de trabalho, ajudando-os a entender e monitorizar as relações entre eles (nova release gera erro no sistema, por exemplo). Tal como todos os métodos agile, o SCRUM acaba por despoletar um mecanismo de otimização de processos, frequentemente apelidado de “retrospetiva”, portanto é sensato acreditar que algumas equipas de SCRUM vejam o DevOps como uma fonte de inspiração e utilizem a retrospetiva do SCRUM como oportunidadede se direcionar e ajustar para o DevOps. 26 3. METODOLOGIA Este capítulo irá introduzir o processo de investigação e sustentação do tema, concretamente os métodos utilizado para demonstrar os resultados positivos do DevOps enquanto metodologia de desenvolvimento ou o uso dos princípios associados ao mesmo, respondendo aos objetivos inicialmente definidos. Através da revisão da literatura, conseguimos inferir que esta secção será baseada numa investigação empírica dos riscos, processos de negócio e vantagens do DevOps, visto se tratar de um tema descritivo com pouca margem para questionários ou modelos preditivos. Relativamente às questões de investigação, foram delineadas as seguintes interrogações: 1. O que é o DevOps? 2. Que conceitos surgem associados ao DevOps? 3. Quais as diferenças para a metodologia Agile? 4. Quais os seus benefícios financeiros e operacionais? Através de um procedimento racional e sistemático, que tem como objetivo proporcionar uma resposta às temáticas definidas inicialmente, será encetado um processo que envolve a adequada formulação de um problema até à satisfatória apresentação dos resultados e, como tal, a análise e interpretação de casos de estudo relevantes é a metodologia mais adequada para este estudo e para atingir os objetivos deste projeto. Da análise feita anteriormente, e transferindo o ênfase para o capítulo de resultados, é claro que a jornada de implementação do DevOps encetada por cada empresa difere. Quando uma organização se apercebe da necessidade de fazer mudanças significativas nas suas práticas tecnológicas, o processo de planeamento pode revelar-se difícil e os envolvidos podem sentir que estão a trabalhar contra o que ajudaram a construir durante anos – esta mesma ideia gera ansiedade e rejeição, pois as pessoas reagem, naturalmente, de forma negativa à mudança. Mas tal como foi descrito nas secções anteriores deste documento, e agora materializado em resultados, a mudança não só é possível, como pode trazer resultados interessantes e inovadores para as organizações. Os próximos casos de estudo revelam como foram implementadas práticas tecnológicas modernas e oferecem uma história detalhada sobre a adoção interna dentro de cada uma destas organizações. 27 3.1. PROCESSO DE INVESTIGAÇÃO Robert Yin (2013), na sua obra Case Study Research: Design and Methods, defende que, apesar de a apresentação de casos de estudo não possibilitar a delineação do formato, intervenientes e audiência de certa investigação, cada investigador deve apresentar notas introdutórias antes de cada análise para providenciar contexto antes da exposição da temática. Para a investigação empírica de um tema descritivo, e sendo o DevOps uma temática pouco viral, não seria possível recolher estatísticas ou mesmo questionários sobre o seu uso, até porque a sua implementação é normalmente encetada por empresas que mantêm os seus dados e estatísticas (internas) confidenciais. Neste seguimento, o método científico mais adequado para a sustentação do tema é a análise de um caso de estudo em Portugal numa empresa onde o autor esteve empregado, diretamente ou indiretamente interligado com o DevOps, e o devido suporte do tema com outros três casos que ajudem a possibilitar um melhor entendimento de fenómenos e termos de comparação direta. A escolha desta abordagem reside na necessidade de querer interpretar um determinado fenómeno no seu ambiente natural, sendo os resultados deste estudo diretamente obtidos a partir da observação e análise de factos. Yin (2013) distingue ainda vários formatos relativos à apresentação de resultados, casos singulares ou múltiplos, estruturados ou não estruturados, organizados cronologicamente, entre outros – e para o tema em mãos o escolhido são múltiplos casos de estudo, com o intuito principal de expor um tema principal – caso de estudo aplicado em Portugal – e três casos que irão suster o tema e possibilitar um segmento final: uma análise comparativa entre estes criando uma junção de pareceres sobre DevOps e sobre a sua viabilidade, em termos estruturais e processuais. Para as três primeiras interrogações, a investigação efetuada enquadrou-se no segmento da revisão da literatura e relevância do tema, onde foi efetuada toda a investigação sobre as origens e contornos do tema, juntamente com um contexto cronológico sobre o DevOps. Para a última interrogação, foi efetuada a pesquisa apresentada, posteriormente, na discussão de resultados, que nos levou às conclusões que são apresentadas no final do documento. 28 Relativamente aos casos escolhidos, o principal caso de estudo foi considerado e indagado de forma a ter um ênfase especial no espaço geográfico onde estamos inseridos, Portugal, e, com base nesses resultados, tirar conclusões sobre o estado de utilização e benefícios da metodologia em Portugal. Este mesmo caso é apresentado nesta dissertação como sendo o foco principal da investigação, onde é apresentada uma arquitetura da solução de TI descrita ao longo da apresentação do mesmo, com o objetivo de revelar um estudo de caso concreto sobre os princípios do DevOps numa realidade que, tanto o leitor como o escritor, estão inseridos e entendem. Os restantes estudos escolhidos foram idealizados como tendo uma util idade explicativa sobre o panorama internacional do tema: o primeiro caso é relativo a uma grande consultora, a Capgemini, e aos resultados positivos inerentes da aplicação dos princípios do DevOps na sua cadeia de valor, onde se concebeu uma solução colaborativa de gestão de processos que aumentou a sua capacidade de sustentar mudanças de requisitos, assegurando, em paralelo, a consistência dos entregáveis (de qualquer tipo) e partilhando mais facilmente informação relevante entre os seus colaboradores; o segundo é referente à organização americana Yahoo!, concretamente sobre a Yahoo Answers, um site criado pela Yahoo! de perguntas e respostas. Através da centralização da equipa, uma reavaliação das necessidades dos clientes e o redesenho da arquitetura do sistema, a empresa foi capaz de reduzir uma série de tempos médios, aumentar a qualidade do serviço e assegurar a qualidade que os seus clientes procuravam; o terceiro caso prende-se com um cliente do segmento industrial, infelizmente não revelado pelos autores do estudo de caso, e como possibilitaram a aceleração na entrega de soluções – maioritariamente devido a um novo modelo agile com princípios de DevOps – em que refizeram a cadeia de valor do seu pipeline de entregas, acrescentando novos processos (como entregas contínuas) aliados aos já praticados pela empresa, como por exemplo a integração contínua, e como tal verificaram uma melhoria generalizada do serviço e das suas métricas de qualidade, produtividade, disponibilidade e entrega. Juntamente com uma análise detalhada de cada um deles, foi possível gerar um capítulo de análise comparativa onde se integra cada um deles com os princípios do DevOps e se registam, em jeito de conclusão, os benefícios verificados para cada caso e como foram possibilitados – desvendando a certo ponto o caminho para as conclusões da dissertação. 29 4. RESULTADOS E DISCUSSÃO 4.1. INTRODUÇÃO No seguimento do exposto no capítulo anterior, inicia-se a apresentação dos resultados obtidos sob a forma de exposição e analise de diferentes casos de estudo sobre o tema da dissertação. Os casos expostos em seguida foram devidamente examinados para possibilitarem uma resposta à quarta interrogação da investigação: quais os benefícios financeiros e operacionais do DevOps. Foram selecionados estudos de caso relativos a diferentesentidades, uma nacional e três internacionais, de forma a possibilitar um melhor entendimento de fenómenos, sendo os estudos internacionais um suporte ao caso de estudo principal. Para além disso, estes casos irão auxiliar na exposição dos impactos positivos do DevOps e suas características, culminando numa análise comparativa entre estes, realçando, em forma de tabela, tudo o que foi exposto no corpo do capítulo de resultados. 4.2. CASO DE ESTUDO: “SCOT” – MINISTÉRIO DA ADMINISTRAÇÃO INTERNA O Ministério da Administração Interna (doravante designado de MAI) – criado em 1736 e, entre 1910 e 1974, designado por Ministério do Interior – pertence à área de Governo da Administração Interna e tem por missão formular, conduzir, executar e avaliar as políticas de segurança interna, do controlo de fronteiras, de proteção e socorro, de segurança rodoviária e de administração eleitoral (in www.portugal.gov.pt). Conforme referido no capítulo anterior, o MAI foi alvo de um projeto interno de reorganização da arquitetura do sistema de informação implementado e, através de investigação e observação empírica e entrevistas não estruturadas, foi possibilitada a análise de alguns documentos de projeto daqui em diante tratados como um único caso de estudo indiretamente ligado ao DevOps. 4.2.1. Problema Outrora as autoridades portuguesas encaravam problemas sérios de ineficiência relativamente ao processo generalizado de registo e entrega de multas de trânsito – o processo não era automatizado ou estandardizado, e envolvia uma elevada percentagem de recursos em tarefas administrativas de back office, aliada a processos de gestão de informação limitados. Todos estes factos estavam a acarretar elevados custos internos e elevadas taxas de multas expiradas, culminando, eventualmente, na perca da oportunidade de reforçar o sector da segurança rodoviária e de assegurar por completo os lucros associados às multas registadas. 30 4.2.2. Solução Dentro deste contexto, uma reconhecida consultora colaborou com o MAI, em primeiro lugar, com a tarefa de redesenhar o processo de gestão de coimas (multas) e ainda, alinhado com as conclusões da primeira tarefa, desenvolver um sistema de informação integrado para o sustentar, criando o Sistema de Contraordenações de Trânsito (SCoT), com as seguintes diretrizes: Estandardizar e automatizar o processo de tratamento de multas de trânsito tendo em conta os recursos existentes; Utilização de dados de outras instituições estatais e organizações para extrair informações relevantes provenientes da integração dos sistemas; Providenciar oportunamente toda a informação necessária à correta eficiência dos recursos; Automatizar a produção de estatísticas e informações de gestão, otimizando a sua acessibilidade; Minimizar a necessidade de desenvolvimento, manutenção e custos operacionais do sistema após o fim da sua implementação. O SCoT tem dois grandes componentes (Fig. 8): uma solução de mobilidade (extensível a aparelhos móveis como tablets e PDA’s) que possibilita a agentes o registo de multas de trânsito e aceder aos registos sobre o veículo e proprietário mais facilmente; e uma componente de Back Office, que suporta as tarefas administrativas relacionadas com o processamento de coimas (notificação de infratores, interrogatório de testemunhas, etc.), o registo de forma informatizada (existindo uma fase de estabilização onde se irá transitar do formato físico – papel – para o formato informático) e a introdução de estatísticas e informações de gestão automatizadas. A totalidade do sistema assenta em informação proveniente de outras bases de dados. Figura 8 – Interfaces Funcionais do SCoT (Fonte: Autoria Própria) Back-Office Mobility Back-Office Mobility Mobilidade 31 4.2.3. Arquitetura Relativamente à arquitetura do sistema, o mesmo foi construído com vista a seguir um modelo de Business Intelligence (B.I.) Microsoft suportado por uma base de dados SQL Server Express Edition, utilizando Eclipse e Microsoft Visual Studio como principais ferramentas de desenvolvimento. Em particular, o SCoT inclui uma série de relatórios de gestão de informação pré-definidos que promovem a análise de dados relacionados com multas de tráfego e a indicadores de eficácia do processo e, em paralelo, existe a funcionalidade de construir queries ad-hoc (locução latina que significa "para isso") e gerar novos relatórios. Infrações de Trânsito Cartas de Condução Cadastro de Veículos Cadastro de Proprietários de Veículos Dados de Inspeções Sistema Estratégico de Informação (PSP) Sistema Integrado de Informações Operacionais Policiais (GNR) Mobilidade (Online e Offline) • Pesquisas e Solicitações • Registo Direto de Multas • Ações Complementares • Fecho de Turnos • Pesquisas e Solicitações • Registo Indireto de Multas Tablet PC (Viaturas Policiais) PDA (Agentes Isolados) Back Office (Unidades Policiais) • Pesquisas e Solicitações • Multas e Ações Complementares de Registo • Controlo de Recursos (Turnos, Documentos,…) • Atualização da Informação de Infratores • Gestão de Documentos Apreendidos • Gestão de Pagamentos • Emissão Automática de Formulários • Estatísticas e Gestão de Informação (B.I.) Desktop PC Si st em as O p er ac io n ai s Sincronização de Dados Figura 9 – Arquitetura do SCoT (Fonte: Autoria Própria) 32 Na figura 9 é apresentada a arquitetura previamente descrita para possibilitar um melhor entendimento da organização geral do sistema. Para sustentar estas características, o SCoT incluí um data warehouse, um repositório central de dados estruturados e integrados de uma ou mais fontes distintas (Dedić & Stanier, 2016), implementado em SQL Server, que é refrescado diariamente via processos ETL (Extract, Transform and Load) implementados através de tecnologia Microsoft SQL Server Integration Services (SSIS). Estes processos alimentam um data warehouse com as informações de coimas recebidas das principais bases de dados operacionais. Os usuais problemas de performance são resolvidos com recurso a cubos OLAP (termo que se refere tipicamente a dados materializados sobre várias dimensões) construídos também em tecnologia Microsoft (SSAS) e, por fim, os relatórios desenvolvidos em Microsoft SQL Server Reporting Services. 4.2.4. Benefícios Conforme podemos inferir do âmbito do caso de estudo descrito nos tópicos anteriores, o MAI testemunhou bastantes melhorias, transformando atividades passíveis de serem automatizadas em complexos processos tecnológicos internos. A relação com o DevOps centra-se na automatização das tarefas e da colaboração entre departamentos e, apesar de não existir o modelo tradicional de equipas de Desenvolvimento e Operações, as vantagens adquiridas vão de encontro aos resultados operacionais expectáveis da implementação do DevOps: aumento da qualidade e performance do sistema, redução do tempo alocado a manutenção do sistema, aumento da colaboração entre departamentos e acessibilidade do software / serviço através de várias plataformas. Tais benefícios acabam por resultar num aumento dos lucros operacionais (através da redução do tempo e recursos alocados a tarefas administrativas), satisfação do utilizador final do sistema e, por fim, um melhor apoio à tomada de decisão (por existirem agora estatísticas e relatórios com diversos indicadores de performance) – tudo possível pela implementação do SCoT, uma arquitetura de Business Intelligence e os princípios do DevOps. 33 4.3. OUTROS CASOS DE ESTUDO
Compartilhar