﻿ Implantando Marketing | Implantando Marketing é um espaço para compartilharmos experiências e informações sobre marketing. – Cerveja
Cerveja e Futebol – Uma combinação perfeita para os torcedores apaixonados pelo esporte e pela bebida. Pelo lado mercadológico, o segmento cervejeiro é uns dos mais envolvidos em marketing esportivo em todo o mundo. (mais…)

Serverless (Sem-Servidor) ou Functions-as-a-Service (FaaS) será transformadora na indústria de TI. As organizações que a adotarem terão uma vantagem competitiva devido a otimização de custos, trabalho e tempo.
Várias aplicações Serverless vão combinar funcionalidades FaaS com uso significativo de outros serviços gerenciados que envolvem provisionamento e gerenciamento de estado.
Padrões de arquitetura Serverless vão emergir, mas ainda é cedo para saber quais serão esses padrões.
Organizações deverão adotar as ideias de um 'DevOps' real e de equipes de produto autônomas e auto-suficientes para aproveitar totalmente a agilidade que o paradigma Serverless pode oferecer.
É 2017 e a revolução Serverless já tem um pouco mais de dois anos. Essa revolução não está causando um impacto tão grande como o Docker causou, mas está crescendo de forma sólida. A Amazon Web Services lança novas funcionalidades em seu produto Lambda com regularidade, outros grandes vendors estão lançando versões prontas para produção dos seus produtos e novos projetos open-source estão frequentemente se juntando a essa iniciativa.
Enquanto chegamos ao fim da fase de adoção inicial, é um exercício interessante tentar prever para onde o movimento da computação Serverless está se direcionando, como está evoluindo e, o mais importante, quais mudanças precisamos que nossas organizações façam para suportá-lo.
A última década presenciou o surgimento e, em seguida, o crescimento meteórico da computação em nuvem. Há nove anos atrás, servidores virtuais na nuvem eram 'brinquedos' para startups, mas em um tempo relativamente curto, a computação em nuvem se tornou a principal plataforma para grande parte da indústria de software, ao planejar arquiteturas de implantação.
A Computação Serverless ou a Funções-como-um-serviço (Faas), faz parte de uma fase mais recente da massiva mudança sobre como qualificamos Tecnologia da Informação (TI). É a evolução natural do desejo incessante de remover toda bagagem é inventário de infraestrutura da entrega de aplicações para clientes.
Um grande número de aplicações que desenvolvemos consiste de vários pequenos comportamentos. Cada um destes comportamentos recebe um conjunto de entradas e um contexto informacional, realiza um trabalho por alguns décimos ou centésimos de segundo e finalmente pode responder com um resultado e/ou atualizar o 'mundo' em torno deles. A computação serverless se baseia nestes comportamentos.
Previmos que muitas equipes irão adotar FaaS devido a facilidade, agilidade e baixo custo que ela proporciona para a implantação, gerenciamento e escalabilidade da infraestrutura necessária para este tipo de lógica. É possível estruturar o uso de FaaS de várias formas, incluindo:
Partes independentes de código de integração para realizar operações lógicas customizadas para a implantação, monitoramento, etc;
Sistemas híbridos formados por servidores tradicionais de alta disponibilidade que invocam diretamente funções de plataformas escaláveis para tarefas mais computacionalmente mais intensas.
As organizações que adotarem a FaaS terão uma vantagem competitiva sobre aquelas que não o fizerem devido à redução de custo e a agilidade que o FaaS proporciona.
Um dos pré-requisitos da adoção em larga-escala da FaaS é prover uma solução, ou conjunto de soluções, para gerenciamento de estado ágil e simples. Computação serverless é um paradigma stateless. Não podemos assumir que qualquer manutenção de estado exista no ambiente de execução que esteja disponível entre a invocação de duas funções. Algumas aplicações estão preparadas para esta restrição. Por exemplo, componentes orientados a mensagens que são puramente transformacionais, não necessitam de acesso a um estado externo, ou web services sem grandes restrições de performance que podem se conectar a um banco de dados remoto em cada vez que são invocados. Mas, para outras aplicações, isso é insuficiente.
Uma possibilidade para resolver isso é uma arquitetura híbrida que gerencia estado em componentes que não executam código FaaS. A abordagem híbrida mais popular é disponibilizar funções FaaS através outros serviços disponibilizados na nuvem. Isso já ocorre em componentes como o AWS API Gateway que disponibiliza um endpoint HTTP, com funcionalidades como caching, monitoramento, controle de acesso e performance. Essas funcionalidades que geralmente são codificadas em um web service típico são definidas através de configurações. A Amazon já demonstraram seu comprometimento com a computação Severless com uma abordagem mais genérica para o gerenciamento de estado disponibilizando o AWS Step Functions, que permite definir aplicações através da configuração de máquinas de estados. O Step Functions pode não ser largamente utilizado mas soluções como estas estão se tornando bastante populares.
Quando serviços disponibilizados por vendors são insuficientes, uma abordagem híbrida alternativa é continuar utilizando componentes que gerenciam estado que podem ser implantados em plataformas CaaS (Container-como-um-serviço) ou PaaS (Plataforma-como-um-serviço) e integrá-los com funcionalidades implantadas em FaaS.
Estes sistemas híbridos combinam lógica com manutenção de estado (stateful) e lógica FaaS sem manutenção de estado (stateless). Uma alternativa é focar toda lógica FaaS e disponibilizar mecanismos extremamente rápidos de obtenção e persistência de estado. Uma implementação possível seria garantir que uma certa função ou conjunto de funções FaaS tenham acesso a um cache externo de baixíssima latência, como por exemplo o Redis. Isso poderia ser viabilizado viabilizando uma funcionalidade similar aos placement groups da Amazon que conectam logicamente componentes através de infraestrutura de rede de baixa latẽncia e elevada largura de banda. Apesar desse tipo de solução depender mais da latência de rede do que memória (ou disco) para manutenção de estado e contexto, em várias situações essa solução pode ser aceitável.
Os benefícios de uma abordagem híbrida são que as informações de estado que são acessadas frequentemente podem permanecer no próprio ambiente que a lógica, e soluções complicadas e caras para conectar a lógica e os repositórios de dados contendo o estado seriam dispensáveis. Por outro lado, os benefícios de uma abordagem puramente FaaS seriam um modelo de programação mais consistente além de uma possibilidade maior de se utilizar benefícios operacionais e de escalabilidade que a computação Serverless proporciona. O momento atual sugere que abordagens híbridas devem prevalecer, mas devemos ficar atentos para soluções como Lambdas com Placement Groups agregados e outras similares.