E ae pessoal tudo certo?
Passei um tempo parado devido alguns imprevistos mas acabei retomando o controle da vida e consegui um tempo para trazer novos posts.
Estou preparando alguns testes sobre a comparação de execução do Nodejs e Go no serviço AWS Lambda, então hoje vim com um post mais simples para iniciar esta ambientalização da galera com aplicações na AWS.
Este post traz um pouco sobre Serverless Framework, e como você pode utilizar para criar aplicações gigantes na Amazon Web Services ou outros provedores.
Introdução
Serverless Framework ou simplesmente Sls, é um framework que serve como um conjunto de ferramentas para ajudar o desenvolvedor a trabalhar dentro do conceito de arquitetura Serverless.
De modo geral, como a arquitetura Serverless hoje é demasiadamente grande, o console desenvolvido pelas provedoras não oferecem ao desenvolvedor um modo fácil e eficiente de ser operado.
Mesmo que você utilize de forma correta por exemplo o CloudFormation da Amazon, tenha certeza que para desenvolver uma aplicação, você vai acabar demorando o dobro ou mais do tempo gasto desenvolvendo com Serverless Framework.
O Serverless Framework acaba automatizando a tarefa de configuração do projeto junto ao provedor do serviço, deixando para o desenvolvedor somente a responsabilidade de desenvolver o aplicativo junto aos serviços que escolher.
O melhor de tudo na utilização deste framework é não só agilizar e organizar a aplicação desenvolvida, como permite também a criação de projetos em outros provedores como o Google, IBM, Microsoft em geral.
Lista de provedores aceitos pelo framework
É ai que surge a felicidade de gente como eu, poder sair testando, quebrando e estourando tudo para todo o lado :D
Sls extends Monalisa
Brincadeiras a parte, mas realmente se eu for definir o Serverless Framework no mundo de quem trabalha com arquitetura Serverless, seria como a Monalisa no mundo da arte.
Ao longo da minha jornada como desenvolvedor serverless, percebi que esse querido framework foi ficando indispensável, e hoje se tornou obrigatório já que minha visão engloba bastante a eficiência.
Padrão de configuração
O framework utiliza por padrão um arquivo de configuração em YAML, o que facilita bastante a vida do desenvolvedor na hora e gerenciar o projeto, pois a configuração pode ser facilmente modificada.
Documentação do arquivo de configuração.
Leia a documentação, ame a documentação, coma a documentação e durma com a documentação.
Temos logo abaixo um exemplo de configuração básica gerada pelo framework.
service: aws-nodejs
provider:
name: aws
runtime: nodejs6.10
region: sa-east-1
functions:
hello:
handler: handler.hello
O arquivo de configuração final é quase que auto-explicativo, onde na parte do código abaixo temos o nome do serviço que estamos criando.
service: aws-nodejs
...
Em seguida temos a configuração do provedor, onde estamos passando qual o provedor utilizado e a linguagem utilizada, seguindo do nome da região que estamos querendo instalar o serviço. Como estamos instalando o serviço na Amazon Web Services, precisamos informar a região de instalação já que o provedor trabalha com várias regiões.
...
provider:
name: aws
runtime: nodejs6.10
region: sa-east-1
...
Por final, nosso arquivo possui as funções que nossa aplicação será capaz de executar.
Dentro da etapa functions definimos o nome da função, e internamente em handler definimos o path do arquivo do nodejs junto do nome da função que o arquivo exporta.
No exemplo abaixo, temos um arquivo na pasta raiz chamado handler.js que exporta uma função chamada hello.
...
functions:
hello:
handler: handler.hello
...
Abaixo vou deixar um demonstrativo do arquivo handler.js exportando a função hello dentro dos padrões do AWS Lambda.
'use strict';
module.exports.hello = (event, context, callback) => {
let body = {
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
}
callback(null, {
statusCode: 200,
body: JSON.stringify(body)
});
};
Calma que não vou deixar vocês na mão… Criei um repositório no Github para ajudar a entender melhor :*
Quem quiser dar uma olhada em um projeto criado com o Serverless Framework pode dar uma olhada neste meu repositório do Github Aqui.
O repositório possui um projeto de exemplo para AWS com Nodejs.
Eficiência
“Kelvin… li tudo mas onde está a eficiência???”
Bom, entendendo como é o formato de configuração, podemos partir para a brincadeira… UHUUUL!
Com as devidas crendenciais da Amazon AWS configuradas no framework, simplesmente com o comando sls deploy, o framework começa a fazer a instalação completa do nosso projeto dentro da AWS.
Pronto, nossa função está na AWS! Vamos conferir se realmente o Serverless Framework criou uma função Lambda na conta?
“Kelvin… só isso? Eu poderia acessar o console e fazer isso na mão!”
Deu para perceber que foi bem rápido criar algo e ter isto funcionando na AWS, mas de que adianta ter uma função Lambda escrita em nodejs que nem pode ser chamada por um navegador? Isso não é muito divertido :(
Brincando com chamadas HTTPS.
Agora que temos uma função criada, podemos entender a eficiência deste framework!
“Que tipo de bizarrice preciso fazer para que minha função possa ser chamada por um navegador?”
Basta dizer para o Serverless Framework que você precisa que ela possa ser chamada pelo navegador, passando isto na sua configuração!
Abaixo estamos adicionando um evento para nossa configuração da função hello, este evento é do tipo http que deve ser chamado pelo path / como um get, e esta rota deve estar com o cors ativado.
...
functions:
hello:
handler: handler.hello
events:
- http:
path: /
method: get
cors: true
...
“Aff… agora vem a hora que eu vou ter que passar 2h mudando toda a instalação do projeto!”
Nops!! basta dar um sls deploy, que o Serverless Framework se vira para fazer toda esta modificação.
Opaaa, agora temos uma saída de endpoint, e temos a rota https://mr0qil9u2g.execute-api.us-east-1.amazonaws.com/dev/ aberta para executar nossa função.
Vamos testar?? :D
Chique, foi gerada até com https…
Conclusão
Para os meus projetos com a AWS, posso dizer que realmente este framework se mostrou indispensável, não só pela praticidade como também pelo fato de deixar os projetos mais organizados.
Não fiz tópicos como Instalação ou Configuração, pois acredito que os leitores interessados terão muito mais quantidade de informação e ajuda acessando a documentação original do projeto Serverless Framework.
Espero que meu post sirva de ajuda ou inspiração para quem está querendo se aventurar, e deixo aqui meus agradecimentos para você que leu até o final.
No post passado soltei um spoiler sobre um futuro post sobre o Alexa que com um pouco de ajuda, consegui comprar para o blog :D
Fiquem ligados que vai ter vários posts divertidos aqui!
Obrigado e se curtiu compartilhe com seus amigos!