AnúncioApresentando MongoDB 8.0, o MongoDB mais rápido de todos os tempos! Leia mais >
AnúncioVoyage AI se junta ao MongoDB para impulsionar aplicativos de AI mais precisos e confiáveis no Atlas. Saiba mais >

Pilha de exploração explicada

Juntamente com outras pilhas, como MERN e MEAN, outra pilha está ganhando popularidade rapidamente: a pilha FARM.

A pilha FARM tem uma curva de aprendizagem semelhante à pilha MEAN e à pilha MERN devido à utilização de tecnologias como MongoDB e React. Usando uma combinação de FastAPI, React e MongoDB, ele melhora muito o desempenho, a velocidade e a facilidade de desenvolvimento do aplicativo.

Índice:

Explicação da pilha da FARM

O stack do FARM é uma pilha de tecnologia que reúne quatro das tecnologias mais populares:

  • FastAPI — uma estrutura de back-end baseada em Python
  • React — biblioteca JavaScript de frontend
  • MongoDB — o banco de dados NoSQL de esquema flexível

Pilha de tecnologia

Uma pilha de tecnologia é uma pilha de várias tecnologias de front-end, back-end, e banco de dados que funcionam juntas para criar um aplicativo de ponta a ponta, como um aplicativo web. Uma pilha de tecnologia pode ser pré-criada — como as pilhas MEAN, MERN e FARM — ou personalizada de acordo com seus casos de uso específicos.

A pilha FARM é uma pilha completa de tecnologia que usa front-end (React), back-end (Fast API) e banco de dados (MongoDB). Uma boa pilha de tecnologia deve ser dimensionável, de baixo custo e otimizada para velocidade e desempenho.

Normalmente, o front-end (o lado voltado para o usuário/cliente) de um aplicativo é criado a partir de tecnologias como HTML, CSS, e JavaScript. React é uma biblioteca construída com base nessas tecnologias que fornece uma experiência aprimorada para o desenvolvedor e o usuário.

O back-end consiste em um servidor web e na linguagem de programação do lado do servidor. É aqui que reside a lógica de negócios do aplicativo. Na pilha FARM, usamos a FastAPI, uma estrutura web ultrarrápida criada com base no framework Starlette.

A FastAPI está ganhando força rapidamente devido a seus recursos impressionantes, como a validação de dados integrada e a documentação de API interativa automática. A API rápida é baseada na Interface de gateway do servidor assíncrona (ASGI), o que significa que ela suporta programação assíncrona, tornando-a incrivelmente rápida.

A camada inferior da pilha é a camada de banco de dados que atua como um hub de armazenamento para todos os dados. Devido à natureza dos dados de hoje, que podem vir de várias fontes, estar em diferentes formatos e são de natureza enorme, precisamos de um banco de dados que possa lidar com tais dados não estruturados com flexibilidade.

O MongoDB, o banco de dados NoSQL mais popular, fornece a plataforma perfeita para armazenar, processar, analisar e recuperar o big data que as empresas desejam capturar. A linguagem de query avançada do MongoDB, as agregações e muitos outros recursos garantem que sua aplicação obtenha exatamente os dados que você está procurando, evitando que os desenvolvedores escrevam código para manipulações e transformações extensas nos dados.

Recursos que tornam a pilha FARM diferente

A pilha FARM tem uma combinação de tecnologias poderosas que permitem um desenvolvimento rápido, podem lidar com facilidade várias conexões simultâneas por meio de corrotinas e são fáceis de aprender.

Como funciona a pilha FARM?

A pilha FARM é simples de entender, com uma curva de aprendizagem mínima. Você só precisa estar familiarizado com JavaScript, Python e MongoDB, e você poderá criar projetos facilmente. Essas tecnologias são úteis para muitas outras pilhas e negócios também, portanto, aprendá-las pode ser essencial para sua carreira.

Um usuário pode realizar uma das seguintes operações no aplicativo:

Solicitação HTTP

  • POSTAR
  • OBTER
  • COLOCAR
  • EXCLUIR

operação CRUD correspondente

  • C = Criar/Inserir
  • R = Leitura
  • U = atualizar
  • D = Excluir

 

Sempre que o usuário faz uma solicitação HTTP para qualquer um desses, o React cria a solicitação com os parâmetros necessários e a envia para o servidor de back-end . No back-end, a FastAPI roteia a solicitação para o método apropriado e invoca o método de banco de dados apropriado para executar a operação. Depois que a consulta é executada com sucesso no nível do banco de dados , a resposta é recebida e processada pelo back-end e enviada para o front-end do React. Em seguida, o React exibe a mensagem de sucesso/f real para o usuário.

