Како је мали програм претворио малу канцеларију у савезну компанију са профитом од 100+ милиона рубаља месечно

Крајем децембра 2008. године позван сам у једну од такси служби у Перму са циљем аутоматизације постојећих пословних процеса. Генерално, добила сам три основна задатка:


  • Развити софтверски пакет за позивни центар са мобилном апликацијом за таксисте и аутоматизовати интерне пословне процесе.
  • Све је требало урадити у најкраћем могућем року.
  • Имајте сопствени софтвер, а не да га купујете од независних програмера, који се у будућности, како се посао развија, може независно прилагодити на стално променљиве тржишне услове.

Тада нисам разумео како ово тржиште функционише и његове нијансе, али су ми, ипак, биле очигледне две ствари. Позивни центар мора бити изграђен на бази софтвера ПБКС отвореног кода астериск. Размена информација између цалл центра и мобилне апликације је у суштини клијент-сервер решење са свим одговарајућим обрасцима за пројектовање архитектуре будућег пројекта и његовог програмирања.

Након прелиминарне процене задатака, рокова и трошкова пројекта, и након договора о свим потребним питањима са власником такси службе, почео сам са радом у јануару 2009. године.

Гледајући унапред, одмах ћу рећи. Резултат је била скалабилна платформа која ради на 60+ сервера у 12 градова у Русији и 2 у Казахстану. Укупан профит компаније износио је 100+ милиона рубаља месечно.

Прва фаза. Прототип

Пошто у то време нисам имао практичног искуства у ИП телефонији, а са астериск-ом сам био само површно упознат у оквиру „кућних” експеримената, одлучено је да почнем да се бавим развојем мобилне апликације и серверског дела. Истовремено, затварање празнина у знању о другим задацима.

Да је са мобилном апликацијом све било мање-више јасно. У то време, то је могло да се пише само у Јави за једноставне телефоне са дугметом, али писање сервера који опслужује мобилне клијенте било је мало компликованије:

  • Који ОС сервер ће се користити;
  • На основу логике да се за задатак бира програмски језик, а не обрнуто, и узимајући у обзир тачку 1, који ће програмски језик бити оптималан за решавање проблема;
  • Приликом пројектовања било је потребно узети у обзир очекивана будућа велика оптерећења на сервису;
  • Која база података може гарантовати толеранцију грешака под великим оптерећењем и како одржати брзо време одзива базе података како се број захтева ка њој повећава;
  • Одлучујући фактор је била брзина развоја и способност брзог скалирања кода
  • Трошкови опреме и њеног одржавања у будућности (један од услова купца је да се сервери налазе на територији под његовом контролом);
  • Трошкови програмера који ће бити потребни у наредним фазама рада на платформи;

Као и многа друга питања везана за дизајн и развој.

Пре почетка рада на пројекту, власнику предузећа сам предложио следећу стратешку одлуку: пошто је пројекат прилично сложен, његова имплементација ће потрајати значајно, па прво направим МВП верзију, која неће одузети много времена и новца, али који ће омогућити његовој компанији да стекне конкурентску предност на тржишту већ „овде и сада“, а такође ће проширити своје могућности као такси службе. Заузврат, такво средње решење ће ми дати времена да пажљивије осмислим коначно решење и време за техничке експерименте. Истовремено, неће бити гарантовано да ће имплементирано софтверско решење бити исправно дизајнирано и може бити радикално редизајнирано или замењено у будућности, али ће дефинитивно обављати минималну неопходну функционалност да би се „одвојило од конкуренције“. Оснивачу таксија идеја се допала, па су на крају то и урадили.

Прве две недеље сам провео проучавајући пословне процесе у компанији, и проучавајући рад таксија изнутра. Спроведена пословна анализа где, шта и како се може аутоматизовати и да ли је то уопште потребно. Са којим потешкоћама и проблемима се суочавају запослени у компанији? Како се решавају. Како је организован радни дан за запослене у компанији. Које алате користе?

До краја треће недеље, након почетка рада и проучавања питања од интереса на Интернету, узимајући у обзир жеље власника предузећа, као и своје знање и способности у то време, одлучено је да применим следећи скуп :

  • Сервер базе података: МсСКЛ (бесплатна верзија са ограничењем датотеке базе података до 2ГБ);
  • Развој сервера који опслужује мобилне клијенте у Делпхи-у под Виндовс-ом, пошто је већ постојао Виндовс сервер на коме би се инсталирала база података, као и само развојно окружење омогућава брз развој;
  • Узимајући у обзир ниске брзине интернета на мобилним телефонима још 2009. године, протокол размене између клијента и сервера мора бити бинарни. Ово ће смањити величину пренетих пакета података и, као резултат, повећати стабилност рада клијената са сервером;

