Como implantar um web service?

Este artigo discutirá webservices, suas vantagens, opções de implantação de web services e como eles se comparam a APIs.

Além disso, você aprenderá como implantar um web service de comércio eletrônico na nuvem sem escrever nenhum código personalizado!

Principais Pontos

  • Compreendendo o Papel dos Web Services: Web services são um componente chave da infraestrutura digital moderna, oferecendo vantagens significativas como interoperabilidade, independência de plataforma, escalabilidade e segurança.
  • Explorando Opções de Implantação: Implantar web services pode ser abordado de várias maneiras, incluindo Hospedagem Convencional, Plataforma como Serviço (PaaS), Containers como Serviço (CaaS) e Backend como Serviço (BaaS).
  • Orientação sobre a Implantação de um Web Service na Nuvem: O artigo fornece um guia abrangente sobre como implantar um web service de comércio eletrônico usando uma plataforma BaaS sem código.

O que é um Web Service?

Um web service é um software disponível na internet, tipicamente sobre o Protocolo de Transferência de Hipertexto (HTTP). Os dados fornecidos por um web service estão em um formato padronizado como XML, JSON, SOAP ou YAML.

Web services são usados para comunicação máquina a máquina, em vez de serem consumidos diretamente pelo cliente final.

Por exemplo, seu dispositivo móvel usa um web service de clima para buscar informações meteorológicas e depois as exibe em um formato agradável.

Existem múltiplos tipos de web services, como Representational State Transfer (REST), GraphQL e gRPC.

Um ciclo de vida típico de um web service se parece com isto:

  1. Um web service escuta em algum servidor em uma porta específica.
  2. Um cliente envia uma requisição para o web service nessa porta.
  3. O web service executa a requisição e retorna uma resposta. Antes de processar a resposta, o servidor também pode autenticar e autorizar a requisição.
  4. O cliente processa a resposta.

Web services são conhecidos por sua independência de plataforma e linguagem, reutilização, escalabilidade, flexibilidade e por serem fracamente acoplados. Hoje em dia, são usados por quase todas as empresas de TI.

Web Service vs. API

Web service e API são termos similares, mas não devem ser usados de forma intercambiável.

Em termos simples, um web service é uma API que está disponível estritamente na internet. Isso significa que todos os web services são APIs, enquanto nem todas as APIs são web services.

Web Service versus Application Programming Interface (API)

APIs, além de serem web services, também podem realizar outras funções. Por exemplo, interações com sistemas operacionais, comunicação de aplicações locais e integrações de aplicações.

Dois exemplos de APIs que não são web services são a API do sistema de arquivos Python e a API DOM do JavaScript.

Vantagens dos Web Services

Web services são um aspecto fundamental da infraestrutura digital moderna, oferecendo inúmeras vantagens. Vamos falar sobre elas!

Interoperabilidade

Uma das principais vantagens dos web services é sua capacidade de facilitar a interoperabilidade entre diferentes sistemas e aplicações.

Ao aderir a protocolos padronizados como HTTP e XML, web services permitem uma comunicação perfeita entre diferentes componentes de software, independentemente da pilha tecnológica subjacente.

Independência de Plataforma

Outra grande vantagem dos web services é que eles são totalmente independentes de plataforma. Podem ser implementados em qualquer linguagem de programação e executados em qualquer sistema operacional, incluindo Windows, Linux e MacOS.

Como mencionado na seção anterior, eles também podem ser consumidos em qualquer plataforma.

Simples & Eficiente

Web services são fáceis de entender e implementar. Na maioria das vezes, eles nem mesmo têm seu próprio estado. Em vez disso, usam um banco de dados ou utilizam outro componente de software.

Eles oferecem uma abordagem direta para acessar funcionalidades através de uma rede. Essa simplicidade ajuda na consistência das interações, facilitando a compreensão e o uso dos serviços em diferentes plataformas e tecnologias.

Escalabilidade

Web services são altamente escaláveis. Eles podem acomodar qualquer tráfego por meio de escalonamento vertical, ou seja, adicionando recursos adicionais a um nó de servidor, ou escalonamento horizontal, ou seja, criando nós de servidor adicionais.

Isso pode ajudar a reduzir consideravelmente os custos, garantindo que nenhum recurso de computação seja desperdiçado.