Front-end do React

A biblioteca React JS agiliza o desenvolvimento de aplicativos front-end prontos para produção, fornecendo muitos utilitários e componentes comuns prontos para uso que podem ser aproveitados. Como parte da pilha FARM, o React é usado para enviar solicitações HTTP para o back-end e exibir a resposta do back-end para o front-end.

O React JS usa o DOM virtual, que atualiza apenas as partes modificadas do aplicativo e não toda a estrutura da árvore. Isso agiliza o aplicativo. Outro recurso notável é a sintaxe JSync (JavaScript Extension) , por meio da qual você pode adicionar elementos JavaScript dentro de tags SQL. Portanto, qualquer alteração no valor do elemento é refletida imediatamente sem a necessidade de uma atualização ou reinicialização do servidor .

Considere uma simples solicitação HTTP feita por um usuário para atualizar seu número de celular. O React armazena os dados inseridos pelo usuário usando um gatilho simples (useState).

Esses dados serão enviados para a camada de aplicativo usando a solicitação PUT no formato JSON.

Como a pilha FARM suporta programação assíncrona, podemos usar a biblioteca JS axios que é baseada em promises e suporta todos os navegadores. Ao utilizar axios, podemos abstrair a complexidade da criação e configuração de solicitações HTTP.

Embora o React aceitasse muitos formatos de dados, o formato JSON é o mais preferido, pois é leve e usa menos largura de banda.

FastAPI

FastAPI é um framework web assíncrono baseado em Python. Na pilha da FARM, a Fast API atua como o middleware que processa as solicitações HTTP recebidas do aplicativo React e envia a resposta de volta. A FastAPI é executada no servidor uvicorn, que é baseado na especificações do servidor ASGI para servidores web assíncronos.

A API rápida aproveita operações de E/S sem bloqueio para cuidar de várias cargas simultâneas por meio de corrotinas. Por exemplo

Suponha que haja cinco solicitações simultâneas para atualizar um número de celular. Se cada um deles fosse processado um por um, seria um desperdício de CPU e tempo. Usando a palavra-chave assíncrono da biblioteca asyncio do Python, podemos começar a processar as solicitações em paralelo. Digamos que a primeira solicitação está aguardando os resultados da busca (localização do número de celular a ser atualizado). Esse tempo de espera pode ser usado para iniciar a segunda solicitação e assim por diante. Assim, cada solicitação é completamente independente das outras e não há bloco ou espera.

Na corrotina acima, main() é o ponto de entrada do programa, após o qual cada solicitação é processada de forma assíncrona como uma corrotina separada.

O framework web fornecido pela FastAPI fornece:

  • Suporte total para programação assíncrona, proporcionando assim alto desempenho.
  • Injeção de dependência, ou seja, declarando as dependências do projeto e injetando-as durante o tempo de execução.
  • Validação e serialização de dados usando a biblioteca pydantic.
  • Programação assíncrona usando a biblioteca asyncio python.
  • Documentação de API automática para os pontos de extremidade da API usando Swagger.
  • Insinuações de tipo e anotações.

Podemos usar decorativas Python (@app.get, @app.put e assim por diante) para definir as solicitações HTTP e os caminhos de roteamento.

Em seguida, você pode acessar os dados de entrada usando o caminho ou os parâmetros de consulta da solicitação. O uso da biblioteca pydantic cuidará da validação dos dados.

Em seguida, você pode criar a função assíncrona que atualiza o número do celular na coleção do banco de dados MongoDB :

Em um caso do mundo real, você provavelmente deseja atualizar o número de celular com base em algum critério, como customer_id. Nesse caso, você pode adicionar um parâmetro de caminho no ponto de extremidade FastAPI ( URL de roteamento ):

A função assíncrona para atualizar o número de celular tomará o customer_id com o número de celular a ser atualizado como parâmetro:

O "resultado" é um documento BSON, que é automaticamente convertido em um dicionário Python pelo mecanismo do driver assíncrono. Em seguida, a FastAPI converte-a em uma resposta JSON.

Você também pode criar uma resposta personalizada com base no resultado no código FastAPI.

O aplicativo React usa gatilhos para definir o estado de uma variável, de maneira que você possa simplesmente definir a resposta na variável e o React a exibirá na página de front-end:

A FastAPI usa dependências para fornecer suporte integrado para gerenciar permissões e controle de acesso baseado em função — por exemplo, autenticar um usuário ou autorizar acesso a uma rota.

