seguimos / chat-broadcast

Una herramienta para transmitir mensajes automáticamente a múltiples grupos de chat
GNU General Public License v3.0
2 stars 1 forks source link

Alta disponbilidad #1

Open fguinez opened 2 years ago

fguinez commented 2 years ago

De momento no he encontrado una forma de actualizar la lista de grupos que reciben mensajes sin pausar momentáneamente el funcionamiento de matterbridge.

Hasta ahora, lo que me parece más realizable es implementar una mezcla de las soluciones (ii) y (iii), definiendo que la lista se actualice en un horario predefinido con reducidad opciones. Por ejemplo: 00:00, 6:00, 12:00, 18:00

fguinez commented 2 years ago

@ngeorger tal vez esto te sea de ayuda

agucova commented 2 years ago

No sé cómo estamos en Go, pero qué tan inviable es forkear matterbridge para este propósito?

Mi tema es que implementar "hot reload" suena bastante involucrado.

fguinez commented 2 years ago

Al menos yo se lo básico nomás de Go, no me siento capacitado para ese fork. Si a eso le sumamos que la idea es que esto empiece a funcionar ahora ya, me quedaría con la opción de minimizar las interrupciones (y conocer cuando ocurren) nomás.

Ahora ideal si aparece alguien con la motiviación de forkear matterbridge y solucionar el problema, le daría estrellita en todos sus repos y le pediría una clase de cómo lo hizo jajaja

ngeorger commented 2 years ago

Creo que la solución sería combinar infra y código:

Es lo que se me ocurre rapico ahora.

ngeorger commented 2 years ago

Creo que la solución sería combinar infra y código:

  • Código detecte cambio de versionado de archivo objetivo, al cual se le da high availability, en el sentido de réplicas y multizonas. Ésto puede hacersae fácil, de dos formnas:

    • Simple, rapida y bonita: Bucket en GCP con téplicas y versionado con terraform para control de cambios descentralizado.
    • Con la solución anterior, el bucket por si solo puede emitir unna notificación y ésta notificación le indica a un tópico con suscripcion abierta de que el archivo dcambio y que lo vaya a buscar

Es lo que se me ocurre rapico ahora.

Referencia: https://cloud.google.com/storage/docs/gsutil/commands/notification Codigo referencial en go, a vuelo de pájaro: https://pkg.go.dev/google.golang.org/cloud/storage#hdr-Creating_a_Client

fguinez commented 2 years ago

De momento, implementé la mezcla de las soluciones (ii) y (iii) en el Pull Request #2, donde se realiza la integración de grupos nuevos 1 vez al día a las 4AM.

No cerraré la issue todavía por si eventualmente alguien logra realizar la solución (i).