Open fguinez opened 2 years ago
@ngeorger tal vez esto te sea de ayuda
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.
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
Creo que la solución sería combinar infra y código:
Es lo que se me ocurre rapico ahora.
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
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).
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