Interface de gateway de servidor assíncrono (ASGI)

A ASGI fornece especificações para criar aplicativos e servidores assíncronos no Python. Isso permite que os aplicativos executem operações de E/S, como consultas de banco de dados ou solicitações de rede, sem bloquear outras operações. A ASGI foi projetada para lidar com conexões de longa duração, além da solicitação e resposta HTTP comuns. Esse recurso os torna úteis para aplicativos em tempo real, onde a comunicação bidirecional entre o cliente e o servidor é necessária.

servidor web Uviquar

Uviquar é um servidor web assíncrono baseado nas especificações ASGI. Ele oferece alto desempenho e é muito adequado para lidar eficientemente com altas cargas de aplicativos. Os desenvolvedores Python que usam a Fast API podem usar o servidor uvicorn para implantar e gerenciar suas aplicações. A Uviquar também oferece suporte a web soquetes. O FastAPI é compatível com alguns outros servidores, como Híbrido e Quart, mas o uvitor é o preferido devido ao desempenho e estabilidade.

Driver assíncrono do Motor

motor é um driver assíncrono para conectar o FastAPI (Python) e o MongoDB. Ele é semelhante ao driver pymongo, mas para aplicativos assíncronos. O motor também funciona bem com a versão comunitária ou empresarial do MongoDB server. Para saber mais sobre motores, acesse a página de documentação.

Plataforma de dados MongoDB

MongoDB é a camada de dados que armazena e recupera dados conforme necessário pelo aplicativo.

MongoDB é um banco de dados documento que armazena dados em um formato semelhante ao JSON conhecido como BSON (Binary JavaScript Object Notation). Devido ao seu modelo de documento, o MongoDB oferece alta flexibilidade em armazenar dados e acomoda facilmente qualquer mudança de esquema.

Existem vários tipos de bancos de dados MongoDB — o banco de dados corporativo MongoDB, o banco de dados comunitário MongoDB, e o banco de dados em nuvem (Atlas). Com o MongoDB Atlas, você não precisa instalar nada. Basta criar uma conta gratuita e você pode girar um cluster.

O MongoDB oferece opções eficientes de modelagem de dados para otimizar o desempenho e, ao mesmo tempo, manter a consistência e a flexibilidade dos dados preservadas. Por exemplo, para criar modelos de dados para seu aplicativo da pilha FARM, você pode definir a carga de trabalho e identificar os diferentes tipos de relacionamentos entre as entidades principais — um relacionamento 1:1, 1:muitos ou muitos:muitos. Com base nisso, você pode decidir sobre a estrutura do documento . O MongoDB segue uma regra simples de que os dados acessados juntos devem ser armazenar juntos. Você pode optar por incorporar todos os detalhes relevantes de uma entidade em um único documento, ou normalizar os dados e fazer referência a eles usando identificadores (como em um banco de dados relacional ).

MongoDB Atlas é uma plataforma de desenvolvimento de dados em cloud que oferece recursos abrangentes para gerenciar aplicações modernas — por exemplo, alta disponibilidade e tolerância a falhas integradas, backup e restauração automatizados, escalabilidade vertical e horizontal, provisionamento de servidor automatizado, instalação, configuração e correção.

O framework de agregação rico do MongoDB, juntamente com as extensas bibliotecas científicas do Python, são mais adequadas para os casos de uso atuais de AI e aprendizado de máquina, como detecção de fraudes, análise de dados em tempo real, recomendações direcionadas de cliente, analisar o comportamento do usuário e assim por diante. Usando o MongoDB Atlas, você obtém acesso a recursos adicionais, como Atlas Search, MongoDB Charts, App Services, Connector de ferramentas de BI, data federation, processamento de fluxo e muito mais.

Para criar uma conexão do MongoDB a partir do back-end da FastAPI, basta definir o URL e abrir a coleção do banco de dados :

Depois de estabelecer a conexão e obter o banco de dados, você pode usá-los para executar qualquer operação CRUD usando os métodos apropriados — por exemplo, o método update_one() que usamos na seção FastAPI.

Você pode criar um aplicativo completo da pilha FARM usando nosso aplicativo TODO para obter orientação sobre o código de ponta a ponta e a configuração necessários para criar seu aplicativo.

Gerador de aplicativos Full Stack FastAPI para desenvolvedores Python