Још две недеље потрошене су на дизајнирање протокола и базе података. Резултат је 12 пакета који обезбеђују размену свих потребних података између мобилног клијента и сервера и око 20 табела у бази података. Урадио сам овај део посла водећи рачуна о будућности, чак и ако морам потпуно да променим технолошки стек, структура пакета и базе података треба да остане непромењена.

Након припремних радова, било је могуће започети практичну имплементацију идеје. Да бих мало убрзао процес и ослободио време за друге задатке, направио сам нацрт верзије мобилне апликације, скицирао кориснички интерфејс, делимично УКС и укључио познатог јава програмера у пројекат. И фокусирао се на развој, дизајн и тестирање на страни сервера.

До краја другог месеца рада на МВП-у, прва верзија прототипа сервера и клијента је била спремна.

И до краја трећег месеца, након синтетичких тестова и теренских тестова, исправки грешака, мањих побољшања протокола и базе података, апликација је била спремна за производњу. Што је и учињено.

Од овог тренутка почиње најзанимљивији и најтежи део пројекта.

Приликом преласка возача на нови софтвер организовано је дежурство 24 сата. Пошто нису сви могли да дођу у радно време током дана. Поред тога, административно је, одлучном одлуком оснивача предузећа, организовано тако да је логин/лозинку унео руководилац такси службе и нису саопштени возачу. Са моје стране, била је потребна техничка подршка корисницима у случају кварова и непредвиђених ситуација.

Марфијев закон нам каже: "Све што може поћи наопако, поћи ће наопако." И управо тако су ствари кренуле наопако... Једна је ствар када смо ја и неколико таксиста тестирали апликацију на неколико десетина тестних налога. А сасвим је друга ствар када 500+ возача на линији ради у реалном времену по стварним наруџбама правих људи.

Архитектура мобилне апликације је била једноставна и у њој је било приметно мање грешака него на серверу. Стога је главни фокус рада био на страни сервера. Најкритичнији квар у апликацији био је проблем прекида везе са сервером када је интернет на телефону изгубљен и сесија је поново обновљена. И интернет је често нестајао. Прво, тих година интернет на самом телефону није био довољно стабилан. Друго, било је много слепих тачака у којима Интернет једноставно није функционисао. Скоро одмах смо идентификовали овај проблем и у року од 24 сата поправили и ажурирали све претходно инсталиране апликације.

Сервер је углавном имао грешке у алгоритму дистрибуције налога и нетачну обраду неких захтева клијената. Након што сам идентификовао грешке, исправио сам и ажурирао сервер.

У ствари, није било толико техничких проблема у овој фази. Цела потешкоћа је била у томе што сам скоро месец дана дежурао у канцеларији, само повремено одлазио кући. Вероватно 4-5 пута. И спавао сам у нападима, пошто сам у то време сам радио на пројекту и нико осим мене није могао ништа да поправи.

Месец дана, то не значи да је месец дана све стално кварило и да сам нешто кодирао без престанка. Управо смо тако одлучили. На крају крајева, посао је већ пословао и доносио профит. Боље је играти на сигурно и одморити се касније него сада губити клијенте и профит. Сви смо то добро разумели, па је цео тим колективно посветио максималну пажњу и време увођењу новог софтвера у такси систем. А узимајући у обзир тренутни промет поруџбина, дефинитивно ћемо отклонити све недостатке у року од месец дана. Па, скривене грешке које могу остати сигурно неће имати критичне последице на пословни процес и, ако је потребно, могу се рутински исправљати.

Овде је потребно напоменути непроцењиву помоћ директора и предрадника такси служби, који су, уз максимално разумевање сложености ситуације преласка возача на нови софтвер, радили са возачима даноноћно. У ствари, након завршетка инсталације нових програма на телефонима, нисмо изгубили ниједан драјвер. И нису критички повећали проценат неудаљавања клијената, који је убрзо враћен на нормалне нивое.

Овим је завршена прва фаза рада на пројекту. И треба напоменути да се резултат није дуго чекао. Аутоматизацијом дистрибуције поруџбина возачима без људске интервенције, просечно време чекања на такси од стране клијента је смањено за ред величине, што је природно повећало лојалност корисника услузи. То је довело до повећања броја поруџбина. Након тога се повећао број таксиста. Као резултат тога, повећан је и број успешно извршених поруџбина. И као резултат тога, профит компаније се повећао. Наравно, ту сам мало испред себе, пошто се цео овај процес није одвијао одмах. Рећи да је управа била задовољна значи ништа. Добио сам неограничен приступ даљем финансирању пројекта.

Наставити ..

Извор: ввв.хабр.цом

Додај коментар