Reutilização

A melhor coisa sobre web services é que eles são altamente reutilizáveis. Em vez de integrar o mesmo código em múltiplas aplicações, todas podem utilizar uma única instância de um web service.

Reutilização resulta em uma base de código menor e mais fácil de manter, melhor centralização e permite economizar recursos.

Segurança

Web services podem aproveitar autenticação, autorização, criptografia e outras medidas de segurança. A maioria dos web services é protegida usando criptografia SSL/TSL.

Tudo isso garante confidencialidade (assegurando que apenas o remetente e o destinatário possam ler a mensagem) e integridade (a mensagem não é modificada durante o trânsito).

Opções de Implantação de Web Services

Web services podem ser auto-hospedados ou implantados na nuvem. As opções de nuvem mais populares para implantar web services são:

  • Plataforma como Serviço (PaaS)
  • Containers como Serviço (CaaS)
  • Backend como Serviço (BaaS)

Cada modelo de nuvem tem prós e contras que devem ser considerados ao implantar seu projeto. Os fatores mais importantes a serem considerados são facilidade de uso, orçamento, desempenho e funcionalidades.

Piramide de Hospedagem de Web Service

Hospedagem Convencional

Hospedagem convencional é uma abordagem tradicional para hospedar sites e aplicações. Os servidores podem ser auto-hospedados ou fornecidos por empresas de hospedagem.

Com a hospedagem tradicional, você normalmente aluga espaço em servidor mensal ou anualmente.

Características principais da hospedagem convencional incluem:

  • Espaço em Servidor — vários planos de espaço em servidor baseados nas necessidades da sua aplicação
  • Ferramentas de Gerenciamento de Sites — ferramentas amigáveis para gerenciamento de sites, por exemplo, cPanel
  • Hospedagem de E-mail — serviços de hospedagem de e-mail que permitem associar um domínio a eles
  • Acesso FTP — arquivos do servidor podem ser acessados via FTP ou FTP seguro (SFTP)

Uma das principais vantagens da hospedagem convencional é sua acessibilidade, especialmente para sites e negócios pequenos.

No entanto, ela carece de escalabilidade e flexibilidade em comparação com soluções baseadas em nuvem. Hospedagem convencional também é mais desafiadora de configurar.

Plataforma como Serviço (PaaS)

Plataforma como Serviço (PaaS) permite que os clientes criem, administrem e distribuam aplicações em um ambiente de nuvem.

Além disso, empresas de PaaS fornecem uma variedade de ferramentas pré-construídas para criação, customização e teste de aplicações.

Comparado ao IaaS, PaaS é mais simples de usar e requer menos experiência em administração de sistemas.

Além disso, você pode se beneficiar de balanceadores de carga, bancos de dados gerenciados e backups automáticos. Em comparação ao IaaS, PaaS tem menos liberdade e controle e apresenta um risco maior de lock-in com o fornecedor.

Containers como Serviço (CaaS)

Containers como Serviço (CaaS) é outro modelo popular de computação em nuvem. CaaS facilita o desenvolvimento, execução, implantação e manutenção de software containerizado. É frequentemente combinado com Docker e Docker Compose.

A maioria das plataformas CaaS fornece:

  • Docker Engine
  • Registro de containers
  • Capacidades de escalonamento

A principal vantagem do software containerizado é que ele pode ser implantado em qualquer lugar. Não há lock-in com fornecedores, o que significa que você pode mudar livremente de um provedor de nuvem para outro. Isso é especialmente útil para web services.

Backend como Serviço (BaaS)

Backend como Serviço (BaaS) é um modelo de computação em nuvem que cuida da sua infraestrutura e automatiza a parte backend do desenvolvimento.

Além disso, oferece capacidades como banco de dados em tempo real, armazenamento de arquivos, integrações com redes sociais, notificações por e-mail e push, e muito mais.

Como resultado, desenvolvedores podem se concentrar na criação do frontend sem se preocupar com a infraestrutura e o backend.

O frontend é frequentemente construído usando as APIs e SDKs proprietárias do fornecedor de BaaS. Utilizando BaaS, você pode simplificar a base de código e torná-la mais fácil de manter.