O MongoDB fornece o Full Stack FastAPI App Generator para desenvolvedores Python. Anteriormente, os desenvolvedores Python precisavam integrar manualmente componentes como autenticação, teste e integração no aplicativo principal. O MongoDB Full Stack FastAPI aplicativo Generator fornece um esqueleto de aplicativo bem estruturado, simplificando assim a configurar inicial do projeto. Algumas das principais características do gerador de aplicativos são:

  • Uma pilha completa de aplicativo web com integração de componentes de front-end e back-end.
  • Um sistema de autenticação integrado.
  • Ferramentas operacionais e de monitoramento.

Pilha FARM versus pilha MERN

Tanto as pilhas FARM quanto MERN usam React e MongoDB , que fornecem alta flexibilidade e desempenho. A diferença está no uso de Node.js versus FastAPI, e a escolha de uma das duas pilhas depende do seu caso de uso comercial ou de preferência pessoal.

  • A pilha MERN tem uma curva de aprendizagem mais curta, pois o desenvolvedor só precisa aprender e escrever código JavaScript tanto para o back-end quanto para o front-end, enquanto para a pilha FARM, é preciso aprender também Python. Além disso, a pilha MERN oferece uma experiência unificada e melhor legibilidade e manutenção de código.
  • O Node.js tem mais suporte da comunidade e tem uma grande documentação para um grande número de casos de uso e domínios.

Dito isso, a FastAPI tem pontuação muito melhor quando se trata de análise de dados e suporte à ciência de dados:

  • O Python tem um vasto ecossistema de bibliotecas avançadas para tarefas de ciência de dados e aprendizado de máquina, facilitando a adição de pipelines de análise e processamento de dados às aplicações web. Embora o Node.js ofereça suporte a essas bibliotecas, elas não são tão completas quanto as bibliotecas do Python.
  • O design intuitivo da API da FastAPI, a geração automática de documentação da OpenAPI e o suporte integrado para validação de dados simplificam o desenvolvimento da API e o tornam acessível para desenvolvedores de todos os níveis de habilidades. Pode ser difícil aprender Node.js para um novato devido aos conceitos da programação baseada em chamada de resposta e à complexidade do gerenciamento de dependências.
  • Enquanto o Python é estritamente tipado, o JavaScript é impreciso, o que pode levar a erros de tempo de execução.

Casos de uso para a pilha FARM

A pilha FARM é adequada para uma ampla faixa de casos de uso em vários domínios e setores, alguns dos quais estão listados abaixo:

  • Construção de websites e páginas da web dinâmicos e interativos: no front-end, o React oferece uma experiência interativa em tempo real aos usuários, enquanto o back-end FastAPI permite criar REST APIs robustas para lidar com autenticação, autorização e transações. O MongoDB, devido ao seu esquema flexível, acomoda facilmente os requisitos de aplicação em evolução e estruturas de dados variadas — por exemplo, plataformas e-commerce e sistemas de gerenciamento de conteúdo.
  • AI e análise de dados: usando o poder do framework de agregação MongoDB e as bibliotecas de ciência de dados Python, a pilha FARM fornece uma base robusta para os desenvolvedores criarem sistemas para processamento de dados, análise em tempo real, obtenção de perspicácia prática e geração de relatórios visuais. O front-end do React pode ser utilizado para painéis interativos e exploração de dados.
  • Aplicações IoT (Internet of Things): usando React, os desenvolvedores podem criar uma interface tranquila para monitoramento e controle remoto. A FastAPI lida com serviços como ingestão de dados, comunicação de dispositivos e roteamento. O MongoDB pode armazenar os dados do sensor, metadados e logs e pode ser usado para análise e detecção de anomalias.
  • Aplicativos de chat: as funcionalidades de renderização em tempo real do React permitem uma comunicação tranquila e em tempo real entre o agente e os usuários. As funcionalidades de roteamento da FastAPI e o suporte a websocket permitem lidar com solicitações HTTP para autenticação, mensagens em tempo real e comunicação bidirecional. A arquitetura flexível e dimensionável do MongoDB o torna altamente adequado para lidar com dados de chat dinâmicos e em evolução.

Resumo

A pilha FARM é uma pilha de tecnologia promissora e oferece uma potência de recursos para criar aplicativos altamente flexíveis, dimensionáveis e de alto desempenho. Nos próximos dias, você pode esperar mais inovações e avanços nas tecnologias, com mais foco no aprimoramento da experiência e na produtividade do desenvolvedor, na automação e na integração com outras tecnologias para facilitar novos casos de uso e aplicativos. Para começar a usar o stack FARM, assista ao tutorial MongoDB.live.

Perguntas frequentes

Primeiros passos com o MongoDB Atlas

Experimente grátis
Ilustração do banco de dados.