Comentários
A virtualização é a representação dos dispositivos físicos por meio de entidades de software os quais são chamados de máquinas virtuais. Ela fornece uma versão virtual de tecnologias essenciais como: redes, armazenamento, hardware, entre outros.
Fonte: Shutterstock.
Deseja ouvir este material?
Áudio disponível no material digital.
Caro aluno, seja bem-vindo a mais uma unidade. Agora que já conhecemos os papéis que as diferentes máquinas podem assumir, vamos verificar, na prática, como instalar e configurar máquinas com diferentes propósitos. Você já parou para pensar em quantos sistemas operacionais diferentes existem? Será que há um único sistema que pode ser instalado em uma máquina do tipo cliente e em uma do tipo servidor? Além disso, qual é a melhor forma de testar e se familiarizar com esses diferentes sistemas operacionais?
Nesta unidade, vamos entender conceitos muito importantes e como aplicá-los de maneira prática, para que você consiga responder às questões anteriores e muitas outras. Talvez você já tenha ouvido falar de máquinas virtuais, mas será que já ouviu sobre conteinerização? Ainda que sim, de maneira prática, como você pode conteinerizar uma aplicação web, por exemplo?
Se respondeu não a alguma dessas perguntas, não se preocupe! A ideia aqui é mostrar que, caso você estude com afinco, pesquise e faça todas as atividades sugeridas, aprenderá a implementar e configurar contêineres para sistemas distribuídos.
Uma importante empresa do ramo de tecnologia que presta serviços a praticamente todos os bancos corporativos está com uma vaga aberta de trainee DevOp e, por isso, deu início a um processo seletivo. Interessado em ingressar nessa empresa, você está disputando a vaga e, na última etapa do processo seletivo, será preciso pôr seus conhecimentos à prova. Você será capaz de atingir todos os objetivos conforme a necessidade da empresa?
Na primeira seção desta unidade, você entenderá quais são os princípios e as melhores práticas relacionadas à ideia de virtualização. Já na segunda seção, será apresentado ao – relativamente novo – conceito de contêineres e entenderá o motivo de muitas empresas de grande porte, que possuem sistemas distribuídos altamente escaláveis, estarem migrando cada vez mais para esse tipo de solução. Por fim, você terá a oportunidade de colocar em prática conceitos importantes sobre conteinerização, por meio do uso de uma ferramenta largamente utilizada no mercado de trabalho.
Chegou a hora de prosseguir com os estudos dos sistemas distribuídos, o que vai lhe proporcionar conhecimentos e oportunidades no mercado de trabalho. Lembre-se de que, quanto mais você se dedicar, mais poderá aproveitar os ensinamentos transmitidos neste material.
Caro estudante, você já deve ter ouvido falar de (talvez até utilizado) softwares como o VirtualBox e o VMWare. Nessa seção vamos entender, conceitualmente e de maneira prática, a importância desse tipo de tecnologia e quais problemas ela veio solucionar. Saiba que sua importância vai muito além do simples fato de testar ou “dar uma olhada” na nova versão de um sistema operacional. Na situação-problema à qual você será exposto, terá que criar uma máquina virtual com uma configuração previamente definida, de forma que será necessário entender os principais parâmetros que devem ser ajustados para tal. Caso não saiba como fazer isso, a máquina nem passará da fase inicial de boot do sistema.
Você está participando de um processo seletivo para uma oportunidade muito interessante e bem remunerada na área de DevOps da maior empresa nacional de portal de notícias, cujos clientes que consomem o conteúdo disponibilizado por essa empresa são bancos, em sua maioria. Na entrevista, além da Gerente de RH, também está participando o Coordenador de Infraestrutura, que será o seu futuro gestor.
Inicialmente, o Coordenador pede para você criar uma máquina virtual e testá-la: neste contexto, crie uma máquina virtual com o software VirtualBox. Esse tipo de procedimento é rotineiro nesta empresa que necessita de máquinas para execução de diversos serviços de tecnologia.
Utilize o seu conhecimento atrelado ao conteúdo da seção para solucionar a situação-problema apresentada acima.
A virtualização se torna cada vez mais popular com o passar dos anos e é amplamente utilizada nos ambientes corporativos e, em alguns casos, até domesticamente. O grande objetivo da virtualização é fornecer uma versão virtual de tecnologias essenciais em computação, por exemplo, redes, armazenamento, hardware, entre outros. Além disso podemos também, virtualizar aplicações. Segundo Dawson e Wolf (2011, [s.p.]), a “virtualização desacopla as tarefas e a parte funcional das aplicações da infraestrutura física necessária para seu funcionamento, permitindo uma flexibilidade e agilidade sem precedentes em termos de armazenamento, servidores e desktops”.
Atualmente, é possível fornecer uma versão virtual de tecnologias essenciais em computação. Por exemplo, para um site permanecer no ar por 24 horas, não precisamos ter um servidor web/aplicação físico mantendo seu funcionamento, podemos ter um servidor virtual ou máquina virtual, como são chamadas, tipo de servidor que substitui ou emula o funcionamento de um servidor físico.
Quando virtualizamos recurso de hardware, como memória RAM, processador, placas de vídeo, placa de rede, entre outros, temos uma máquina virtual que funciona com os recursos de hardware em formato virtual. Sabendo disso, podemos instalar um sistema operacional sobre outro sistema, ou seja, sobre nossa máquina física podemos ter várias máquinas virtuais. Esses recursos de hardware são representados por softwares na virtualização. A mesma coisa também pode ser feita com a rede: é possível criar uma infraestrutura lógica de rede sobre uma rede física. Nela podemos personalizar e configurar de formas diferentes da rede física, conforme nossas necessidades. Também é possível ter em nossa residência uma rede física “A” composta pelas redes lógicas “B” e “C”.
Quando utilizamos virtualização, representamos os dispositivos físicos por meio de entidades de software, assim, nossos servidores e workstations se tornam o que chamamos de máquinas virtuais, ou VMs. A parte de armazenamento de dados é conhecida como Software Defined Storage (SDS), ou armazenamento definido por software. Já a parte de rede é chamada de Software Defined Networking (SDN), ou rede definida por software. Unindo todos esses elementos com um conjunto de máquinas virtuais, temos um Software Defined Data Center (SDDC), ou data center definido por software.
Portanto, as máquinas virtuais são abstrações de hardware de computadores que permitem que uma única máquina física aja como se fosse várias máquinas diferentes. Assim, podemos ter vários sistemas operacionais distintos rodando em uma só máquina.
A virtualização contém três componentes principais, conforme o Portal Redhat (2018):
Podemos observar na Figura 4.1 a interação dos três componentes principais da virtualização e exemplos de como são compostos:
Para o usuário final, não faz diferença se a máquina acessada é física ou virtual, pois as duas funcionam da mesma forma, o que acaba sendo imperceptível. Nesse cenário de virtualização podemos ter em um mesmo servidor uma máquina virtual com o sistema operacional Windows Server, uma máquina virtual com Linux e uma máquina com FreeBSD, por exemplo. Os principais fatores que levam à utilização de virtualização são:
Existem vários softwares nos quais é possível criar e administrar máquinas virtuais, e os mais populares são VirtualBox, VM Ware e Hyper-V Microsoft. Nesta seção vamos utilizar o VirtualBox©, fabricado pela Oracle®. Esse software tem uma licença do tipo GNU General Public License (Licença Pública Geral GNU), GNU GPL ou simplesmente GPL. A licença GPL permite a utilização e o estudo do software de maneira livre para quaisquer fins.
O download do VirtualBox pode ser realizado no site do VirtualBox (VIRTUALBOX, 2018), escolhendo a versão adequada para o seu sistema operacional. No mesmo site há uma extensa documentação que nos auxilia com todo processo de manipulação da ferramenta, assim como informações sobre a tecnologia de virtualização (ORACLE, 2018).
Após o download do instalador, devemos selecionar a opção “Next”. Agora devemos escolher quais elementos da instalação queremos e qual será o local de instalação. No nosso caso deixaremos tudo conforme o padrão. Lembrando que você deve ter 175MB livres em seu HD para a instalação do VirtualBox. Após essas configurações devemos selecionar a opção “Next”, conforme a Figura 4.2:
Agora devemos escolher opções referentes a atalhos do VirtualBox e selecionar “Next” novamente. Feito isso, é necessário selecionar “Install” para iniciar nossa instalação. Agora devemos aguardar alguns minutos, o tempo de instalação varia de máquina para máquina. Ao término, é preciso deixar marcada a opção que abre o Virtualbox após a instalação e selecionar “Finish”. Podemos observar na Figura 4.3 a interface do Oracle VM VirtualBox, em que temos várias opções. A opção “Novo” é a que permite criar nossas máquinas virtuais. Com elas são habilitadas as opções de “Configurações” sobre a máquina selecionada: “Descartar” e “Iniciar”.
Dentro da opção “Novo” definimos todas as configurações de nossa máquina virtual, como seu nome, sistema operacional, quantidade de memória RAM, capacidade de disco rígido, processamento, entre outras.
Dois tipos de virtualização são muito úteis no contexto de sistemas distribuídos, conforme Coulouris et al. (2013):
Esses autores observam, muito adequadamente, que a vantagem da criação e da utilização de redes virtuais advém do fato de que uma rede virtual específica para um determinado tipo de aplicação pode ser criada sobre uma rede física real, de forma que a virtual possa ser otimizada para aquela aplicação em particular, sem a necessidade de alterar as características da rede física.
Imagine que você está desenvolvendo um sistema distribuído de um serviço de streaming de vídeo que, obviamente, é composto por vários elementos, como banco de dados, servidor web, servidor de e-mail, servidor de autenticação etc. Suponha que o arquiteto de sistemas da empresa tenha optado por utilizar dois bancos de dados diferentes, um para armazenar informações gerais, como dados dos assinantes, datas de vencimento de assinaturas etc., do tipo SQL, e outro para armazenar os vídeos em si, com características mais adequadas para otimizar a troca de informações, do tipo NoSQL. Esses dois bancos de dados não precisam (e, por questões de segurança, nem devem) saber da existência um do outro. Para atingir esse objetivo, tipicamente as empresas criam duas redes virtuais dedicadas, de forma que, além de estarem isoladas entre si, podem ser otimizadas de acordo com a natureza do banco de dados, prevalecendo a comunicação de segmentos UDP para o banco de dados NoSQL, por exemplo, em detrimento dos segmentos TCP.
Para Coulouris et al. (2013), a virtualização de sistemas é uma alternativa interessante por permitir emular o hardware de uma máquina física, permitindo, assim, que várias máquinas virtuais, cada uma com um sistema operacional, coexistam e se comuniquem. Os autores ainda salientam que a principal vantagem da virtualização de sistemas está no fato de que as aplicações já escritas e validadas, que dependem de um sistema operacional em específico e que necessitam se comunicar e interagir com outra aplicação em um sistema operacional diferente, podem assim fazê-lo, através da virtualização dos sistemas operacionais, sem a necessidade de que a aplicação seja reescrita ou recompilada.
Pense na seguinte situação: na empresa em que você trabalha, o sistema de planejamento de recursos, conhecido simplesmente por ERP (do inglês Enterprise Resource Planning), utiliza um módulo de controle de estoque escrito pelo próprio time de desenvolvedores da companhia, na linguagem Asp.NET que, por sua vez, utiliza funcionalidades específicas da plataforma Windows, não sendo 100% compatível com alternativas como o .NET Core (recentemente aberto para a comunidade). Para economizar nos gastos e, principalmente, aumentar a disponibilidade do sistema ERP utilizado pelos colaboradores da empresa, suas filiais e seus representantes comerciais, o Diretor Executivo, ou CEO (do inglês Chief Executive Officer), decide migrar para uma solução em nuvem, de algum provedor de cloud computing de mercado. Por questões financeiras, o Diretor de TI, ou CIO (do inglês Chief Information Officer), opta por utilizar um Sistema Operacional GNU/Linux. Como fazer para adaptar o módulo de controle de estoque? Reescrever o código seria uma opção, mas os desenvolvedores que fizeram esse módulo já não trabalham mais na empresa, e o código é muito extenso e complexo, o que significa que sua reescrita impactaria em um aumento significativo de tempo até que o “novo” ERP esteja disponível. Qual seria sua solução para esse problema?
Se você já utilizou ou leu a respeito de computação em nuvem, deve saber que, independentemente do tipo de serviço que você contrata e do provedor desse serviço, você já estará utilizando a virtualização em algum nível, e esses serviços são tipicamente categorizados como IaaS (do inglês Infrastructure as a Service), PaaS (do inglês, Platform as a Service) e SaaS (do inglês, Software as a Service). Para entender melhor essa ideia, veja a Figura 4.4.
A maioria das pessoas, quando ouve falar de virtualização, pensa em um sistema operacional “dentro” de um software como, por exemplo, o VirtualBox da Oracle, instalado em uma máquina física obviamente com um sistema operacional instalado. Partindo desse contexto, podemos destacar algumas características: esse sistema operacional instalado “dentro” da máquina física refere-se a uma máquina virtual, pois é similar à sua máquina física, porém, puramente emulada via software. O software que permite emular uma máquina física é, de maneira genérica, chamado de hypervisor e é responsável por desacoplar a máquina física da virtual, bem como alocar os recursos da máquina física, de acordo com a necessidade da máquina virtual, conforme artigo da VMWare, uma das empresas mais conhecidas na área de virtualização (VMWARE, [s.d.]).
Exemplos populares de hypervisors são o VMWare Player, da VMWare e o VirtualBox, da Oracle. Existem várias outras opções de hypervisors disponíveis no mercado, não tão populares, mas ainda assim bastante utilizadas, como o caso do QEMU (abreviação para Quick Emulator), que é o hypervisor utilizado pelo Android Studio (IDE oficial da Google para desenvolvimento de aplicativos Android), para emular o sistema operacional Android e poder testar os aplicativos em máquinas físicas com sistemas operacionais MS-Windows, GNU/Linux e macOS, conforme artigo do portal de desenvolvedores da Google: Start the emulator from the command line (ANDROID, 2019).
Podemos instalar várias máquinas virtuais em uma única máquina física, limitando-se, é claro, às capacidades de processamento, RAM e armazenamento da máquina física. As máquinas físicas são tipicamente chamadas de hosts (hospedeiros), e as máquinas virtuais são tipicamente chamadas de guests (convidados), embora não seja tão comum a utilização dos nomes traduzidos para o nosso idioma. A Figura 4.5 ilustra esses elementos.
Oracle® VM VirtualBox®. User Manual (ORACLE, 2018).
A virtualização está dividida em três principais componentes: hospedeiros, camada de virtualização e convidados. Cada um tem o papel fundamental em um processo de virtualização, e entender a diferença entre eles é essencial.
As máquinas virtuais, ou computadores virtualizados são chamadas de
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Correto!
Convidados é o nome que utilizamos para identificar os componentes como as máquinas virtuais, ou computadores virtualizados, que são as máquinas físicas que podem ser criadas sobre as máquinas hospedeiras, também conhecidas como hosts.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Existem muitos fatores importantes que podem ser levados em consideração como vantagens para se utilizar a tecnologia de virtualização em um ambiente composto por vários servidores. Na atualidade, muitas empresas optam por utilizar ambientes virtualizados devido à vasta lista de vantagens sobre ambientes físicos.
Sobre as características de virtualização, marque V para verdadeiro ou F para falso:
( ) Diminuição de espaço físico.
( ) Demanda mais tempo para implantação.
( ) Economia de energia elétrica.
( ) Melhor aproveitamento da capacidade de computação e da performance.
Assinale a alternativa que representa a sequência CORRETA:
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Correto!
A resposta correta é “V - F - V - V”, pois máquinas virtuais são mais rápidas de serem implantadas do que máquinas físicas, portanto, a afirmativa que diz que as máquinas virtuais demandam mais tempo para implantação é falsa, enquanto todas as outras são verdadeiras.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Com o software Oracle VM VirtualBox, podemos criar máquinas virtuais. Esse software funciona como uma camada de virtualização entre as máquinas físicas e virtuais, e nele é possível simular vários recursos de hardware de forma virtual para utilização de máquinas virtuais.
Ao criar uma nova máquina virtual, deseja-se instalar o sistema operacional X, que está em uma imagem (iso) na pasta de documentos do computador físico. Para isso, é necessário criar um CD-ROM ou disco virtual com o caminho dessa imagem, para que ele seja reconhecido dentro da máquina virtual. Assinale a alternativa que apresenta a opção do menu de Configurações devemos fazer essa tarefa.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Correto!
A resposta correta é “Armazenamento”. Através do menu de Configurações, deve-se selecionar a guia de armazenamento, por onde será criado o disco virtual com a imagem do sistema operacional X, indicando seu caminho ao VirtualBox.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
Tente novamente...
Esta alternativa está incorreta, leia novamente a questão e reflita sobre o conteúdo para tentar novamente.
ANDROID Studio. Start the emulator from the command line. Developers. Última atualização em: 2019. Disponível em: https://bit.ly/3oV6O1g. Acesso em: 7 fev. 2019.
COULOURIS, G. et al. Sistemas Distribuídos. Porto Alegre: Bookman, 2013.
DAWSON, P e WOLF, C. (Portal). Virtualization Key Initiative Overview. 22 jul. 2011. Disponível em: https://gtnr.it/3txpRSK. Acesso em: 03 nov. 2018.
GLASSDOOR. Website. 2021. Disponível em: https://bit.ly/39NgR4i. Acesso em: 28 jan. 2021.
ORACLE. Oracle VM VirtualBox®: User Manual. 2018. Disponível em: https://bit.ly/3jsp15h. Acesso em: 07 fev. 2019.
REDHAT. O que é virtualização? 2018. Disponível em: https://red.ht/39OU7AL. Acesso em: 27 nov. 2018.
UBUNTU. Downloads. 2019. Disponível em: https://bit.ly/3aG6zSE. Acesso em: 7 fev. 2019.
VIRTUALBOX. Download VirtualBox. 2018. Disponível em: https://bit.ly/3oL8ieA. Acesso em: 6 fev. 2019.
VMWARE. Virtualization. Disponível em: https://bit.ly/2MVOKaf. Acesso em: 4 fev. 2019.