BaaS fornece todas as vantagens do IaaS e PaaS enquanto oferece uma camada de abstração de backend. Usando BaaS, as equipes reduzem o tempo de lançamento no mercado e economizam dinheiro em engenharia e força de trabalho.

Como Implantar um Web Service?

Esta seção do artigo fornecerá um guia passo a passo sobre como implantar um web service na plataforma Back4app. Usaremos a solução BaaS sem código da Back4app.

Se você está interessado em soluções com código personalizado, confira os seguintes artigos:

  1. Implantar um Web Service Flask nos Containers da Back4app
  2. Implantar um Web Service Node.js nos Containers da Back4app
  3. Implantar um Web Service PHP nos Containers da Back4app
  4. Implantar um Web Service FastAPI nos Containers da Back4app

O que é Back4app?

Back4app é uma das soluções Backend como Serviço (BaaS) mais populares.

Ao usá-la, você poderá acelerar significativamente seu processo de desenvolvimento e se concentrar nos aspectos fundamentais do seu aplicativo — como a lógica de negócios e o frontend, enquanto a Back4app cuida do resto.

A Back4app oferece implantação sem código e com código personalizado. É fácil de usar e praticamente não possui curva de aprendizado. É adequada tanto para iniciantes quanto para desenvolvedores mais experientes.

A grande vantagem da Back4app é que ela gera automaticamente APIs RESTful e GraphQL com base nas classes do seu banco de dados.

Além disso, fornece SDKs para quase todas as linguagens de programação ou frameworks populares, como React, Android, iOS e muito mais!

Principais Funcionalidades da Back4app

  • Bancos de dados semelhantes a planilhas
  • Gerenciamento de usuários & autenticação
  • Geração automática de APIs
  • Funções de Cloud Code & agendamento
  • Dados em tempo real

Para seguir o artigo, você precisará de uma conta gratuita na Back4app. Se você ainda não possui, pode criar uma.

Introdução ao Projeto

Ao longo do artigo, construiremos uma API web de comércio eletrônico simples.

A API fornecerá funcionalidades de gerenciamento de produtos, categorias de produtos e compras. Permitirá realizar operações de criação, leitura, atualização e exclusão (CRUD) em cada classe de banco de dados.

Além disso, usaremos Cloud Code para implementar funções personalizadas para calcular estatísticas de comércio eletrônico, como vendas totais e produtos mais populares.

Por fim, testaremos a API usando o Console REST e GraphQL integrado da Back4app.

Criar Aplicativo

Para trabalhar com a Back4app, você primeiro precisa criar um aplicativo. Para isso, autentique-se usando sua conta da Back4app e clique em “Build new app” no painel de controle do aplicativo.

Back4app Criar Aplicativo

A plataforma Back4app permite que você implante dois tipos de aplicativos:

  1. Backend como Serviço (BaaS)
  2. Containers como Serviço (CaaS)

Ambos os modelos de computação em nuvem permitem que você implante web services.

A principal diferença é que BaaS é um backend completo, enquanto CaaS permite implantar web services containerizados.

Em outras palavras, BaaS é uma solução principalmente sem código, enquanto CaaS é uma solução com código personalizado.

Optaremos por Backend como Serviço (BaaS).

Back4app Backend como Serviço (BaaS)

Ao criar um aplicativo na Back4app, você pode escolher entre um banco de dados NoSQL ou SQL. Para o nosso caso de uso, isso não importa, então permaneceremos com NoSQL.

Dê um bom nome ao seu aplicativo e clique em “Create”.

Configuração do Aplicativo Back4app

Aguarde enquanto a Back4app cuida de tudo, incluindo o banco de dados, camada de aplicação, escalonamento, configuração de gerenciamento de usuários, etc. Isso levará aproximadamente 2 minutos.

Uma vez concluído, você será redirecionado para a visualização do seu banco de dados.

Visualização do Banco de Dados Back4app

Desenhar o Banco de Dados

Continuando, vamos cuidar do banco de dados.

Por padrão, um aplicativo Back4app vem com uma classe de banco de dados _Role e _User. Essas duas classes são usadas para gerenciamento de usuários e autenticação.

Esses tópicos estão fora do escopo deste tutorial, mas você pode conferir nossos outros artigos para aprender sobre eles.

