Como construir uma infraestrutura de um aplicativo móvel escalável?
Você está procurando dimensionar uma infraestrutura de um aplicativo móvel? Aqui está um tutorial detalhado detalhando lições da vida real de como dimensionar a infraestrutura de aplicativos móveis.
Contents
- 1 O que é um aplicativo móvel?
- 2 Qual é a definição de uma arquitetura de aplicativo escalável?
- 3 Como é uma infraestrutura de aplicativo móvel?
- 4 Como escalar um aplicativo móvel?
- 5 Conclusão
- 6 FAQ
- 7 O que é um aplicativo móvel?
- 8 Como é uma infraestrutura de aplicativo móvel?
- 9 Como criar uma infraestrutura de aplicativo móvel escalável?
O que é um aplicativo móvel?
Um aplicativo móvel é um aplicativo executado em um dispositivo móvel, como smartphones, tablets e relógios. Existem vários tipos de aplicativos móveis, incluindo aplicativos nativos, aplicativos híbridos e aplicativos da web.
- Os aplicativos nativos funcionam para um sistema operacional específico, como Android ou iOS;
- Os aplicativos da Web são codificados usando tecnologias como HTML5 e CSS;
- Os aplicativos híbridos funcionam como aplicativos da Web, mas são enquadrados em um contêiner nativo.
Continue lendo para saber mais sobre uma arquitetura de infraestrutura de aplicativo móvel.
Qual é a definição de uma arquitetura de aplicativo escalável?
Construir aplicativos móveis em escala não é fácil, e muitas variáveis são essenciais ao definir uma arquitetura escalável.
Um aplicativo móvel grande e escalável provavelmente suportará milhares ou até milhões de usos e precisa ser performático, confiável e seguro.
Isso significa que uma arquitetura de primeira classe não terá tempos de inatividade, falhas, velocidades de carregamento rápidas e segurança de última geração.
Este artigo considerará esses fatores para propor uma infraestrutura de back-end escalável para aplicativos móveis.
Como é uma infraestrutura de aplicativo móvel?
Vários elementos compõem uma arquitetura de aplicativo móvel e abaixo está a infraestrutura necessária para aplicativos móveis.
- Plataformas de publicação de aplicativos
- SDKs – kits de desenvolvimento de software
- API
- CDN – Rede de Entrega de Conteúdo
- Armazenamento de Objetos
- balanceadores de carga
- Servidores de aplicativos
- Servidores de banco de dados
Continue lendo para saber mais sobre uma arquitetura de aplicativo móvel escalável e cada uma das camadas descritas acima.
Plataformas de publicação de aplicativos
É possível construir um aplicativo móvel usando diferentes tecnologias. Desde linguagens de desenvolvimento nativas para iOS e Android como Swift e Kotlin/Java até frameworks de desenvolvimento multiplataforma como React Native ou Flutter.
As tecnologias descritas acima criarão o frontend de um aplicativo móvel ou a interface do lado do cliente. Lojas de aplicativos como Google Play e App Store fornecem o ecossistema para distribuir aplicativos móveis aos usuários finais.
Os desenvolvedores precisam enviar seus aplicativos móveis para essas plataformas de publicação, aguardar sua revisão e somente após realizar esta etapa eles poderão ter o aplicativo em funcionamento.
Tanto o Google Play quanto a App Store têm diretrizes de publicação diferentes e é essencial lê-las primeiro para evitar problemas que possam impedir a publicação de um aplicativo.
Para evitar passar pelo escrutínio das lojas de aplicativos, uma alternativa é desenvolver um PWA – Progressive Web Applications usando tecnologias como React, Angular e Ionic.
SDKs – Software Development Kits
Software Development Kits são uma etapa essencial na construção de uma infraestrutura de aplicativo móvel escalável. Um SDK consiste em um pacote instalável com ferramentas como APIs, bibliotecas, depurador, documentação, etc.
Um SDK de back-end móvel provavelmente incluirá elementos que conectam a interface entre o back-end e o front-end.
Um exemplo fácil de entender é enviar uma notificação por push do back-end para o front-end. Um SDK facilitará essa ação e acelerará a integração dos elementos funcionais.
APIs – Application Programming Interfaces
As APIs são um elemento vital no desenvolvimento de uma arquitetura de aplicativo móvel. APIs são interfaces de software que conectam o frontend (lado do cliente) ao backend de um aplicativo móvel (lado do servidor).
As vantagens de usar a API em uma implementação de back-end de aplicativo móvel incluem automatizar tarefas, personalizar funções, entrega flexível de informações e distribuição de novos serviços.
CDN – Content Delivery Network
Um CDN é um grupo de servidores geograficamente distribuídos que trabalham juntos para fornecer entrega rápida de conteúdo. Esses servidores estão localizados mais próximos dos usuários finais e permitirão uma transferência mais rápida de ativos para carregar conteúdo da Internet (imagens, vídeos, etc.).
As vantagens adicionais da implementação da CDN incluem a redução do tempo de comunicação entre um aplicativo móvel do lado do cliente para o lado do servidor por meio de roteamento ideal, redução de custos de largura de banda e segurança (ataques DDoS, certificados etc.)
Armazenamento de Objetos
Esse elemento da infraestrutura do aplicativo móvel se conectará à CDN e abrangerá armazenamento de arquivos, armazenamento de vídeo, armazenamento de imagens etc. A CDN armazenará o conteúdo em cache e acelerará o tempo de entrega para o local mais próximo do usuário final.
Load Balancers
A próxima camada na criação de uma infraestrutura de aplicativo móvel são os balanceadores de carga. Na computação em nuvem, os balanceadores de carga distribuem tarefas em um conjunto de servidores para tornar seu processamento geral mais eficiente.
A CDN se conectará aos balanceadores de carga e o software do balanceador de carga distribuirá as solicitações do lado do cliente com eficiência, garantirá alta disponibilidade e aumentará/diminuirá a escala de acordo com a demanda.
Servidores de aplicação
A próxima etapa na construção de uma arquitetura de aplicativo móvel são os servidores de aplicativos. Essa parte da infraestrutura lidará com a lógica de negócios e ficará no meio entre os servidores de banco de dados e a CDN.
Servidores de banco de dados
A etapa final na configuração de uma infraestrutura de aplicativo móvel é criar os servidores de banco de dados. Um cluster de banco de dados compreende instâncias de alta potência que armazenam e manipulam os dados armazenados.
Uma infraestrutura de banco de dados pode ser redundante ou não. Arquiteturas redundantes fornecerão pelo menos duas instâncias sincronizando dados em tempo real.
Como escalar um aplicativo móvel?
Existem basicamente duas maneiras de construir uma infraestrutura de aplicativo escalável. A primeira é usar serviços gerenciados como um Mobile Backend as a Service, e a segunda maneira é fazer o backend do zero usando um provedor de infraestrutura como serviço.
O uso de um serviço BaaS inclui uma infraestrutura escalável e pronta para uso, blocos de construção prontos para uso para acelerar o desenvolvimento de back-end e SDKs para otimizar a integração do lado do servidor e do lado do cliente. Em geral, o dimensionamento de aplicativos é mais fácil de alcançar usando uma plataforma de back-end.
Desenvolver um back-end do zero fornecerá aos desenvolvedores mais flexibilidade e controle sobre a maioria dos elementos de infraestrutura. Por outro lado, eles precisarão gerenciar o back-end e aumentar e diminuir a infraestrutura, dependendo da carga de trabalho.
Vamos explorar com mais detalhes cada uma dessas duas opções.
BaaS – Backend as a Service
Dimensionar um back-end de aplicativo móvel usando um BaaS é extremamente fácil e todos os elementos estão prontos para atingir esse objetivo. O negócio principal de uma plataforma BaaS é fornecer uma arquitetura livre de problemas, segura e escalável para seus clientes.
Alguns provedores de back-end como o Back4App permitem que os usuários criem um back-end em apenas alguns minutos. O primeiro passo é se inscrever e nomear o primeiro aplicativo.
A próxima etapa é totalmente automatizada e a plataforma fornecerá um modelo de dados, servidores de aplicativos, políticas de dimensionamento, backups e segurança em apenas alguns minutos.
A próxima tela fornece uma GUI – Graphical User Interface que abrange o modelo de dados, funções sem servidor, APIs e configurações de infraestrutura.
O back-end está pronto para uso, tem escalabilidade integrada e tudo o que o usuário precisa fazer é conectar o front-end do aplicativo ao back-end por meio de SDKs, fazer upload de dados e codificar a lógica de negócios.
O Back4App oferece muitos SDKs prontos para uso, incluindo React Native, Flutter, Android, iOS, Javascript, Xamarin, etc.
Para saber em detalhes mais granulares como construir seu primeiro aplicativo usando o Back4App, consulte o tutorial Criar seu primeiro aplicativo com o Back4App.
Exemplos reais de dimensionamento de uma infraestrutura de aplicativo móvel
Abaixo estão dois exemplos práticos das vantagens de usar um back-end como serviço para dimensionar uma infraestrutura de aplicativo móvel.
- Braodcast
O primeiro exemplo que usaremos é a startup norueguesa Broadcastoslo. A empresa é um guia gratuito para festivais, shows e clubes em Oslo.
Broadcastoslo é um aplicativo mobile first e distribui seu aplicativo no Google Play e na App Store. Os usuários baixam e têm acesso a todos os eventos futuros que acontecerão em Oslo nos próximos meses.
O aplicativo também permite que os usuários acessem a programação do festival em tempo real, e é aí que começam os desafios de escalabilidade da infraestrutura.
O Musik Oslo Special Festival aconteceu no dia 4 de junho e contou com aproximadamente 20 mil participantes. Então, imagine como a infraestrutura escalável deve ser para dar suporte a milhares de usuários acessando e recuperando dados de um aplicativo simultaneamente.
A equipe técnica da Broadcast decidiu usar o Back4App para resolver esse problema, e os resultados foram excelentes! Aqui está o que Tim Harris, CEO da Broadcast, disse sobre a experiência.
Mais uma vez obrigado por toda a sua ajuda, foi um dia de muito sucesso para nós, e tão importante que não tivemos nenhum problema com as pessoas acessando o aplicativo!
Tim Harris, CEO da Broadcast
- Fight List
Fight List tem mais de 10 milhões de downloads, e é um jogo de muito sucesso criado pela Two4Tea. É um jogo de perguntas e respostas, distribuído em mais de sete idiomas, e alcançou as primeiras posições nos EUA e na França.
O jogo tem desafios de escala sofisticados e exige que milhares de usuários acessem o aplicativo simultaneamente.
A Two4Tea escolheu o Back4app para resolver o desafio da infraestrutura e processou mais de 10 mil solicitações/segundo no pico de uso. Aqui está o que Nicolas Boulch, CEO da Two4Tea, disse sobre a experiência.
Nesse momento percebemos que o Back4App era a escolha certa porque eles poderiam analisar nosso aplicativo especificamente e construir uma solução personalizada para nós
Nicolas Boulch, CEO da Two4Tea
Para saber mais sobre os desafios de dimensionamento da Fight List, leia o artigo Escalando um jogo com o Back4app.
Crie um back-end personalizado em qualquer grande provedor de nuvem
A segunda opção para construir uma infraestrutura de aplicativo móvel escalável é construir o back-end usando provedores de nuvem como AWS, Google Cloud, Azure, Digital Ocean, etc.
As vantagens de optar por essa configuração dependem principalmente da flexibilidade que ela fornecerá, mais controle sobre a infraestrutura de back-end e visibilidade sobre cada etapa do processo.
As desvantagens dependem dos esforços de engenharia para construir e manter a infraestrutura de back-end, desenvolver código de back-end padronizado e monitorar os sistemas 24 horas por dia.
A AWS é o provedor de nuvem mais usado em todo o mundo. Vamos usar este fornecedor para ilustrar as etapas para criar um back-end de aplicativo móvel escalável.
A primeira etapa é criar e ativar uma conta na AWS. Siga o tutorial Como criar e ativar uma nova conta da AWS para obter mais detalhes sobre como proceder.
A próxima etapa é definir os produtos que darão suporte à implementação de back-end. Usaremos o seguinte neste exemplo:
- Instâncias do EC2
- EBS—Armazenamento de Blocos Elásticos
- S3 – Sistema de Armazenamento Simples
- balanceadores de carga
- CDN – CloudFront
Vamos explorar com mais detalhes cada etapa.
Criando instâncias do EC2
Uma infraestrutura de back-end escalável exigirá máquinas virtuais de aplicativos e bancos de dados. A primeira etapa é definir o modelo de instância a ser usado no cluster.
A AWS oferece vários tipos de instância otimizados para muitos casos de uso. A lista abrange instâncias de uso geral, computação otimizada, otimizada para memória, computação acelerada e instâncias otimizadas para armazenamento.
Para este exemplo, usaremos uma instância de uso geral. Vamos começar com uma instância t4g.medium que fornece uma arquitetura baseada em Arm; é excelente para cargas de trabalho com capacidade de intermitência e oferece um ótimo preço por hora.
Abaixo estão os passos iniciais a serem seguidos:
- Login na AWS
- Acesse EC2
- Instâncias
- Iniciar uma nova instância
Esta etapa deve definir o sistema operacional, o tipo e o tamanho da instância, as configurações de rede, adicionar armazenamento em bloco à instância, configurações de segurança etc.
Para obter mais informações sobre como configurar uma instância do EC2, siga o tutorial Criar e iniciar uma instância do EC2.
Assim que o cluster de servidor estiver pronto, a próxima etapa é configurar as políticas de dimensionamento com base na carga de trabalho.
Há duas maneiras de dimensionar um cluster de servidor: dimensionamento horizontal e dimensionamento vertical.
- Dimensionamento horizontal – adicionando mais instâncias ao cluster para lidar com novas cargas de trabalho.
- Vertical Scaling – adicionar mais recursos (CPU/RAM) a uma instância para atender a nova carga de trabalho, ou seja, aumentar o tamanho da instância.
De um modo geral, os servidores de aplicativos usarão o dimensionamento horizontal como um mecanismo de dimensionamento preferencial. Um cluster de banco de dados usará o dimensionamento vertical como um método de dimensionamento preferencial.
O dimensionamento horizontal de um cluster de aplicativos é, em geral, um processo simples. A maneira de fazer isso usando a AWS é acessando o menu Auto Scaling e iniciando uma nova configuração.
O dimensionamento vertical do banco de dados é um processo mais complexo porque é impossível encerrar a instância e alterar o tamanho da instância. Dessa forma, o cluster enfrentaria tempo de inatividade.
O caminho certo é criar uma nova instância maior, sincronizar os dados e transferir o processamento da carga de trabalho para a instância maior. Não há ciência de foguetes em fazer isso, mas automatizar esse processo é demorado.
Se a carga de trabalho do aplicativo crescer tanto que o dimensionamento vertical do banco de dados não for mais possível, distribuir a carga de trabalho em várias instâncias será o único caminho a seguir. É uma implementação complicada e deve ser usada apenas como última opção.
Para obter etapas detalhadas sobre como adicionar o escalonamento automático ao EC2, siga o tutorial Introdução ao escalonamento automático do Amazon EC2.
EBS – Elastic Block Storage
Cada instância exigirá um volume EBS anexado. A exceção são instâncias efêmeras com armazenamento integrado ao hardware.
É uma etapa fácil realizada durante a configuração inicial da máquina virtual. O desafio é determinar o tamanho correto do EBS para evitar custos desnecessários e capacidade adequada de armazenamento de dados.
Escolher o tipo correto de EBS também é essencial. Existem muitas opções de EBS, incluindo discos SSD e magnéticos. A seleção do tipo de EBS adequado é vital para garantir um bom equilíbrio entre desempenho e custos.
Para obter mais informações sobre como anexar um volume do EBS a uma máquina virtual, consulte Anexar um volume do Amazon EBS a uma instância.
S3 – Simple Storage Service
Uma infraestrutura de back-end robusta e escalável exigirá armazenamento de objetos. Fazer isso com a AWS é uma tarefa fácil, e o S3 é o produto ideal para atingir esse objetivo.
A primeira etapa na criação de um bucket do S3 é definir a região para armazenar os arquivos. De um modo geral, você deve escolher a mesma região que a instância do EC2.
Como parte do processo de criação, é necessário definir a propriedade do objeto, as regras de acesso público, o controle de versão do bucket e os requisitos de criptografia.
Os buckets do AWS S3 são escaláveis por padrão e os usuários pagarão apenas pelos recursos usados. Para obter informações adicionais sobre como criar um bucket do S3, siga o tutorial Criando um bucket do S3.
Load Balancers
Uma infraestrutura escalável requer uma implementação correta do balanceador de carga. A AWS oferece vários tipos de balanceadores de carga como parte de seus produtos.
Os balanceadores de carga de aplicativos rotearão as solicitações para as instâncias do EC2 corretas e monitorarão a integridade dessas instâncias.
Anexar o load balancer a instâncias não é um processo complexo e abrange as seguintes etapas:
- Vá para o painel do EC2
- balanceamento de carga
- Criar balanceadores de carga
- Selecione o tipo de balanceador de carga
- Configure o Load Balancer em relação ao tipo de endereço IP, VPCs, zonas de disponibilidade e serviços complementares.
Para obter informações detalhadas sobre como configurar um balanceador de carga, consulte o tutorial Introdução aos balanceadores de carga de aplicativos.
Cloudfront CDN
O Cloudfront é uma rede integrada de entrega de conteúdo disponível na AWS que oferece suporte a cerca de 300 pontos de presença em todo o mundo.
O produto acelera a distribuição de conteúdo estático e dinâmico, aumenta a segurança e é fácil de integrar com outros produtos da AWS.
Como parte de uma arquitetura de back-end escalável, o Cloudfront se conectará aos buckets do S3 e aos balanceadores de carga.
Os usuários podem conectar o Cloudfront aos balanceadores de carga por meio do painel do EC2, criando um balanceador de carga, direcionando grupos e configurando uma distribuição do Cloudfront. Mais detalhes estão disponíveis em Configurando uma distribuição do Cloudfront para EC2.
Conectar o Cloudfront a um bucket do S3 também é simples. A conexão acontece por meio do painel do Cloudfront, criando uma distribuição do Cloudfront e adicionando o domínio de origem.
Você pode ler a postagem do blog Criando distribuição do AWS CloudFront com origem do S3 para obter mais informações.
Conclusão
Um aplicativo móvel funciona em dispositivos como celulares, tablets e relógios. As implementações mais comuns são aplicativos nativos, híbridos e web.
Uma infraestrutura de aplicativo móvel escalável consiste em um sistema projetado para não ter tempos de inatividade, falhas e ser super rápido e seguro.
Os elementos essenciais de uma infraestrutura escalável incluem plataformas de publicação de aplicativos, SDKs, APIs, CDNs, balanceadores de carga e servidores de aplicativos e bancos de dados.
As duas maneiras mais comuns de obter a melhor infraestrutura de aplicativo móvel escalável da categoria são usar soluções prontas para uso, como um back-end como serviço, ou configurar um back-end sob medida em serviços de nuvem como a AWS.
A solução de back-end como serviço fornecerá uma implementação mais rápida, recursos de dimensionamento prontos para uso e protocolos de segurança predefinidos. Por outro lado, um back-end personalizado fornecerá um ambiente e controle mais flexíveis.
Espero que você tenha gostado de ler este artigo e que ele tenha ajudado a entender melhor os fundamentos de uma boa arquitetura de aplicativo móvel. Se você não quiser as dificuldades de criar, manter e dimensionar um back-end, entre em contato com o Back4App para saber mais sobre como podemos ajudá-lo.
FAQ
O que é um aplicativo móvel?
Um aplicativo móvel funciona em dispositivos como celulares, tablets e relógios. As implementações mais comuns são aplicativos nativos, híbridos e web.
Como é uma infraestrutura de aplicativo móvel?
Os elementos essenciais de uma infraestrutura escalável incluem plataformas de publicação de aplicativos, SDKs, APIs, CDNs, balanceadores de carga e servidores de aplicativos e bancos de dados.
Como criar uma infraestrutura de aplicativo móvel escalável?
As duas maneiras mais comuns de obter a melhor infraestrutura de aplicativo móvel escalável da categoria são usar soluções prontas para uso, como um back-end como serviço, ou configurar um back-end sob medida em serviços de nuvem como a AWS.