Esse site utiliza cookies
Nós armazenamos dados temporariamente para melhorar a sua experiência de navegação e recomendar conteúdo do seu interesse.
Ao utilizar os nossos serviços, você concorda com as nossas políticas de privacidade.
Esse site utiliza cookies
Nós armazenamos dados temporariamente para melhorar a sua experiência de navegação e recomendar conteúdo do seu interesse.
Ao utilizar os nossos serviços, você concorda com as nossas políticas de privacidade.
Categoria de Management
Postado em 05 julho 2023
Atualizado em 05 julho 2023
Palavras-chave: integração,contínua,implantação,análise,entrega,delivery,integration,deploy,test,management
Visualizações: 985
O uso da programação para desenvolvimento de soluções de software só tem se tornado mais comum. Os softwares estão em todos os lugares, operando dentro de aparelhos eletrônicos que interpretam os dados em formato binário. Computadores, televisões e smartphones são bons exemplos de aparelhos eletrônicos que possuem softwares instalados dentro deles.
A grande maioria dos aparelhos eletrônicos possuem um software chamado sistema operacional (OS). O sistema operacional é um software básico para usuários ordinários terem a capacidade de interagir com o aparelho através de uma interface do usuário. Além do sistema operacional, existem milhares de softwares que auxiliam os usuários de alguma forma.
É importante destacar que todo software é desenvolvido por programadores. Para um software ser publicado ele precisa passar por uma série de etapas. Alguns exemplos de etapas são:
As etapas acima não podem ser ignoradas. O ciclo de vida do desenvolvimento de um software se repete toda vez que ele sofre uma nova atualização. Todas essas etapas geram custos e exigem tempo. Felizmente, é possível diminuir os custos e o tempo necessários para as etapas após o desenvolvimento. Essas etapas podem ser automatizadas com o uso de tecnologias de CI/CD.
CI/CD é a sigla para “Continuous Integration and Continuous Delivery”. Em português: “integração contínua e entrega contínua”. Em resumo, CI/CD é o uso de tecnologias para automatizar o processo de atualização de softwares. Apenas na etapa de desenvolvimento, a modificação do código fonte é realizado de forma manual. Após essa modificação ser enviada (git push) ao repositório remoto, as etapas posteriores irão ser realizadas automaticamente.
As etapas posteriores são customizáveis e podem ser elaboradas de acordo com as necessidades do software. No exemplo da imagem acima, após o programador enviar uma modificação ao repositório remoto, essa modificação irá passar por múltiplos processos até chegar no último estágio (prod). Geralmente, softwares que usam CI/CD são publicados automaticamente após o desenvolvedor enviar a modificação ao repositório.
As ações a serem tomadas caso aconteça algum problema nas etapas automatizadas também são customizáveis. Quando há erros no código, eles serão detectados e deverão ser reparados (manualmente) para que o software possa ser divulgado. Mesmo automatizando processos como o processo de teste, softwares ainda podem necessitar de teste manual. Tanto o teste automatizado quanto o teste manual podem ser realizados em sequência para atender as demandas do software.
Toda vez que uma nova modificação ser enviada ao repositório, ela deverá passar pelas mesmas etapas. Ao automatizar os processos repetitivos, o desenvolvedor não precisa se preocupar em ficar compilando, testando e atualizando o ambiente de modo manual.
Um ponto forte do CI/CD é a centralização dos processos. Após a etapa de “build” o artefato ou programa executável é testado e pode ser arquivado em um servidor, como a nuvem, se tornando acessível para outros membros do projeto de modo remoto. Essa centralização facilita o gerenciamento do projeto, principalmente se os membros estão desenvolvendo os componentes de um mesmo software de modo isolado. Projetos volumosos com um grande número de membros pode ter o desempenho melhorado usando serviços de CI/CD.
Uma grande porção dos serviços de integração e entrega contínua podem ser adquiridos gratuitamente. Após a instalação de um serviço CI/CD, ele deve ser configurado na máquina local (localhost), em um servidor remoto ou em um ambiente virtual. Após a configuração do serviço na máquina, ele pode ser executado e acessado geralmente através do navegador.
Um bom exemplo de serviço CI/CD de código aberto é o Jenkins. Além de ser integrável com outros serviços, Jenkins pode ser facilmente configurado em uma máquina. Jenkins possui uma interface amigável ao usuário e quase não necessita de linhas de código para realizar a automação das tarefas.
Outros serviços como GitLab também oferecem serviços de CI/CD. A grande vantagem desse tipo de serviço (nuvem) é que ele pode ser utilizado de modo totalmente remoto, não exigindo a instalação de softwares na máquina. A desvantagem é que ele não é gratuito dependendo do número de desenvolvedores.
Integração contínua é uma prática que junta diferentes pedaços de código em um único repositório de modo eficiente. Quando múltiplos desenvolvedores trabalham em um mesmo projeto, várias modificações (pedaços de código) são enviados (push) constantemente em um repositório remoto. Problemas como colisão, duplicação acidental e surgimento de bugs podem ocorrer facilmente. Nesse caso, antes de continuar enviando novas modificações ao repositório, os desenvolvedores devem resolver o problema primeiro. No pior das hipóteses, problemas podem ser descobertos posteriormente, aumentando o estrago. A resolução desses problemas exige tempo, afetando a produtividade e atrapalhando o desenvolvimento.
A integração contínua ajuda a evitar esse tipo de problema e mais um pouco. Ela testa, compila, armazena os artefatos em um servidor remoto, analisa e monitora o código. O que pode ser feito na integração contínua depende de como ela foi programada e os serviços utilizados. Existe uma grande quantidade de serviços que auxiliam na integração contínua de softwares, melhorando o desenvolvimento e aumentando a produtividade dos programadores.
A entrega contínua permite que o software seja entregue ao usuário final a qualquer momento. Logo, quando uma modificação é enviada ao repositório e não apresenta problemas, ela poderá ser disponibilizada imediatamente. A disponibilização se refere tanto ao ambiente de desenvolvimento como ao de produção.
A entrega contínua (Continuous Delivery) é diferente da implantação contínua (Continuous Deploy). Na entrega contínua o processo de implantar o software no ambiente de produção será feita de modo manual. Na implantação contínua a implantação do ambiente de produção será automático.
Enfim, a entrega contínua automatiza processos de atualização de ambientes. Após um software ser modificado, a sua nova versão será implantada em todos os ambientes ou quase todos.
CI/CD é uma prática de automatização de processos após a modificação do código de um software. Softwares devem seguir uma cadeia de etapas até serem implantados em um ambiente de produção. CI/CD automatiza todo ou parcialmente esses processos, diminuindo o tempo de integração manual e aumentando a produtividade no desenvolvimento do código.
Projetos práticos
Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.
Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.
Detectando objetos que entram dentro do campo de visão do personagem. Útil para servir de "gatilho" para eventos em um jogo.
Projeto de comunicação entre dois dispositivos ESP8266 e Raspberrypi4. Laravel irá funcionar como servidor e receptor de dados de temperatura e umidade coletados com o DHT11.
Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.
Expressões como gastar tempo e investir tempo andam lado a lado. Quando algo investido não tem o retorno esperado isso se torna uma perde de tempo...
Os algoritmos na ciência da computação são o principal meio para o desenvolvedor poder escrever instruções para o computador, operando a sua maneira
Em português, gestão de portofólio de produto. É uma estratégia de análise utilizada para a distribuição de recursos para um produto ou serviço.
Ponto onde os custos e o lucro se igualam. Uma vez que esse ponto de equilíbrio é ultrapassado, passa-se a obter lucro, pois os custos já estão cobertos.
Usando variáveis como MTBF e MTTR, pode-se obter a porcentagem da disponibilidade de um sistema, seja linear ou paralelo.
O SGSI é um conjunto de políticas e normas estabelecidas pela empresa para proteger a segurança da informação empresarial, evitando riscos.