Uploaded by wekaxiv501

Architecture Interview - Films Newsletter

advertisement
Ejercicio de diseño: Newsletter de películas
Realicemos un diagrama de arquitectura del siguiente problema:
La nueva empresa de streaming de películas por newsletter, necesita el
diagrama de arquitectura de todas las partes involucradas de un sistema capaz
de resolver la siguiente problemática.
- Se cuenta con una aplicación mobile encargada de servir contenido.
- Los usuarios se suscriben gratuitamente a la plataforma.
- Los usuarios reciben todos los días (en caso de que las haya)
propuestas personalizadas de peliculas que podrian comprar en la plataforma
en su casilla de email.
- Se cuenta con un algoritmo de Machine Learning encapsulado en una librería
MUY poco eficiente que dado el mail de una persona se encarga de
observar las redes sociales del mismo y devuelve una lista de películas sugeridas.
- El usuario puede comprar las películas únicamente a través del link que
se le envia al email, realizando un flujo de checkout donde puede dar de alta
su tarjeta.
- Las películas que el usuario compra quedan registradas de forma que las pueda
volver a ver en cualquier momento.
- La compra de películas se realiza a través de nuestra plataforma.
Incremento de dificultad
- Dado el boom que fue nuestra plataforma, el board de la compañia se dio cuenta
que seríamos mucho más rentables si empezaramos a cobrar una suscripción mensual
por el servicio que ofrecemos, los usuarios a partir de ahora deben pagar una
suscripcion mensual además del costo de las peliculas que compran.
- A su vez, por este gran incremento de tráfico, notamos que nuestro algoritmo
de recomendaciones no da abasto de procesar a todos los usuarios,
primero que nada, como pude observarlo? como podriamos mejorarlo?
--------------------------------------------------------------------------------
¿Qué buscamos ver? (PARA EL ENTREVISTADOR)
- Que sepa cómo encarar el diagrama de arquitectura
- Que encapsule cada capa de la aplicación en un servicio
- Que use los storages que considere necesario en cada capa de la arquitectura
y que de algún nombre propio
- Que pueda comunicar la capa de guardado de usuarios con la que se encarga de
obtener sugerencias utilizando algo que no sea HTTP (cola/stream)
- Que sepa si usar un Daemon o un proceso Batch para el envio de novedades ya
que TODOS los dias estariamos procesando todos los usuarios nuevamente
- Que me comente rapidamente que base usaria en un Scheduler para poder llevar
a cabo las suscripciones mensuales
- Que me mencione metricas que usaria para medir el tiempo que tarda el sistema
de recomendaciones
- Que pueda mejorar el sistema de recomendaciones con algo que no sea una
polling (busy waiting) y me comente de buscar una solución que guarde el delta
en vez de re procesar todo de todos los usuarios
DevOps approach
- ¿Kubernetes, Lambdas u live? ¿Por qué?
- ¿Cómo construirías los pipelines? ¿Qué flow usarías y por qué?
- ¿ Qué ambientes tendrías?
- ¿Qué herramientas de monitoreo utilizarías? NewRelic, Datadog o Grafana/Prometheus?
- Usas Infrastructure as Code como Terraform, Puppet o manejas archivos Raw de K8S?
- Para kubernetes, ECS vs EKS, cual usarias?
- CI/CD: Usaste circleCI?
- Sabes que es un HSM?
- ¿Habeis montado VPN para conectarse con otros clientes?
Download