Kako je mali program pretvorio mali ured u saveznu tvrtku s profitom od 100+ milijuna rubalja mjesečno

Krajem prosinca 2008. pozvan sam u jednu od taksi službi u Permu s ciljem automatizacije postojećih poslovnih procesa. Općenito, dobila sam tri temeljna zadatka:


  • Izraditi programski paket za pozivni centar s mobilnom aplikacijom za taksiste i automatizirati interne poslovne procese.
  • Sve je trebalo napraviti u najkraćem mogućem roku.
  • Imajte vlastiti softver, umjesto kupljenog od programera trećih strana, koji se u budućnosti, kako se posao bude razvijao, može samostalno prilagoditi tržišnim uvjetima koji se stalno mijenjaju.

U to vrijeme nisam razumio kako ovo tržište funkcionira i njegove nijanse, ali ipak su mi bile očite dvije stvari. Pozivni centar mora biti izgrađen na bazi otvorenog koda asterisk softvera PBX. Razmjena informacija između pozivnog centra i mobilne aplikacije u biti je klijent-poslužiteljsko rješenje sa svim pripadajućim obrascima za projektiranje arhitekture budućeg projekta i njegovo programiranje.

Nakon preliminarne procjene zadataka, rokova i troškova projekta, te dogovora o svim potrebnim stvarima s vlasnikom taksi službe, započeo sam s radom u siječnju 2009. godine.

Gledajući unaprijed, reći ću odmah. Rezultat je bila skalabilna platforma koja radi na više od 60 poslužitelja u 12 gradova u Rusiji i 2 u Kazahstanu. Ukupna dobit tvrtke bila je 100+ milijuna rubalja mjesečno.

Prva faza. Prototip

Budući da u to vrijeme nisam imao praktičnog iskustva u IP telefoniji, a sa zvjezdicom sam bio tek površno upoznat u sklopu “kućnih” eksperimenata, odlučeno je da počnem raditi s razvojem mobilne aplikacije i serverskog dijela. U isto vrijeme, popunjavanje rupa u znanju o drugim zadacima.

Ako je s mobilnom aplikacijom sve bilo više-manje jasno. U to se vrijeme moglo napisati samo u Javi za jednostavne telefone s tipkama, ali pisanje poslužitelja koji služi mobilnim klijentima bilo je malo kompliciranije:

  • Koji OS poslužitelja će se koristiti;
  • Na temelju logike da se programski jezik bira za zadatak, a ne obrnuto, te uzimajući u obzir točku 1., koji će programski jezik biti optimalan za rješavanje problema;
  • Prilikom projektiranja bilo je potrebno uzeti u obzir očekivana buduća visoka opterećenja usluge;
  • Koja baza podataka može jamčiti otpornost na pogreške pod visokim opterećenjima i kako održati brzo vrijeme odziva baze podataka s povećanjem broja zahtjeva prema njoj;
  • Odlučujući čimbenik bila je brzina razvoja i mogućnost brzog skaliranja koda
  • Trošak opreme i njeno održavanje u budućnosti (jedan od uvjeta kupca je da se poslužitelji moraju nalaziti na teritoriju pod njegovom kontrolom);
  • Trošak programera koji će biti potrebni u sljedećim fazama rada na platformi;

Kao i mnoga druga pitanja vezana uz dizajn i razvoj.

Prije početka rada na projektu, predložio sam vlasniku tvrtke sljedeću stratešku odluku: budući da je projekt prilično složen, njegova implementacija će oduzeti značajno vrijeme, stoga prvo kreiram MVP verziju, koja neće oduzeti puno vremena i novca, ali koji će njegovoj tvrtki omogućiti konkurentsku prednost na tržištu već “ovdje i sada”, a također će proširiti svoje mogućnosti kao taxi službe. S druge strane, takvo međurješenje će mi dati vremena za promišljenije projektiranje konačnog rješenja i vremena za tehničke eksperimente. Istodobno, neće biti zajamčeno da će implementirano softversko rješenje biti ispravno dizajnirano i može biti radikalno redizajnirano ili zamijenjeno u budućnosti, ali će svakako obavljati minimalno potrebnu funkcionalnost da se "otrgne od konkurencije". Ideja se svidjela osnivaču taksija pa su to na kraju i uspjeli.

Prva dva tjedna provela sam proučavajući poslovne procese u tvrtki, te proučavajući rad taksija iznutra. Provedena poslovna analiza gdje se, što i kako može automatizirati i je li to uopće potrebno. S kojim se poteškoćama i problemima susreću zaposlenici tvrtke? Kako se rješavaju. Kako je organiziran radni dan za zaposlenike tvrtke. Koje alate koriste?

Do kraja trećeg tjedna, nakon početka rada i proučavanja pitanja od interesa na Internetu, uzimajući u obzir želje vlasnika tvrtke, kao i moje vlastito znanje i mogućnosti u to vrijeme, odlučeno je primijeniti sljedeći skup :

  • Poslužitelj baze podataka: MsSQL (besplatna verzija s ograničenjem datoteke baze podataka do 2 GB);
  • Razvoj poslužitelja koji opslužuje mobilne klijente u Delphiju pod Windowsima, budući da je već postojao Windows poslužitelj na kojem će biti instalirana baza podataka, kao i samo razvojno okruženje omogućava brz razvoj;
  • Uzimajući u obzir niske brzine interneta na mobilnim telefonima 2009. godine, protokol razmjene između klijenta i poslužitelja mora biti binarni. To će smanjiti veličinu prenesenih paketa podataka i, kao rezultat toga, povećati stabilnost rada klijenata s poslužiteljem;

