Uploaded by Eduardo Ventura Chancafe

Caso PC2 - C4UBER

advertisement
Business Case: UBER
El proveedor de servicios de movilización UBER recientemente ha sufrido una vulneración de sus
servicios al revelar información de usuarios. Debido a ello se ha pedido hacer una
documentación y revisión de los servicios desplegados. Para ello se ha hecho un resumen
descriptivo de la arquitectura la cual pasó de ser monolítica el 2014 a una arquitectura orientada
a servicios. Uber también ofrece servicios de delivery de comida y de paquetes.
Objetivo:
El objetivo principal de Uber es mantener un servicio optimizado que haga coincidir las
necesidades de los clientes con los proveedores de servicio de transporte.
Tomando en cuenta el servicio original de transporte de pasajeros y a partir de ahí extenderlo a
delivery de comida y paquetes se ha levantado la siguiente información la cual se pide
documentar adecuadamente.
•
•
Los usuarios principales de los servicios son los conductores y los clientes que solicitan
los servicios.
Los servicios de Uber también deben ser gestionados por los operadores de la
empresa que realizan el enrolamiento de conductores, los operadores hacen
verificación de las referencias que califiquen a los conductores más idóneos, o
atienden a las necesidades de soporte de conductores y clientes.
Aplicaciones principales
Las aplicaciones principales que se utilizan son:
Centro de activación presencial: Es la aplicación web que utilizan los operadores que dan
soporte a clientes y conductores, está desarrollada en python.
APP Pasajeros: Es la aplicación que utiliza un pasajero que toma un servicio, desarrollada en
java y scala.
App Conductores: Es la aplicación que utilizan los conductores que ofrecen los servicios de
transporte, desarrollada en java y scala.
Detrás de estas aplicaciones hay un backend que está conformado por servicios que permiten
optimizar la asignación de un conductor a un solicitante de servicio, estos servicios están
desarrollados en java, Node, Python y Go. Para llegar a los servicios se utiliza un API Gateway
que rutea la funcionalidad de la aplicación al servicio correspondiente.
Servicio de gestión de demanda de pasajeros (Riders)
Este servicio está compuesto por varias instancias de un microservicio que deja la información
en un broker Apache Kafka que registra la geolocalización de un pasajero que solicita un servicio
Uber (lugar de recojo) y la geolocalización del lugar de destino.
Servicio de gestión de oferta de conductores (Cabs)
Este servicio tiene varias instancias de un microservicio que registra la geolocalización de los
conductores cada 4 segundos para hacer coincidir la ubicación del pasajero con los conductores
más cercanos que tengan alcance al lugar de destino. La información se deja en un broker
Apache Kafka que va registrando la geolocalización del conductor en tiempo real.
Servicio de despacho operacional (Disco)
Este microservicio se encarga de minimizar tiempo de espera, reducir la conducción extra y
reducir consumo para el conductor. La función principal es identificar al cliente con la lista de
conductores más cercanos y hacer la oferta de servicios para que sea tomada por el conductor.
Servicio S3 índice jerárquico hexagonal de Uber (S3)
Este servicio es una iniciativa open source de la empresa y es el servicio más importante ya que
calcula la distancia del pasajero a los conductores más cercanos, este cálculo puede llegar a ser
muy complejo y toma muchos recursos sumados a la cantidad de conductores pudiendo llegar
a impactar los tiempos de procesamiento. Debido a ello el servicio S3 de Uber es un servicio que
divide el mapa de la tierra en hexágonos los cuales están agrupados hasta en 16 niveles de
tamaño, uno puede hacer zoom del nivel más amplio al más detallado. Cada hexágono está
mapeado en una base de datos y cuando se desplaza un conductor se identifica en que hexágono
se encuentra y se busca el hexágono donde se encuentra el cliente, cuando se busca a los
conductores cercanos sólo se busca a aquellos que se encuentran en el mismo hexágono. A
partir de ahí se mapea el desplazamiento por proximidad. Este algoritmo acelera mucho la
búsqueda de conductores en las proximidades de un pasajero y reduce los tiempos de
procesamiento. El Microservicio está hecho en python. Este servicio utiliza la información de
conductores, pasajeros y le proporciona al servicio DISCO la información necesaria para
optimizar el servicio.
Finalmente esta configuración se aplica a cada región(continente) donde tiene presencia UBER
Servicio de almacenamiento de información
Las bases de datos deben tener capacidad para escalar horizontalmente, de esta manera Uber
puede agregar más servidores. Uber utiliza bases de datos No SQL para almacenar la
información como MongoDB para los brokers Apache Kafka, Cassandra (Disco y S3) y en menor
cantidad MySQL con almacenamiento Json para información procesada por servicios externos.
No se tiene un log de accesos detallado de usuarios UBER
Servicios externos
Se utiliza servicios de pago con Paypal, Mastercard, Visa y los servicios de Google Maps para
hacer actualizaciones a la red S3 de Uber.
Desde el año 2017 Uber hizo pública la información recolectada de tráfico, esta iniciativa fue
reconocida por algunos grupos de usuarios y otros no se sintieron a gusto debido a la
privacidad de la información.
Hackeo de Uber
Recientemente se informó que la infraestructura de UBER fue vulnerada por un acceso no
autorizado que reveló información de conductores y clientes de la empresa, para ello se utilizó
ingeniería social mediante correos que introdujeron programas que permitieron el acceso a las
aplicaciones de los centros de activación presencial.
Previamente Uber implementó el análisis de logs para hacer seguimiento de:
• Seguimiento de API http
• Uso de perfil de usuarios
• Recolección de feedback y comentarios
• Promoción de cupones
• Detección de fraude
• Fraude de pagos
• Abuso de conductores
• Seguimiento histórico de cuentas comprometidas por hackers
Download