Ako malý program zmenil malú kanceláriu na federálnu spoločnosť so ziskom 100+ miliónov rubľov mesačne

Koncom decembra 2008 som bol pozvaný do jednej z taxislužieb v Perme s cieľom automatizovať existujúce obchodné procesy. Vo všeobecnosti som dostal tri základné úlohy:


  • Vyviňte softvérový balík pre call centrum s mobilnou aplikáciou pre taxikárov a zautomatizujte interné obchodné procesy.
  • Všetko bolo potrebné urobiť v čo najkratšom čase.
  • Majte svoj vlastný softvér, nie kupovaný od vývojárov tretích strán, ktorý sa v budúcnosti s rozvojom podnikania môže nezávisle prispôsobiť neustále sa meniacim trhovým podmienkam.

Vtedy som nechápal, ako tento trh funguje a jeho nuansy, no napriek tomu mi boli zrejmé dve veci. Call centrum musí byť postavené na báze open source asterisk softvéru PBX. Výmena informácií medzi call centrom a mobilnou aplikáciou je v podstate klient-server riešenie so všetkými zodpovedajúcimi vzormi pre návrh architektúry budúceho projektu a jeho programovanie.

Po predbežnom posúdení úloh, termínov a nákladov na projekt a po dohodnutí všetkých potrebných záležitostí s majiteľom taxislužby som v januári 2009 nastúpil do práce.

Pri pohľade dopredu poviem hneď. Výsledkom bola škálovateľná platforma bežiaca na 60+ serveroch v 12 mestách v Rusku a 2 v Kazachstane. Celkový zisk spoločnosti bol 100+ miliónov rubľov mesačne.

Prvá fáza. Prototyp

Keďže som v tom čase nemal žiadne praktické skúsenosti s IP telefóniou a hviezdičku som poznal len povrchne v rámci „domácich“ experimentov, bolo rozhodnuté začať pracovať na vývoji mobilnej aplikácie a serverovej časti. Zároveň sa zmenšujú medzery vo vedomostiach o iných úlohách.

Keby pri mobilnej aplikácii bolo všetko viac-menej jasné. V tom čase to bolo možné napísať iba v jazyku Java pre jednoduché tlačidlové telefóny, ale napísať server obsluhujúci mobilných klientov bolo trochu komplikovanejšie:

  • Aký operačný systém servera sa použije;
  • Na základe logiky, že programovací jazyk je vybraný pre úlohu, a nie naopak, a berúc do úvahy bod 1, ktorý programovací jazyk bude optimálny na riešenie problémov;
  • Pri projektovaní bolo potrebné brať do úvahy predpokladané budúce vysoké zaťaženie služby;
  • Ktorá databáza môže zaručiť odolnosť voči chybám pri vysokom zaťažení a ako zachovať rýchly čas odozvy databázy pri zvyšovaní počtu požiadaviek na ňu;
  • Určujúcim faktorom bola rýchlosť vývoja a schopnosť rýchlo škálovať kód
  • Náklady na vybavenie a jeho údržbu v budúcnosti (jednou z podmienok zákazníka je, že servery musia byť umiestnené na území pod jeho kontrolou);
  • Náklady na vývojárov, ktorí budú potrební v ďalších fázach práce na platforme;

Rovnako ako mnoho ďalších otázok súvisiacich s dizajnom a vývojom.

Pred začatím prác na projekte som majiteľovi firmy navrhol nasledovné strategické rozhodnutie: keďže projekt je pomerne zložitý, jeho realizácia zaberie značné množstvo času, preto najskôr vytvorím verziu MVP, ktorá nezaberie veľa času a peniaze, ktoré však jeho firme umožnia získať konkurenčnú výhodu na trhu už „tu a teraz“ a rozšíri svoje možnosti aj ako taxislužba. Takéto medziriešenie mi zase poskytne čas na premyslenejšie navrhnutie konečného riešenia a čas na technické experimenty. Zároveň nebude zaručené, že implementované softvérové ​​riešenie bude správne navrhnuté a môže byť v budúcnosti radikálne prerobené alebo nahradené, ale určite bude vykonávať minimálnu potrebnú funkcionalitu na „odtrhnutie sa od konkurencie“. Zakladateľovi taxíka sa nápad zapáčil, tak to nakoniec urobili.

Prvé dva týždne som strávil štúdiom obchodných procesov vo firme a štúdiom práce taxíka zvnútra. Vykonala obchodnú analýzu, kde, čo a ako sa dá automatizovať a či je to vôbec potrebné. S akými ťažkosťami a problémami sa stretávajú zamestnanci spoločnosti? Ako sa riešia. Ako je organizovaný pracovný deň pre zamestnancov spoločnosti. Aké nástroje používajú?

Do konca tretieho týždňa, po začatí práce a preštudovaní otázok, ktoré nás zaujímajú na internete, berúc do úvahy želania majiteľa firmy, ako aj moje vlastné znalosti a schopnosti v tom čase, bolo rozhodnuté použiť nasledujúci balík :

  • Databázový server: MsSQL (bezplatná verzia s limitom databázových súborov do 2 GB);
  • Vývoj servera obsluhujúceho mobilných klientov v Delphi pod Windows, keďže už existoval Windows server, na ktorom by bola databáza nainštalovaná, ako aj samotné vývojové prostredie umožňuje rýchly vývoj;
  • Vzhľadom na nízke rýchlosti internetu na mobilných telefónoch v roku 2009 musí byť protokol výmeny medzi klientom a serverom binárny. Tým sa zníži veľkosť prenášaných dátových paketov a v dôsledku toho sa zvýši stabilita práce klientov so serverom;

