Kaip maža programa mažą biurą pavertė federaline įmone, kurios pelnas viršija 100 milijonų rublių per mėnesį

2008 m. gruodžio pabaigoje buvau pakviestas į vieną iš taksi paslaugų Permės mieste su tikslu automatizuoti esamus verslo procesus. Apskritai man buvo skirtos trys pagrindinės užduotys:


  • Sukurkite programinės įrangos paketą skambučių centrui su mobiliąja programa taksi vairuotojams ir automatizuokite vidinius verslo procesus.
  • Viską reikėjo padaryti per trumpiausią įmanomą laiką.
  • Turėkite savo programinę įrangą, o ne įsigykite iš trečiųjų šalių kūrėjų, kurią ateityje, vystantis verslui, bus galima savarankiškai pritaikyti prie nuolat kintančių rinkos sąlygų.

Tuo metu nesupratau, kaip veikia ši rinka ir jos niuansai, bet nepaisant to, du dalykai man buvo akivaizdūs. Skambučių centras turi būti sukurtas remiantis atvirojo kodo PBX programine įranga. Keitimasis informacija tarp skambučių centro ir mobiliosios aplikacijos iš esmės yra kliento-serverio sprendimas su visais atitinkamais ateities projekto architektūros projektavimo ir jo programavimo modeliais.

Preliminariai įvertinęs projekto užduotis, terminus ir išlaidas bei sutaręs visus reikalingus klausimus su taksi paslaugos savininku, darbą pradėjau 2009 m. sausio mėn.

Žvelgiant į priekį, iš karto pasakysiu. Rezultatas buvo keičiamo dydžio platforma, veikianti daugiau nei 60 serverių 12 Rusijos miestų ir 2 Kazachstano miestų. Bendras įmonės pelnas siekė 100+ milijonų rublių/mėn.

Pirmas etapas. Prototipas

Kadangi tuo metu neturėjau praktinės IP telefonijos patirties, o su žvaigždute buvau susipažinęs tik paviršutiniškai kaip „namų“ eksperimentų dalis, buvo nuspręsta pradėti kurti mobiliąją aplikaciją ir serverio dalį. Tuo pačiu panaikinti žinių apie kitas užduotis spragas.

Jei su mobiliąja programa viskas buvo daugiau ar mažiau aišku. Tuo metu tai buvo galima parašyti tik java paprastiems telefonams su mygtukais, tačiau mobiliuosius klientus aptarnaujančio serverio rašymas buvo šiek tiek sudėtingesnis:

  • Kokia serverio OS bus naudojama;
  • Remiantis logika, kad užduočiai parenkama programavimo kalba, o ne atvirkščiai, ir atsižvelgiant į 1 punktą, kokia programavimo kalba bus optimali sprendžiant uždavinius;
  • Projektuojant reikėjo atsižvelgti į numatomas dideles tarnybos apkrovas ateityje;
  • Kuri duomenų bazė gali garantuoti atsparumą gedimams esant didelėms apkrovoms ir kaip išlaikyti greitą duomenų bazės atsako laiką didėjant užklausų į ją skaičiui;
  • Lemiamas veiksnys buvo kūrimo greitis ir galimybė greitai pakeisti kodo mastelį
  • Įrangos ir jos priežiūros kaina ateityje (viena iš užsakovo sąlygų – serveriai turi būti jo valdomoje teritorijoje);
  • Kūrėjų, kurių prireiks kituose platformos darbo etapuose, išlaidos;

Taip pat daugelis kitų su projektavimu ir plėtra susijusių klausimų.

