C贸mo un peque帽o programa convirti贸 una peque帽a oficina en una empresa federal con una ganancia de m谩s de 100 millones de rublos / mes

A fines de diciembre de 2008, fui invitado a uno de los servicios de taxi de Perm para automatizar los procesos comerciales existentes. En general, se me plantearon tres tareas fundamentales:


  • Desarrolle un paquete de software para un centro de llamadas con una aplicaci贸n m贸vil para taxistas y automatice los procesos comerciales internos.
  • Todo ten铆a que hacerse lo antes posible.
  • Para tener su propio software, y no comprarlo a terceros, software que, en el futuro, a medida que se desarrolle el negocio, podr铆a ampliarse de forma independiente a las condiciones del mercado en constante cambio.

En ese momento, no entend铆a c贸mo estaba estructurado este mercado y sus matices, pero, sin embargo, dos cosas eran obvias para m铆. El centro de llamadas debe construirse sobre la base del intercambio de software de c贸digo abierto con asterisco. El intercambio de informaci贸n entre el centro de atenci贸n telef贸nica y la aplicaci贸n m贸vil es esencialmente una soluci贸n cliente-servidor con todos los patrones relevantes para dise帽ar la arquitectura de un proyecto futuro y su programaci贸n.


Despu茅s de una evaluaci贸n preliminar de las tareas, plazos y costos del proyecto, despu茅s de haber acordado todas las preguntas necesarias con el propietario del servicio de taxi, en enero de 2009 comenc茅 a trabajar.


Mirando hacia el futuro, lo dir茅 de inmediato. El resultado fue una plataforma escalable que se ejecuta en m谩s de 60 servidores en 12 ciudades de Rusia y 2 Kazajst谩n. El beneficio total de la empresa fue de m谩s de 100 millones de rublos / mes.


Etapa uno Prototipo


Como en ese momento no ten铆a experiencia pr谩ctica en telefon铆a IP y estaba familiarizado con el asterisco superficialmente como parte de los experimentos "dom茅sticos", se decidi贸 comenzar a trabajar con el desarrollo de una aplicaci贸n m贸vil y una parte del servidor. En el camino, cerrando brechas de conocimiento en otras tareas.


Si con una aplicaci贸n m贸vil, todo estaba m谩s o menos claro. En ese momento, solo se pod铆a escribir en java para tel茅fonos simples con botones, luego, con la escritura de un servidor para clientes m贸viles, la pregunta era algo m谩s complicada:


  • Qu茅 sistema operativo del servidor se utilizar谩;
  • Basado en la l贸gica de que se selecciona un lenguaje de programaci贸n para la tarea, y no al rev茅s, y teniendo en cuenta la reivindicaci贸n 1, qu茅 lenguaje de programaci贸n ser谩 贸ptimo para resolver problemas;
  • Al dise帽ar, era necesario tener en cuenta la alta carga futura esperada en el servicio;
  • Qu茅 base de datos puede garantizar la tolerancia a fallas con cargas elevadas y c贸mo mantener un tiempo de respuesta r谩pido con un aumento en el n煤mero de accesos a la base de datos;
  • El factor determinante fue la velocidad de desarrollo y la capacidad de escalar r谩pidamente el c贸digo
  • El costo del equipo y su mantenimiento en el futuro (una de las condiciones del cliente: el servidor debe estar ubicado en su territorio);
  • El costo de los desarrolladores que ser谩n necesarios en las pr贸ximas etapas del trabajo en la plataforma;

As铆 como muchos otros temas relacionados con el dise帽o y el desarrollo.


