MINHA VIDA TECH

Desenvolvendo uma API REST Serverless na AWS com Python + Chalice

Nesse artigo você vai entender os conceitos necessários para criar uma API REST na AWS com Python + Chalice em Serverless utilizando funções Lambdas.

Pegue seu café ☕️ e vamos nessa!

Tópicos:


1. O que é uma API REST?

Uma API REST é uma maneira de acessar dados de um servidor web usando o protocolo HTTP. REST significa Representational State Transfer e é um estilo de arquitetura de software que define como os componentes de um sistema distribuído se comunicam entre si. Em outras palavras, é um conjunto de diretrizes que permite criar serviços web para comunicação.

API’s REST são usadas por uma variedade de aplicações, incluindo sites da web, aplicativos móveis e serviços de back-end. Elas fornecem uma maneira padronizada de acessar dados, o que facilita o desenvolvimento de aplicações que podem se comunicar com uma variedade de servidores web.

2. O que é o Chalice?

É um micro framework para aplicações sem servidor que são escritos em Python e executadas na Amazon Web Services (AWS). Ele é projetado para ser simples de usar e de desenvolver, tornando-o uma boa escolha para aplicações de pequeno e médio porte.

O Chalice fornece uma série de recursos que facilitam o desenvolvimento de aplicações sem servidor. Por exemplo, ele fornece abstrações para lidar com solicitações HTTP, armazenamento de dados e autenticação. Ele também fornece uma interface com o AWS Lambda, que é um serviço que permite executar código sem servidor.


3. O que é Serverless?

O conceito serverless é uma arquitetura de computação em nuvem na qual os desenvolvedores não precisam provisionar ou gerenciar servidores e infraestrutura. Em vez disso, eles podem se concentrar em escrever código e implantar aplicativos, sem se preocupar com a infraestrutura subjacente.

É escalável e eficiente, pois só cobra pelos recursos que são realmente usados. Isso pode economizar muito dinheiro para as empresas, especialmente aquelas com aplicativos de alto tráfego. Um bom resumo: é uma forma de criar serviços sem precisar subir um servidor, neste exemplo, vamos criar uma API e ela ficará disponível a qualquer momento, mas só é “ativada” quando realizamos um request, logo em seguida ela volta para “stand-by”. Sendo assim, a cobrança é gerada apenas sobre o request realizado. Para isso, vamos usar um recurso da AWS chamado Lambda que permite usarmos de forma gratuita até 1 milhão de requests mês.

4. O que você precisa pra começar

1. Conta na AWS

2. Python instalado

3. Chalice instalado, para isso:

$ pip install chalice

4. Configurar suas credenciais na AWS para fazer o deploy, você vai precisar:
criar um aquivo credentials, com suas keys da AWS, seguindo os diretórios abaixo:
4.1. Windows:

C:\Users\seu-user\.aws\credentials

4.2. Linux/Mac:

~/.aws/credentials

O arquivo ficará neste formato:

[default] 
aws_access_key_id=SUA_ACCESS_KEY
aws_secret_access_key=SEU_SECRET_ACCESS_KEY
region=SUA_REGIAO

5. Criando sua API

Após configuração finalizada, vamos rodar o comando abaixo para iniciar nosso projeto:

$ chalice new-project new-api-minhavagatech

O framework vai gerar o diretório e os arquivos necessários para começarmos o desenvolvimento da API. A saída deverá ser:


Por padrão o Chalice já nos deixa um exemplo, aqui em app.py é onde vamos desenvolver nossos endpoints.


Vamos colocar isso pra funcionar em ambiente local para testarmos? Pegue mais um café ☕️ e vamos nessa!

Para isso, basta rodar o comando:

$ chalice local 

A saída no terminal será:

Serving on http://127.0.0.1:8000

Vamos realizar um request nesse endpoint para testarmos:

Conforme imagem acima, verificamos que está tudo certo. Nosso único endpoint no momento é o “/” que é o nosso index retornando um clássico “Hello World”.

6. Criando métodos

Agora que nossa API está rodando em ambiente local, vamos aprender a criar um novo endpoint e posteriormente vamos fazer o deploy na AWS e deixar nossa API online.

Vamos lá!

1. vamos criar um método que nos retorna a data e o horário atual, veja:


Realizando um request nesse novo endpoint /time, a saída será:

2. Agora, vamos criar um endpoint que realiza cálculos, usando as 4 operações básicas:

Pronto, agora podemos realizar um request passando os 2 números e a operação desejada no body do request que a API vai receber as informações, fazer algumas validações, realizar o cálculo e nos retornar o resultado:

Por ora, estamos realizando tudo em ambiente local para desenvolvimento e testes. Acho que chegou a hora de subirmos nossa API e deixarmos ela online. Bora?

Antes de seguirmos, vou apenas lembrar você de me seguir lá no instagram:

@minhavagatech para ficar por dentro de mais conteúdos.


7. Deploy na AWS

Para realizar o deploy da sua API, simplesmente execute o comando:

chalice deploy

Você deverá ver algo semelhante no terminal como saída após executar:

Ao acessar seu painel da AWS:


Pronto, a API já está publicada e pronta para ser consumida por qualquer pessoa ou serviço.


