Lista de requisitos#
Servicio principal#
El microservicio envía
announce
con una frecuencia máxima de 10s.El microservicio descubre al resto de microservicios recibiendo sus
announce
.El mircroservicio descarta aquellos microservicios que han dejado de mandar
announce
.El microservicio ignora los anunciamientos de aquellos microservicios que no necesita.
En caso de haber varios
Authenticator
anunciándose disponibles, no se devuelve siempre la misma referencia.En caso de haber varios
MediaCatalog
anunciándose disponibles, no se devuelve siempre la misma referencia.En caso de haber varios
FileService
anunciándose disponibles, no se devuelve siempre la misma referencia.En caso de que no haya ningún
Authenticator
, se lanzaTemporaryUnavailable
.En caso de que no haya ningún
MediaCatalog
, se lanzaTemporaryUnavailable
.En caso de que no haya ningún
FileService
, se lanzaTemporaryUnavailable
.
Servicio de autenticación#
El microservicio envía
announce
con una frecuencia máxima de 10s.El microservicio descubre al resto de microservicios recibiendo sus
announce
.El microservicio descarta aquellos microservicios que han dejado de mandar
announce
.El microservicio ignora los anunciamientos de aquellos microservicios que no necesita.
El microservicio no arranca si en 12 segundos no descubrió ningún
Main
.El microservicio detecta si es la primera instancia o cualquiera de las siguientes.
Si no es la primera instancia, es capaz de sincronizar desde otra con
bulkUpdate
.El microservicio es capaz de responder a la petición de
bulkUpdate
de una nueva instancia que lo solicitara.La instancia genera eventos delta cuando es necesario.
La instancia procesa los eventos delta adecuadamente
La instancia ignora eventos de origen desconocido
Servicio de catálogo#
El microservicio envía
announce
con una frecuencia máxima de 10s.El microservicio descubre al resto de microservicios recibiendo sus
announce
.El microservicio descarta aquellos microservicios que han dejado de mandar
announce
.El microservicio ignora los anunciamientos de aquellos microservicios que no necesita.
El microservicio no arranca si en 12 segundos no descubrió ningún
Main
.El microservicio detecta si es la primera instancia o cualquiera de las siguientes.
Si no es la primera instancia, es capaz de solicitar los deltas mediante
getAllDeltas
.El microservicio genera los eventos delta cuando se recibe
getAllDeltas
.El microservicio actualiza correctamente los
FileProvider
de los archivos acorde a los anuncios recibidos.La instancia genera eventos delta cuando es necesario.
La instancia procesa los eventos delta adecuadamente.
La instancia ignora los eventos de origen desconocido.
Servicio de archivos#
El microservicio envía
announce
con una frecuencia máxima de 10s.El microservicio descubre al resto de microservicios recibiendo sus
announce
.El microservicio descarta aquellos microservicios que han dejado de mandar
announce
.El microservicio no arranca si en 12 segundos no descubrió ningún
Main
.El microservicio ignora los anunciamientos de aquellos microservicios que no necesita.
La instancia publica la lista de ficheros disponibles periódicamente.
La instancia publica la lista de ficheros cuando ésta se altera.
Se para una descarga cuando su token asociado expira, y continúa al renovarlo.
Cliente#
En caso de fallo de conexión al Topic Manager, el cliente intenta reconectarse.
Espera hasta que descubre un
Main
y conecta automáticamente con él.Si descubre varios servicios
Main
, las peticiones no irán siempre a la misma instancia.Sólo en modo administrador se permite la monitorización de canales de eventos.
El monitor es capaz de mostrar los anunciamientos de servicios.
El monitor es capaz de mostrar actualizaciones delta de instancias
Authenticator
.El monitor es capaz de mostrar actualizaciones delta de instancias
MediaCatalog
.El monitor es capaz de mostrar los anunciamuentos de ficheros realizados por instancias de
FileService
.
Notas comunes a todos los servicios y cliente#
Cuando un servicio reciba un anunciamiento, deberá siempre imprimir un mensaje en el terminal, de modo que en el mensaje se diga si el anunciamiento ha sido almacenado o ignorado.
Cuando un servicio reciba una actualización delta deberá siempre imprimir un mensaje en el terminal, de modo que en el mensaje se diga si la actualización ha sido tenida en cuenta o se ha ignorado.
Puntos extras para todos los servicios y cliente#
Utilización de la librería
logging
de Python de manera adecuada (hasta 1 punto):Uso de los diferentes niveles de log.
Nivel de log configurable.
El proyecto utiliza integración continua (hasta 1 punto):
No cuenta la integración contínua ya proporcionada, a no ser que se aporte algo adicional.
El proyecto es instalable con
pip install
(hasta 1 punto):Nombre del paquete actualizado.
Únicamente se instalan los “entry points” necesarios, no todos.
El proyecto se puede desplegar utilizando Docker (hasta 2 puntos)
El código obtiene de media en pylint >9.0 (hasta 2 puntos):
Si se abusa de los comentarios de “disable” no se considerará apta para éste extra.
El proyecto dispone de pruebas con cobertura >80% (hasta 5 puntos).