Kako je mali program pretvorio malu kancelariju u saveznu kompaniju sa profitom od 100+ miliona rubalja/mjesečno

Krajem decembra 2008. godine pozvan sam u jednu od taksi službi u Permu sa ciljem automatizacije postojećih poslovnih procesa. Generalno, dobila sam tri osnovna zadatka:


  • Razviti softverski paket za pozivni centar sa mobilnom aplikacijom za taksiste i automatizovati interne poslovne procese.
  • Sve je trebalo uraditi u najkraćem mogućem roku.
  • Imajte vlastiti softver, umjesto da ga kupujete od programera trećih strana, koji se u budućnosti, kako se posao razvija, može samostalno prilagoditi na konstantno promjenjive tržišne uvjete.

Tada nisam razumeo kako ovo tržište funkcioniše i njegove nijanse, ali su mi, ipak, bile očigledne dve stvari. Call centar mora biti izgrađen na bazi otvorenog koda asterisk softvera PBX. Razmjena informacija između call centra i mobilne aplikacije je u suštini klijent-server rješenje sa svim odgovarajućim obrascima za dizajniranje arhitekture budućeg projekta i njegovog programiranja.

Nakon preliminarne procjene zadataka, rokova i troškova projekta, te dogovora o svim potrebnim pitanjima sa vlasnikom taksi službe, počeo sam sa radom u januaru 2009. godine.

Gledajući unapred, reći ću odmah. Rezultat je bila skalabilna platforma koja radi na 60+ servera u 12 gradova u Rusiji i 2 u Kazahstanu. Ukupni profit kompanije iznosio je 100+ miliona rubalja mjesečno.

Prva faza. Prototip

Kako u to vrijeme nisam imao praktičnog iskustva u IP telefoniji, a sa asterisk-om sam bio samo površno upoznat u sklopu „kućnih” eksperimenata, odlučeno je da počnem raditi na razvoju mobilne aplikacije i serverskog dijela. Istovremeno, zatvaranje praznina u znanju o drugim zadacima.

Da je s mobilnom aplikacijom sve bilo manje-više jasno. U to vrijeme, to je moglo biti napisano samo u Javi za jednostavne telefone sa dugmadima, ali pisanje servera koji opslužuje mobilne klijente bilo je malo složenije:

  • Koji OS server će se koristiti;
  • Na osnovu logike da se za zadatak bira programski jezik, a ne obrnuto, i uzimajući u obzir tačku 1, koji će programski jezik biti optimalan za rješavanje problema;
  • Prilikom projektovanja bilo je potrebno uzeti u obzir očekivana buduća velika opterećenja servisa;
  • Koja baza podataka može garantovati toleranciju grešaka pod velikim opterećenjem i kako održati brzo vrijeme odgovora baze podataka kako se broj zahtjeva prema njoj povećava;
  • Odlučujući faktor je bila brzina razvoja i sposobnost brzog skaliranja koda
  • Troškovi opreme i njenog održavanja u budućnosti (jedan od uslova kupca je da se serveri nalaze na teritoriji pod njegovom kontrolom);
  • Troškovi programera koji će biti potrebni u narednim fazama rada na platformi;

Kao i mnoga druga pitanja vezana za dizajn i razvoj.

Prije početka rada na projektu, vlasniku preduzeća sam predložio sljedeću stratešku odluku: budući da je projekat prilično složen, njegova implementacija će potrajati značajno, pa prvo napravim MVP verziju, koja neće oduzeti puno vremena i novca, ali koji će omogućiti njegovoj kompaniji da stekne konkurentsku prednost na tržištu već „ovde i sada“, a takođe će proširiti svoje mogućnosti kao taksi službe. Zauzvrat, takvo međurješenje će mi dati vremena da promišljenije osmislim konačno rješenje i vremena za tehničke eksperimente. Istovremeno, neće se garantovati da će implementirano softversko rješenje biti ispravno dizajnirano i može biti radikalno redizajnirano ili zamijenjeno u budućnosti, ali će svakako obavljati minimalnu potrebnu funkcionalnost da se „otrgne od konkurencije“. Osnivaču taksija svidjela se ideja, pa su na kraju to i uspjeli.

Prve dvije sedmice proveo sam proučavajući poslovne procese u kompaniji, te proučavajući rad taksija iznutra. Sprovedena poslovna analiza gdje, šta i kako se može automatizirati i da li je to uopće potrebno. Sa kojim poteškoćama i problemima se susreću zaposleni u kompaniji? Kako su riješeni. Kako je organizovan radni dan za zaposlene u kompaniji. Koje alate koriste?

Krajem treće sedmice, nakon početka rada i proučavanja pitanja od interesa na Internetu, uzimajući u obzir želje vlasnika firme, kao i vlastito znanje i sposobnosti u to vrijeme, odlučeno je da se primjenjuje sljedeći skup :

  • Server baze podataka: MsSQL (besplatna verzija sa ograničenjem datoteke baze podataka do 2GB);
  • Razvoj servera koji opslužuje mobilne klijente u Delphi-u pod Windows-om, budući da je već postojao Windows server na kojem bi se instalirala baza podataka, kao i samo razvojno okruženje omogućava brz razvoj;
  • Uzimajući u obzir niske brzine interneta na mobilnim telefonima još 2009. godine, protokol razmjene između klijenta i servera mora biti binarni. Ovo će smanjiti veličinu prenetih paketa podataka i, kao rezultat, povećati stabilnost rada klijenata sa serverom;

