Depende mucho del tema en cuestión. En general no se trata demasiado a bajo nivel en una entrevista de diseño de sistemas. Normalmente, cuando hay un proceso que puede llevar bastante tiempo, se debe separar entre lo que el usuario necesita de forma síncrona y lo que puede esperar.
Por ejemplo, si un proceso lleva horas, la respuesta al usuario debe ser inmediata, dejándole saber que el proceso asíncrono se ha lanzado y está en cola / ejecución. Por detras, podríamos tener un sistema de colas y workers, por ejemplo, de forma independiente. Los workers van procesando al ritmo que pueden las tareas.
Una vez finalizadas, se podría enviar una notificación al usuario si es necesario que los usuarios se enteren al momento de finalizar, o podríamos ofrecer un enlace al usuario desde donde pueda ver el estado y el progreso cuando lo necesite.
Que tipo de metodología es adecuada para aprender diseño de sistemas?
Yo he tenido en mente que es algo como investigar cierto patrón (como podría ser event sourcing) y aplicarlo en un proyecto para entenderlo a fondo, pero siento que por muchos patrones que entienda aún no sería capaz de diseñar un YouTube con requisitos ambiguos
Muy interesante tu post, pero hay un tema sobre las concurrencias y proceso asincronos, como abordarias eso?
Hola Israel! Muchas gracias por tu comentario.
Depende mucho del tema en cuestión. En general no se trata demasiado a bajo nivel en una entrevista de diseño de sistemas. Normalmente, cuando hay un proceso que puede llevar bastante tiempo, se debe separar entre lo que el usuario necesita de forma síncrona y lo que puede esperar.
Por ejemplo, si un proceso lleva horas, la respuesta al usuario debe ser inmediata, dejándole saber que el proceso asíncrono se ha lanzado y está en cola / ejecución. Por detras, podríamos tener un sistema de colas y workers, por ejemplo, de forma independiente. Los workers van procesando al ritmo que pueden las tareas.
Una vez finalizadas, se podría enviar una notificación al usuario si es necesario que los usuarios se enteren al momento de finalizar, o podríamos ofrecer un enlace al usuario desde donde pueda ver el estado y el progreso cuando lo necesite.
Que tipo de metodología es adecuada para aprender diseño de sistemas?
Yo he tenido en mente que es algo como investigar cierto patrón (como podría ser event sourcing) y aplicarlo en un proyecto para entenderlo a fondo, pero siento que por muchos patrones que entienda aún no sería capaz de diseñar un YouTube con requisitos ambiguos