Aplicações em Contêineres

De MediaWiki do Campus São José
Revisão de 10h36min de 15 de dezembro de 2015 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.

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.

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.