Antes de comenzar a trabajar en el proyecto, propuse la siguiente soluci贸n estrat茅gica al propietario del negocio: dado que el proyecto es bastante complejo, su implementaci贸n tomar谩 una cantidad considerable de tiempo, as铆 que primero creo una versi贸n MVP que no requiere tanto tiempo y dinero, pero que le permitir谩 a su compa帽铆a obtener una ventaja competitiva el mercado ya est谩 "aqu铆 y ahora", y tambi茅n ampliar谩 sus capacidades como servicio de taxi. Para m铆, a su vez, una soluci贸n tan intermedia me dar谩 tiempo para dise帽ar m谩s deliberadamente la soluci贸n final y el tiempo para experimentos t茅cnicos. Al mismo tiempo, no se garantizar谩 que la soluci贸n de software implementada est茅 dise帽ada correctamente y posiblemente se rehice radicalmente o se reemplace en el futuro, pero definitivamente realizar谩 la funcionalidad m铆nima necesaria para la "separaci贸n de los competidores". Al fundador del taxi le gust贸 la idea, as铆 que al final lo hicieron.


Las primeras dos semanas las pas茅 estudiando procesos de negocios en la empresa y estudiando el trabajo de un taxi "desde adentro". Se realiz贸 un an谩lisis de negocios, d贸nde, qu茅 y c贸mo automatizar y si es necesario. 驴Qu茅 dificultades y problemas enfrentan los empleados de la empresa? C贸mo resolverlos C贸mo est谩 organizado el d铆a de trabajo por los empleados de la empresa. 驴Qu茅 herramientas usas?


Al final de la tercera semana despu茅s de comenzar a trabajar y estudiar temas interesantes en Internet, teniendo en cuenta los deseos del propietario del negocio, as铆 como mis propios conocimientos y capacidades en ese momento, se decidi贸 utilizar la siguiente pila:


  • Servidor de base de datos: MsSQL (versi贸n gratuita con una limitaci贸n de archivo de base de datos de hasta 4 GB);
  • Desarrollo de un servidor que sirve a clientes m贸viles en Delphi para Windows, ya que ya hab铆a un servidor Windows en el que se instalar谩 la base de datos, y el entorno de desarrollo en s铆 mismo contribuye a un desarrollo r谩pido;
  • Dadas las bajas velocidades de Internet en los tel茅fonos m贸viles en 2009, el protocolo de intercambio entre el cliente y el servidor deber铆a ser binario. Esto reducir谩 el tama帽o de los paquetes de datos transmitidos y, como resultado, aumentar谩 la estabilidad de los clientes que trabajan con el servidor;

Se dedicaron otras dos semanas al dise帽o del protocolo y la base de datos. Result贸 12 paquetes que proporcionan el intercambio de todos los datos necesarios entre el cliente m贸vil y el servidor y alrededor de 20 tablas en la base de datos. Hice esta parte del trabajo con miras al futuro, incluso si tengo que cambiar la pila de tecnolog铆a por completo, la estructura de los paquetes y la base de datos deber铆an permanecer sin cambios.


Despu茅s del trabajo preparatorio, fue posible comenzar la implementaci贸n pr谩ctica de la idea. Para acelerar un poco el proceso y liberarme para el resto de las tareas, hice una versi贸n borrador de la aplicaci贸n m贸vil, bosquej茅 la interfaz de usuario, parcialmente UX, y atraje a un programador java familiar al proyecto. Y se centr贸 en el desarrollo del lado del servidor, el dise帽o y las pruebas.


Al final del segundo mes de trabajo en MVP, la primera versi贸n del prototipo de servidor y cliente estaba lista.


Y al final del tercer mes despu茅s de las pruebas sint茅ticas y las pruebas de campo, la correcci贸n de errores, las mejoras menores en el protocolo y la base de datos, la aplicaci贸n estaba lista para su salida a producci贸n. Lo cual fue hecho.


A partir de este momento comienza la parte m谩s interesante y m谩s dif铆cil del proyecto.


Durante la transici贸n de los controladores al nuevo software, se organiz贸 el servicio las 24 horas. Dado que no todos pueden llegar durante el d铆a durante las horas de trabajo. Adem谩s, administrativamente, por decisi贸n decidida del fundador de la compa帽铆a, se organiz贸 de manera que el administrador del servicio de taxi ingresara el nombre de usuario / contrase帽a y no se comunicaran al conductor. Por mi parte, necesitaba soporte t茅cnico de los usuarios en caso de fallas y situaciones imprevistas.


