Ինչպես փոքր ծրագիրը փոքր գրասենյակը վերածեց դաշնային ընկերության՝ ամսական 100+ միլիոն ռուբլի շահույթով

2008 թվականի դեկտեմբերի վերջին ես հրավիրվեցի Պերմի տաքսի ծառայություններից մեկը՝ նպատակ ունենալով ավտոմատացնել առկա բիզնես գործընթացները: Ընդհանուր առմամբ, ինձ տրվեցին երեք հիմնարար առաջադրանքներ.


  • Մշակել ծրագրային փաթեթ տաքսու վարորդների համար բջջային հավելվածով զանգերի կենտրոնի համար և ավտոմատացնել ներքին բիզնես գործընթացները:
  • Ամեն ինչ պետք է արվեր ամենակարճ ժամկետում։
  • Ունեցեք ձեր սեփական ծրագրակազմը, այլ ոչ թե գնված երրորդ կողմի մշակողներից, որոնք ապագայում, երբ բիզնեսը զարգանա, կարող է ինքնուրույն չափվել շուկայական անընդհատ փոփոխվող պայմանների համար:

Այն ժամանակ ես չէի հասկանում, թե ինչպես է աշխատում այս շուկան և դրա նրբությունները, բայց, այնուամենայնիվ, երկու բան ինձ համար ակնհայտ էր. Զանգի կենտրոնը պետք է կառուցվի բաց կոդով աստղանիշ PBX ծրագրաշարի հիման վրա: Զանգերի կենտրոնի և բջջային հավելվածի միջև տեղեկատվության փոխանակումը, ըստ էության, հաճախորդ-սերվեր լուծում է՝ ապագա նախագծի ճարտարապետության և դրա ծրագրավորման բոլոր համապատասխան օրինաչափություններով:

Նախագծի առաջադրանքների, ժամկետների և ծախսերի նախնական գնահատումից և տաքսի ծառայության սեփականատիրոջ հետ բոլոր անհրաժեշտ հարցերը պայմանավորվելուց հետո ես աշխատանքի անցա 2009 թվականի հունվարից:

Առաջ նայելով` անմիջապես կասեմ. Արդյունքը եղավ լայնածավալ հարթակ, որն աշխատում էր 60+ սերվերների վրա Ռուսաստանի 12 քաղաքներում և 2 Ղազախստանում: Ընկերության ընդհանուր շահույթը կազմել է 100+ միլիոն ռուբլի/ամսական։

Փուլ առաջին. Նախատիպ

Քանի որ այն ժամանակ ես IP հեռախոսակապի պրակտիկ փորձ չունեի, և աստղանիշին միայն մակերեսորեն էի ծանոթ որպես «տնային» փորձերի մաս, որոշվեց սկսել աշխատել բջջային հավելվածի և սերվերի մասի մշակմամբ։ Միևնույն ժամանակ, այլ խնդիրների վերաբերյալ գիտելիքների բացերը փակելը:

Եթե ​​բջջային հավելվածով ամեն ինչ քիչ թե շատ պարզ էր. Այն ժամանակ այն կարող էր գրվել միայն java-ով պարզ կոճակով հեռախոսների համար, բայց բջջային հաճախորդներին սպասարկող սերվեր գրելը մի փոքր ավելի բարդ էր.

  • Ինչ սերվերի ՕՀ-ն կօգտագործվի;
  • Ելնելով այն տրամաբանությունից, որ առաջադրանքի համար ընտրվում է ծրագրավորման լեզու, և ոչ թե հակառակը, և հաշվի առնելով 1-ին կետը, թե որ ծրագրավորման լեզուն կլինի օպտիմալ խնդիրներ լուծելու համար.
  • Նախագծման ընթացքում անհրաժեշտ էր հաշվի առնել սպասվող սպասվող ապագա բարձր բեռները.
  • Ո՞ր տվյալների բազան կարող է երաշխավորել սխալների հանդուրժողականություն բարձր բեռների դեպքում և ինչպես պահպանել տվյալների բազայի արագ արձագանքման ժամանակը, քանի որ դրան ուղղված հարցումների թիվը մեծանում է.
  • Որոշիչ գործոնը զարգացման արագությունն էր և կոդը արագ մասշտաբավորելու ունակությունը
  • Ապագայում սարքավորումների և դրա սպասարկման արժեքը (հաճախորդի պայմաններից մեկն այն է, որ սերվերները պետք է տեղակայվեն նրա վերահսկողության տակ գտնվող տարածքում).
  • Ծրագրավորողների արժեքը, որոնք անհրաժեշտ կլինեն հարթակի վրա աշխատանքի հաջորդ փուլերում.

Ինչպես նաև նախագծման և մշակման հետ կապված բազմաթիվ այլ խնդիրներ:

Նախքան նախագծի վրա աշխատանքը սկսելը, ես բիզնեսի սեփականատիրոջն առաջարկեցի հետևյալ ռազմավարական որոշումը. քանի որ նախագիծը բավականին բարդ է, դրա իրականացումը նկատելի ժամանակ կխլի, ուստի նախ ես ստեղծում եմ MVP տարբերակ, որը շատ ժամանակ չի խլի և գումար, բայց ինչը թույլ կտա նրա ընկերությանը ձեռք բերել մրցակցային առավելություն շուկայում արդեն «այստեղ և հիմա», ինչպես նաև կընդլայնի իր հնարավորությունները որպես տաքսի ծառայություն: Իր հերթին, նման միջանկյալ լուծումն ինձ ժամանակ կտա ավելի մտածված ձևավորելու վերջնական լուծումը և ժամանակ տեխնիկական փորձերի համար: Միևնույն ժամանակ, ներդրված ծրագրային լուծումը երաշխավորված չի լինի ճիշտ ձևավորելու և ապագայում կարող է արմատապես վերանախագծվել կամ փոխարինվել, բայց այն անպայման կկատարի նվազագույն անհրաժեշտ ֆունկցիոնալությունը՝ «պոկվելու մրցակիցներից»: Գաղափարը դուր է եկել տաքսիի հիմնադրին, ուստի վերջում նրանք դա արել են։

Առաջին երկու շաբաթն ուսումնասիրել եմ ընկերությունում բիզնես գործընթացները, իսկ տաքսու աշխատանքը ներսից ուսումնասիրել եմ։ Իրականացրել է բիզնես վերլուծություն, թե որտեղ, ինչ և ինչպես կարելի է ավտոմատացնել և արդյոք դա ընդհանրապես անհրաժեշտ է: Ի՞նչ դժվարությունների և խնդիրների են բախվում ընկերության աշխատակիցները։ Ինչպես են դրանք լուծվում։ Ինչպես է կազմակերպվում աշխատանքային օրը ընկերության աշխատակիցների համար. Ի՞նչ գործիքներ են նրանք օգտագործում:

Երրորդ շաբաթվա վերջում, աշխատանք սկսելուց և ինտերնետում հետաքրքրող հարցերը ուսումնասիրելուց հետո, հաշվի առնելով բիզնեսի սեփականատիրոջ ցանկությունները, ինչպես նաև իմ այն ​​ժամանակվա իմ գիտելիքներն ու հնարավորությունները, որոշվեց կիրառել հետևյալ ստեկը. :

  • Տվյալների բազայի սերվեր՝ MsSQL (անվճար տարբերակ տվյալների բազայի ֆայլի սահմանաչափով մինչև 2 ԳԲ);
  • Դելֆիում Windows-ի տակ բջջային հաճախորդներին սպասարկող սերվերի մշակում, քանի որ արդեն կար Windows սերվեր, որի վրա պետք է տեղադրվեր տվյալների բազան, ինչպես նաև զարգացման միջավայրն ինքնին նպաստում է արագ զարգացմանը.
  • Հաշվի առնելով 2009 թվականին բջջային հեռախոսների ինտերնետի ցածր արագությունը, հաճախորդի և սերվերի միջև փոխանակման արձանագրությունը պետք է լինի երկուական: Սա կնվազեցնի փոխանցված տվյալների փաթեթների չափը և, որպես արդյունք, կբարձրացնի հաճախորդների աշխատանքի կայունությունը սերվերի հետ.

Եվս երկու շաբաթ ծախսվեց արձանագրության և տվյալների բազայի ձևավորման վրա։ Արդյունքը եղավ 12 փաթեթ, որոնք ապահովում են բոլոր անհրաժեշտ տվյալների փոխանակումը բջջային հաճախորդի և սերվերի և տվյալների բազայի մոտ 20 աղյուսակների միջև: Աշխատանքի այս հատվածը ես արել եմ՝ հաշվի առնելով ապագան, նույնիսկ եթե ես պետք է ամբողջությամբ փոխեմ տեխնոլոգիական ստեկը, փաթեթների և տվյալների բազայի կառուցվածքը պետք է մնա անփոփոխ։

Նախապատրաստական ​​աշխատանքներից հետո հնարավոր եղավ սկսել գաղափարի գործնական իրականացումը։ Գործընթացը մի փոքր արագացնելու և այլ առաջադրանքների համար ժամանակ ազատելու համար ես պատրաստեցի բջջային հավելվածի սևագիր տարբերակը, ուրվագծեցի UI-ը, մասամբ UX-ը և նախագծում ներգրավեցի մի ծանոթ java ծրագրավորողի: Եվ նա կենտրոնացավ սերվերի կողմից մշակման, դիզայնի և փորձարկման վրա:

MVP-ի վրա աշխատանքի երկրորդ ամսվա ավարտին արդեն պատրաստ էր սերվերի և հաճախորդի նախատիպի առաջին տարբերակը։

Եվ երրորդ ամսվա վերջում, սինթետիկ փորձարկումներից և դաշտային փորձարկումներից, սխալների շտկումից, արձանագրության և տվյալների բազայի փոքր բարելավումներից հետո, հավելվածը պատրաստ էր արտադրության: Ինչն էլ արվեց։

Այս պահից սկսվում է նախագծի ամենահետաքրքիր ու ամենադժվար մասը։

Վարորդների նոր ծրագրային ապահովմանն անցնելու ժամանակ կազմակերպվել է շուրջօրյա հերթապահություն։ Քանի որ ոչ բոլորը կարող էին գալ ցերեկային ժամերին։ Բացի այդ, վարչականորեն, ընկերության հիմնադրի վճռական որոշմամբ կազմակերպվել է այնպես, որ մուտքի/գաղտնաբառը մուտքագրվել է տաքսի ծառայության մենեջերի կողմից և դրանք վարորդին չեն հաղորդվել։ Իմ կողմից անհրաժեշտ էր տեխնիկական աջակցություն օգտատերերի համար խափանումների և չնախատեսված իրավիճակների դեպքում։

Մերֆիի օրենքը մեզ ասում է. «Ամեն ինչ, որը կարող է սխալ լինել, սխալ կլինի»: Եվ հենց այդպես էլ ամեն ինչ սխալ ստացվեց... Մի բան է, երբ ես և մի քանի տաքսու վարորդներ փորձարկեցինք հավելվածը մի քանի տասնյակ թեստային պատվերների վրա: Եվ դա բոլորովին այլ հարց է, երբ գծի 500+ վարորդներն աշխատում են իրական ժամանակում՝ իրական մարդկանց իրական պատվերներով:

Բջջային հավելվածի ճարտարապետությունը պարզ էր, և դրա մեջ նկատելիորեն ավելի քիչ սխալներ կային, քան սերվերում: Հետևաբար, աշխատանքի հիմնական ուշադրությունը սերվերի վրա էր: Հավելվածի ամենակարևոր անսարքությունը սերվերից անջատվելու խնդիրն էր, երբ հեռախոսի ինտերնետը կորավ, և նիստը նորից վերականգնվեց: Իսկ ինտերնետը բավականին հաճախ անհետանում էր։ Նախ, այդ տարիներին ինտերնետը հեռախոսով բավականաչափ կայուն չէր։ Երկրորդ, կային բազմաթիվ կույր կետեր, որտեղ ինտերնետը պարզապես չէր աշխատում։ Մենք հայտնաբերեցինք այս խնդիրը գրեթե անմիջապես և XNUMX ժամվա ընթացքում շտկեցինք և թարմացրինք նախկինում տեղադրված բոլոր հավելվածները:

Սերվերը հիմնականում սխալներ ուներ պատվերի բաշխման ալգորիթմում և հաճախորդների որոշ հարցումների սխալ մշակում: Սխալները հայտնաբերելուց հետո ես ուղղեցի և թարմացրի սերվերը:

Փաստորեն, այս փուլում տեխնիկական խնդիրներն այդքան էլ շատ չեն եղել։ Ամբողջ դժվարությունն այն էր, որ ես գրեթե մեկ ամիս հերթապահում էի գրասենյակում, միայն երբեմն գնում էի տուն։ Երևի 4-5 անգամ։ Եվ ես քնեցի ֆիթս-սկսումներով, քանի որ այն ժամանակ մենակ էի աշխատում նախագծի վրա, և ինձնից բացի ոչ ոք չէր կարող որևէ բան ուղղել։

Մեկ ամիս, սա չի նշանակում, որ մեկ ամիս շարունակ ամեն ինչ շփոթվում էր, և ես առանց կանգ առնելու ինչ-որ բան էի կոդավորում: Մենք հենց այդպես որոշեցինք։ Չէ՞ որ բիզնեսն արդեն գործում էր ու շահույթ էր ստանում։ Ավելի լավ է խաղալ անվտանգ և ավելի ուշ հանգստանալ, քան հիմա կորցնել հաճախորդներին և շահույթը: Մենք բոլորս դա շատ լավ հասկացանք, ուստի ամբողջ թիմը միասին առավելագույն ուշադրություն և ժամանակ հատկացրեց տաքսի համակարգում նոր ծրագրակազմ ներմուծելուն: Եվ հաշվի առնելով պատվերների ընթացիկ տրաֆիկը, մեկ ամսվա ընթացքում անպայման կվերացնենք բոլոր թերությունները։ Դե, թաքնված սխալները, որոնք կարող են մնալ, անշուշտ, կրիտիկական հետևանքներ չեն ունենա բիզնես գործընթացի վրա և, անհրաժեշտության դեպքում, դրանք կարող են շտկվել սովորական հիմունքներով:

Այստեղ հարկ է նշել տաքսի ծառայությունների տնօրենների և վարպետների անգնահատելի օգնությունը, ովքեր, առավելագույնս ըմբռնելով վարորդներին նոր ծրագրեր տեղափոխելու իրավիճակի բարդությունը, շուրջօրյա աշխատել են վարորդների հետ։ Փաստորեն, հեռախոսների վրա նոր ծրագրերի տեղադրումն ավարտելուց հետո մենք ոչ մի դրայվեր չենք կորցրել։ Եվ նրանք քննադատաբար չբարձրացրին հաճախորդների չհեռացման տոկոսը, որը շուտով վերադարձվեց նորմալ մակարդակի:

Դրանով ավարտվեց նախագծի վրա աշխատանքի առաջին փուլը: Եվ պետք է նշել, որ արդյունքը չուշացավ. Ավտոմատացնելով վարորդներին պատվերների բաշխումն առանց մարդու միջամտության՝ հաճախորդի կողմից տաքսի սպասելու միջին ժամանակը կրճատվել է մեծության կարգով, ինչը, բնականաբար, մեծացրել է հաճախորդների հավատարմությունը ծառայությանը: Սա հանգեցրեց պատվերների քանակի ավելացման: Սրանից հետո տաքսու վարորդների թիվն ավելացավ։ Արդյունքում ավելացել է նաև հաջողությամբ կատարված պատվերների թիվը։ Եվ արդյունքում ընկերության շահույթն ավելացավ։ Իհարկե, այստեղ ես մի փոքր առաջ եմ ընկնում ինձնից, քանի որ այս ամբողջ գործընթացը ակնթարթորեն տեղի չի ունեցել։ Ասել, որ ղեկավարությունը գոհ էր, նշանակում է ոչինչ չասել: Ինձ տրվեց ծրագրի հետագա ֆինանսավորման անսահմանափակ հնարավորություն:

Շարունակելի..

Source: www.habr.com

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