8. Utilizando em produção

Agora que a API está online, vamos realizar um request para a URL informada na imagem do deploy no item 7 – REST API URL: https://rkwh3xxhdd.execute-api.us-east-1.amazonaws.com/api passando o endpoint que criamos, o /calculate. Veja:

Request / Response Body:


Response Headers:

Tudo funcionando, a API está pronta para ser utilizada 😉

Lembrando que: as funções Lambdas são cobradas por execução. O nível gratuito do AWS Lambda inclui um milhão de solicitações gratuitas por mês e 400.000 GB-segundos de tempo de computação por mês. A cada request que realizamos consumimos 1 execução e/ou vai computando até fechar os 400.00 GB mensais. Bastante coisa hein? Além disso, caso ultrapasse o primeiro 1 milhão de requests você passa a ser cobrado, mas também por um custo muito baixo, dificilmente vai passar de 1 Dólar por mais 1 milhão de execuções. Para facilitar, existe uma calculadora da própria AWS que ajuda a realizar os cálculos de transações para termos ideia dos valores.


9. Deletando a aplicação

E agora? Preciso remover minha API do ar mas não faço ideia de como fazer.

Simples. Execute o comando:

$ chalice delete

Você deverá ver algo semelhante no terminal como saída após executar:

Ou ainda, você pode apagar via painel da AWS:


10. Conclusão

Neste artigo, exploramos o desenvolvimento de uma API REST Serverless na AWS utilizando Python e o framework Chalice. Ao longo do processo, entendemos os principais conceitos que fundamentam essa abordagem moderna de desenvolvimento de aplicações.

Iniciamos compreendendo o que é uma API REST e como ela nos permite criar serviços web padronizados, permitindo a comunicação entre diferentes sistemas de forma eficiente e escalável.

Em seguida, conhecemos o Chalice, um poderoso framework fornecido pela AWS, que simplifica a criação e a implantação de aplicações serverless baseadas em Python. O Chalice nos permitiu abstrair grande parte da complexidade da infraestrutura, permitindo que nos concentremos no desenvolvimento da lógica da aplicação.

Aprofundamos o conceito de Serverless, um modelo de computação que nos permite criar e executar aplicações sem a necessidade de gerenciar explicitamente servidores. Com o Serverless, as aplicações são executadas em ambientes gerenciados pela plataforma de nuvem, como AWS Lambda, escalando automaticamente com base na demanda e proporcionando um modelo de pagamento baseado no consumo de recursos.

Para começar a desenvolver nossa API Serverless, listamos os requisitos básicos, como possuir uma conta na AWS, configurar as credenciais de acesso e instalar o Python e o Chalice em nosso ambiente de desenvolvimento.

A seguir, passamos pelo processo de criação da API, definindo rotas e associando-as a funções Lambda, permitindo-nos implementar a lógica de negócios de nossa aplicação de acordo com os métodos HTTP específicos (GET, POST, PUT, DELETE) desejados.

Com a API desenvolvida, aprendemos a realizar o deploy na AWS, permitindo que nossa aplicação seja executada na nuvem e fique disponível para uso. Esse processo envolveu a criação automática de recursos necessários, como a função Lambda e a API Gateway.

Ao utilizar a API em produção, percebemos os benefícios da abordagem Serverless, como escalabilidade automática e o pagamento apenas pelo uso efetivo dos recursos. Isso proporciona uma experiência mais eficiente e econômica ao hospedar nossas aplicações na nuvem da AWS.

Por fim, discutimos como podemos deletar a aplicação, caso ela não seja mais necessária. O Chalice nos forneceu uma maneira simples de remover todos os recursos criados na AWS, evitando custos desnecessários e mantendo nossa infraestrutura limpa.

Concluindo, o desenvolvimento de uma API REST Serverless na AWS utilizando Python e Chalice oferece uma solução ágil e escalável para a criação de aplicações modernas na nuvem. Com essa abordagem, podemos focar na lógica de negócios e na entrega de valor ao cliente, enquanto a AWS cuida da infraestrutura e escalabilidade automática. Portanto, esse modelo de desenvolvimento se mostra cada vez mais relevante para projetos de todos os tamanhos, permitindo que as equipes de desenvolvimento alcancem melhores resultados em termos de agilidade, eficiência e custo.

Deixando claro que: não tenho nenhum tipo de ligação ou vínculo com a AWS. Da mesma forma, existem outros serviços semelhantes em outros provedores cloud. Este é um exemplo didático para que você possa entender e encaixar onde for possível na aplicação para resolver algum problema ou para fins de estudos.

Gostaria de agradecer por ter lido até aqui e dizer que estou disponível para tirar dúvidas.



Quer aprender mais?

Estou preparando um E-book para ajudar você a entrar no mercado de tecnologia.

Desvende as áreas de atuação, aprenda técnicas e comportamentos para se destacar em entrevistas e processos seletivos. Descubra hábitos e rotinas que aceleram sua aprendizagem.

Prepare-se para o sucesso no universo da tecnologia. Clique no link abaixo e entre para a lista de espera, pois será limitado!

Quero minha primeira oportunidade

Deixe um comentário

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