Još dvije sedmice potrošene su na dizajniranje protokola i baze podataka. Rezultat je 12 paketa koji osiguravaju razmjenu svih potrebnih podataka između mobilnog klijenta i servera i oko 20 tabela u bazi podataka. Odradio sam ovaj dio posla uzimajući u obzir budućnost, čak i ako moram potpuno promijeniti tehnološki stek, struktura paketa i baze podataka treba ostati nepromijenjena.

Nakon pripremnih radova, bilo je moguće započeti praktičnu implementaciju ideje. Da bih malo ubrzao proces i oslobodio vrijeme za druge zadatke, napravio sam nacrt verzije mobilne aplikacije, skicirao korisničko sučelje, dijelom UX i uključio poznatog java programera u projekat. I fokusirao se na razvoj, dizajn i testiranje na strani servera.

Do kraja drugog mjeseca rada na MVP-u, prva verzija prototipa servera i klijenta je bila spremna.

I do kraja trećeg mjeseca, nakon sintetičkih testova i terenskih testova, ispravki grešaka, manjih poboljšanja protokola i baze podataka, aplikacija je bila spremna za proizvodnju. Što je i urađeno.

Od ovog trenutka počinje najzanimljiviji i najteži dio projekta.

Prilikom prelaska vozača na novi softver organizovano je XNUMX-časovno dežurstvo. Pošto nisu svi mogli doći tokom radnog vremena tokom dana. Osim toga, administrativno je, odlučnom odlukom osnivača kompanije, organizovano na način da je login/lozinku unio rukovodilac taksi službe i nisu saopšteni vozaču. Sa moje strane je bila potrebna tehnička podrška korisnicima u slučaju kvarova i nepredviđenih situacija.

Marfijev zakon nam kaže: "Sve što može poći naopako, poći će naopako." I upravo tako su stvari krenule po zlu... Jedna je stvar kada smo ja i nekoliko taksista testirali aplikaciju na nekoliko desetina testnih naloga. A sasvim je druga stvar kada 500+ vozača na liniji radi u realnom vremenu po stvarnim narudžbama stvarnih ljudi.

Arhitektura mobilne aplikacije bila je jednostavna i u njoj je bilo primjetno manje grešaka nego na serveru. Stoga je glavni fokus rada bio na strani servera. Najkritičniji kvar u aplikaciji bio je problem isključenja sa servera kada je internet na telefonu izgubljen i sesija je ponovo obnovljena. I internet je često nestajao. Prvo, tih godina internet na samom telefonu nije bio dovoljno stabilan. Drugo, bilo je mnogo slijepih tačaka u kojima internet jednostavno nije radio. Ovaj problem smo identifikovali skoro odmah i u roku od XNUMX sata popravili i ažurirali sve prethodno instalirane aplikacije.

Server je uglavnom imao greške u algoritmu distribucije naloga i netačnu obradu nekih zahtjeva klijenata. Nakon što sam identifikovao greške, ispravio sam i ažurirao server.

Zapravo, nije bilo toliko tehničkih problema u ovoj fazi. Cijela poteškoća je bila u tome što sam skoro mjesec dana dežurala u kancelariji, samo povremeno odlazila kući. Verovatno 4-5 puta. I spavao sam u napadima, jer sam u to vrijeme sam radio na projektu i niko osim mene nije mogao ništa popraviti.

Mjesec dana, to ne znači da je mjesec dana sve stalno kvarilo i da sam nešto kodirao bez prestanka. Upravo smo to odlučili. Na kraju krajeva, posao je već poslovao i donosio profit. Bolje je igrati na sigurno i odmoriti se kasnije nego gubiti klijente i profit sada. Svi smo to dobro razumjeli, pa je cijeli tim kolektivno posvetio maksimalnu pažnju i vrijeme uvođenju novog softvera u taksi sistem. A uzimajući u obzir trenutni promet narudžbi, sve nedostatke ćemo definitivno otkloniti u roku od mjesec dana. Pa, skrivene greške koje mogu ostati sigurno neće imati kritične posljedice na poslovni proces i, ako je potrebno, mogu se rutinski ispravljati.

Ovdje je potrebno napomenuti neprocjenjivu pomoć direktora i predradnika taksi službi, koji su, uz maksimalno razumijevanje složenosti situacije prelaska vozača na novi softver, radili s vozačima XNUMX sata dnevno. Zapravo, nakon završetka instalacije novih programa na telefonima, nismo izgubili niti jedan drajver. I nisu kritično povećali procenat neudaljavanja klijenata, koji je ubrzo vraćen na normalne nivoe.

Time je završena prva faza rada na projektu. I treba napomenuti da se rezultat nije dugo čekao. Automatizacijom distribucije narudžbi vozačima bez ljudske intervencije, prosječno vrijeme čekanja na taksi od strane klijenta smanjeno je za red veličine, što je prirodno povećalo lojalnost kupaca usluzi. To je dovelo do povećanja broja narudžbi. Nakon toga se povećao broj taksista. Kao rezultat toga, povećan je i broj uspješno izvršenih narudžbi. I kao rezultat toga, profit kompanije je povećan. Naravno, tu sam malo ispred sebe, pošto se cijeli ovaj proces nije odvijao odmah. Reći da je uprava bila zadovoljna znači ništa. Dobio sam neograničen pristup daljem finansiranju projekta.

Nastaviće se ..

izvor: www.habr.com

Dodajte komentar