GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Aplicación web para subastas de coches online y presenciales

5 comentarios

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, ManheimEurocarBidSubastacarSubasto mi Coche, etc. Creo humildemente que conseguimos mejorarlas en varios aspectos.

BCA bidding

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.

15-FRONTAL-subastas-en-directo

Seguimiento de subastas en directo a través de Internet

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.

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.

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:

Arquitectura conceptual 3-tier basada en API RESTBase 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.

08-BACKOFFICE-pantalla-del-subastador

Pantalla del subastador

09-BACKOFFICE-pantalla-del-anotador

Pantalla del anotador

10-BACKOFFICE-pantalla-de-sala-hd-1920x1080

Pantallas de sala

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:

01-BACKOFFICE-escritorio

Inicio - Mi escritorio

02-BACKOFFICE-listado-vehículos

Listado de vehículos

07-BACKOFFICE-edición-vehículo

Formulario de edición de vehículos

03-BACKOFFICE-creación-de-cuenta

Formulario de creación de cuentas de clientes

05-BACKOFFICE-detalle-cuenta-desde-tablet

Vista de detalle de una cuenta de cliente (tablet)

06-BACKOFFICE-listado-cuentas-desde-móvil

Listado de cuentas de cliente (móvil)

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.

17-FRONTAL-detalle-de-subasta

Detalle de una subasta

16-FRONTAL-calendario-de-subastas

Calendario de subastas

15-FRONTAL-subastas-en-directo

Seguimiento de subastas en directo a través de Internet

14-FRONTAL-registro-usuarios-desde-móvil

Registro de usuarios desde móvil

13-FRONTAL-detalle-cuenta

Detalle de una cuenta de cliente corporativo con varios pujadores autorizados

12-FRONTAL-registro-usuarios

Registro de usuarios profesionales



 

Sobre el autor

Daniel López Azaña
Arquitecto de soluciones Cloud AWS & Linux Sysadmin Freelance

Emprendedor, generador de ideas y mente inquieta. Apasionado de las nuevas tecnologías, especialmente de los sistemas Linux y del software libre. Me gusta escribir además sobre actualidad tecnológica, Cloud Computing, AWSi, DevOps, DevSecOps, seguridad, desarrollo web y programación, SEO, ciencia, innovación, emprendimiento, etc.

DanielAplicación web para subastas de coches online y presenciales

Artículos relacionados

5 comentarios

Unirte a la conversación
  • Lucas - 10/06/2018 responder

    Hola, quería ver online el software de subastas online, me interesa el producto. Soy de argentina. Gracias

  • Alexis Do Nascimento - 08/02/2019 responder

    Me interesa el producto. ¿Podemos coordinar una demo?

  • Ferhabe Raziel - 17/06/2019 responder

    Hola, ¿dónde o cómo obtener esta funcionalidad e integrarla en mi solución web?

  • Leo - 08/11/2019 responder

    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 responder

    Buenos dias , estoy interesado como puedo contactar,
    Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada.