Com un petit programa va convertir una petita oficina en una empresa federal amb un benefici de més de 100 milions de rubles/mes

A finals de desembre de 2008, em van convidar a un dels serveis de taxi de Perm amb l'objectiu d'automatitzar els processos de negoci existents. En general, em van donar tres tasques fonamentals:


  • Desenvolupar un paquet de programari per a un centre de trucades amb una aplicació mòbil per a taxistes i automatitzar els processos empresarials interns.
  • Tot s'havia de fer en el menor temps possible.
  • Teniu el vostre propi programari, en lloc d'adquirir-lo a desenvolupadors de tercers, que en el futur, a mesura que el negoci es desenvolupi, es pot escalar de manera independent a les condicions del mercat en constant canvi.

Aleshores, no entenia com funciona aquest mercat i els seus matisos, però, tanmateix, dues coses em van quedar clares. El centre de trucades s'ha de construir sobre la base del programari d'asterisc de codi obert PBX. L'intercanvi d'informació entre el call center i l'aplicació mòbil és essencialment una solució client-servidor amb tots els patrons corresponents per dissenyar l'arquitectura del futur projecte i la seva programació.

Després d'una avaluació preliminar de les tasques, terminis i costos del projecte, i havent acordat tots els aspectes necessaris amb el propietari del servei de taxi, vaig començar a treballar el gener de 2009.

Mirant endavant, diré de seguida. El resultat va ser una plataforma escalable que funcionava en més de 60 servidors a 12 ciutats de Rússia i 2 al Kazakhstan. El benefici total de l'empresa va ser de més de 100 milions de rubles/mes.

Primera etapa. Prototip

Com que aleshores no tenia experiència pràctica en telefonia IP i només estava familiaritzat superficialment amb l'asterisc com a part dels experiments "domèstics", es va decidir començar a treballar amb el desenvolupament d'una aplicació mòbil i una part de servidor. Al mateix temps, tancant llacunes de coneixement sobre altres tasques.

Si amb l'aplicació mòbil tot estava més o menys clar. En aquell moment, només es podia escriure en java per a telèfons amb botons senzills, però escriure un servidor que atengués clients mòbils era una mica més complicat:

  • Quin sistema operatiu de servidor s'utilitzarà;
  • Partint de la lògica que s'escull un llenguatge de programació per a una tasca, i no a l'inrevés, i tenint en compte el punt 1, quin llenguatge de programació serà òptim per resoldre problemes;
  • Durant el disseny, calia tenir en compte les càrregues elevades futures previstes en el servei;
  • Quina base de dades pot garantir la tolerància a errors amb càrregues elevades i com mantenir un temps de resposta ràpid de la base de dades a mesura que augmenta el nombre de sol·licituds;
  • El factor determinant va ser la velocitat de desenvolupament i la capacitat d'escalar ràpidament el codi
  • El cost de l'equip i el seu manteniment en el futur (una de les condicions del client és que els servidors s'hagin d'ubicar al territori sota el seu control);
  • Cost dels desenvolupadors que es necessitaran en les properes etapes de treball a la plataforma;

Així com moltes altres qüestions relacionades amb el disseny i el desenvolupament.

Abans de començar a treballar en el projecte, vaig proposar la següent decisió estratègica al propietari de l'empresa: com que el projecte és bastant complex, la seva implementació trigarà un temps notable, així que primer creo una versió MVP, que no trigarà gaire temps i diners, però que permetrà a la seva empresa obtenir un avantatge competitiu en el mercat ja “aquí i ara”, i també ampliarà les seves capacitats com a servei de taxi. Al seu torn, aquesta solució intermèdia em donarà temps per dissenyar de manera més reflexiva la solució final i temps per a experiments tècnics. Al mateix temps, no es garantirà que la solució de programari implementada estigui dissenyada correctament i es podrà redissenyar o substituir radicalment en el futur, però definitivament realitzarà la funcionalitat mínima necessària per "desvincular-se dels competidors". Al fundador del taxi li va agradar la idea, així que al final la van fer.

Les dues primeres setmanes vaig estar estudiant els processos de negoci de l'empresa, i estudiant el treball d'un taxi des de dins. Va realitzar una anàlisi empresarial d'on, què i com es pot automatitzar i si és necessari. Quines dificultats i problemes es troben els empleats de l'empresa? Com es resolen. Com s'organitza la jornada laboral dels treballadors de l'empresa. Quines eines fan servir?

Al final de la tercera setmana, després de començar a treballar i estudiar temes d'interès a Internet, tenint en compte els desitjos del propietari de l'empresa, així com els meus propis coneixements i capacitats en aquell moment, es va decidir aplicar la següent pila :

  • Servidor de bases de dades: MsSQL (versió gratuïta amb un límit de fitxers de base de dades de fins a 2 GB);
  • Desenvolupament d'un servidor al servei de clients mòbils a Delphi sota Windows, ja que ja hi havia un servidor Windows on s'instal·laria la base de dades, així com el propi entorn de desenvolupament facilita el desenvolupament ràpid;
  • Tenint en compte les baixes velocitats d'Internet als telèfons mòbils l'any 2009, el protocol d'intercanvi entre el client i el servidor ha de ser binari. Això reduirà la mida dels paquets de dades transmesos i, com a resultat, augmentarà l'estabilitat del treball dels clients amb el servidor;

Es van dedicar dues setmanes més dissenyant el protocol i la base de dades. El resultat van ser 12 paquets que garanteixen l'intercanvi de totes les dades necessàries entre el client mòbil i el servidor i unes 20 taules a la base de dades. Vaig fer aquesta part del treball tenint en compte el futur, encara que hagi de canviar completament la pila de tecnologia, l'estructura dels paquets i la base de dades hauria de romandre sense canvis.

Després del treball preparatori, es va poder començar la implementació pràctica de la idea. Per accelerar una mica el procés i alliberar temps per a altres tasques, vaig fer un esborrany de l'aplicació mòbil, vaig dibuixar la interfície d'usuari, en part l'UX, i vaig implicar un programador java conegut en el projecte. I es va centrar en el desenvolupament, el disseny i les proves del costat del servidor.

Al final del segon mes de treball a l'MVP, la primera versió del prototip de servidor i client estava a punt.

I a finals del tercer mes, després de proves sintètiques i proves de camp, correccions d'errors, millores menors al protocol i a la base de dades, l'aplicació estava preparada per a la producció. Que és el que es va fer.

A partir d'aquest moment comença la part més interessant i difícil del projecte.

Durant la transició dels conductors al nou programari, es va organitzar un servei de 24 hores. Ja que no tothom podia venir en horari laboral durant el dia. A més, administrativament, per decisió decidida del fundador de l'empresa, es va organitzar de manera que el login/contrasenya era introduït pel responsable del servei de taxi i no es comunicava al conductor. Per la meva banda, calia suport tècnic als usuaris en cas de fallades i situacions imprevistes.

La llei de Murphy ens diu: "Qualsevol cosa que pugui sortir malament, sortirà malament". I així és exactament com les coses van anar malament... Una cosa és quan jo i diversos taxistes vam provar l'aplicació amb diverses desenes d'ordres de prova. I és una qüestió completament diferent quan més de 500 conductors a la línia treballen en temps real amb comandes reals de persones reals.

L'arquitectura de l'aplicació mòbil era senzilla i hi havia notablement menys errors que al servidor. Per tant, l'objectiu principal del treball era al costat del servidor. El problema més crític de l'aplicació va ser el problema de la desconnexió del servidor quan es perdia Internet al telèfon i es tornava a restaurar la sessió. I Internet va desaparèixer força sovint. En primer lloc, en aquells anys, Internet al telèfon no era prou estable. En segon lloc, hi havia molts punts cecs on Internet simplement no funcionava. Vam identificar aquest problema gairebé immediatament i en 24 hores vam solucionar i actualitzar totes les aplicacions instal·lades anteriorment.

El servidor tenia principalment errors en l'algoritme de distribució de comandes i processament incorrecte d'algunes peticions dels clients. En identificar errors, vaig corregir i actualitzar el servidor.

De fet, no hi havia tants problemes tècnics en aquesta etapa. Tota la dificultat va ser que vaig estar de guàrdia a l'oficina durant gairebé un mes, només de tant en tant anava a casa. Probablement 4-5 vegades. I vaig dormir de cop i volta, ja que en aquell moment estava treballant en el projecte sol i ningú més que jo no podia arreglar res.

Un mes, això no vol dir que tot hagués fallat constantment durant un mes i que estava codificant alguna cosa sense parar. Ho acabem de decidir. Al cap i a la fi, el negoci ja funcionava i obtenia beneficis. És millor jugar amb seguretat i descansar més tard que perdre clients i beneficis ara. Tots ho vam entendre molt bé, així que tot l'equip va dedicar col·lectivament la màxima atenció i temps a introduir nou programari al sistema de taxis. I tenint en compte el trànsit actual de comandes, definitivament eliminarem totes les mancances en un mes. Doncs bé, els errors ocults que puguin romandre, sens dubte, no tindran conseqüències crítiques en el procés empresarial i, si cal, es poden corregir de manera rutinària.

Aquí cal destacar la inestimable assistència dels directors i capataces dels serveis de taxi, que, amb la màxima comprensió de la complexitat de la situació de transferir els conductors a un nou programari, van treballar amb els conductors durant tot el dia. De fet, després de completar la instal·lació de nous programes als telèfons, no hem perdut ni un controlador. I no van augmentar de manera crítica el percentatge de no retirada de clients, que aviat es va tornar als nivells normals.

D'aquesta manera s'ha completat la primera fase de treball del projecte. I cal destacar que el resultat no es va fer esperar. Mitjançant l'automatització de la distribució de comandes als conductors sense intervenció humana, el temps mitjà d'espera d'un taxi per part d'un client es va reduir en un ordre de magnitud, fet que naturalment va augmentar la fidelitat dels clients al servei. Això va provocar un augment del nombre de comandes. Arran d'això, el nombre de taxistes va augmentar. Com a resultat, també ha augmentat el nombre de comandes completades amb èxit. I com a resultat, els beneficis de l'empresa van augmentar. Per descomptat, aquí m'estic avançant una mica, ja que tot aquest procés no va tenir lloc a l'instant. Dir que la direcció estava contenta és no dir res. Em van donar accés il·limitat a més finançament del projecte.

Continuar ...

Font: www.habr.com

Afegeix comentari