Tráfico y transporte

Mercado de autobuses

La ingeniería de Software ha intentado por todos los medios simplificar y organizar los procesos de arquitectura, diseño, construcción y mantenimiento de sistemas, innumerables tácticas, métodos y metodologías han salido a flote como CMMi y SCRUM pero no son suficientes y al implementarlas como una ley absoluta terminan entorpeciendo la evolución de un sistema.

Nuestra compañía por varios años se encontró con problemas habituales en la industria tradicional. Gran parte del problema parte de la generación de equipos de trabajo enmarcados a una capa especializada del sistema, como lo son TICs, Base de Datos, diseño y construcción de interfaces de usuario, diseño y construcción de APIs de comunicación y sólo unos pocos equipos enfocados en la lógica de negocio a implementar.

El problema está en que una sola parte de la solución, como lo es un módulo simple de reportes, es transversal a todos estas capas, por ende transversal a todos los equipos dado que un módulo requiere alojar datos en un sistema de base de datos, ser desplegado en una infraestructura, exponer sus servicios en un la API y ser visible desde la interfaz de usuario. Esto conlleva a requerir gran interacción entre los equipos provocando que la solución evolucione de una forma lenta y peor aún, cada equipo NO piensa en lo que es mejor para el módulo sino en que es mejor para su capa. Las áreas de TICs y Base de datos son un ejemplo icónico para visualizar este problema ya que aún sin diseñar el módulo ni conocer sus necesidades dictaminan las plataformas y base de datos a usar.

La ingeniería de Software ha intentado por todos los medios simplificar y organizar los procesos de arquitectura, diseño, construcción y mantenimiento de sistemas, innumerables tácticas, métodos y metodologías han salido a flote como CMMi y SCRUM pero no son suficientes y al implementarlas como una ley absoluta terminan entorpeciendo la evolución de un sistema.

Nuestra compañía por varios años se encontró con problemas habituales en la industria tradicional. Gran parte del problema parte de la generación de equipos de trabajo enmarcados a una capa especializada del sistema, como lo son TICs, Base de Datos, diseño y construcción de interfaces de usuario, diseño y construcción de APIs de comunicación y sólo unos pocos equipos enfocados en la lógica de negocio a implementar.

El problema está en que una sola parte de la solución, como lo es un módulo simple de reportes, es transversal a todos estas capas, por ende transversal a todos los equipos dado que un módulo requiere alojar datos en un sistema de base de datos, ser desplegado en una infraestructura, exponer sus servicios en un la API y ser visible desde la interfaz de usuario. Esto conlleva a requerir gran interacción entre los equipos provocando que la solución evolucione de una forma lenta y peor aún, cada equipo NO piensa en lo que es mejor para el módulo sino en que es mejor para su capa. Las áreas de TICs y Base de datos son un ejemplo icónico para visualizar este problema ya que aún sin diseñar el módulo ni conocer sus necesidades dictaminan las plataformas y base de datos a usar.

Un contratiempo al tener este tipo de equipos es la dificultad para analizar, entender y diseñar una solución entre tantos equipos. Cualquier requerimiento, por pequeño que sea, tendría que pasar por todos los equipos para que fuese diseñado de una forma óptima. Al ser esto imposible, sólo el equipo que diseña y construye la lógica de negocio es quien entiende la necesidad final, el resto de equipos al no entender totalmente el requerimiento termina por construir sus capas de cualquier forma, por esto es que una solución aunque funciona bien, no siempre es fácil de usar por el usuario, ni es fácil de interoperar con otros sistemas y los costos de mantenimiento y licenciamiento suben por no tener la autonomía de usar herramientas acordes.

En nuestro caso, antes de idear y construir nuestro Framework de MicroServicios, nos encontramos con grandes ineficiencias, evitando crear soluciones de forma ágil gracias al reproceso entre las diferentes áreas o equipos. En otras palabras, encontramos que nuestras soluciones y procesos realmente eran monolíticos, con altas dependencias y cero autonomía.

Una vez aceptado el problema, nos concentramos en aplicar los conceptos de MicroServicios como estrategia empresarial aplicada a nuestras soluciones, procesos y equipos.

