Hoe't in lyts programma in lyts kantoar feroare yn in federale bedriuw mei in winst fan 100+ miljoen roebel / moanne

Ein desimber 2008 waard ik útnoege foar ien fan 'e taksytsjinsten yn Perm mei it doel om besteande saaklike prosessen te automatisearjen. Yn it algemien krige ik trije fûnemintele taken:


  • Untwikkelje in softwarepakket foar in opropsintrum mei in mobile applikaasje foar taksysjauffeurs en automatisearje ynterne saaklike prosessen.
  • Alles moast yn de koartst mooglike tiid dien wurde.
  • Hawwe jo eigen software, yn stee fan kocht fan ûntwikkelders fan tredden, dy't yn 'e takomst, as it bedriuw ûntwikkelet, selsstannich kin wurde skalearre nei konstant feroarjende merkbetingsten.

Op dat stuit begriep ik net hoe't dizze merk wurket en syn nuânses, mar dochs wiene twa dingen foar my dúdlik. It callcenter moat boud wurde op basis fan de iepen boarne asterisk software PBX. De útwikseling fan ynformaasje tusken it callcenter en de mobile applikaasje is yn essinsje in client-server-oplossing mei alle oerienkommende patroanen foar it ûntwerpen fan de arsjitektuer fan it takomstige projekt en har programmearring.

Nei in foarriedige beoardieling fan de taken, deadlines en kosten foar it projekt, en nei ôfspraken oer alle nedige saken mei de eigner fan de taksytsjinst, bin ik yn jannewaris 2009 úteinset mei it wurk.

Foarút sjen sil ik daliks sizze. It resultaat wie in skalberber platfoarm dat rint op 60+ servers yn 12 stêden yn Ruslân en 2 yn Kazachstan. De totale winst fan it bedriuw wie 100+ miljoen roebels / moanne.

Fase ien. Prototype

Sûnt op dat stuit hie ik gjin praktyske ûnderfining yn IP-tillefoany, en ik wie allinnich oerflakkich bekend mei asterisk as ûnderdiel fan "thús" eksperiminten, waard besletten om te begjinnen wurkjen mei de ûntwikkeling fan in mobile applikaasje en tsjinner diel. Tagelyk, it sluten fan hiaten yn kennis oer oare taken.

As mei de mobile applikaasje alles min of mear dúdlik wie. Op dat stuit koe it allinich yn java skreaun wurde foar ienfâldige drukknoptillefoans, mar it skriuwen fan in tsjinner dy't mobile kliïnten tsjinne wie wat komplisearre:

  • Hokker tsjinner OS sil brûkt wurde;
  • Op grûn fan de logika dat in programmeartaal foar in taak keazen wurdt, en net oarsom, en mei rekkening mei punt 1, hokker programmeartaal optimaal wêze sil foar it oplossen fan problemen;
  • By it ûntwerp wie it nedich om rekken te hâlden mei de ferwachte takomstige hege lesten op 'e tsjinst;
  • Hokker databank kin garandearje skuld tolerânsje ûnder hege loads en hoe te behâlden in flugge databank antwurd tiid as it oantal oanfragen dêrta nimt ta;
  • De bepalende faktor wie de snelheid fan ûntwikkeling en de mooglikheid om de koade fluch te skaaljen
  • De kosten fan apparatuer en har ûnderhâld yn 'e takomst (ien fan' e betingsten fan 'e klant is dat de tsjinners moatte lizze op it grûngebiet ûnder syn kontrôle);
  • Kosten fan ûntwikkelders dy't nedich binne yn 'e folgjende stadia fan wurk op it platfoarm;

Lykas in protte oare problemen yn ferbân mei ûntwerp en ûntwikkeling.