Para criar nossa API web de comércio eletrônico, criaremos a seguinte estrutura de banco de dados:

Diagrama ER do Banco de Dados de Comércio Eletrônico

Vamos começar criando a classe ProductCategory.

Clique em “Add Class” na barra lateral para criar uma nova classe de banco de dados. Nomeie-a como “ProductCategory”, habilite “Public Read and Write” e clique em “Create class & add columns”.

Back4app Criar Classe

Adicione as seguintes colunas:

+-----------------------------+-------------+---------------+----------+
| Tipo                        | Nome        | Valor Padrão  | Obrigatório |
+-----------------------------+-------------+---------------+----------+
| String                      | name        | <deixe em branco> | sim      |
+-----------------------------+-------------+---------------+----------+
| String                      | description | <deixe em branco> | não       |
+-----------------------------+-------------+---------------+----------+

Em seguida, repita os mesmos passos para criar a classe Product:

+-----------------------------+-------------+---------------+----------+
| Tipo                        | Nome        | Valor Padrão  | Obrigatório |
+-----------------------------+-------------+---------------+----------+
| String                      | name        | <deixe em branco> | sim      |
+-----------------------------+-------------+---------------+----------+
| String                      | description | <deixe em branco> | não       |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories  | verdadeiro    | sim      |
+-----------------------------+-------------+---------------+----------+
| Number                      | price       | 0.0           | sim      |
+-----------------------------+-------------+---------------+----------+
| Boolean                     | inStock     | verdadeiro    | sim      |
+-----------------------------+-------------+---------------+----------+

Por fim, cuide da classe Purchase:

+-----------------------------+-------------+---------------+----------+
| Tipo                        | Nome        | Valor Padrão  | Obrigatório |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product          | product     | <deixe em branco> | sim      |
+-----------------------------+-------------+---------------+----------+
| Number                      | quantity    | 1             | sim      |
+-----------------------------+-------------+---------------+----------+

Excelente, você criou com sucesso a estrutura do banco de dados.

Como você pode ver, o tipo de dado Pointer lida com relacionamentos 1:n (um para muitos), e o tipo de dado Relation lida com relacionamentos n:m (muitos para muitos).

A última coisa que você deve fazer é popular o banco de dados com algumas categorias de produtos, produtos e compras. Isso nos permitirá testar o web service mais tarde para garantir que tudo funcione conforme o esperado.

Para popular o banco de dados, você pode:

  1. Criar algumas categorias de produtos, produtos e compras manualmente
  2. Importar estes exportações de banco de dados do GitHub (“More > Import > Class Data”)

Uso do Web Service

Para se conectar ao web service, a Back4app permite várias abordagens:

  1. API RESTful auto-gerada
  2. API GraphQL auto-gerada
  3. Parse SDK

Vamos ver cada uma delas!

API REST

Representational state transfer (REST) é um protocolo baseado em HTTP que utiliza métodos HTTP, como OPTIONS, GET, POST, DELETE, entre outros.

A maioria das APIs com as quais você interage hoje em dia são baseadas em REST. Suporta múltiplos formatos de dados, mas JSON é o mais comumente usado.

REST é um protocolo eficaz, altamente escalável e independente de plataforma. Pode ser usado com qualquer linguagem de programação ou framework.

Seus principais contras são o excesso ou a falta de dados, ausência de assinaturas em tempo real e a falta de um sistema de versionamento de APIs.

Para testar a API REST, selecione “API > Console > REST” e execute a seguinte consulta:

Console REST da Back4app

Essa consulta deve retornar a seguinte resposta:

Para saber mais, confira Como Construir uma API REST?

API GraphQL

GraphQL é um runtime de servidor e uma linguagem de consulta usada para criar interfaces de programação de aplicações (APIs).

GraphQL permite que os clientes solicitem dados específicos da API, em vez de depender do backend para fornecer um conjunto de dados predeterminado.

Suas vantagens incluem flexibilidade, manutenção e extensões GraphQL. Por outro lado, as desvantagens são complexidade, uma curva de aprendizado mais íngreme e falta de padronização.

Para testar a API GraphQL, selecione “API > Console > GraphQL” e execute a seguinte consulta:

Console GraphQL da Back4app