Ďalšie dva týždne sa venovali navrhovaniu protokolu a databázy. Výsledkom bolo 12 balíkov, ktoré zabezpečujú výmenu všetkých potrebných údajov medzi mobilným klientom a serverom a cca 20 tabuliek v databáze. Túto časť práce som urobil s ohľadom na budúcnosť, aj keby som musel úplne zmeniť zásobník technológií, štruktúra balíkov a databázy by mali zostať nezmenené.

Po prípravných prácach bolo možné začať s praktickou realizáciou nápadu. Aby som proces trochu zrýchlil a uvoľnil čas na iné úlohy, urobil som návrh verzie mobilnej aplikácie, načrtol UI, čiastočne UX a do projektu zapojil známeho java programátora. A zameral sa na vývoj, dizajn a testovanie na strane servera.

Na konci druhého mesiaca prác na MVP bola hotová prvá verzia prototypu servera a klienta.

A do konca tretieho mesiaca, po syntetických testoch a testoch v teréne, opravách chýb, menších vylepšeniach protokolu a databázy, bola aplikácia pripravená na výrobu. Čo sa aj urobilo.

Od tohto momentu začína najzaujímavejšia a najťažšia časť projektu.

Počas prechodu vodičov na nový softvér bola zorganizovaná 24-hodinová služba. Keďže nie každý mohol prísť v pracovnej dobe cez deň. Administratívne to bolo navyše ráznym rozhodnutím zakladateľa spoločnosti zorganizované tak, že prihlasovacie meno/heslo zadával manažér taxislužby a vodičovi neboli oznamované. Z mojej strany bola potrebná technická podpora pre používateľov v prípade porúch a nepredvídaných situácií.

Murphyho zákon nám hovorí: "Všetko, čo sa môže pokaziť, sa pokazí." A presne tak sa veci pokazili... Jedna vec je, keď sme ja a niekoľko taxikárov testovali aplikáciu na niekoľkých desiatkach testovacích zákaziek. A je to úplne iná záležitosť, keď viac ako 500 vodičov na linke pracuje v reálnom čase na skutočných objednávkach od skutočných ľudí.

Architektúra mobilnej aplikácie bola jednoduchá a bolo v nej citeľne menej chýb ako na serveri. Hlavná náplň práce bola preto na strane servera. Najkritickejšou chybou v aplikácii bol problém odpojenia od servera, keď sa stratil internet v telefóne a relácia sa znova obnovila. A internet zmizol pomerne často. Po prvé, v tých rokoch nebol samotný internet v telefóne dostatočne stabilný. Po druhé, bolo veľa slepých miest, kde internet jednoducho nefungoval. Tento problém sme identifikovali takmer okamžite a do 24 hodín sme opravili a aktualizovali všetky predtým nainštalované aplikácie.

Server mal hlavne chyby v algoritme distribúcie objednávok a nesprávne spracovanie niektorých požiadaviek od klientov. Po identifikácii závad som opravil a aktualizoval server.

V skutočnosti v tejto fáze nebolo až tak veľa technických problémov. Celý problém bol v tom, že som bol takmer mesiac v službe na úrade, len občas som chodil domov. Pravdepodobne 4-5 krát. A spal som v záchvatoch, keďže som v tom čase pracoval na projekte sám a nikto okrem mňa nedokázal nič opraviť.

Mesiac, to neznamená, že sa mesiac neustále všetko kazilo a ja som bez prestania niečo kódoval. Práve sme sa tak rozhodli. Veď obchod už fungoval a dosahoval zisk. Je lepšie hrať na istotu a odpočívať neskôr, ako teraz prísť o zákazníkov a zisky. Všetci sme tomu veľmi dobre rozumeli, a tak celý tím kolektívne venoval maximálnu pozornosť a čas zavádzaniu nového softvéru do systému taxi. A s prihliadnutím na aktuálnu návštevnosť objednávok do mesiaca určite všetky nedostatky odstránime. Skryté chyby, ktoré môžu zostať, určite nebudú mať kritické dôsledky na obchodný proces a v prípade potreby ich možno rutinne opraviť.

Tu je potrebné poznamenať neoceniteľnú pomoc od riaditeľov a majstrov taxislužieb, ktorí s maximálnym pochopením zložitosti situácie prechodu vodičov na nový softvér pracovali s vodičmi nepretržite. V skutočnosti sme po dokončení inštalácie nových programov do telefónov nestratili ani jeden ovládač. A kriticky nezvýšili percento neodstránenia klientov, ktoré sa čoskoro vrátilo na normálnu úroveň.

Tým sa ukončila prvá etapa prác na projekte. A treba podotknúť, že výsledok na seba nenechal dlho čakať. Automatizáciou distribúcie objednávok vodičom bez zásahu človeka sa rádovo skrátil priemerný čas čakania klienta na taxík, čo prirodzene zvýšilo lojalitu zákazníkov k službe. To viedlo k zvýšeniu počtu objednávok. Následne sa zvýšil počet taxikárov. V dôsledku toho sa zvýšil aj počet úspešne zrealizovaných zákaziek. A v dôsledku toho sa zvýšili zisky spoločnosti. Samozrejme, tu trochu predbieham, keďže celý tento proces neprebehol okamžite. Povedať, že vedenie bolo spokojné, neznamená nič. Dostal som neobmedzený prístup k ďalšiemu financovaniu projektu.

Pokračovať ..

Zdroj: hab.com

Pridať komentár