Još dva tjedna potrošeno je na dizajniranje protokola i baze podataka. Rezultat je 12 paketa koji osiguravaju razmjenu svih potrebnih podataka između mobilnog klijenta i poslužitelja te 20-ak tablica u bazi podataka. Ovaj dio posla napravio sam uzimajući u obzir budućnost, čak i ako budem morao potpuno promijeniti tehnološki stog, struktura paketa i baza podataka trebaju ostati nepromijenjeni.

Nakon pripremnih radova, moglo se pristupiti praktičnoj provedbi ideje. Kako bih malo ubrzao proces i oslobodio vrijeme za druge poslove, napravio sam draft verziju mobilne aplikacije, skicirao UI, djelomično UX, te u projekt uključio poznatog java programera. Usredotočio se na razvoj, dizajn i testiranje na strani poslužitelja.

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

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

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

Tijekom prelaska vozača na novi softver organizirana su XNUMX-satna dežurstva. Pošto nisu svi mogli doći u radno vrijeme danju. Osim toga, administrativno, dobrovoljnom odlukom osnivača tvrtke, organizirano je na način da je prijavu/lozinku unosio voditelj taksi službe, a nisu priopćeni vozaču. S moje strane bila je potrebna tehnička podrška korisnicima u slučaju kvarova i nepredviđenih situacija.

Murphyjev zakon nam kaže: "Sve što može poći po zlu, poći će po zlu." I upravo je tako krenulo po zlu... Jedna je stvar kada smo ja i nekoliko taksista testirali aplikaciju na nekoliko desetaka testnih naloga. A potpuno je druga stvar kada 500+ vozača na liniji radi u stvarnom vremenu na stvarnim narudžbama stvarnih ljudi.

Arhitektura mobilne aplikacije bila je jednostavna i bilo je osjetno manje bugova nego na serveru. Stoga je glavni fokus rada bio na strani poslužitelja. Najkritičniji kvar u aplikaciji bio je problem prekida veze s poslužiteljem kada je internet na telefonu izgubljen i sesija je ponovno uspostavljena. I Internet je često nestajao. Prvo, tih godina sam internet na telefonu nije bio dovoljno stabilan. Drugo, bilo je mnogo slijepih točaka u kojima internet jednostavno nije radio. Gotovo smo odmah identificirali ovaj problem i unutar XNUMX sata popravili i ažurirali sve prethodno instalirane aplikacije.

Poslužitelj je uglavnom imao greške u algoritmu distribucije naloga i netočnu obradu nekih zahtjeva klijenata. Nakon identificiranja grešaka, ispravio sam i ažurirao poslužitelj.

Zapravo, u ovoj fazi nije bilo toliko tehničkih problema. Cijela poteškoća bila je u tome što sam gotovo mjesec dana dežurao u uredu, samo povremeno odlazio kući. Vjerojatno 4-5 puta. I spavao sam na mahove, jer sam tada sam radio na projektu i nitko osim mene nije mogao ništa popraviti.

Mjesec dana, to ne znači da je sve stalno glitchalo mjesec dana i da sam nešto kodirao bez prestanka. Upravo smo to odlučili. Uostalom, posao je već radio i donosio profit. Bolje je igrati na sigurno i odmoriti se kasnije nego sada izgubiti klijente i profit. Svi smo to jako dobro razumjeli, pa je cijeli tim kolektivno posvetio maksimalnu pažnju i vrijeme uvođenju novog softvera u taksi sustav. A uzimajući u obzir trenutni promet narudžbi, sigurno ćemo ukloniti sve nedostatke u roku od mjesec dana. Pa skriveni bugovi koji eventualno ostanu sigurno neće imati kritične posljedice na poslovni proces i po potrebi se mogu ispraviti rutinski.

Ovdje je potrebno istaknuti neprocjenjivu pomoć direktora i poslovođa taksi službi, koji su, uz maksimalno razumijevanje složenosti situacije prelaska vozača na novi softver, danonoćno radili s vozačima. Zapravo, nakon završetka instalacije novih programa na telefone, nismo izgubili niti jedan upravljački program. I nisu kritično povećali postotak neuklanjanja klijenata, koji je ubrzo vraćen na normalne razine.

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 klijenta na taksi smanjeno je za red veličine, što je prirodno povećalo lojalnost korisnika usluzi. To je dovelo do povećanja broja narudžbi. Nakon toga se povećao broj taksista. Samim time se povećao i broj uspješno izvršenih narudžbi. I kao rezultat toga, dobit tvrtke je porasla. Naravno, tu idem malo ispred sebe, jer se cijeli ovaj proces nije dogodio trenutno. Reći da je uprava bila zadovoljna je ne reći ništa. Omogućen mi je neograničen pristup daljnjem financiranju projekta.

Nastaviti ..

Izvor: www.habr.com

Dodajte komentar