La Ley de Murphy nos dice: "Todo lo que puede salir mal, saldr谩 mal". Y as铆 no fue como fue todo ... Es una cosa cuando yo y varios taxistas probamos la aplicaci贸n en docenas de 贸rdenes de prueba. Y otra cosa es cuando m谩s de 500 conductores en la l铆nea trabajan en tiempo real por 贸rdenes reales de personas reales.


La arquitectura de la aplicaci贸n m贸vil era simple y hab铆a notablemente menos errores en ella que en el servidor. Por lo tanto, el foco principal del trabajo estaba en el lado del servidor. La falla m谩s cr铆tica en la aplicaci贸n fue el problema de desconectarse del servidor cuando Internet desapareci贸 en el tel茅fono y la sesi贸n se restableci贸 nuevamente. Y la Internet desapareci贸 con bastante frecuencia. En primer lugar, Internet en el tel茅fono en s铆 no era lo suficientemente estable en esos a帽os. En segundo lugar, hab铆a muchos puntos ciegos en los que Internet simplemente no funcionaba. Identificamos este problema casi de inmediato y eliminamos y actualizamos todas las aplicaciones instaladas previamente en 24 horas.


En el servidor, hubo principalmente errores en el algoritmo para la distribuci贸n de pedidos y el procesamiento incorrecto de algunas solicitudes de clientes. Ante el hecho de revelar fallas, corrigi贸 y actualiz贸 el servidor.


De hecho, no hab铆a tantos problemas t茅cnicos en esta etapa. Toda la dificultad fue que durante casi un mes estuve de servicio en la oficina, solo ocasionalmente llegaba a casa. 4-5 veces, probablemente. Y 茅l durmi贸 en ataques y arranques, ya que en ese momento solo trabajaba en el proyecto y nadie pod铆a arreglar nada excepto yo.


Un mes, esto no significa que todo estuvo constantemente lleno de errores durante un mes, y yo, sin cesar, codifiqu茅 algo all铆. Simplemente lo decidimos as铆. Despu茅s de todo, el negocio ya ha funcionado y ha obtenido ganancias. Y es mejor ir a lo seguro y relajarse m谩s tarde que perder clientes y ganancias ahora. Todos entendimos perfectamente esto, por lo que todo el equipo prest贸 la m谩xima atenci贸n y tiempo para introducir un nuevo software en el sistema de taxis. Y teniendo en cuenta el tr谩fico de pedidos actual, en un mes definitivamente eliminaremos todas las deficiencias. Bueno, los errores ocultos que pueden permanecer ciertamente no tendr谩n consecuencias cr铆ticas en el proceso de negocio, y si es necesario, se pueden solucionar en el orden de trabajo.


Aqu铆, vale la pena observar la valiosa ayuda de los directores y l铆deres de equipo de los servicios de taxi, quienes, con la m谩xima comprensi贸n de la complejidad de la situaci贸n de transferir conductores a un nuevo software, trabajaron las 24 horas con los conductores. De hecho, despu茅s de completar la instalaci贸n de nuevos programas en tel茅fonos, no perdimos un solo controlador. Y no aumentaron cr铆ticamente el porcentaje de clientes no exportadores, que pronto volvieron a los niveles normales.


Esta fue la primera etapa del trabajo en el proyecto. Y debe tenerse en cuenta que el resultado no se hizo esperar. Al automatizar la distribuci贸n de pedidos a los conductores sin intervenci贸n humana, el tiempo promedio de espera de un taxi por parte de un cliente se redujo en un orden de magnitud, lo que naturalmente aument贸 la lealtad del cliente al servicio. Esto ha llevado a un aumento en el n煤mero de pedidos. A continuaci贸n aument贸 el n煤mero de taxistas. Como resultado, el n煤mero de pedidos completados con 茅xito aument贸. Y como resultado, las ganancias de la compa帽铆a han aumentado. Por supuesto, aqu铆 corro un poco m谩s adelante, ya que todo este proceso no fue instant谩neo. Decir que la administraci贸n fue suficiente es no decir nada. Fui ilimitado en el financiamiento adicional del proyecto.


Continuar谩 ..

Source: https://habr.com/ru/post/455405/


All Articles