Aplicações em Contêineres

De MediaWiki do Campus São José
Revisão de 17h49min de 10 de outubro de 2016 por Nathan.o (discussão | contribs) (→‎Objetivo)
Ir para navegação Ir para pesquisar

Atual Condição

Quando se fala em websites, webservices e outras aplicações, é impossível não mencionar o quão crescente está o acesso de usuários em sistemas de lojas, prestadoras de serviços, empresas terceirizadas, entre outros. O que muitos não sabem é que, por trás de todas essas páginas, textos, imagens, vídeos, entre outros, há uma rica infraestrutura com a missão de manter disponível esses ambientes para acesso e visualização por parte dos usuários.

Um método comumente utilizado para sustentar esses sites basea-se em servidores de aplicação. Neste modelo, o desenvolvimento cria uma versão de um determinado aplicativo para uma página, contendo seus arquivos de bibliotecas e binários e com um número de versão. Após isso, o contexto referente à essa aplicação deve ser mapeado em um serviço web, e esse aplicativo é configurado para que realize suas consultas em um banco de dados disponibilizado. Posteriormente, o serviço é iniciado e a aplicação pode ser acessada através do browser pelo usuário. Uma possível falha ou indisponibilidade em qualquer uma das aplicações do ambiente pode implicar em uma correção dessa aplicação, obrigando que o serviço seja parado e iniciado novamente com uma versão corrigida.

Outra grande adversidade que é encontrada em alguns momentos, é o fato dessas aplicações estarem sujeitas à performance dos servidores virtuais ou físicos no decorrer do período de utilização, seja essa uma performance satisfatória ou precária.

Têm-se, atualmente, um grande número de páginas com base em virtualização de servidores, disponibilizados para tal demanda, conforme acontece com as aplicações do ambiente virtual do campus São José do Instituto Federal de Santa Catarina, por exemplo.

Nesse ponto da análise, pode-se destacar uma solução muito interessante, visando melhoria de performance e praticidade, baseada no conceito de contêineres web. Em linhas gerais, trata-se de uma solução de código aberto que consiste em uma espécie de virtualização a nível de sistema operacional, comparável ao método de utilização de máquinas virtuais. Para uma melhor compreensão do conceito, pode-se pensar que cada contêiner em uma máquina é um processo isolado, com uma imagem para execução e contendo um determinado serviço em seu escopo, seja ele uma aplicação, um banco de dados ou um servidor web.

Objetivo

O atual cenário das aplicações demonstra uma grande utilização de máquinas virtuais, com sistemas operacionais em funcionamento, onde essas aplicações estão sendo executadas.

A implementação de uma topologia baseada no conceito de contêineres e no gerenciamento dos mesmos, permite que seja flexível o redimensionamento sob demanda da infraestrutura de uma determinada aplicação , visto que não é necessária a utilização de um sistema operacional de uma maquina virtual que, por sua vez, já é executada sobre uma máquina real, contando com a vantagem de que esses contêineres permitem a inicialização de instâncias sob demanda a nível de processo e a facilidade de se ter o compartilhamento de arquivos de configuração, bibliotecas, binários, entre tantos outros, entre o host e o contêiner. Por apresentar maior conteúdo, mais funcionalidades e recursos para pesquisa e implementação, sugere-se a utilização do contêiner Docker.

O método também permite que serviços isolados com qualquer tipo de falha sejam implementados quantas vezes foram necessárias até que se chegue em uma entrega de software sem erros, além de economizar o tempo que seria gasto na recriação de determinados ambientes, além da migração das aplicações entre sistemas operacionais e o fato de que, com cada contêiner hospedando um serviço, facilita a identificação de problemas e possibilita uma tratativa exclusiva.

Para tal solução, propõe-se também a utilização de uma ferramenta de gerenciamento denominada Kubernetes, que pode orquestrar uma grande quantidade de contêineres web. Desenvolvida pelo Google, essa ferramenta pode encarregar-se de serviços como balanceamento de carga, DNS, monitoramento de desempenho, entre outros. Ainda conta com a vantagem de trabalhar com uma variedade de sistemas de armazenamento locais e em nuvem oferecidos por corporações como Google e Amazon Web Services, por exemplo.

Definidos os contêineres e a ferramenta que irá gerenciar os mesmos, a distribuição que deverá ser utilizada para hospedar essa infraestrutura é o CoreOS, por ser o sistema mais leve e que teve sua criação destinada justamente para implementação de aplicações em contêineres

Cronograma

Etapas out/2015 nov/2015 dez/2016 jan/2016 fev/2016 mar/2016 {{{8}}} {{{9}}} {{{10}}} {{{11}}} {{{12}}}
Pesquisa Bibliográfica X X X
Escrita do Documento X X X
Entrega do Documento e Defesa X
Apresentação do Trabalho à Banca X

Referências Bibliográficas

Newman, S. Building Microservices: Designing Fine-Grained Systems. Sebastopol (CA): O'Reilly Media, 2015.