Olá pessoal,
Tenho uma incógnita em meu projeto e gostaria de saber a opinião de vocês, caso alguém já tenha trabalhado em algo parecido e queira contribuir. Meu projeto, resumidamente é um sistema de front-end (em laravel 11) que recebe requisições de usuários e salva em um banco de dados (mysql). O backEnd da aplicação (Python) é responsavel por obter cada uma das requisições e fazer um processamento em fila. Este processamento consiste em pegar um arquivo de strings submetido pelo usuário na requisição, obter parametros definidos pelo usuario através da interface gráfica no ato da requisição, e a partir daí montar um comando que deve executar um programa monousuário de bioinformática, o qual fará o processamento do arquivo submetido pelo usuário. Este programa de bioinformática só opera via linhas de comando, neste caso em SO Linux Ubuntu, e a execução do comando com arquivo da requisição deve ser observada, pois o programa nao possui nenhum parametro para acomanhar o estado da operação que tem como resultado um arquivo de saída. A única forma de monitorar é através do ID do processo e consumo de recursos (memória e processador), e do arquivo de saída (que é gerado imediatamente após execução do comando, porém, é preenchido aos poucos). Como o front-end deve trabalhar em laravel e o back-end em python, ainda não sei exatamente como posso fazer a integração dessas partes, uma vez que ambas podem tentar alterar um campo do banco de dados ao mesmo tempo. Além disso, tem a questão da fila de execução para processar as requisições que podem a qualquer momento serem canceladas pelo usuário (no momento utilizo um atributo para cada requisição que é o "status", se estiver "aguardando", o back-end pode processar, se estiver em "cancelado" e já estiver na fila para ser executado, deve remover, outros estados são "processado" e "falha"). Já pensei em utilizar Redis para essa fila de execução, e tambem o Snakemake, poreḿ, não consigo ver como ficaria essa integração, além disso, o Snakemake não é indicado para execução cíclica, que é o que preciso, na verdade, um just in-time. Outra questão que penso é não utilizar muitos softwares terceiros, e sim desenvolver tudo em único código (na parte do back-end), para limitar possíveis pontos de falha, pois só até aqui já tenho em cima do SO ubuntu server (quem deve executar essa aplicação web), o laravel, o software que preciso executar e que pode laçar erros, o proprio SO que pode lançar erros, o python, servidor apache, servidor Js. Não sei se ficou claro, mas caso alguém tenha uma outra visão que possa contribuir, aceito opiniões.
Att.