Prévia do material em texto
É desafiador para os desenvolvedores de software criarem códigos funcionais em suas máquinas. No entanto, mesmo quando esse objetivo é alcançado, há um longo percurso até que o software realmente gere valor, uma vez que este só proporciona valor quando está em ambiente de produção. A base da filosofia da disponibilização de software é desenvolver programas de modo que estejam constantemente prontos para serem implementados em produção. Esse conceito é conhecido como: A) Integração Contínua (CI) B) Instalação Continuada (IC) C) Desenvolvimento Unificado (DU) D) Entrega Contínua (CD) E) Disponibilização Centralizada (DC) O Git é o sistema de controle de versão mais popular do mundo. Ele é um projeto de código aberto maduro e ativamente mantido, desenvolvido por Linus Torvalds, o criador do kernel do Linux. O Git é usado em uma ampla variedade de projetos de software, tanto comerciais quanto de código aberto. O Git é um sistema de controle de versão distribuído (DVCS). Para utilizar o Git, os desenvolvedores empregam comandos específicos para copiar, criar, alterar e combinar código, portanto, dominar branching, merging e pull requests é essencial para um fluxo de trabalho eficiente no Git. Relacione corretamente os comandos do Git: 1. Commits 2. Merge 3. Criação de Branch 4. Pull Requests 5. Push ( ) Registra o progresso dos códigos na ramificação local ( ) Inicia uma revisão do código e uma discussão ( ) Enviar a ramificação para o repositório remoto para colaboração e backup ( ) Iniciar uma nova ramificação para trabalhar em uma funcionalidade ou correção ( ) Após a aprovação, a ramificação é mesclada na branch principal Agora, selecione a alternativa que apresenta a sequência correta: A) 2 – 1 – 5 – 3 – 4 B) 1 – 4 – 5 – 3 – 2 C) 1 – 4 – 2 – 5 – 3 D) 4 – 3 – 5 – 2 – 1 E) 1 – 4 – 2 – 3 – 5 As aplicações práticas do DevOps abrangem uma variedade de atividades e processos que visam melhorar a colaboração, eficiência e qualidade ao longo do ciclo de vida do desenvolvimento e operações de software. A implementação bem-sucedida de algumas aplicações práticas no contexto do DevOps contribui para uma entrega de software mais eficiente, confiável e alinhada aos objetivos de negócios. Entre essas aplicações práticas podemos citar: A) Comunicação, agilidade, eficiência e cultura de colaboração B) Orientação a objetos, estruturação e organização C) Automação, colaboração e especificação D) Tradição, influência e conservadorismo E) Visão, individualismo e persistência Nos primórdios da TI, um muro alto separava desenvolvimento e operações. Desenvolvedores concentravam-se na criação de códigos, enquanto equipes de operações lidavam com implantação, infraestrutura e manutenção. Essa divisão frequentemente resultava em ciclos de desenvolvimento demorados, lançamentos pouco frequentes e desafios significativos de comunicação. Para tentar resolver esse problema, surgiu o(a): A) Programação Orientada a objetos B) Programação estruturada C) Comunicação entre pares D) Desenvolvimento ágil E) Persistência de dados Em DevOps temos uma representação visual que é uma série automatizada de processos que facilitam o desenvolvimento, o teste e a implantação contínua de software. Essa representação visual e automatizada do fluxo de trabalho do desenvolvimento de software, que envolve várias etapas, desde a escrita do código até a entrega do produto, onde cada etapa é um estágio no ciclo de vida do desenvolvimento de software e pode incluir tarefas como compilação, testes automatizados, revisões de código, empacotamento, implantação e monitoramento. Essa representação visual é conhecida como: A) Integração Contínua B) Automatização de processos C) Implementação automática D) Entrega Contínua E) Pipeline Para Pressman e Maxim (2014), a qualidade de software é definida como “conformidade com requisitos funcionais e de desempenho explicitamente declarados, normas de desenvolvimento explicitamente documentadas e características implícitas, que são esperadas em todo software desenvolvido profissionalmente”. Diante disso temos que a medição da qualidade em DevOps envolve a avaliação de diversos aspectos ao longo do ciclo de vida do desenvolvimento e operações. Dentre essas práticas e métricas que podem ser usadas para medir a qualidade em ambientes DevOps, podemos citar algumas das principais: A) Tempo de desenvolvimento, taxa de digitação e satisfação integral B) Taxa de entrega e sucesso, qualidade do código e satisfação do cliente C) Indentação do código, domínio e qualidade da linguagem D) Conhecimento avançado do desenvolvedor e tempo de entrega E) Controle de versões, gerenciamento da equipe e implementação A cultura DevOps é fundamental para o sucesso da implementação de práticas e ferramentas associadas ao DevOps. Ela enfatiza a colaboração, a comunicação eficaz e a busca constante pela melhoria na entrega de software. Relacione corretamente os princípios que formam a cultura DevOps: 1. Monitoramento contínuo 2. Gerenciamento de configuração 3. Entrega contínua (CD) 4. Automação de infraestrutura 5. Integração contínua (CI) ( ) Automação do processo de liberação de software para ambientes de teste e produção, permitindo transferências frequentes e confiáveis ( ) Utilização de ferramentas para automatizar a configuração e o provisionamento de ambientes de infraestrutura ( ) Controle e automação da configuração de software e infraestrutura ( ) Automação da integração de código de diferentes contribuidores em um único projeto ( ) Implementação de soluções de monitoramento para acompanhar o desempenho do software em tempo real Agora, selecione a alternativa que apresenta a sequência correta: A) 2 – 1 – 5 – 3 – 4 B) 1 – 4 – 2 – 3 – 5 C) 3 – 4 – 2 – 5 – 1 D) 4 – 3 – 5 – 2 – 1 E) 3 – 4 – 2 – 1 – 5 Controle de versão é uma ferramenta que registra todas as alterações feitas em um arquivo ou conjunto de arquivos ao longo do tempo. Isso permite que você recupere versões anteriores do arquivo, compare alterações entre versões e visualize quem fez as alterações. Existe um problema enfrentado por muitos usuários que é a colaboração com desenvolvedores que estão em outros sistemas. Para resolver essa problema, qual foi a primeira solução desenvolvida? A) Controladores de objetos B) Sistemas Centralizados de Controle de Versão (CVCSs) C) Centralizadores universais D) Sistemas Distribuídos de Controle de Versão (DVCS) E) Sistemas de Controle de Versões distribuídas Existe uma metodologia de desenvolvimento amplamente adotada nas empresas. Ela inicia seu processo com um planejamento detalhado, em que a coleta de requisitos é prioritária para se compreender as necessidades comerciais do software, seus recursos e funcionalidades. A história é então escrita pelo cliente, que lhe atribui valores de prioridade com base no impacto geral no negócio, recursos e funções. Essa metodologia de desenvolvimento é a: A) Programação Orientada a Objetos B) Extreme Programming (XP) C) Programação estruturada D) Desenvolvimento ágil E) Programação Sequencial O controle de versão é uma prática essencial no desenvolvimento de software que visa gerenciar as alterações realizadas em um projeto ao longo do tempo. Ele proporciona uma maneira organizada e controlada de rastrear as modificações no código-fonte, facilitando a colaboração entre desenvolvedores e a manutenção do histórico de alterações. Essa prática é fundamental para evitar conflitos entre diferentes contribuições ao mesmo projeto, permitindo que equipes trabalhem simultaneamente em partes distintas do código. Além disso, o controle de versão possibilita reverter para versões anteriores do código em caso de problemas, garantindo a estabilidade do projeto. Analise as afirmativas a seguir que trazem benefícios e desvantagens do controle de versões: 1. Os Sistemas Centralizados de Controle de Versão (CVCSs) são uma solução para a questão crucial decolaborar com desenvolvedores que estão em outros sistemas 2. Facilidade de colaboração: os desenvolvedores podem trabalhar nos mesmos arquivos ao mesmo tempo, sem a necessidade de sincronizar manualmente seus arquivos 3. Controle de acesso: os administradores não gerenciam quem tem acesso aos arquivos de controle de versão 4. Backups: os arquivos de controle de versão são armazenados centralmente, o que dificulta a realização do backup e da recuperação 5. Os CVCSs dependem de um servidor central, o que pode ser um ponto de dificuldade e podem ter um desempenho inferior aos sistemas distribuídos São corretas apenas as afirmativas: A) I e II B) I, II e V C) I, II e IV D) I, III e V E) III e IV No cenário dinâmico e ágil da implementação DevOps, em que a colaboração eficiente e a entrega contínuas são fundamentais, a gestão eficaz de acessos e permissões se torna uma prioridade crítica. Autenticação e autorização emergem como pilares essenciais para garantir a segurança e o controle adequado sobre os recursos de tecnologia da informação. A autenticação refere-se à verificação da identidade dos usuários e sistemas que interagem com a infraestrutura, enquanto a autorização se concentra na concessão adequada de permissões e privilégios para executar ações específicas. Existe uma abordagem que integra a segurança no processo de DevOps. Isso significa que a segurança é considerada em todas as etapas do desenvolvimento e implantação de software, desde o planejamento até a operação. Essa abordagem é conhecida como: A) DevSecOps B) CloudWatch C) OSS D) SAST E) SCA A Amazon Web Services (AWS) destaca-se como uma líder global no campo dos serviços de nuvem, fornecendo uma ampla gama de recursos para atender às diversas necessidades de computação em nuvem de organizações em todo o mundo. A infraestrutura oferecida pela AWS é conhecida por sua escalabilidade, confiabilidade e segurança, proporcionando um ambiente propício para a inovação e crescimento eficiente de empresas de todos os portes. A AWS tem um serviço que é essencial para hospedar aplicativos e máquinas virtuais, oferecendo capacidade computacional escalável na nuvem. Esse serviço é o: A) AWS Lambda B) Amazon EC2 (Elastic Compute Cloud) C) Amazon VPC (Virtual Private Cloud) D) Amazon DynamoDB E) Amazon SNS (Simple Notification Service) Microsoft Azure é uma plataforma de nuvem abrangente, oferecendo uma ampla variedade de serviços para atender às diversas necessidades de desenvolvimento, hospedagem e gerenciamento de aplicativos em nuvem. Seja para infraestrutura, soluções avançadas de inteligência artificial ou armazenamento de dados, o Azure fornece uma base sólida para empresas de todos os tamanhos e setores. O Azure também se destaca em soluções para contêineres, que proporciona um ambiente gerenciado para implantação, gerenciamento e dimensionamento de contêineres. Esse serviço é o: A) Azure Blob Storage B) Azure SQL Database C) Azure Cognitive Services D) Azure DevOps E) Azure Kubernetes Service Os contêineres têm revolucionado a maneira como desenvolvemos, distribuímos e executamos aplicativos. Nesse contexto, o Docker se destaca como uma das principais ferramentas para facilitar a criação e gerenciamento desses ambientes isolados. Uma imagem do Docker consiste em sistemas de arquivos sobrepostos, sendo a base um sistema de arquivos de inicialização, chamado bootfs, semelhante ao típico sistema de arquivos de inicialização do Linux/Unix. Cada um desses sistemas de arquivos no Docker é chamado de imagem, e essas imagens podem ser sobrepostas umas sobre as outras. A imagem mais abaixo é chamada de imagem pai, e você pode percorrer cada camada até chegar à imagem base na parte inferior da pilha. Ao lançar um contêiner a partir de uma imagem, o Docker monta um sistema de arquivos de leitura-escrita sobre quaisquer camadas subjacentes. Este sistema de arquivos de leitura-escrita é onde os processos desejados para o contêiner Docker serão executados. Analise as afirmativas a seguir que trazem comandos com parâmetros para manipular contêineres do Docker: 1. Lista todos os contêineres: docker ps -a 2. Altera o endereço contêiner: docker rename [contêiner] [novo_nome] 3. Executa o contêiner fornecido: docker start [contêiner] 4. Para a utilização do SO: docker stop [contêiner] 5. Espera até que outros contêineres em execução sejam interrompidos: docker wait [contêiner] São corretas apenas as afirmativas: A) I e II B) II e V C) I, III e V D) I, II e IV E) I, III e IV Máquinas virtuais (VMs) são ambientes virtuais completamente isolados e independentes, criados para emular a funcionalidade de uma máquina física. Elas são uma forma de virtualização, que permite a execução de vários sistemas operacionais e aplicativos em um único hardware físico. O conceito de máquinas virtuais é fundamental para a eficiência na gestão de recursos de computação e para a criação de ambientes de teste, desenvolvimento e produção mais flexíveis. Relacione corretamente os benefícios das VMs: 1. Flexibilidade 2. Isolamento 3. Recuperação de Desastres 4. Virtualização 5. Consolidação de Servidores ( ) Cada VM opera independentemente das outras, garantindo afastamento completo. Isso é crucial para segurança e estabilidade ( ) Capacidade de executar diferentes sistemas operacionais em um único hardware oferece agilidade significativa para testes, desenvolvimento e implantação de aplicativos ( ) Várias VMs podem ser executadas em um único servidor físico, otimizando a utilização dos recursos e reduzindo a necessidade de hardware físico ( ) VMs podem ser facilmente copiadas, movidas ou restauradas, tornando o disaster recovery mais rápido e eficiente ( ) Tecnologia amplamente adotada em ambientes empresariais para melhorar a eficiência operacional e a flexibilidade do gerenciamento de recursos de TI Agora, selecione a alternativa que apresenta a sequência correta: A) 2 – 1 – 5 – 3 – 4 B) 3 – 2 – 5 – 1 – 4 C) 2 – 1 – 4 – 3 – 5 D) 3 – 2 – 4 – 5 – 1 E) 2 – 1 – 4 – 5 – 3 Na área de desenvolvimento pode contar com ambientes leves e isolados que permitem encapsular uma aplicação e suas dependências. Eles proporcionam consistência entre diferentes ambientes de desenvolvimento, teste e produção, eliminando as divergências que podem surgir devido a diferenças nos sistemas operacionais ou configurações. Essa representação de um ambiente isolado para o código, caracterizado pela ausência de conhecimento sobre o sistema operacional ou os arquivos do host é um: A) GitHub B) Servidor de Rede Distribuída C) Máquinas Virtuais (VM) D) Emulador de Desktop E) Container A busca por confiabilidade e continuidade em ambientes DevOps é crucial para garantir estabilidade e entrega consistente de software. No contexto da confiabilidade, a atenção recai sobre monitoramento proativo, automação de testes, resiliência e feedback rápido, visando identificar e corrigir potenciais problemas antes que impactem os usuários. A continuidade em DevOps, por sua vez, concentra-se na integração e implantação contínuas, rollbacks eficientes, backup e recuperação, além da orquestração de contêineres. A integração contínua assegura a validação contínua do código, enquanto a implantação contínua automatiza a entrega de novas funcionalidades. Um elemento no contorno de problemas tem o potencial de causar impactos significativos durante as próximas atualizações, uma vez que o sistema modificado individualmente pode não ser reconhecido. Esse elemento é o(a): A) Infraestrutura como Código B) Riscos de disponibilidade C) Riscos de desempenho D) Desvio de configuração E) Alterações manuais Segurança em DevOps aprofunda-se na abordagem integrada para garantir a segurança ao longo de todo o ciclo de vida do desenvolvimento e operações de software. Ele explora os fundamentos da Integração Contínua de Segurança, delineando como a automação de testes de segurança, análises estáticas e dinâmicas, e revisões de código sãoessenciais para a detecção precoce e a mitigação de vulnerabilidades. Relacione corretamente as características de segurança implementada em projetos DevOps: 1. Resposta rápida a incidentes 2. Monitoramento contínuo 3. Testes automatizados 4. Gestão de Identidade e Acesso (IAM) 5. Implementação segura ( ) Configuração adequada de ambientes e a adoção de boas práticas de segurança para proteger a infraestrutura em nuvem ( ) Característica crucial para identificar atividades suspeitas ou anomalias de segurança em tempo real, análise de logs, métricas de segurança e a adoção de soluções de monitoramento avançadas ( ) Princípios de menor privilégio, autenticação multifatorial e monitoramento de acessos são implementados para evitar acessos não autorizados ( ) Protocolos de resposta a incidentes são estabelecidos, garantindo uma ação rápida e eficiente em caso de violações de segurança ( ) Com ciclos de entrega mais curtos, a realização manual de todos os testes necessários torna-se praticamente inviável, obrigando a implantação de ações automáticas e destacando a importância dessa característica no contexto do DevOps Agora, selecione a alternativa que apresenta a sequência correta: A) 2 – 4 – 5 – 3 – 1 B) 5 – 2 – 3 – 1 – 4 C) 2 – 1 – 4 – 3 – 5 D) 5 – 2 – 4 – 1 – 3 E) 5 – 1 – 3 – 2 – 4 No ambiente de containers é recomendável ter um orquestrador que simplifica o desenvolvimento e a administração de aplicações. Sem um orquestrador, gerenciar um conjunto de containers pode ser desafiador, exigindo a administração manual de execução, dimensionamento e escalabilidade. Existe um orquestrador que automatiza essas tarefas, gerenciando de maneira eficiente clusters com várias máquinas, destacando-se por sua arquitetura robusta. Sua estrutura compreende dois componentes principais: o Mestre, responsável por gerenciar o cluster e manter seu estado desejado, e os Nós (ou trabalhadores), responsáveis pela execução das aplicações. Esse orquestrador de containers é o: A) YAML B) Docker Engine C) Deployment D) Kubernetes E) Orchestrator Na infraestrutura de TI existem ambientes completamente isolados e independentes, criados para emular a funcionalidade de uma máquina física. Esse ambiente permite a execução de vários sistemas operacionais e aplicativos em um único hardware físico. Esse conceito é fundamental para a eficiência na gestão de recursos de computação e para a criação de ambientes de teste, desenvolvimento e produção mais flexíveis. Sua principal característica é a capacidade de executar um sistema operacional completo dentro de outro, chamado de sistema hospedeiro. Essa abstração é possibilitada por um software conhecido como hipervisor. Esse ambiente é conhecido como: A) Servidor de Rede B) Emulador de Servidor C) Máquinas Virtuais (VM) D) Hipervisor Master E) Roteador Containers Docker são ambientes de execução isolados que compartilham o kernel do sistema operacional do host, tornando-os mais leves e portáteis do que máquinas virtuais, que necessitam de seu próprio sistema operacional completo. A portabilidade dos containers Docker é viabilizada por um elemento que é uma camada de abstração que gerencia esses ambientes. Ele é executado no host, proporcionando uma interface de linha de comando (CLI) para a criação, inicialização e administração dos containers. Esse elemento que realiza a portabilidade dos containers Docker é o: A) Docker Hub B) Docker Engine C) Containers Docker Server D) Container Portable E) Container Repository As arquiteturas representam uma revolução no paradigma de desenvolvimento de software, introduzindo uma abordagem que elimina a necessidade de gerenciamento direto de servidores por parte dos desenvolvedores. Contrariando o modelo convencional, no qual os recursos são provisionados de forma contínua, o serverless adota uma perspectiva onde a infraestrutura e´ completamente gerenciada pelos provedores de nuvem. Existe um componente essencial das arquiteturas serverless, proporcionando uma abordagem inovadora para o desenvolvimento e execução de código na nuvem. Nesse modelo, os desenvolvedores dividem suas aplicações em funções independentes e granulares, que são acionadas em resposta a eventos específicos, sem a necessidade de gerenciar a infraestrutura subjacente. Esse componente é conhecido como: A) FaaS (Function-as-a-Service) B) Serverless C) PaaS (Plataform-as-a-Service) D) Auto Scaling Service E) Aplicações RESTful A segurança em código tornou-se uma prioridade essencial em ambientes de nuvem, especialmente ao utilizar serviços da Amazon Web Services (AWS) em conjunto com ferramentas como o Terraform. Essa abordagem, também conhecida como Infrastructure as Code (IaC), não apenas permite a automação eficiente da infraestrutura, mas também impulsiona a implementação de práticas seguras desde a concepção até a operação. Analise as afirmativas a seguir que trazem como a segurança pode ser integrada efetivamente ao código ao utilizar AWS e Terraform: 1. Gerenciamento de credenciais: primeiro passo é assegurar o gerenciamento seguro de credenciais na AWS 2. Práticas de segurança em Terraform: variáveis sensíveis e arquivos de estado, avaliação de impacto e revisão de código 3. Monitoramento e conformidade: implementar identificação da linguagem de programação para identificar e reagir a possíveis atualizações 4. Auditorias e revisões regulares: realizar auditorias regulares nas configurações do Terraform e nos recursos provisionados na AWS para identificar e corrigir potenciais lacunas de segurança 5. Atualizações e Patches automáticos: automatizar a instalação dos recursos financeiros do projeto São corretas apenas as afirmativas: A) I, II e IV B) I e II C) I, III e V D) II e V E) I, III e IV YAML é uma linguagem de marcação humanamente legível que é frequentemente usada para descrever configurações e dados. É uma linguagem de sintaxe simples e fácil de aprender, mas existem algumas regras básicas que você deve seguir ao criar arquivos YAML. Relacione corretamente os componentes básicos de YAML que são comuns as várias linguagens de programação encontradas no mercado: 1. Listas 2. Mapas 3. Number 4. Strings 5. Boolean ( ) São usados para armazenar dados associativos, como chaves e valores ( ) São usadas para armazenar uma sequência de dados ( ) São usadas para armazenar dados de texto ( ) São usados para armazenar dados numéricos ( ) São usados para armazenar dados lógicos, como verdadeiro ou falso Agora, selecione a alternativa que apresenta a sequência correta: A) 2 – 4 – 5 – 3 – 1 B) 3 – 2 – 5 – 1 – 4 C) 2 – 1 – 4 – 3 – 5 D) 5 – 2 – 4 – 3 – 1 E) 2 – 1 – 5 – 3 – 4