Por que eu devo ler este artigo:

O desenvolvimento de software está cada vez mais complexo, e um dos motivos para isto é a grande variedade de requisitos não funcionais inseridos no escopo de desenvolvimento do software.

Em virtude disso, cada vez mais o processo de instalação e configuração do ambiente de testes e homologação se torna custoso. Na maioria das vezes, para conseguir um ambiente similar ao de produção, é necessária uma grande estrutura de servidores, que muitas vezes não estão disponíveis.

Deste modo, neste artigo serão apresentados os conceitos básicos de virtualização e provisionamento, bem como as ferramentas que podem ser utilizadas para criar um ambiente virtualizado similar ao de produção de forma rápida e eficiente, facilitando os testes em cenários mais próximos da realidade.

Entregar software com qualidade sempre foi um desafio muito grande para a maioria das empresas de Tecnologia da Informação (TI). Desafio esse que está diretamente relacionado aos riscos existentes no processo de Engenharia de Software, que vão desde a análise até a distribuição da nova versão.

O processo de distribuição de uma nova versão no ambiente de produção muitas vezes é considerado algo simples e sem muitos riscos. Porém, esse processo pode se tornar catastrófico se as etapas de testes não forem executadas em um ambiente bastante similar ao ambiente no qual o software será executado.

Muitas vezes o ambiente de testes não representa o ambiente de produção. Isto pode ocorrer devido à complexidade do projeto, elevado custo ou até mesmo uma distância entre a equipe de desenvolvimento e a equipe de infraestrutura.

Na tentativa de estreitar a relação entre as equipes de desenvolvimento e infraestrutura surgiu o movimento DevOps, que trouxe com ele muitos facilitadores para contornar esses problemas e garantir uma distribuição com testes mais próximos ao ambiente de produção e com menos riscos.

Através da virtualização é possível criar ambientes mais próximos à produção, sem a necessidade de dispor de uma grande quantidade de máquinas físicas.

Além do ambiente similar à produção, é muito interessante poder recriar todo ambiente virtual de uma maneira rápida e sem esforço, viabilizando deste modo testes mais completos do software antes de distribui-lo.

Virtualização

Nos últimos anos o assunto Virtualização tem ganhado muito destaque, mas o conceito de virtualização foi criado no final dos anos 60 e início dos anos 70 pela IBM.

O intuito da virtualização é abstrair os hardwares, criando um grande conjunto de recursos lógicos (CPU, memória, rede, armazenamento, entre outros), permitindo assim a definição de máquinas virtuais com configurações e sistemas operacionais distintos em uma única máquina física.

A máquina física, conhecida como host, é responsável por fornecer uma plataforma virtual para a execução dos sistemas operacionais “convidados” (guest). Esta plataforma virtual será criada a partir dos recursos da máquina host, ficando assim limitada à capacidade dos recursos disponíveis.

Hypervisor

O Hypervisor, ou Virtual Machine Monitor (VMM), é um dos principais componentes da virtualização. A sua função é criar a plataforma virtual na máquina host, viabilizando deste modo a instalação de vários sistemas operacionais guest que irão compartilhar os recursos da máquina host.

Os dois tipos mais comuns de Hypervisor são:

· Native ou Bare Metal: software de virtualização executado diretamente no hardware host, sendo responsável por gerenciar os recursos e o sistema operacional guest (vide Figura 1). Neste caso, o sistema operacional guest é executado um nível acima do Hypervisor, o que na maioria das vezes, representa um melhor desempenho. Exemplos de soluções desse tipo: VMware ESX, Xen, Hyper-V, etc.

img

Figura 1. Hypervisor – Native ou Bare Metal.

· Hosted: software de virtualização executado sobre o sistema operacional da máquina host (vide Figura 2). Neste caso, existem duas camadas de software entre o hardware da máquina física e o sistema operacional guest. Exemplos de soluções desse tipo: KVM, Parallels e Oracle VM VirtualBox.

img

Figura 2. Hypervisor – Hosted.

Oracle VM VirtualBox

O Oracle VM VirtualBox é um software de virtualização que permite a criação de máquinas virtuais (guest) que são executadas sobre o sistema operacional da máquina física (host).

Ele pode ser utilizado em ambientes corporativos ou domésticos, disponibilizando uma série de funcionalidades interessantes para a criação de máquinas virtuais.

Com o intuito de atender uma grande quantidade de usuários, esta solução pode ser instalada nos principais sistemas operacionais do mercado, além de possuir uma lista extensa de sistemas operacionais que poderão ser utilizados nas máquinas virtuais.

As máquinas virtuais podem ser criadas através de uma interface gráfica amigável disponibilizada pelo VirtualBox. Esse é um processo bem simples e fornece uma série de opções para a personalização dos hardwares e sistema(s) operacional(is) da(s) máquina(s) sendo criada(a).

Mesmo com toda a simplicidade, algumas vezes é mais interessante criar máquinas virtuais através de um processo automatizado, evitando assim a necessidade de uma configuração ou inicialização manual. Uma das maneiras de automatizar o processo de configuração e inicialização dessas máquinas é utilizar uma ferramenta chamada Vagrant, que faz uso de um SDK disponibilizado pelo VirtualBox para interagir com a plataforma virtual.

Vagrant

O Vagrant é um software utilizado para criar e configurar ambientes virtuais de desenvolvimento, porém ele não é responsável pelo processo de virtualização. Este processo é delegado para uma ferramenta especializada em virtualização, denominada provedor.

Um exemplo de provedor do Vagrant é o VirtualBox, porém existem outros provedores disponíveis, como o VMware Fusion e até mesmo uma instância EC2 na Amazon.

Para criar um ambiente virtual no Vagrant é necessária uma imagem de um determinado sistema operacional, conhecida como box. Os boxes têm por objetivo agilizar a criação dos ambientes virtuais e são vinculados diretamente a um determinado provedor suportado pelo Vagrant, ou seja, um box do Vagrant vinculado ao VirtualBox não poderá ser usado com os demais provedores suportados pelo Vagrant. ...

Quer ler esse conteúdo completo? Tenha acesso completo