Nos hemos especializado en MicroServicios por varios años, hemos aprendido de las falencias y brechas actuales, pero más importante aún, hemos madurado y construido un marco para afrontar soluciones de gran complejidad y tamaño con equipos autónomos, minimizando el tiempo y recursos necesarios y maximizando la eficiencia de nuestras soluciones.

Convergencia de métodos, metodologías, conceptos, experiencias y tecnologías que nos permiten tener equipos autónomos, responsables de absolutamente todos los aspectos de un servicio con herramientas suficientes para llevar por sí mismo una solución desde el diseño hasta el despliegue de la misma. Esto ha minimizado por completo la cantidad de personas, tiempo y recursos necesarios para generar una solución.

Logramos tener inclusive individuos capaces de generar un servicio específico simple en 3 o 4 días. Entendiéndose el servicio de forma integral: Interfaz de usuario, API decomunicaciones, lógica de negocio, estructura de datos, pruebas y despliegue.

EL punto clave que nos diferencia de la industria tradicional es haber acogido MicroServicios como un concepto transversal en nuestra organización, generando herramientas propias y equipos autónomos capaces de trabajar en una misma solución en paralelo sin problemas de dependencia mutua.

A nivel de desarrollo de software, nos permite abarcar grandes soluciones enfocándonos en pequeños módulos de software autónomos, intercambiables, de fácil construcción y mantenimiento.

Hemos alineado la estructura organizacional y la arquitectura del software con la estrategia y visión empresarial.

Gracias a la adopción de DDD (diseño guiado por el dominio), podemos visualizar a grandes rasgos la solución completa, demarcar de forma clara los límites y evaluar por cada microservicio identificado que tan complejo es y qué tan importante es para la visión estratégica organizacional, es decir, identificar si el servicio hace parte del factor diferencial del negocio. Evaluando esto se puede determinar la prioridad de cada servicio y si justifica involucrar un equipo de trabajo o, por lo contrario, se debe tercerizar al no representar un hito importante para el negocio.

NebulaE, en su Framework de MicroServicios, alinea completamente la estructura organizacional y la arquitectura de software con la visión y misión de la solución general. Nos concentramos en el diseño y construcción de servicios claves del negocio evitando al máximo gastar recursos y tiempo en módulos que, aunque sean importantes, no son de gran impacto para el negocio, por ejemplo la autenticación de usuarios.

Con la ayuda de DDD dividimos una solución compleja en MicroServicios autónomos los cuales deben integrarse a la solución de forma fácil y transparente a tal punto de poderlos tomar de una plataforma y llevarla a otra. Para lograr esto concebimos cada MicroServicio como un ente reactivo, es decir, que reacciona a eventos y emite eventos. Event sourcing visualiza los estados del sistema como una colección de eventos en el tiempo, cada MicroServicio genera y/o escucha estos eventos, reacciona a ellos y ejecuta las rutinas necesarias.

Esta técnica es tan potente que aún cuando un MicroServicio no fue pensado desde el inicio de la solución, puede utilizar todos los eventos previamente existentes para analizarlos y dar resultados como si hubiese estado desplegado desde el primer día.

Cada equipo de trabajo es autónomo y responsable por un servicio en todos sus aspectos. Los conocimientos y habilidades del equipo incrementan significativamente para lograr esto. Esta nueva clase de personas o equipos los llamamos desarrolladores de ciclo completo, con habilidades para diseñar, desarrollar interfaces de usuario, APIs y lógica de negocio, probar, desplegar y soportar el MicroServicio.

Para reducir la curva de aprendizaje y optimizar el tiempo, hemos creado herramientas dentro de nuestro FrameWork para la creación de MicroServicios, despliegues y modelamiento del flujo para la integración y despliegue continuo.

Actualmente, nuestros equipos trabajan en paralelo para una misma solución, generando entregas parciales de cada MicroServicio varias veces al día sin requerir coordinación o intervención de otras personas.

Al ser ellos los creadores y mantenedores de un MicroServicio los tiempos de respuesta ante fallas han disminuido significativamente.

