Este fue un proyecto muy interesante relacionado con el mundo del motor en el que lideré un equipo técnico de 4 personas en el diseño y desarrollo de una completo software enfocado a realizar subastas de coches tanto de forma online como de forma presencial en una nave industrial especialmente acondicionada para esta misión. Lamentablemente, a pesar de lo bonito del proyecto y de tratarse de una startup con mucho potencial y un gran equipo humano de casi 20 personas, la aplicación no pudo llegar a utilizarse en un escenario real porque la empresa se disolvió antes de poder empezar su verdadera andadura por diversos problemas a nivel comercial y de gestión.
Sin embargo, a nivel técnico la aplicación se implementó y se desplegó completamente, cumpliendo muy satisfactoriamente los requisitos y objetivos planteados inicialmente. Se tomaron como modelos principalmente las aplicaciones de subastas de automóviles de BCA y de Autorola y también otras como CarsOnTheWeb, Manheim, EurocarBid, Subastacar, Subasto mi Coche, etc. Creo humildemente que conseguimos mejorarlas en varios aspectos.
Gestión completa de las subastas en tiempo real
Nuestro principal reto tecnológico era conseguir un sistema de gestión de subastas que permitiera aceptar pujas de forma simultánea tanto de potenciales compradores ubicados en cualquier localización geográfica a través de Internet, como de los propios asistentes al evento que acudían al evento de la subasta de forma presencial y que pujaban directamente en sala.
Para conseguirlo se desarrolló el motor en tiempo real utilizando websockets y se hizo un gran esfuerzo de optimización no sólo a nivel de websockets, sino de toda la pila tecnológica implicada, desde el sistema operativo o las comunicaciones en red hasta la base de datos o el motor de ejecución para lograr ofrecer unos tiempos de respuesta iniciales inferiores a 100 ms desde que un usuario pulsaba el botón de pujar hasta que dicha puja quedaba recogida en el sistema y actualizaba el precio actual y otros contadores y datos de interés del coche que se estaba subastando en ese momento. Todo ello debía realizarse además con cientos de usuarios pujando simultáneamente, por lo que hubo que implementar un sofisticado sistema de encolamiento y tratamiento de pujas, así como de resolución de conflictos entre las mismas.
Error: Your Requested widget " ai_widget-6" is not in the widget list.
- [do_widget_area above-nav-left]
- [do_widget_area above-nav-right]
- [do_widget_area footer-1]
- [do_widget id="wpp-4"]
- [do_widget_area footer-2]
- [do_widget id="recent-posts-4"]
- [do_widget_area footer-3]
- [do_widget id="recent-comments-3"]
- [do_widget_area footer-4]
- [do_widget id="archives-4"]
- [do_widget_area logo-bar]
- [do_widget id="oxywidgetwpml-3"]
- [do_widget_area menu-bar]
- [do_widget id="search-3"]
- [do_widget_area sidebar]
- [do_widget id="search-4"]
- [do_widget id="ai_widget-2"]
- [do_widget id="categories-5"]
- [do_widget id="ai_widget-3"]
- [do_widget id="ai_widget-4"]
- [do_widget id="ai_widget-5"]
- [do_widget_area sub-footer-1]
- [do_widget id="text-4"]
- [do_widget_area sub-footer-2]
- [do_widget_area sub-footer-3]
- [do_widget_area sub-footer-4]
- [do_widget_area upper-footer-1]
- [do_widget id="search-2"]
- [do_widget id="recent-posts-2"]
- [do_widget id="recent-comments-2"]
- [do_widget id="archives-2"]
- [do_widget id="categories-2"]
- [do_widget id="meta-2"]
- [do_widget_area upper-footer-2]
- [do_widget_area upper-footer-3]
- [do_widget_area upper-footer-4]
- [do_widget_area widgets_for_shortcodes]
- [do_widget id="search-5"]
- [do_widget id="ai_widget-6"]
- [do_widget_area wp_inactive_widgets]
- [do_widget id="wpp-2"]
- [do_widget id="text-1"]
- [do_widget id="recent-posts-3"]
- [do_widget id="categories-3"]
- [do_widget id="archives-3"]
- [do_widget id="icl_lang_sel_widget-3"]
Aún así el sistema estaba preparado para rebajar aún más los tiempos de respuesta cuando se hubiera puesto en producción, ya que la fase de pruebas y certificación se realizó con el servidor de pujas emplazado en la zona eu-west-1 de Amazon Web Services. Es decir, el servidor se encontraba ubicado en Irlanda y las pujas se realizaban mayoritariamente desde Madrid y otras partes de España, y esto introducía una latencia de red innecesaria de 50-60 ms que estaba previsto minimizar emplazando el subsistema de pujas en Madrid. Otras mejoras estaban previstas para alcanzar el objetivo de 30 ms de tiempo de respuesta que me había planteado para la salida a producción de la aplicación.
Arquitectura multicapa
Otro de los principales objetivos de diseño del proyecto era conseguir una arquitectura desacoplada que permitiera separar completamente y de forma efectiva las capas de presentación, lógica de negocio y datos, de forma que la misma base de datos de coches, subastas, fabricantes, clientes, proveedores, etc. pudiera ser utilizada tanto por nuestro software de subastas como por diversas aplicaciones corporativas, como CRM y fuerza de ventas, herramientas de tasación, gestión interna de las entradas y salidas de vehículos así como de su mantenimiento, apps móviles, distintos microservicios, dispositivos electrónicos conectados (Raspberry Pi) con distintos cometidos, etc.
Error: Your Requested widget " ai_widget-6" is not in the widget list.
- [do_widget_area above-nav-left]
- [do_widget_area above-nav-right]
- [do_widget_area footer-1]
- [do_widget id="wpp-4"]
- [do_widget_area footer-2]
- [do_widget id="recent-posts-4"]
- [do_widget_area footer-3]
- [do_widget id="recent-comments-3"]
- [do_widget_area footer-4]
- [do_widget id="archives-4"]
- [do_widget_area logo-bar]
- [do_widget id="oxywidgetwpml-3"]
- [do_widget_area menu-bar]
- [do_widget id="search-3"]
- [do_widget_area sidebar]
- [do_widget id="search-4"]
- [do_widget id="ai_widget-2"]
- [do_widget id="categories-5"]
- [do_widget id="ai_widget-3"]
- [do_widget id="ai_widget-4"]
- [do_widget id="ai_widget-5"]
- [do_widget_area sub-footer-1]
- [do_widget id="text-4"]
- [do_widget_area sub-footer-2]
- [do_widget_area sub-footer-3]
- [do_widget_area sub-footer-4]
- [do_widget_area upper-footer-1]
- [do_widget id="search-2"]
- [do_widget id="recent-posts-2"]
- [do_widget id="recent-comments-2"]
- [do_widget id="archives-2"]
- [do_widget id="categories-2"]
- [do_widget id="meta-2"]
- [do_widget_area upper-footer-2]
- [do_widget_area upper-footer-3]
- [do_widget_area upper-footer-4]
- [do_widget_area widgets_for_shortcodes]
- [do_widget id="search-5"]
- [do_widget id="ai_widget-6"]
- [do_widget_area wp_inactive_widgets]
- [do_widget id="wpp-2"]
- [do_widget id="text-1"]
- [do_widget id="recent-posts-3"]
- [do_widget id="categories-3"]
- [do_widget id="archives-3"]
- [do_widget id="icl_lang_sel_widget-3"]
Para ello opté por implementar la arquitectura que se muestra a continuación basada en una API REST y en los ya mencionados websockets para actuar como interfaz de separación entre las capas de presentación y lógica de negocio:
Base tecnológica
Las tecnologías utilizadas para dar soporte a todos estos requerimientos fueron las siguientes:
Tecnología empleada | |
Servidores de subastas y pujas | Instancias EC2 en Amazon Web Services (AWS) |
Sistema operativo | Linux (Ubuntu 14.04 LTS) |
Backend / motor de ejecución | PHP (ReactPHP y Symfony 2.6) |
API REST | Symfony 2.6 + FOSRestBundle |
Base de datos | MySQL 5.6 |
Frontales web | AngularJS 1.3 + Restangular |
Puestos de subastador y anotador y pantallas de sala
Desde el principio se planteó como requisito ineludible que la interfaz de usuario de la aplicación fuera responsive para que pudiera ser utilizada desde cualquier tipo de dispositivo móvil o tableta, además de en los distintos equipos utilizados en sala para los puestos del subastador, anotador y pantallas informativas de sala desde las que se podía seguir en todo momento la subasta en curso.
Panel de administración interna
Para gestionar todo lo que ocurría entre bastidores durante la jornada de celebración de las subastas, pero también en las jornadas previas y posteriores con la preparación de las mismas y la gestión de las ventas realizadas, se disponía de un completo panel de administración:
Sitio web público
Como he comentado al principio, además de tratarse de subastas presenciales, se debía dar acceso a pujadores externos para que pudieran registrarse a las distintas subastas disponibles, seleccionar y marcar como favoritos los coches que les resultaran más interesantes, pujar por dichos vehículos cuando estuvieran subastándose en sala y pudieran finalmente efectuar el proceso de compra completo de los coches una vez que les fueran adjudicados. Para ello se tuvo que desarrollar un sitio web público muy potente que permitiera llevar a cabo todas estas operaciones.
5 comentarios
Unirte a la conversaciónLucas - 10/06/2018
Hola, quería ver online el software de subastas online, me interesa el producto. Soy de argentina. Gracias
Alexis Do Nascimento - 08/02/2019
Me interesa el producto. ¿Podemos coordinar una demo?
Ferhabe Raziel - 17/06/2019
Hola, ¿dónde o cómo obtener esta funcionalidad e integrarla en mi solución web?
Leo - 08/11/2019
Estoy interesado en conocer si el producto se puede contratar/licenciar a pesar de no haber sido usado en el caso de los coches. gracias
Jorge - 31/12/2019
Buenos dias , estoy interesado como puedo contactar,
Gracias