Para saber mais, confira Como Construir uma API GraphQL?

Parse SDK

Parse SDK é a abordagem recomendada se seu frontend é construído em uma linguagem de programação ou framework que o Parse SDK suporta nativamente.

Isso inclui React Native, Flutter, Android, iOS, JavaScript, IONIC e Xamarin.

Conectar API da Back4app

O kit de desenvolvimento de software (SDK) do Parse fornece classes e funções para recuperação de dados, manipulação, autenticação de usuários, dados em tempo real, funções de Cloud Code e muito mais.

Exemplo de código de recuperação de dados em JavaScript:

Documentação da API

Outra grande vantagem da Back4app é que ela gera automaticamente a documentação para todas as suas classes de banco de dados.

A documentação inclui descrições dos modelos, exemplos práticos, instruções sobre como lidar com erros e muito mais.

Selecione “API > API Reference” na barra lateral para visualizar a documentação.

Documentação Automática da Back4app

Cloud Code

As APIs auto-geradas são ótimas, mas você não pode fazer tudo com elas. Por exemplo, se você desejar realizar consultas complexas, agregar dados ou executar código personalizado, deve utilizar funções de Cloud Code.

Funções de Cloud Code são a oferta Functions as a Service (FaaS) da Back4app. Elas permitem que você defina funções JavaScript personalizadas, que podem ser acionadas via API ou agendadas em uma base de tempo fixa.

Criar Funções de Cloud Code

Vamos criar duas funções de Cloud Code para calcular estatísticas de comércio eletrônico:

  1. totalRevenue() calculará a receita total agregando as compras
  2. topTenPopularProducts() retornará os produtos mais populares com base nas compras

Primeiro, navegue até “Cloud Code > Functions & Web Hosting” na barra lateral.

Você notará que a tela está dividida em dois painéis. A estrutura de diretórios está à esquerda; você pode inserir seu código à direita.

Os diretórios padrão são:

  1. cloud usado para funções de Cloud Code e outros códigos
  2. public diretório servido automaticamente pela Back4app (ativos estáticos, CSS, HTML)

Navegue até main.js.

Back4app Cloud Code

Em seguida, insira o seguinte código:

Por fim, clique em “Deploy” para implantar as funções na nuvem.

O código acima foi gerado usando o Back4app Agent — um AutoGPT para desenvolvedores. O agente está intimamente integrado com Back4app e Back4app Containers. Ele permite que você crie aplicativos, modifique configurações de aplicativos, gere código personalizado e muito mais.

Testar Funções de Cloud Code

Nesta última seção, testaremos as funções de Cloud Code que acabamos de implementar.

Primeiro, selecione “API > Console > JavaScript” na barra lateral e depois cole o seguinte código:

Para executá-lo, clique em “Run” no canto superior direito da tela.

Você deve obter as seguintes respostas:

// Saída de `totalRevenue`

{
  "result": 9385.389999999994
}

Para executar a outra função, substitua totalRevenue por topTenPopularProducts.

// Saída de `topTenPopularProducts`

{
  "result": [
    {"objectId": "SA5mUfq9Ll", "name": "Science Fiction Novel", "count": 3},
    {"objectId": "fV0DFPFlnz", "name": "Yoga Mat", "count": 3},
    {"objectId": "gA4zn19Udo", "name": "Smartphone", "count": 2},
    {"objectId": "UKeOHJkJ7l", "name": "Winter Jacket", "count": 2},
    {"objectId": "8PodlEps2R", "name": "Espresso Machine", "count": 2},
    {"objectId": "S15WrDgrpk", "name": "Hair Dryer", "count": 2},
    {"objectId": "8O2D1egX51", "name": "4K Television", "count": 1},
    {"objectId": "RriSWMDg48", "name": "Face Cream", "count": 1},
    {"objectId": "Cq3Hqww69Q", "name": "Blender", "count": 1}
  ]
}

Conclusão

Em conclusão, você aprendeu sobre web services, suas vantagens, opções de implantação e como eles se comparam a APIs. Agora você também deve ser capaz de implantar seu próprio web service no BaaS da Back4app.

Para recursos adicionais do artigo, confira o repositório back4app-web-service.


Leave a reply

Your email address will not be published.