Como funciona?
Local na rede Internet
O aplicativo usa o runtime do Node.js - ele gera um site com um painel de controle. Os elementos de página variáveis são armazenados no banco de dados MySQL que é replicado entre os servidores. O aplicativo é baseado no potencial dos containers Docker, ele é executado para produção em um cluster Kubernetes. Para garantir a rápida implementação do código, utilizamos a técnica CI/CD com auxílio dos serviços GitLab e Docker Hub.
A página para o usuário é entregue do servidor mais próximo através de um serviço da Cloudflare. As máquinas de produção se comunicam via VPN WireGuard trabalhando em uma configuração de malha. A infraestrutura foi projetada para alta disponibilidade e capacidade de escalar rapidamente.
Tecnologias usadas:
Controle de luz
As informações sobre o Corach ou efeitos são enviadas para o controlador no local determinado através do software Socket.io. Cada um de nós possui drivers proprietários diferentes, mas tudo é baseado no código do cliente escrito na linguagem de programação JavaScript. Para iluminação utilizamos: placas com relés, controladores de brilho PWM, diodos programáveis, fitas de LED. Um pequeno computador Raspberry Pi ou um microcontrolador ESP8266 / ESP32 é mais frequentemente útil para a implementação do todo. O software WLED ou ESP Easy está instalado no microcontrolador.
Tecnologias usadas:
Transmissão de Imagem
Nosso serviço de streaming é construído com base nos princípios de microsserviços, o que garante excepcional flexibilidade e escalabilidade da infraestrutura. Utilizando configurações de docker-compose, criamos um ambiente coeso que é tanto fácil de gerenciar quanto altamente configurável.
O nginx-rtmp serve como receptor do sinal de vídeo, sendo o primeiro ponto de processamento do fluxo e gerenciamento de autorização. Em seguida, o sinal é direcionado para o OvenMediaEngine, onde ocorre o processamento adicional para entregar a transmissão com o menor atraso possível. Na configuração atual, não realizamos a transcodificação de imagem, o que permite uma distribuição muito rápida do material para o usuário final.
O sistema utiliza scripts para sincronização e geração de miniaturas, que são então distribuídos entre servidores usando rsync. Isso torna o processo automatizado e eficiente, garantindo atualizações constantes sem sobrecarregar a rede.
Tecnologias usadas:
Monitoramento
Toda a nossa infraestrutura e aplicação são monitoradas e testadas 24 horas por dia, 7 dias por semana. O monitoramento de disponibilidade é fornecido pelo Uptime Kuma, Uptime Robot, Zabbix e LibreNMS. Usamos o software Elasticsearch para monitorar eventos de aplicativos. Monitoramos parâmetros de hardware e desempenho de máquinas virtuais usando o Zabbix.
Tecnologias usadas:
Impressora térmica
A ideia de compartilhar uma impressora foi completamente espontânea. Para esta tarefa, queríamos escolher uma impressora que fosse tão livre de manutenção quanto possível. Depois de passar por muitas ofertas, escolhemos a impressora Epson TM-T88IV. A impressora suporta o padrão ESC/POS, então você pode "escrever" nela utilizando bibliotecas prontas disponíveis na Web.
Nosso script proprietário, utilizando a biblioteca DiscordPHP, é responsável por enviar mensagens do Discord para o impressora. Uma mensagem apropriada é gerada e enviada ao RabbitMQ.
Nossa biblioteca proprietária é responsável por enviar mensagens do Tipply, que também se comunica com o RabbitMQ. Usamos RabbitMQ para enfileirar mensagens de saída para a impressora. A impressora está conectada ao computador com uma porta RS232, que não conseguia acompanhar um grande número de mensagens - é por isso que enfileiramos as mensagens.
Itens usados para esta parte do projeto:
Programas:
Você tem perguntas adicionais? Você quer saber mais?
Veja também a aba "Sobre os autores"
Fanpage no Facebook
Vá para o FacebookBate-papo por texto e voz no Discord
Junte-se no Discord