As notificações push são uma ferramenta de marketing vital para qualquer pessoa com um aplicativo móvel.
É a melhor maneira de se comunicar com seus usuários, enviando mensagens urgentes para seus telefones celulares.
Um aplicativo móvel pode enviar ao usuário uma notificação por push, que é uma breve mensagem pop-up que aparece em seu smartphone mesmo quando o aplicativo não está aberto.
Esses alertas podem incluir lembretes, atualizações, descontos e muito mais.
Eles são criados para chamar a atenção dos usuários. Título, mensagem, imagem e URL são todos componentes possíveis de uma notificação por push. Emojis, logotipos e outras coisas também podem fazer parte deles.
Sistemas operacionais como Apple OS e Google Android possuem diversas interfaces para notificações push.
As notificações push podem ser usadas para promover o engajamento, aumentar o uso do aplicativo, afetar as conversões e muito mais.
As opções são genuinamente ilimitadas.
As notificações push para dispositivos móveis, também conhecidas como notificações push para dispositivos móveis, podem complementar o uso de canais como e-mail, SMS e notificações push online com várias vantagens especiais.
Você receberá uma breve descrição do serviço de notificação neste post e informações sobre seu objetivo, design de alto nível, recursos especiais e muito mais.
Objetivo
Desenvolver um serviço de notificação que possa distribuir eficientemente mensagens do produto ao usuário em uma variedade de canais
Requisitos:
- API de envio: publique um endpoint autorizado para que qualquer back-end e microsserviço possam começar a entregar notificações.
- Canais Compatíveis: Suporte a entrega de alertas para qualquer canal que publique uma API, como email, mensagem de texto e push.
- As preferências do usuário: permitir que os usuários selecionem suas preferências de usuário para cada canal e notificação.
- Limites para conformidade de serviço downstream: Evite ter seu email ou serviço de SMS estrangulado ou interrompido.
- Escalável: Permite (teoricamente) escala horizontal infinita.
Arquitetura de alto nível
Digamos que seu código deve notificar alguém:
- O endpoint POST /send é invocado pelo seu código. Para cada canal disponível, a solicitação inclui o userId do destinatário, o tipo de notificação e seu conteúdo.
- O fluxo de credenciais do cliente OAuth2 é usado pelo ponto de extremidade /send para autenticar a solicitação.
- As opções de notificação do usuário são então solicitadas do banco de dados. As preferências mostram se o usuário está ou não inscrito em um determinado canal e notificação.
- A partir do banco de dados, ele lerá as características do usuário, como endereços de e-mail e números de telefone.
- Esse endpoint criará um objeto de mensagem que inclui características do usuário, canais e conteúdo específico do canal. No entanto, não incluirá canais desativados. A mensagem é então entregue a um serviço de distribuição.
- As mensagens recebidas são disseminadas para as filas de trabalhos por meio do serviço de fanout. A filtragem está em vigor, no entanto, para desconsiderar as filas de trabalhos para canais que não estão especificados na mensagem.
- Cada canal possui um processador e uma fila de trabalho. O processador assume a tarefa e, em seguida, solicita o serviço apropriado, como um serviço de e-mail transacional ou SMS.
Elementos principais da arquitetura
POST/enviado
Você deve ter notado que apenas o userId e nem o endereço de e-mail nem o número de telefone estão incluídos na solicitação para este ponto final. Isso permite que os serviços de notificação permaneçam anônimos para seus usuários.
Para garantir a escalabilidade, o ponto final é colocado atrás de um balanceador de carga.
Sua autenticação típica voltada para o usuário não oferece proteção para o endpoint.
Você deve utilizar um método de autenticação distinto conhecido como OAuth2 Client Credential Flow usado para comunicação de servidor para servidor, pois o serviço que envia a solicitação é o próprio software.
Seu aplicativo fornecerá notificações em muitos lugares diferentes. Você pode utilizar a função de envio em praticamente qualquer lugar, como a partir de uma nova base de código ou de seu fluxo de trabalho de compilação, implementando-a como um ponto final por trás de um balanceador de carga, o que garante que seja escalável de forma independente.
PUT/preferências do usuário
Use um par chave/valor ou banco de dados NoSQL que seja extremamente escalável. Formate os registros da seguinte forma: KEY: amostra de ID de usuário: amostra de ID de notificação, VALOR: [“email”, “estado: verdadeiro”, “SMS”, “estado: falso”, canal: “email”, “email”, estado : verdadeiro
Se valores “falsos” estiverem presentes nos registros, o endpoint de transmissão excluirá o canal correspondente da mensagem entregue ao fanout. Se não houver registro para um canal, o usuário não indicou expressamente suas preferências. Você deve consentir com o padrão neste cenário.
O usuário pode modificar os dados no banco de dados de preferências do usuário usando sua interface do usuário e um ponto de extremidade regular protegido por seus procedimentos de autenticação padrão.
Os usuários ficarão irritados e serão obrigados a designar seus alertas como spam ou silenciá-los se você não fornecer a opção de alterar suas preferências de notificação. Como resultado, sua experiência de usuário será prejudicada e os serviços de entrega de e-mail ou SMS podem suspender sua conta.
Espalham
Fanout copia uma mensagem e a distribui para diferentes locais. Eles são acessíveis e muito escaláveis. Use o SNS na AWS. Use Pub/Sub no Azure e tópicos e assinaturas no Google Cloud Platform.
Para evitar o envio de mensagens inúteis para filas de trabalhos de canal excluídos, você pode configurar a filtragem entre as filas de fanout e de trabalho. Por exemplo, no AWS SNS, você pode especificar que a fila de trabalhos de e-mail só deve receber a mensagem de fanout se tiver o valor “email” no campo “channels”.
Mesmo se você pudesse criar um código para enviar a mensagem idêntica para as filas de trabalho necessárias, o fanout é mais eficiente e requer menos codificação. O Fanout também oferece a conveniência de adicionar e remover filas, permitindo estender e reorganizar seus canais.
Processamento de Trabalho
As mensagens são armazenadas em filas pendentes de processamento por seus processadores de trabalho. Eles também são acessíveis e muito escaláveis. Processadores de tarefas são pedaços de código que processam mensagens das filas de tarefas. Dependendo do volume de mensagens na fila, elas podem ser dimensionadas.
O processador de trabalho deve fazer uma chamada de API para o provedor adequado para entregar o aviso em nosso cenário por meio de um serviço de e-mail transacional.
A maioria dos provedores de e-mail, SMS e de entrega de mensagens semelhantes têm requisitos rígidos para a quantidade e o calibre das mensagens que você envia. Além disso, você deseja examiná-los e configurar os procedimentos adequados completamente. Aqui estão nossos conselhos sobre como evitar ser encerrado no AWS SES.
Você pode definir um número máximo de processadores de trabalho para evitar exceder os limites de taxa dos serviços de entrega.
Melhorias adicionais
Você pode dar uma olhada em um monte desses itens.
- Eles precisam de suas próprias APIs, tabelas etc. para ter um serviço de notificação no aplicativo escalável.
- Reunindo e mostrando o relatório de abertura/clique
- Remover o conteúdo das notificações do código e permitir que seu produto e equipe de design modifiquem os alertas visualmente, sem alterar o código
- Sem alterar nenhum código, sua equipe pode usar o painel para ativar ou desativar notificações para determinados canais.
Benefícios da notificação push
- Aumente a interação do usuário: atualizações e novos materiais manterão seus usuários interessados.
- Aumente a visibilidade da comunicação: garanta que suas mensagens sejam recebidas imediatamente, mesmo quando as pessoas não estiverem ativas. Envie notificações urgentes e forneça aos usuários uma experiência tranquila.
- Manter a retenção: use notificações push que sejam claramente visíveis para incentivar seus usuários a retornar. Você pode aumentar a retenção de usuários e reduzir a rotatividade, empurrando os clientes de volta para seu site e aplicativo.
- Melhore as conversões: ao criar campanhas push em torno de prêmios, promoções, descontos ou outras ofertas no aplicativo, você pode aumentar as vendas.
- Dimensione sua empresa: sua abordagem de comunicação deve ser dimensionada à medida que seu público se expande. À medida que sua base de clientes se expande, as notificações push são um método eficaz para manter contato com eles.
- Torne a experiência do usuário conectada (UX): Ao fornecer alertas transacionais aos consumidores para mantê-los informados e fornecer uma experiência suave entre canais, você pode reduzir o atrito em toda a jornada do cliente.
Conclusão
Em conclusão, adquirimos conhecimento sobre a arquitetura de um serviço de notificação por push escalável. Também analisamos as ferramentas fornecidas por todos os principais provedores de serviços em nuvem para que você possa basear suas notificações nelas.
Apesar do fato de eu ter tentado o meu melhor para fornecer uma visão geral da arquitetura do sistema de notificação por push, há muito mais acontecendo nos bastidores.
Espero sinceramente que você ache esta informação útil e faça bom uso dela.
Deixe um comentário