Resumen del Proyecto
Kera es una plataforma de Software como Servicio (SaaS) de alquiler de coches multi-tenant y de alta disponibilidad. Diseñé un entorno de microservicios dividido: un núcleo de Laravel para gestionar la administración compleja de agencias (impuestos, facturas, infracciones) y un servicio de Go de alto rendimiento dedicado exclusivamente a la telemática de flotas en tiempo real y la ingesta de datos GPS.
Logros de Arquitectura
1. Administración empresarial multi-tenant (Laravel) Las agencias requieren un aislamiento lógico estricto dentro de una infraestructura compartida. * Diseñé un esquema de PostgreSQL de base de datos única utilizando aislamiento lógico, garantizando cero fugas de datos entre agencias. * Desarrollé módulos CRUD completos para la gestión de vehículos, el cálculo de impuestos y la generación automatizada de facturas en PDF enviadas a través de workers de cola de Redis.
2. Telemática en tiempo real y Hub IoT (Go) [En progreso] El seguimiento de flotas en vivo requiere una ingesta de datos de alta frecuencia que las arquitecturas tradicionales de PHP tienen dificultades para manejar. * Diseñé un microservicio dedicado en Go para manejar las coordenadas GPS entrantes y la telemetría de vehículos IoT. * *Nota: Esta función de telemática está actualmente en progreso. Estoy investigando activamente modelos de integración de hardware, ya que un despliegue en producción requiere instalar unidades de rastreador GPS físico con tarjetas SIM activas dentro de cada vehículo.* * Utilicé flujos de Redis Pub/Sub para transmitir actualizaciones de ubicación en tiempo real al panel del cliente a través de WebSockets sin bloquear la puerta de enlace de API principal de Laravel.
3. Motor de disponibilidad de flotas y control de concurrencia Las reservas duplicadas son un error fatal en el alquiler de coches. * Creé un procesador de reservas basado en colas de mensajes para serializar las comprobaciones de estado de los vehículos entrantes. * Utilicé el bloqueo distribuido de Redis (Redlock) para evitar condiciones de carrera durante el proceso de pago, asegurando una consistencia estricta en toda la arquitectura distribuida.