Prieš pradėdamas dirbti su projektu, verslo savininkui pasiūliau tokį strateginį sprendimą: kadangi projektas yra gana sudėtingas, jo įgyvendinimas užtruks pastebimai daug laiko, todėl pirmiausia sukuriu MVP versiją, kuri neužims daug laiko ir pinigų, tačiau tai leis jo įmonei įgyti konkurencinį pranašumą rinkoje jau „čia ir dabar“, o taip pat išplės savo, kaip taksi paslaugos, galimybes. Savo ruožtu toks tarpinis sprendimas suteiks man laiko apgalvočiau suprojektuoti galutinį sprendimą ir laiko techniniams eksperimentams. Tuo pačiu metu nebus garantuotas, kad įdiegtas programinis sprendimas bus tinkamai suprojektuotas ir ateityje gali būti radikaliai perkurtas ar pakeistas, tačiau jis tikrai atliks minimalias reikalingas funkcijas, kad „atsiplėštų nuo konkurentų“. Taksi įkūrėjui ši idėja patiko, todėl galiausiai jie tai padarė.

Pirmąsias dvi savaites studijavau verslo procesus įmonėje, mokiausi taksi darbo iš vidaus. Atliko verslo analizę, kur, ką ir kaip galima automatizuoti ir ar apskritai to reikia. Su kokiais sunkumais ir problemomis susiduria įmonės darbuotojai? Kaip jie sprendžiami. Kaip organizuojama darbo diena įmonės darbuotojams. Kokias priemones jie naudoja?

Trečios savaitės pabaigoje, pradėjus dirbti ir išnagrinėjus dominančius klausimus internete, atsižvelgiant į verslo savininko norus, taip pat į savo tuometines žinias ir galimybes, buvo nuspręsta pritaikyti tokį krūvą :

  • Duomenų bazės serveris: MsSQL (nemokama versija su duomenų bazės failų limitu iki 2GB);
  • Mobiliuosius klientus aptarnaujančio serverio kūrimas Delphi su Windows, nes jau buvo Windows serveris, kuriame būtų įdiegta duomenų bazė, taip pat pati kūrimo aplinka palengvina greitą plėtrą;
  • Atsižvelgiant į mažą interneto greitį mobiliuosiuose telefonuose dar 2009 m., apsikeitimo protokolas tarp kliento ir serverio turi būti dvejetainis. Tai sumažins perduodamų duomenų paketų dydį ir dėl to padidins klientų darbo su serveriu stabilumą;

Dar dvi savaitės buvo praleistos kuriant protokolą ir duomenų bazę. Rezultatas buvo 12 paketų, kurie užtikrina visų reikiamų duomenų mainus tarp mobiliojo kliento ir serverio bei apie 20 lentelių duomenų bazėje. Šią darbo dalį atlikau atsižvelgdamas į ateitį, net jei tektų visiškai pakeisti technologijų krūvą, paketų ir duomenų bazės struktūra turėtų išlikti nepakitusi.

Po parengiamųjų darbų buvo galima pradėti praktinį idėjos įgyvendinimą. Norėdamas šiek tiek pagreitinti procesą ir atlaisvinti laiko kitoms užduotims, sukūriau mobiliosios aplikacijos juodraštį, nubraižiau vartotojo sąsają, iš dalies UX, ir į projektą įtraukiau pažįstamą java programuotoją. Jis sutelkė dėmesį į serverio kūrimą, dizainą ir testavimą.

Antrojo darbo MVP mėnesio pabaigoje buvo paruošta pirmoji serverio ir kliento prototipo versija.

O trečio mėnesio pabaigoje po sintetinių ir lauko bandymų, klaidų pataisymų, nedidelių protokolo ir duomenų bazės patobulinimų programa buvo paruošta gamybai. Kas ir buvo padaryta.

Nuo šios akimirkos prasideda įdomiausia ir sunkiausia projekto dalis.

Vairuotojų perėjimo prie naujos programinės įrangos metu buvo organizuojamas XNUMX val. Kadangi ne visi galėjo ateiti darbo valandomis dieną. Be to, administracine tvarka, įmonės steigėjo valia, buvo organizuota taip, kad prisijungimo vardą/slaptažodį įvedė taksi tarnybos vadovas ir jie nebuvo supažindinti su vairuotoju. Iš mano pusės, gedimų ir nenumatytų situacijų atveju prireikė techninės pagalbos vartotojams.

