Boa noite, pessoal…
Gostaria de sanar algumas dúvidas com relação à automatização de eventos em um sistema web com e sem interação dos usuários.
Vou citar um exemplo prático que representa minhas necessidades, e então vocês me digam como normalmente se trabalha com isso, quais tecnologias envolvidas, o que dá pra fazer e o que não dá, etc…
Vamos láh…
Há um site que permite aos visitantes assinarem determinados planos para acessarem determinado conteúdo.
Em princípio, o usuário faz uma assinatura de 30 dias grátis, e após concluir este período de teste, será necessário efetivar a assinatura (assinando um plano pago, por exemplo).
Porém, como Regra de Negócios, quando faltarem 7 dias para o vencimento, o site deverá enviar diariamente um alerta para o cliente falando algo como ‘Olá, Fulano, faltam X dias para o vencimento de sua assinatura. Contrate um novo plano agora!’…
Até aqui eu já consegui expressar o que desejo saber:
Como e com qual tecnologia é mais indicado para fazer essa parte ‘automatizada’?
Já pensei em ter Jobs no BD (No caso do SQL Server, por exemplo), que chamam uma procedure que verifica todos os cadastros no BD que estão iguais ou menores a 7 dias do vencimento, e aí pelo próprio BD seria enviado o email pro cliente.
Ou então que a cada vez que um cliente se cadastra, é criado um Job no BD que tem data certa pra rodar, ou disparada uma Thread que executa as rotinas necessárias pra emitir os alertas, etc…
Tem também uma outra forma que já ouvi falar, que é a de criar ‘rotinas no linux’ no caso de uma Hospedagem Dedicada, e aí essas rotinas é que irão ‘chamar’ o script no site que faz toda essa verificação.
Ou então ter um Web Service, e aí disparar uma thread nele que rode a cada 24hs, fazendo essa função de consultar no BD as contas que estão vencendo, e então ‘chamar o método que envia o email passando os parâmetros do cliente, etc’.
Só que, e se por algum motivo o Web Service tem que ser reiniciado, trocado ou algo assim, e o software não setiver na Nuvem, essas Threads automaticamente não funcionariam mais depois de o sistema restaurado, a não ser que fossem startadas manualmente.
E sem dizer que nesse caso eu teria que estar desenvolvendo um site em Java ou alguma outra tecnologia para implementação de um Web Service… Mas… e se eu for desenvolver um site em PHP com MySQL ou PostgreSQL, por exemplo… Existe alguma solução pra eu conseguir ‘automatizar’ o processo de efetuar alertas ao cliente periodicamente sem que ele precise necessariamente estar interagindo com o sistema (sem que, por exemplo, a validação de se já venceu os 30 dias dele é feita quando ele tenta fazer o login, o que nesse caso impossibilitaria a ideia de ser algo ‘automático’)?
Se fosse adotada a parte de executar as rotinas de ‘verificar o vencimento da assinatura grátis’ pelo BD, isso não é algo tão bom no sentido de estar dividindo a camada de Controle entre do sistema entre a codificação com o BD. Se eu estiver errado, por favor me digam como vocês o fazem nesse caso…
Enfim, se fosse em uma conversa eu conseguiria explicar em 3 minutos minha principal dúvida, mas espero ter conseguido me fazer entender e que eu tenha uma luz aqui de ‘qual é o melhor caminho e a melhor estrutura para tal necessidade.’
Muito obrigado por quem teve paciência pra ler isso tudo e conseguir ajudar.
Abraços.