DevOps: Conceitos e características
Este artigo apresenta o DevOps. Conheça suas características e sua importância no cenário atual de desenvolvimento de software.
Muitos profissionais da área de desenvolvimento do software vêm percebendo a necessidade crescente em se entregar software de qualidade e com maior frequência (menor intervalo de tempo). Muitos destes profissionais da área de desenvolvimento recorreram aos métodos ágeis, como o Scrum, para viabilizar estes objetivos.
O desenvolvimento de software, de qualidade, sempre foi e sempre será um grande desafio. A qualidade do software está diretamente relacionada ao atendimento dos requisitos solicitados pelo cliente. Existe sempre uma grande preocupação com o fato do software atender aos requisitos funcionais, seguramente podemos afirmar que esta seja a maior preocupação dos profissionais da área de desenvolvimento de software.
Requisitos funcionais, naturalmente, são tangíveis, pois o usuário pode por si próprio aferir se está de acordo com as suas expectativas ou não. Por outro lado, os requisitos não funcionais não são levados em conta. Requisitos não funcionais estão ligados à performance, disponibilidade, segurança, escalabilidade e, nos dias atuais, a elasticidade é outro requisito não funcional que vem crescendo em nível de importância.
A elasticidade é um grande recurso disponibilizado por alguns fornecedores de computação na nuvem (Cloud Computing) onde a infraestrutura se adapta à demanda, alocando mais recursos conforme a demanda por processamento aumenta e liberando estes recursos computacionais na medida em que a demanda diminui.
Mesmo parecendo óbvio, precisamos enfatizar que um software desenvolvido e entregue para funcionar precisará de uma infraestrutura. Quando dizemos infraestrutura, significa um conjunto composto por hardware, softwares e rede. A infraestrutura de hardware é composta por computadores do tipo servidor e outros dispositivos. Nestes servidores, são instalados os chamados softwares básicos, tais como: sistema operacional, serviços de gestão de aplicação, gestão de conteúdo, entre outros. Outro componente de software imprescindível são os chamados sistemas de gestão de banco de dados, ou simplesmente conhecidos como banco de dados, responsáveis pelo armazenamento de grandes volumes de dados. E ainda, para permitir o acesso ao software desenvolvido e instalado no servidor, deverá haver uma infraestrutura de rede (network) tais como links, firewalls, roteadores e etc.
Por mais óbvio que pareça, muitos profissionais da área de desenvolvimento de software geralmente se esquecem do fato de que a infraestrutura não pode ser exclusiva ou propriedade do software. Os recursos de infraestrutura são, em sua maioria, compartilhados entre outras tantas aplicações que visam atender a outras demandas de negócio da empresa. O custo de infraestrutura nunca foi pequeno ou irrelevante logo, não podem ser alocados de forma leviana. Os responsáveis pela manutenção da infraestrutura, os chamados sysadmin, possuem diversos desafios entre manter e evoluir a disponibilidade da infraestrutura de forma a torná-la cada vez mais confiável e com custos altamente vantajosos.
Na prática, para quem trabalha na gestão de projetos de desenvolvimento ou manutenção de softwares, é fácil perceber esta falta de entendimento sobre a infraestrutura pela equipe de desenvolvimento. Para ilustrar este ponto, faremos alusão sobre experiências vividas durante projetos de desenvolvimento de software.
Por definição, projeto é um esforço temporário empreendido para alcançar um objetivo específico. Projetos são executados por pessoas, geralmente têm limitações de recursos e são planejados, executados e controlados. Um projeto cria um produto, serviço ou resultado específico. Esta definição existe no PMBOK (Project Management Body of Knowledge), publicado e mantido pela instituição americana PMI (Project Management Institute).
Em se tratando de desenvolvimento de software, os projetos são criados para analisar (levantamento de requisitos), arquitetar (definir o desenho e alcance do software), construir (desenvolver o código fonte e testar), homologar (validar o que foi entregue) e, por fim, entregar o software disponibilizando-o em produção (roll-out) onde a equipe de operações de TI assume o software como item de configuração passando a monitorá-lo e mantê-lo disponível e seguro.
Não importa qual o método empregado para desenvolver o software, seja optando pelo modelo tradicional ou pelo modelo ágil, o resultado final esperado é a entrega do software em produção. A adoção do método está diretamente relacionada à cultura e as necessidades da empresa e dos objetivos comerciais envolvidos. O ponto em comum está no fato de que o software entregue em produção passa a ser responsabilidade da equipe de operações de TI, aliás trata-se de uma responsabilidade tão grande quanto a da equipe de desenvolvimento pois, o software em produção representa ganhos, diretos ou indiretos para a empresa e, caso o software não funcione corretamente ou fique indisponível, fatalmente irá gerar prejuízos para a empresa. "
[...] continue lendo...Artigos relacionados
-
Artigo
-
Vídeo
-
Vídeo
-
DevCast
-
DevCast