Transmitir Dados do IoT para um Autonomous Database Usando Funções Sem Servidor
Cargas de trabalho que utilizam dispositivos Internet of Things (IoT) precisam ser dimensionadas de forma eficiente em tempo real. À medida que você implanta mais dispositivos e sensores, o volume e a variedade de dados transmitidos aumentam. Use funções sem servidor e um banco de dados autônomo no Oracle Cloud para automatizar e dimensionar o processamento de dados IoT em fluxo.
Arquitetura
Nessa arquitetura, os dados dos dispositivos IoT fluem por meio de um gateway de API para funções sem servidor, que usam o serviço Streaming para fazer upload dos dados para um banco de dados autônomo no Oracle Cloud. Os usuários fora da nuvem podem acessar os dados por meio de um servidor Web baseado em Flask executado em uma instância do Oracle Cloud Infrastructure Compute.
O diagrama a seguir ilustra essa arquitetura.
oci-arch-iot-streaming-oracle.zip
A arquitetura tem os seguintes componentes:
- Região
Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, chamados domínios de disponibilidade. As regiões são independentes de outras regiões e grandes distâncias podem separá-las (entre países ou mesmo continentes).
- Rede virtual na nuvem (VCN) e sub-redes
Um VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem controle total sobre seu ambiente de rede. Um VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar depois de criar o VCN. Você pode segmentar uma VCN em sub-redes, que podem ter escopo para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem com as outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.
Nessa arquitetura, o banco de dados autônomo e uma função para configurar o banco de dados são anexados a uma sub-rede privada. A instância de computação que hospeda o servidor Web e as funções que processam os fluxos são implantadas em uma sub-rede pública.
- Grupos de segurança de rede (NSG)
Os NSGs agem como firewalls virtuais para seus recursos de nuvem. Com o modelo de segurança com confiança zero da Oracle Cloud Infrastructure, todo o tráfego é negado e você pode controlar o tráfego de rede dentro de uma VCN. Um NSG consiste em um conjunto de regras de segurança de entrada e saída que se aplicam somente a um conjunto especificado de VNICs em uma única VCN.
O acesso ao banco de dados e ao servidor Web nesta arquitetura é controlado por meio de NSGs separados.
- API Gateway
O Oracle API Gateway permite que você publique APIs com pontos finais privados acessíveis na sua rede e que você pode expor à internet pública, se necessário. Os pontos finais suportam validação de API, transformação de solicitação e resposta, CORS, autenticação e autorização e limitação de solicitação.
- Streaming
O Oracle Cloud Infrastructure Streaming fornece uma solução de armazenamento totalmente gerenciada, escalável e durável para a ingestão de fluxos contínuos de dados de alto volume que você pode consumir e processar em tempo real. Você pode usar o Streaming para ingerir dados de alto volume, como logs de aplicativos, telemetria operacional, dados de fluxo de cliques na Web; ou para outros casos de uso em que os dados são produzidos e processados de forma contínua e sequencial em um modelo de mensagens de assinatura de publicação.
- Funções
O Oracle Functions é uma plataforma Functions-as-a-Service (FaaS) totalmente gerenciada, multitenant, altamente escalável e sob demanda. Ele é ativado pelo mecanismo de código aberto do Fn Project. As funções permitem implantar o código, chamá-lo diretamente ou acioná-lo em resposta a eventos. O Oracle Functions usa contêineres Docker hospedados no Oracle Cloud Infrastructure Registry.
- Banco de dados autônomo
Essa arquitetura usa um banco de dados autônomo (Oracle Autonomous Data Warehouse ou Oracle Autonomous Transaction Processing) com um ponto final privado.
O Oracle Autonomous Data Warehouse é um serviço de banco de dados autônomo, autosseguro e autorreparável que é otimizado para cargas de trabalho de data warehousing. Você não precisa configurar ou gerenciar nenhum hardware ou instalar nenhum software. O Oracle Cloud Infrastructure trata da criação do banco de dados, bem como do backup, aplicação de patches, upgrade e ajuste do banco de dados.
O Oracle Autonomous Transaction Processing é um serviço de banco de dados autônomo, autosseguro e autorreparável que é otimizado para cargas de trabalho de processamento de transações. Você não precisa configurar ou gerenciar nenhum hardware ou instalar nenhum software. O Oracle Cloud Infrastructure trata da criação do banco de dados, bem como do backup, aplicação de patches, upgrade e ajuste do banco de dados.
- Servidor Web
Nessa arquitetura, um ponto final de micro-framework Flask é implantado em uma instância de computação. O aplicativo baseado em Flask pode expor os dados no banco de dados autônomo como conteúdo web dinâmico.
Recomendações
Use as recomendações a seguir como ponto de partida. Seus requisitos podem ser diferentes.
- Dimensionamento do VCN
Ao criar uma VCN, determine o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que você planeja anexar a sub-redes na VCN. Use blocos CIDR que estejam dentro do espaço de endereço IP privado padrão.
Selecione blocos CIDR que não se sobreponham a nenhuma outra rede (no Oracle Cloud Infrastructure, seu data center local ou outro provedor de nuvem) para a qual você pretenda configurar conexões privadas.
Depois de criar um VCN, você poderá alterar, adicionar e remover seus blocos CIDR.
- Calcular formas
Nesta arquitetura, uma imagem do Oracle Linux 7.8 e a forma VM.Standard2.1 são usadas para o servidor Web baseado em Flash. Escolha uma forma apropriada para as necessidades de recursos do aplicativo.
- Recursos de gateway de API
Os pontos finais do Serviço API Gateway suportam validação de API, transformação de solicitação e resposta, CORS, autenticação e autorização e limitação de solicitações. Escolha os recursos que atendam às suas necessidades de negócios e TI.
- Particionamento de fluxo
O serviço Streaming fornece um log de mensagens particionado e somente para anexo: um fluxo. Uma partição é uma seção de um fluxo. As partições permitem que você distribua um fluxo dividindo mensagens em vários nós. Você pode colocar cada partição em uma máquina separada para permitir que vários consumidores leiam de um fluxo em paralelo. Para cargas de trabalho grandes e de computação intensiva, considere aumentar o número de partições.
- Versão do banco de dados autônomo
Use a versão mais recente disponível para o banco de dados autônomo.
Considerações
Ao implementar essa arquitetura, considere seus requisitos para os seguintes parâmetros:
- Aceleração de solicitações
Depois de criar o gateway de API e implantar uma ou mais APIs, talvez você queira limitar a taxa na qual os clientes front-end podem enviar solicitações para serviços de backend. Decida o limite de taxa de solicitação com base na sua exigência de manter alta disponibilidade e uso justo, protegendo os recursos de backend de serem sobrecarregados por muitas solicitações. Você também pode precisar impedir ataques de negação de serviço (DoS) ou controlar e restringir o consumo de recursos. Em última análise, você aplica um limite de tarifa globalmente a todas as rotas em uma especificação de implantação de API.
- Limites de serviço
Ao projetar sua arquitetura, considere os limites do serviço para os serviços Streaming e Functions. Consulte a documentação dos Limites de Serviço listada na seção Explorar Mais.
- Escalabilidade
- Banco de Dados
Você pode escalar manualmente o número de núcleos de CPU do banco de dados para cima ou para baixo a qualquer momento. O recurso de dimensionamento automático de bancos de dados autônomos permite que seu banco de dados use até três vezes o número base atual de núcleos de CPU a qualquer momento. À medida que a demanda aumenta, o dimensionamento automático aumenta automaticamente o número de núcleos em uso. Os bancos de dados autônomos permitem escalar a capacidade de armazenamento a qualquer momento sem afetar a disponibilidade ou o desempenho.
- Aplicativo
Você pode escalar sua aplicação Flask usando o pool de instâncias e os recursos de dimensionamento automático.
Os pools de instâncias permitem provisionar e criar várias instâncias de computação com base na mesma configuração dentro da mesma região.
Use o dimensionamento automático para ajustar automaticamente o número de instâncias de computação em um pool de instâncias com base em métricas de desempenho, como a utilização da CPU. O dimensionamento automático ajuda a fornecer desempenho consistente para os usuários durante períodos de alta demanda e reduzir seus custos quando a demanda é baixa.
- Funções
O Oracle Functions cria e remove contêineres de função automaticamente com base no carregamento da solicitação. Você paga somente quando as funções são chamadas e durante a duração em que são executadas.
- Banco de Dados
- Disponibilidade do aplicativo
Os domínios com falha fornecem a melhor resiliência dentro de um domínio de disponibilidade. Se precisar de maior disponibilidade, considere usar vários domínios de disponibilidade ou várias regiões sempre que possível.
- Backups
- Banco de Dados
O Oracle Cloud Infrastructure faz backup automático de bancos de dados autônomos e retém os backups por 60 dias. Você pode restaurar e recuperar seu banco de dados a qualquer momento durante o período de retenção. Você também pode criar backups manuais para complementar os backups automáticos. Os backups manuais são armazenados em um bucket do Oracle Cloud Infrastructure Object Storage que você cria e são retidos por 60 dias.
- Aplicativo
O serviço Oracle Cloud Infrastructure Block Volumes permite criar backups pontuais dos dados de um volume em blocos. Você pode restaurar esses backups para novos volumes a qualquer momento.
Você também pode usar o serviço para fazer um backup pontual e consistente com falhas de um volume de inicialização sem interrupção ou tempo de inatividade do aplicativo. Os volumes de inicialização e em blocos têm os mesmos recursos de backup.
- Banco de Dados
- Segurança
- Controle de acesso
Use políticas para restringir quem pode acessar seus recursos na nuvem e as ações que eles podem executar.
- Segurança da rede
O serviço Networking oferece dois recursos de firewall virtual que usam regras de segurança para controlar o tráfego no nível do pacote: listas de segurança e grupos de segurança de rede (NSG). Um NSG consiste em um conjunto de regras de segurança de entrada e saída que se aplicam somente a um conjunto de VNICs de sua escolha em um único VCN. Por exemplo, você pode escolher todas as instâncias de computação que atuam como servidores Web na camada Web de uma aplicação de várias camadas no VCN.
As regras de segurança NSG funcionam da mesma forma que as regras de lista de segurança. No entanto, para a origem ou destino de uma regra de segurança NSG, você pode especificar um NSG em vez de um bloco CIDR. Dessa forma, você pode gravar facilmente regras de segurança para controlar o tráfego entre dois NSGs na mesma VCN ou tráfego dentro de um único NSG. Ao criar um sistema de banco de dados, você pode especificar um ou mais NSGs. Você também pode atualizar um sistema de banco de dados existente para usar um ou mais NSGs.
- Controle de acesso
Implantar
O código Terraform para esta arquitetura de referência está disponível no GitHub. Você pode inserir o código no Oracle Cloud Infrastructure Resource Manager com um único clique, criar a pilha e implantá-la. Como alternativa, faça download do código do GitHub para o seu computador, personalize-o e implante a arquitetura usando a CLI Terraform.
- Implante usando o Oracle Cloud Infrastructure Resource Manager:
- Clique em
Se ainda não tiver efetuado sign-in, informe as credenciais da tenancy e do usuário.
- Revise e aceite os termos e condições.
- Selecione a região em que deseja implantar a pilha.
- Siga os prompts e instruções na tela para criar a pilha.
- Depois de criar a pilha, clique em Ações do Terraform e selecione Plano.
- Aguarde a conclusão do job e revise o plano.
Para fazer alterações, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute a ação Plano novamente.
- Se nenhuma outra alteração for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
- Clique em
- Implante usando a CLI do Terraform:
- Vá para o GitHub.
- Baixe ou clone o código para o computador local.
- Siga as instruções no README.
Explorar Mais
Saiba mais sobre como usar funções sem servidor para suas cargas de trabalho na nuvem.
Log de Alterações
Este log lista apenas as alterações significativas:
2 de agosto de 2022 | Recursos adicionais adicionados à seção Explorar Mais. |
19 de novembro de 2021 | Opção adicionada para fazer download de versões editáveis (.SVG e .DRAWIO) do diagrama de arquitetura. |
4 de fevereiro de 2021 | Informações adicionadas sobre funções de dimensionamento na seção Considerações. |
24 de novembro de 2020 |
|