Foardat it wurk oan it projekt begon, stelde ik it folgjende strategyske beslút oan de bedriuwseigner foar: om't it projekt frij kompleks is, sil de útfiering derfan in merkbere tiid nimme, dus earst meitsje ik in MVP-ferzje, dy't net folle tiid sil nimme en jild, mar dat sil tastean syn bedriuw te krijen in kompetitive foardiel op 'e merk al "hjir en no", en sil ek útwreidzje syn mooglikheden as taksy tsjinst. Op syn beurt sil sa'n tuskenoplossing my tiid jaan om de definitive oplossing mear yntinsyf te ûntwerpen en tiid foar technyske eksperiminten. Tagelyk sil de ymplementeare software-oplossing net garandearre wurde dat se goed ûntworpen binne en kin yn 'e takomst radikaal opnij ûntwurpen of ferfongen wurde, mar it sil perfoarst de minimale nedige funksjonaliteit útfiere om "ôf te brekken fan konkurrinten." De oprjochter fan de taksy fûn it idee leuk, dat se diene it úteinlik.

Ik studearre de earste twa wiken de saaklike prosessen yn it bedriuw, en bestudearre it wurk fan in taksy fan binnen. In saaklike analyze dien fan wêr, wat en hoe automatisearre wurde kin en oft it überhaupt nedich is. Hokker swierrichheden en problemen hawwe meiwurkers fan it bedriuw? Hoe't se wurde oplost. Hoe de wurkdei wurdt organisearre foar meiwurkers fan it bedriuw. Hokker ark brûke se?

Oan 'e ein fan' e tredde wike, nei it begjin fan it wurk en it bestudearjen fan saken fan belang op it ynternet, rekken hâldend mei de winsken fan 'e bedriuwseigner, lykas myn eigen kennis en mooglikheden op dat stuit, waard besletten om de folgjende stapel oan te passen :

  • Databanktsjinner: MsSQL (fergese ferzje mei limyt fan databasebestân oant 2GB);
  • Untwikkeling fan in tsjinner dy't mobile kliïnten tsjinnet yn Delphi ûnder Windows, om't d'r al in Windows-tsjinner wie wêrop de databank ynstalleare soe, en ek de ûntwikkelingsomjouwing sels fasilitearret rappe ûntwikkeling;
  • Mei it rekkenjen fan de lege ynternetsnelheden op mobile tillefoans werom yn 2009, moat it útwikselprotokol tusken de client en de server binêr wêze. Dit sil de grutte fan oerdroegen gegevenspakketten ferminderje en, as gefolch, de stabiliteit fan 'e wurken fan kliïnten mei de tsjinner ferheegje;

Noch twa wiken waarden bestege oan it ûntwerpen fan it protokol en de database. It resultaat wie 12 pakketten dy't soargje foar de útwikseling fan alle nedige gegevens tusken de mobile client en tsjinner en oer 20 tabellen yn de databank. Ik haw dit diel fan it wurk dien mei rekkening mei de takomst, sels as ik de technologystapel folslein feroarje moat, moat de struktuer fan 'e pakketten en databank net feroare wurde.

Nei it tariedend wurk wie it mooglik om te begjinnen mei de praktyske útfiering fan it idee. Om it proses in bytsje te fersnellen en tiid frij te meitsjen foar oare taken, makke ik in konseptferzje fan 'e mobile applikaasje, sketste de UI, foar in part de UX, en belutsen in bekende Java-programmeur yn it projekt. En hy rjochte him op ûntwikkeling, ûntwerp en testen fan serverside.

Oan 'e ein fan' e twadde moanne fan wurk oan 'e MVP wie de earste ferzje fan' e server en client prototype klear.

En oan 'e ein fan' e tredde moanne, nei syntetyske tests en fjildtests, bugfixes, lytse ferbetterings oan it protokol en databank, wie de applikaasje klear foar produksje. Wat is dien.

Fan dit momint begjint it meast nijsgjirrige en dreechste diel fan it projekt.

By de oergong fan bestjoerders nei de nije software waard 24-oere plicht organisearre. Om't net elkenien oerdeis op wurktiden komme koe. Derneist, bestjoerlik, troch in sterke wilsbeslút fan 'e oprjochter fan it bedriuw, waard it organisearre op sa'n manier dat de oanmelding / wachtwurd waard ynfierd troch de manager fan' e taksytsjinst en se waarden net kommunisearre oan 'e sjauffeur. Fan myn kant wie technyske stipe foar brûkers nedich yn gefal fan mislearrings en ûnfoarsjoene situaasjes.

