Let’s talk about Serverless: Que tal na Azure?

Igor Franca
Horizon Four
Published in
5 min readApr 18, 2018

Azure Functions podem ser o que você precisa para continuar revolucionando em sua empresa e quem sabe, sem precisar propor mudanças no ambiente de nuvem atual!

Logo da Azure Functions! É animal!

Tenho diversos amigos que trabalham em Stack .NET e conheço diversos donos de empresa que, uma vez que migraram para a nuvem, confiam na Microsoft para hospedar suas aplicações.

A Amazon na questão de serverless vem com uma crescente popularidade, que talvez ofusquem os concorrentes por ter sido a primeira, e ter já apresentado a “qualidade” que parecia ser boa, mas como parametrizar isso sendo que até pouco tempo eles eram os unicos no mercado? Isso também pode ter sido ou ser um problema para você, que queria propor a arquitetura Serverless para aquele projeto, porém, enfrentou cenários como citei acima, e já ficou até acanhado depois do “Não” de cara para migrar ou contratar uma nuvem híbrida!

Outro ponto muito importante, depois de diversos projetos com Lambdas na Amazon, e como a maioria foram em startups o que agrava o quadro, constatei alguns fatores cruciais que podem levar ao atraso ou até mesmo a não entrega do projeto! Isso sem comentar problemas para mantenabilidade de código.

Os principais detalhes de projetos serverless de qualquer magnitude na Amazon são:

  • Facilidade de manuntenção individual via console AWS
  • Integração de outros recursos da Amazon com as Lambdas
  • Custos baixos de manuntenção e altissíma segurança quanto a escalabilidade

Porém, para nós desenvolvedores, os principais pontos que tinhamos que administrar são:

Ambiente de execução

Se você trabalha ou trabalhou em projetos com Node.js, sabe que isso é um pesadelo, pois na Amazon a versão padrão que eles disponibilizam é a 6.x, deixando você sem algumas funcionalidades animais da plataforma, como async/await mesmo sem transpilador, alguns métodos Object.* e varios problemas de performance e segurança que foram resolvidos já na versão 8.x e até mesmo agora na 9.x.

Workflow da equipe

Um dos principais problemas que enfrentei tentando coordenar junto com outros desenvolvedores projetos serverless sempre foi a criação de workflows efetivos para garantir tanto os testes quanto a própria funcionalidade das funções, pois sem a ajuda de um framework/CLI (Command Line Interface — As famosas interfaces de linhas de comando como o npm :D) você não consegue simular ou até mesmo mockar com segurança total qualquer evento ou dado que seja passado para sua função vindo da plataforma da AWS pois você não está testando lá! Hoje alguns frameworks como o Serverless ou o .architect (Meu preferido até agora) até conseguem facilitar parte desse processo, porém eles não são oficiais, podendo deixar você falsamente seguro, pois alguma mudança na plataforma pode quebrar como ele funciona, deixando você refém da comunidade, que sim é muito ativa, porém, não é ligada diretamente com a equipe de Lambdas da Amazon.

Deploys e organização

A Amazon sempre foi excepcional na organização e gestão de recursos, deixando você muito livre para criar mecanismos de proteção para seus serviços em produção. Não podemos negar também que existem diversos cursos na internet que podem te ajudar com isso, porém, não quero contar com algo que seja fora do oficial, pois se a Amazon muda isso, seu curso de quase R$ 400 na Udemy passa a valer nada! Fora que as ferramentas que acabei aprendendo a usar são na verdade funcionalidades escondidas da plataforma, tornando um inicio poderoso meio complicado para quem quer começar com a arquitetura serverless.

Mas e as vantagens?

Certa vez ouvi uma frase muito interessante sobre aplicações que estão na arquitetura serverless que era algo como:

“Se minha aplicação aparecer no Jornal Nacional, a unica coisa que vou sentir é a conta mais cara no final do mês”

É uma frase certamente interessante, porque poucas plataformas/arquiteturas te dão uma segurança tão grande que mesmo com um aumento incomum no número de usuário, ela continuará de pé! E realmente, algo muito louco sobre serverless é que você não precisa se preocupar em ser acordado as 3 da manhã em um sabádo, pois você precisa escalar o tamanho da máquina, ou pior, recolocar o serviço no ar pois ele foi sobrecarregado e “caiu”. E outra característica muito forte da arquitetura é que você realmente pode ficar tranquilo! Pode fazer deploy de uma nova Lambda para sua aplicação ao meio dia, que nada das outras funcionalidades vão sentir o impacto!

Deploy ao meio dia? Feeling Like a boss :D

Okay, me convenceu a ir para o serverless e agora AWS ou AZF?

Só um aviso! A Amazon ainda sim é uma ótima opção de infraestrutura, porém queria deixar claro para você quais são detalhes que você vai ter que enfrentar para poder levar seu projeto para além dos 6 primeiros meses hahahaha!

Como a Azure resolve esses problemas?

A Microsoft lançou essa funcionalidade em meados de 2016, em um blog post bem legal, segue link do artigo em inglês, para realmente deixar seus clientes muito livres para conectar aplicações de maneira muito inteligente, primeiramente através de eventos dentro da plataforma, depois permitindo o que hoje chamamos de Function Apps, que são um conjunto dessas funções que podemos ativar via HTTP, via upload de arquivos no Storage Accounts ( Serviço similar ao S3 da Amazon, um servidor “FTP” onde você pode salvar arquivos de texto, audio, video, e até mesmo dados tabulares, como um backup de um SQL, ou até mesmo queries. Vale a pena dar uma olhada! ) ou qualquer outro tipo de evento que queiramos configurar!

Porém essas funções hoje podem ser configuradas e desenvolvidas de uma maneira maravilhosa graças a uma unica ferramenta chamada Azure Functions Tools, que consegue além de gerar scaffolds de Function Apps e também de Functions separadas, ele também é a replica exata do Runtime da Azure para as funções, portanto, você quando usa ele para rodar suas funções no ambiente local, você não precisa simular, mockar, nem nada análogo, você só precisa se preocupar com o desenvolvimento e funcionalidade da sua função, trazendo todo o conforto e toda a facilidade de rodar um projeto monolitico ou que seja em arquitetura MVC, ou algo assim, para seu projeto serverless!

Além de pessoalmente eu achar ela linda! hahahaha

Maravilhosamente lindo esse simbolo no meu terminal

--

--

Igor Franca
Horizon Four

Node.js Witch Doctor and at the free time playing with security stuff :D