Professional Documents
Culture Documents
96887
ME28
INTRODUCCIÓN
El objetivo principal de esta actividad es definir los sistemas con los que cuenta una
empresa en la ejecución de sus actividades en los departamentos que la integran.
A partir de unas semanas incursioné en el mundo Uber como conductora, por lo que en el
presente trabajo desarrollo los sistemas que utiliza la aplicación, la cual está conformada
por una mezcla de herramientas de software que hacen de esta aplicación una de las más
eficientes en lo que al servicio de traslado se refiere.
Por lo que el desarrollo de las aplicaciones del 2º punto estará basados en algunas de los
softwares desarrollados para las aplicaciones que integra el sistema de uber y que son las
que de manera directa ocupo, aunque parezca que es una sola aplicación.
De acuerdo a la investigación realizada, encontré una plataforma propia para brindar los
servicios parecidos a los de Uber, sin embargo la información referente a sus
características y costo están limitadas a que personal de la plataforma me dé respuesta.
1. Identificar principales sistemas de información o software
empleados por Uber, detallando sus características.
Emplean Redis tanto para el almacenamiento en caché como para las colas. Twemproxy
proporciona escalabilidad de la capa de almacenamiento en caché sin sacrificar la tasa de
aciertos de la memoria caché a través de su algoritmo hash consistente. Los trabajadores
de Celery procesan las operaciones de flujo de trabajo asincrónico utilizando esas
instancias de Redis.
Logging
Los servicios de Uber interactúan entre sí y con dispositivos móviles, y esas interacciones
son valiosas para usos internos, como la depuración, así como casos de negocios, como
los precios dinámicos. Para el registro, utilizamos múltiples clústeres Kafka, y los datos se
archivan en Hadoop y / o en un servicio web de almacenamiento de archivos antes de que
caduque en Kafka. Estos datos también son ingeridos en tiempo real por varios servicios
e indexados en una pila ELK para búsquedas y visualizaciones (ELK significa
Elasticsearch, Logstash y Kibana).
Aprovisionamiento de aplicaciones
Se utilizan contenedores Docker en Mesos para ejecutar sus microservicios con
configuraciones consistentes de manera escalable, con la ayuda de Aurora para servicios
de larga ejecución y trabajos cron. Uno de sus equipos de infraestructura, Application
Platform, produjo una biblioteca de plantillas que crea servicios en imágenes de Docker
que pueden enviarse.
Los servicios heredados usan instancias HAProxy locales para enrutar JSON a través de
solicitudes HTTP a otros servicios, con proxys NGINX de servidor front-end web a los
servidores en la parte de atrás. Esta forma bien establecida de transferir datos hace que
la solución de problemas sea fácil, lo que fue crucial en varias migraciones a sistemas
recientemente desarrollados en el último año.
Protocolos alternativos a HTTP (como SPDY, HTTP / 2 y TChannel) junto con lenguajes
de definición de interfaz como Thrift y Protobuf ayudarán a evolucionar nuestro sistema en
términos de velocidad y confiabilidad. Ringpop, una capa hash consistente, brinda
cooperación y autocuración al nivel de aplicación. Hyperbahn permite que los servicios
encuentren y se comuniquen con otros de manera sencilla y confiable, incluso cuando los
servicios se programan dinámicamente con Mesos.
En lugar de sondeos arcaicos para ver si algo ha cambiado, mueven a un patrón pub-sub
(publicando actualizaciones para los suscriptores). HTTP / 2 y SPDY habilitan más
fácilmente este modelo de inserción.
Desarrollo e implementación
Phabricator potencia una gran cantidad de operaciones internas, desde la revisión del
código hasta la documentación y la automatización de procesos, a través del código en
OpenGrok. Para los proyectos de código abierto de Uber, se ha usado GitHub para dar
seguimiento a problemas y revisiones de códigos.
Idiomas
Adoptaron Go y Java por razones de alto rendimiento. Brindaron soporte de primera clase
para estos idiomas. Java aprovecha el ecosistema de código abierto y se integra con
tecnologías externas, como Hadoop y otras herramientas de análisis. Go brinda eficiencia,
simplicidad y velocidad de ejecución.
Reemplazaron el código Python más antiguo a medida que dividieron la base del código
original en microservicios. Un modelo de programación asíncrono proporciona un mejor
rendimiento. Usan Tornado con Python, pero el soporte nativo de Go para la concurrencia
es ideal para la mayoría de los nuevos servicios críticos para el rendimiento.
Y, por supuesto, aquellos que trabajan en la parte superior de la pila escriben en idiomas
que van más allá de Java, Go, Python y Node.
Pruebas
Para manejar las demandas entorno de producción, han desarrollado dos herramientas
internas: Hailstorm y uDestroy. Hailstorm impulsa las pruebas de integración y simula la
carga pico durante las horas de menor actividad, mientras que uDestroy rompe
intencionalmente las cosas para mejorar las fallas inesperadas.
Confiabilidad
Telemetría
Detección de anomalías
Cartografía
Ambas aplicaciones son de carácter libre ya que no tienen un costo, de igual forma los
softwares de MySql y PostgreSql que emplea Uber son gratuitos, sin embargo Uber como
lo he mencionado ha invertido en el desarrollo de su plataforma, sin embargo, aunque
aparentemente sin costo, se deben pagar los servicios por el uso de datos; recurso
necesario ya que la información se encuentra en la nube.
De igual manera es lógico pensar que el uso de la aplicación implica un costo, ya que al
realizar un viaje al final se desglosa la ganancia obtenida como conductor y la parte que le
corresponde a Uber.
3. De la herramienta seleccionada, busque alguna opción Open
Source, de dicha herramienta y realice un cuadro comparativo de
ambas herramientas haciendo énfasis en los beneficios y limitantes
que le proporciona el uso de dichos programas.
WayCab
Uber
Open source
Uber se ejecuta en un modelo de nube híbrida, utilizando una
combinación de proveedores de la nube y múltiples centros de
datos activos:
MySQL y Postgres, y Cassandra
Kafka y Hadoop.
ELK (ELK significa Elasticsearch, Logstash y Kibana).
Docker en Mesos.
HAProxy, JSON
Proxys NGINX
Código OpenGrok.
GitHub.
Software y No se obtuvo la información
Combinación Packer, Vagrant, Boto y Unison
aplicación solicitada, respecto a los
Clusto.
softwares empleados en la
Puppet
plataforma
uBlame
Whober
Sphinx.
OSX
Linux con Debian Jessie.
Lenguajes Python, Node.js, Go y Java
Hailstorm y uDestroy. Hailstorm
Nagios
M3 en Go
Map Services
Gurafu, μETA, ETA basados en DropWizard.
La limitante con WayCab es que es una plataforma independiente de la cual se debe uno
sujetar a la disposición de quienes la atienden para recibir respuesta respecto a la
aplicación, en realidad debe uno conocer más sobre su uso y costos, así como la forma
en la que debe uno ingresarla o utilizarla de forma independiente de otras ofertas en
nuestro país, es necesario conocer jurídicamente el movimiento de estas empresas antes
de aventurarse a la contratación de una plataforma así para fines de crear una empresa
semejante a la de Uber.
Las ventajas de Uber es que funciona en cierta forma como un Out soursing, ya que de
manera automática sí el cliente así lo requiere formula las facturas, de tal modo que no es
necesario que uno como conductor las deba elaborar de forma independiente.
Otro punto a favor es que las ganancias son depositadas de manera automática a la
cuenta bancaria registrada.
Culebro, M., Gómez, W.G. & Torres, S. (2006). Software libre vs software propietario.
Ventajas y desventajas. (pp.47-58). México: Creative Commons.
Lozinski, Lucie. (2016). The Uber Engineering Tech Stack, Part I: The Foundation. 14 de
mayo de 2018, de Uber Sitio web: https://eng.uber.com/tech-stack-part-one/
https://waycabplus.com