Murphy's Law fertelt ús: "Alles dat ferkeard kin gean, sil ferkeard gean." En dat is krekt hoe't dingen mis gien ... It is ien ding doe't ik en ferskate taksysjauffeurs de applikaasje testen op ferskate tsientallen testopdrachten. En it is in folslein oare saak as 500+ sjauffeurs op 'e line wurkje yn echte tiid op echte oarders fan echte minsken.

De arsjitektuer fan 'e mobile applikaasje wie ienfâldich en d'r sieten opfallend minder bugs yn as yn 'e server. Dêrom wie it haadfokus fan it wurk op 'e serverkant. De meast krityske glitch yn 'e applikaasje wie it probleem fan' e ferbining fan 'e tsjinner doe't it ynternet op' e tillefoan ferlern gie en de sesje wer waard restaurearre. En it ynternet ferdwûn frij faak. Foarste plak, yn dy jierren it ynternet op 'e telefoan sels wie net stabyl genôch. Twads wiene d'r in protte bline flekken wêr't it ynternet gewoan net wurke. Wy identifisearre dit probleem hast fuortendaliks en binnen 24 oeren repareare en bywurke alle earder ynstallearre applikaasjes.

De tsjinner hie benammen flaters yn 'e oarder distribúsje algoritme en ferkearde ferwurking fan guon oanfragen fan kliïnten. By it identifisearjen fan glitches haw ik de tsjinner korrizjearre en bywurke.

Eins wiene d'r op dit stadium net safolle technyske problemen. De hiele swierrichheid wie dat ik hast in moanne op kantoar siet, mar sa no en dan nei hûs. Wierskynlik 4-5 kear. En ik sliepte yn fits and starts, om't ik op dat stuit allinich oan it projekt wurke en gjinien útsein my koe wat reparearje.

In moanne, dit betsjuttet net dat alles in moanne konstant glitche en ik wat kodearre sûnder te stopjen. Dat hawwe wy krekt besletten. It bedriuw wurke ommers al en makke winst. It is better om te spyljen it feilich en rêst letter dan te ferliezen klanten en winst no. Wy hawwe dit allegear goed begrepen, sadat it hiele team kollektyf maksimale oandacht en tiid besteegje oan it yntrodusearjen fan nije software yn it taksysysteem. En mei it rekkenjen fan it hjoeddeistige ferkear fan oarders, sille wy binnen in moanne alle tekoarten perfoarst eliminearje. No, ferburgen bugs dy't miskien bliuwe sille grif gjin krityske gefolgen hawwe op it bedriuwsproses en, as it nedich is, kinne se op routinebasis korrizjearre wurde.

Hjir is it nedich om te notearjen de ûnskatbere wearde help fan de direkteuren en foarmannen fan taksy tsjinsten, dy't, mei maksimaal begryp fan 'e kompleksiteit fan' e situaasje fan it oerdragen fan bestjoerders nei nije software, wurke mei bestjoerders rûn de klok. Yn feite, nei it foltôgjen fan de ynstallaasje fan nije programma's op tillefoans, hawwe wy gjin inkele bestjoerder ferlern. En se hawwe it persintaazje net-ferwidering fan kliïnten net kritysk ferhege, dy't gau weromkaam nei normale nivo's.

Dit foltôge de earste faze fan wurk oan it projekt. En it moat opmurken wurde dat it resultaat net lang te kommen wie. Troch it automatisearjen fan de distribúsje fan oarders oan sjauffeurs sûnder minsklik yngripen, waard de gemiddelde wachttiid foar in taksy troch in kliïnt fermindere troch in folchoarder fan grutte, wat fansels de klantloyaliteit oan 'e tsjinst fergrutte. Dat late ta in tanimming fan it tal oarders. Hjirnei naam it tal taksysjauffeurs ta. Dêrtroch is it oantal mei súkses foltôge oarders ek tanommen. En as gefolch, de winst fan it bedriuw tanommen. Fansels kom ik mysels in bytsje foarút, om't dit hiele proses net direkt plakfûn. Om te sizzen dat de direksje bliid wie, is neat te sizzen. Ik krige ûnbeheinde tagong ta fierdere finansiering fan it projekt.

To be continued ..

Boarne: www.habr.com

Add a comment