Arquitetura sem servidor

Arquitetura sem servidor

Arquitetura sem servidor

 

A princípio, parece loucura pensar em uma arquitetura que não contenha servidor. Afinal, até mesmo as pessoas que não trabalham com programação estão acostumadas com a ideia de que existe uma coisa chamada “servidor” que é responsável por rodar os sistemas. Por mais maluco que esse nome possa parecer, o fato é que no ano de 2016 o assunto de arquitetura sem servidor (em Inglês, serverless architecture) começou a surgir com frequência nas rodas de conversa de programadores e esse é um dos temas quentes para 2017.

O modelo de arquitetura sem servidor possibilita que os programadores não precisem mais se preocupar com o gerenciamento da infraestrutura. Mesmo nos modelos de infraestrutura como serviço (IaaS) e plataforma como serviço (PaaS), que são largamente utilizados hoje em dia, ainda cabe ao programador ou DevOps se preocupar com perguntas como:

  • Quantos servidores eu devo alocar para esse projeto?
  • Qual sistema operacional os nossos servidores devem rodar?
  • Como podemos escalar a capacidade da infraestrutura?
  • Quantos novos usuários podem entrar antes de termos que aumentar os
    servidores?
  • Qual a capacidade inicial que devemos alocar para este sistema?

Talvez você esteja se perguntado: “mas se não há servidor executando o programa, então onde ele roda?”. Bem. antes de mais nada, é bom deixar claro que no final das contas existe um servidor no qual o software será executado. A grande diferença é que as arquiteturas sem servidor permitem que o programador não tenha que gerenciar a infraestrutra. O programador não precisa se preocupar em preparar máquinas, fazer configurações no sistema operacional, estimar a capacidade que o sistema precisará ter, pensar em como mudar a capacidade quando a demanda variar, e por aí vai.

Para seguir este tipo de arquitetura, é necessário usar alguma plataforma com esse suporte. Atualmente, a plataforma mais desenvolvida nesse sentida é a Amazon Web Services, com o serviço AWS Lambda, embora outros competidores também estejam aparecendo forte, como a Microsoft com o Azure Functions.

A ideia geral é a seguinte: você cria uma função, que nada mais é do que um trecho de programa escrito por você para resolver um problema específico. Essa função pode receber entradas e produzir uma saída. Você utiliza um serviço como o AWS Lambda para publicar estas funções e integrá-las com uma aplicação. Você não precisa subir nenhum servidor para rodar a sua função e nem se preocupar com o que vai acontecer se você precisar executar essa função 1000 vezes por minuto. A plataforma é já irá resolver esses problemas para você.

Vamos ver um exemplo para ajudar a clarear as ideias. Pense em um site que hospeda vídeos, com as seguintes funcionalidades:

  • Os usuários podem enviar vídeos HD (1080p);
  • Para cada video recebido, são geradas duas versões com menor qualidade (720p e
    480p);
  • Para cada vídeo, é gerado um arquivo mp3 somente com o áudio do vídeo;
  • Para cada vídeo, também é gerada uma imagem miniatura (thumbnail) que serve
    como uma “capa” do vídeo.

Para fazer um sistema como esse seguindo uma arquitetura tradicional, o programador provavelmente teria que criar uma fila para cada tipo de tarefa (converter para 720p, converter para 480p, gerar mp3 e gerar thumbnail). Um servidor seria responsável por receber os vídeos originais e enfileirar trabalhos nessas filas, sempre que receber um novo vídeo. Algumas máquinas de processamento precisariam ficar verificando periodicamente essas filas e realizar as tarefas conforme elas necessário.

Com uma abordagem “sem servidor”, é possível simplificar a solução. Veja a imagem abaixo. A ideia é que a aplicação receba o vídeo original coloque-o em um sistema de armazenamento de arquivos. Essa fato dispara as funções criadas especificamente para cada caso, que começam a trabalhar e realizam as conversões necessárias, sem que o programador precise se se preocupar com mais nada. E se chegarem muitos novos vídeos em um curto espaço de tempo? Sem problemas, pois cada tarefa é realizada de forma paralela e independente, e a própria plataforma se encarrega de alocar os recursos necessários para escalar o processamento.

Exemplo da Arquitetura sem servidor

Arquitetura sem servidor

Arquitetura sem servidor

Grande parte da complexidade deste sistema está justamente na parte de conversão dos vídeos, pois este tipo de tarefa é computacionalmente custosa e pode acabar se tornando um gargalo. Ao usar uma arquitetura sem servidor, a complexidade desse gerenciamento fica encapsulada na plataforma e o programador pode focar apenas em construir uma função que converte adequadamente os vídeos.

O modelo de cobrança deste tipo de serviço é baseado na quantidade de vezes que as funções foram executadas, ou no tempo de execução das funções, ou na quantidade de memória que a função alocou, ou em um conjunto desses fatores.

Atualmente, o uso de uma arquitetura sem servidor ainda significa ficar dependente de um fornecedor, pois o mercado deste tipo de serviço ainda não tem alto grau de maturidade. Nós esperamos, no entanto, ver um aumento expressivo da maturidade das plataformas e muitas aplicações sendo publicadas seguindo este modelo.

Curso que recomendamos

Selecionamos uma série de cursos on-line para você se preparar e abrir as portas para as vagas de programação.
Conheça cada um dos cursos nos links oficiais abaixo. 🙂

API RESTful com Spring Boot e Java 8
Estágio em programação
Curso AngularJS e Spring RESTful
Curso de JSF e PrimeFaces + JPA e Hibernate
AWS para DevOPS

 


Acesse
Cursos e Projetos
Java
Acesse
Outros Cursos
PHP MySQL Android
Acesse
Encomende um Projeto
Feito pra Você
Acesse
Tire as Dúvidas On-line
Consultor
Acesse
Aulas de Java só suas
Encomende Agora
Acesse
Dividindo Conhecimento
Posts e Tutoriais
Acesse
Sites e Parceiros
Associados
Acesse
Menu Inicial
Home Page

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Instrutor Java Quer se tornar aluno VIP? CLIQUE AQUI!
Instrutor Java

Alex Fernando Egidio
Autor, criador e fundador do Java Avançado Cursos TI. Atua no mercado como desenvolvedor e engenheiro de sistemas em Java é apaixonado por desenvolvimento web em Java e pela “mágica” que seus frameworks trazem para o dia a dia de nós desenvolvedores.
Com mais de 10 anos de experiência ajuda programadores do Brasil todo a se tornarem profissionais.