El diseño de una solución nativa para nube (pública o privada) conlleva a una arquitectura liviana aprovechando características propias de la nube para maximizar calidades sistémicas. Nuestro FrameWork fabrica componentes contenerizados capaces de iniciar en cinco segundos lo cual permite diseñar un sistema elástico capaz de escalar o desescalar en cuestión de segundos según la oferta y demanda.

Dividir un sistema en decenas o centenas de MicroServiciospuede exponer millares de vulnerabilidades del sistema. La implementación de mejores prácticas es vital para proteger el sistema. Para suplir esta necesidad nos basamos en dos estándares OAuth y JWT. Mientras OAuth autoriza e identifica cada usuario, JWT garantiza un token verificable en cada capa de los MicroServicios para corroborar que quien esté intentando realizar acciones sea un usuario privilegiado.

Nuestra investigación en búsqueda de MicroServicos nos ha llevado a desarrollar nuestro propio FrameWork para ayudarnos en la construcción de los mismos. Dicho FrameWork consta de conocimiento, librerías de implementación de patrones de MicroServicios, herramientas para la generación de código, automatización de rutinas complejas como componer una interfaz de usuario utilizando las micro-interfaces de usuarios de cada MicroServicio y creación ambientes de desarrollos locales.

  • Independencia y autonomía total de un equipo para desarrollar funcionalidades en el sistema.
  • Disminuir el número de recursos necesarios para implementar una solución a gran escala.
  • Eliminar la burocracia empresarial entre áreas.
  • Lograr crear una Plataforma Base de MicroServicios en un par horas.
  • Lograr crear un MicroServicio Base en segundos.
  • Crear ambientes realmente independientes y locales de desarrollo en minutos.
  • Portar MicroServicios de una Plataforma a otra en minutos.
  • Posibilidad de utilizar lenguajes de programación o base de datos diferentes por MicroServicio.
  • Minimizar la complejidad de las soluciones a tal punto de poder crear un MicroServicio con una sóla persona.
  • Soluciones estables al tratar fallos de MicroServicios como casos aislados los cuales no interrumpen la operación del sistema general.
  • Portabilidad de soluciones entre nubes privadas (OpenShift) y públicas (Google Cloud Platform).
  • Diseño y construcción de MVPs (Producto Mínimo Viable) en un par de meses.
  • Plataforma para Recarga y Pago de apuestas deportivas.
  • Plataforma para venta de productos virtuales de consumo masivo: telefonía celular, Directv, Microseguros, pines, etc. (Redes de bajo valor; Red de efectivo).
  • Plataforma para recepción y entrega de pagos de productos.
  • Plataforma para la gestión de dispositivos (HW).
  • Plataforma para la gestión del transporte de empleados.
  • Plataforma para la gestión Integral de petición y asignación de servicios en el transporte público individual.
  • Plataforma para la Asignación de carga en transporte de Carga.
  • Soluciones para escenarios deportivos, colegios, eventos, etc.
  • Gestión de Zonas de Estacionamiento Reguladas (ZER).
  • Dispersión y pagos de nómina.
  • Soluciones de control de flotas.
  • Convergencia de productos y servicios para unidades residenciales, conjuntos, propiedad horizontal.
  • Terminales de transporte.
  • Integración hosterías, hoteles, centros de eventos, etc.
  • Integración ecosistema de turismo.
  • Ecosistema de mascotas (comunidades).
  • Ecosistemas de profesionales que ofertan servicios profesionales.

Más de nuestras soluciones

  • Sistemas de autobuses
  • Centro de control
  • Equipo embarcado
  • Sistema de información al usuario
  • Etc...
  • Redes externas de efectivo
  • Recargas
  • Pagos eWallet
  • Petición y asignación de servicios
  • Etc...
  • Sistemas de recaudo
  • Alcance
  • Equipos
  • Equipos de validación
  • Etc...
  • Base tecnológica
  • Modelo enconómico
  • Somos integrales
  • Experiencia
  • Etc...

Hemos trabajado con

Contamos con su confianza

© todos los derechos reservados 2023

SUBIR });