Merfio dėsnis mums sako: „Viskas, kas gali suklysti, suklys“. Ir būtent taip viskas susiklostė... Vienas dalykas, kai aš ir keli taksi vairuotojai išbandėme programą pagal kelias dešimtis bandomųjų užsakymų. Ir visai kas kita, kai daugiau nei 500 vairuotojų dirba realiu laiku pagal realius žmonių užsakymus.

Mobiliosios aplikacijos architektūra buvo paprasta ir klaidų joje buvo pastebimai mažiau nei serveryje. Todėl pagrindinis darbo dėmesys buvo sutelktas į serverio pusę. Kritiškiausias programos gedimas buvo atsijungimo nuo serverio problema, kai telefone dingo internetas ir vėl buvo atkurta sesija. O internetas dingdavo gana dažnai. Pirma, tais metais pats internetas telefone nebuvo pakankamai stabilus. Antra, buvo daug aklųjų zonų, kur internetas tiesiog neveikė. Šią problemą nustatėme beveik iš karto ir per XNUMX valandas ištaisėme ir atnaujinome visas anksčiau įdiegtas programas.

Serveryje daugiausia buvo klaidų užsakymų paskirstymo algoritme ir neteisingai apdorotos kai kurios klientų užklausos. Nustačiusi gedimus, ištaisiau ir atnaujinau serverį.

Tiesą sakant, šiame etape techninių problemų nebuvo tiek daug. Visas sunkumas buvo tas, kad beveik mėnesį budėjau biure, tik retkarčiais eidavau namo. Tikriausiai 4-5 kartus. Ir aš miegojau priepuoliais, nes tuo metu prie projekto dirbau vienas ir niekas, išskyrus mane, nieko negalėjo sutvarkyti.

Mėnesį, tai nereiškia, kad visą mėnesį viskas nuolat trikdė ir aš kažką kodavau nesustodamas. Mes ką tik taip nusprendėme. Juk verslas jau veikė ir davė pelną. Geriau žaisti saugiai ir pailsėti vėliau, nei prarasti klientus ir pelną dabar. Visi tai puikiai supratome, todėl visa komanda kolektyviai skyrė maksimalų dėmesį ir laiką naujos programinės įrangos įdiegimui į taksi sistemą. O atsižvelgiant į dabartinį užsakymų srautą, visus trūkumus tikrai pašalinsime per mėnesį. Na, o paslėptos klaidos, kurios gali likti, tikrai neturės kritinių pasekmių verslo procesui ir prireikus jas bus galima ištaisyti įprastai.

Čia reikia atkreipti dėmesį į neįkainojamą pagalbą iš taksi paslaugų direktorių ir meistrų, kurie, maksimaliai suprasdami vairuotojų perkėlimo į naują programinę įrangą situacijos sudėtingumą, dirbo su vairuotojais visą parą. Tiesą sakant, baigę diegti naujas programas telefonuose, nepraradome nė vieno tvarkyklės. Ir jie kritiškai nepadidino klientų nepašalinimo procento, kuris greitai sugrįžo į normalų lygį.

Tai užbaigė pirmąjį projekto etapą. Ir reikia pažymėti, kad rezultatas netruko laukti. Automatizavus užsakymų paskirstymą vairuotojams be žmogaus įsikišimo, vidutinis kliento laukimo laikas taksi sutrumpėjo dydžiu, o tai natūraliai padidino klientų lojalumą paslaugai. Dėl to išaugo užsakymų skaičius. Po to taksi vairuotojų padaugėjo. Dėl to išaugo ir sėkmingai įvykdytų užsakymų skaičius. Ir dėl to išaugo įmonės pelnas. Žinoma, čia aš šiek tiek pralenkiu save, nes visas šis procesas neįvyko akimirksniu. Pasakyti, kad vadovybė buvo patenkinta, reiškia nieko nesakyti. Man buvo suteikta neribota galimybė gauti tolesnį projekto finansavimą.

Tęsinys ..

Šaltinis: www.habr.com

Добавить комментарий