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

В края на декември 2008 г. бях поканен в една от таксиметровите служби в Перм с цел автоматизиране на съществуващите бизнес процеси. Като цяло ми бяха поставени три основни задачи:


  • Разработете софтуерен пакет за кол център с мобилно приложение за таксиметрови шофьори и автоматизирайте вътрешните бизнес процеси.
  • Всичко трябваше да се направи в най-кратки срокове.
  • Имате собствен софтуер, вместо закупен от разработчици на трети страни, който в бъдеще, с развитието на бизнеса, може да бъде независимо мащабиран към постоянно променящите се пазарни условия.

По това време не разбирах как работи този пазар и неговите нюанси, но въпреки това две неща бяха очевидни за мен. Кол центърът трябва да бъде изграден на базата на PBX софтуера с отворен код звездичка. Обменът на информация между кол центъра и мобилното приложение е по същество клиент-сървър решение с всички съответни модели за проектиране на архитектурата на бъдещия проект и неговото програмиране.

След предварителна оценка на задачите, сроковете и разходите по проекта и съгласуване на всички необходими въпроси със собственика на таксиметровата услуга, започнах работа през януари 2009 г.

Гледайки напред, ще кажа веднага. Резултатът беше мащабируема платформа, работеща на над 60 сървъра в 12 града в Русия и 2 в Казахстан. Общата печалба на компанията е над 100 милиона рубли на месец.

Етап първи. Прототип

Тъй като по това време нямах практически опит в IP телефонията и бях само повърхностно запознат със звездичката като част от „домашните“ експерименти, беше решено да започна работа с разработването на мобилно приложение и сървърна част. В същото време затваряне на пропуски в знанията по други задачи.

Ако с мобилното приложение всичко беше повече или по-малко ясно. По това време можеше да се напише само на java за прости телефони с бутони, но писането на сървър, обслужващ мобилни клиенти, беше малко по-сложно:

  • Каква сървърна ОС ще се използва;
  • Въз основа на логиката, че езикът за програмиране се избира за задача, а не обратното, и като се вземе предвид точка 1, кой език за програмиране ще бъде оптимален за решаване на проблеми;
  • По време на проектирането беше необходимо да се вземат предвид очакваните бъдещи високи натоварвания на услугата;
  • Коя база данни може да гарантира отказоустойчивост при високи натоварвания и как да поддържаме бързо време за реакция на базата данни при увеличаване на броя на заявките към нея;
  • Определящият фактор беше скоростта на разработка и възможността за бързо мащабиране на кода
  • Цената на оборудването и неговата поддръжка в бъдеще (едно от условията на клиента е сървърите да се намират на територията под негов контрол);
  • Разходи за разработчици, които ще са необходими в следващите етапи на работа по платформата;

Както и много други въпроси, свързани с дизайна и разработката.

Преди да започна работа по проекта, предложих следното стратегическо решение на собственика на бизнеса: тъй като проектът е доста сложен, изпълнението му ще отнеме значително време, така че първо създавам MVP версия, която няма да отнеме много време и пари, но което ще позволи на компанията му да спечели конкурентно предимство на пазара още „тук и сега“, а също така ще разшири възможностите си като таксиметрова услуга. От своя страна такова междинно решение ще ми даде време за по-обмислено проектиране на крайното решение и време за технически експерименти. В същото време, внедреното софтуерно решение няма да бъде гарантирано правилно проектирано и може да бъде радикално преработено или заменено в бъдеще, но определено ще изпълнява минимално необходимата функционалност, за да се „откъсне от конкурентите“. Основателят на таксито хареса идеята, така че в крайна сметка го направиха.

Първите две седмици прекарах в изучаване на бизнес процесите в компанията и изучаване на работата на едно такси отвътре. Направен бизнес анализ къде, какво и как може да се автоматизира и дали изобщо е необходимо. С какви трудности и проблеми се сблъскват служителите на компанията? Как се решават. Как е организиран работният ден на служителите на компанията. Какви инструменти използват?

До края на третата седмица, след започване на работа и изучаване на интересни въпроси в Интернет, като се вземат предвид желанията на собственика на бизнеса, както и собствените ми знания и възможности по това време, беше решено да се приложи следният стек :

  • Сървър на база данни: MsSQL (безплатна версия с ограничение на файла на базата данни до 2GB);
  • Разработка на сървър, обслужващ мобилни клиенти в Delphi под Windows, тъй като вече има Windows сървър, на който ще бъде инсталирана базата данни, както и самата среда за разработка улеснява бързото развитие;
  • Като се вземат предвид ниските скорости на интернет на мобилните телефони през 2009 г., протоколът за обмен между клиент и сървър трябва да бъде двоичен. Това ще намали размера на предаваните пакети данни и в резултат ще повиши стабилността на работата на клиентите със сървъра;

Още две седмици бяха изразходвани за проектиране на протокола и базата данни. Резултатът беше 12 пакета, които осигуряват обмен на всички необходими данни между мобилния клиент и сървър и около 20 таблици в базата данни. Направих тази част от работата, като взех предвид бъдещето, дори ако трябва да променя изцяло технологичния стек, структурата на пакетите и базата данни трябва да останат непроменени.

След подготвителната работа беше възможно да започне практическото изпълнение на идеята. За да ускоря малко процеса и да освободя време за други задачи, направих чернова версия на мобилното приложение, скицирах потребителския интерфейс, отчасти UX, и включих познат java програмист в проекта. И той се фокусира върху разработката, дизайна и тестването от страна на сървъра.

До края на втория месец на работа по MVP, първата версия на прототипа на сървъра и клиента беше готова.

И в края на третия месец, след синтетични тестове и полеви тестове, корекции на грешки, незначителни подобрения на протокола и базата данни, приложението беше готово за производство. Което и беше направено.

От този момент започва най-интересната и най-трудната част от проекта.

При преминаването на шофьорите към новия софтуер бяха организирани XNUMX-часови дежурства. Тъй като не всеки можеше да дойде в работно време през деня. Освен това, административно, по волево решение на основателя на компанията, беше организирано по такъв начин, че данните за вход/парола се въвеждат от управителя на таксиметровата служба и не се съобщават на шофьора. От моя страна беше необходима техническа поддръжка за потребителите в случай на повреди и непредвидени ситуации.

Законът на Мърфи ни казва: "Всичко, което може да се обърка, ще се обърка." И точно така нещата се объркаха... Едно е, когато аз и няколко таксиметрови шофьори тествахме приложението на няколко десетки тестови поръчки. И това е съвсем различен въпрос, когато 500+ шофьори на линия работят в реално време по реални поръчки от реални хора.

Архитектурата на мобилното приложение беше проста и в него имаше забележимо по-малко грешки, отколкото в сървъра. Следователно основният фокус на работата беше върху сървърната страна. Най-критичният проблем в приложението беше проблемът с прекъсването на връзката със сървъра, когато интернетът на телефона беше изгубен и сесията беше възстановена отново. И интернет изчезваше доста често. Първо, в онези години самият интернет на телефона не беше достатъчно стабилен. Второ, имаше много слепи зони, където интернет просто не работеше. Ние идентифицирахме този проблем почти веднага и в рамките на XNUMX часа поправихме и актуализирахме всички инсталирани преди това приложения.

Сървърът имаше главно грешки в алгоритъма за разпределение на поръчките и неправилна обработка на някои заявки от клиенти. При идентифициране на проблеми коригирах и актуализирах сървъра.

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

Месец, това не означава, че всичко непрекъснато бъгваше в продължение на месец и аз кодирах нещо, без да спирам. Просто така решихме. В края на краищата бизнесът вече работеше и печелеше. По-добре е да играете на сигурно и да си починете по-късно, отколкото да губите клиенти и печалби сега. Всички много добре разбирахме това, така че целият екип колективно отдели максимално внимание и време за въвеждането на нов софтуер в таксиметровата система. И като вземем предвид текущия трафик на поръчки, определено ще отстраним всички недостатъци в рамките на един месец. Е, скритите грешки, които могат да останат, със сигурност няма да имат критични последици върху бизнес процеса и, ако е необходимо, те могат да бъдат коригирани рутинно.

Тук е необходимо да се отбележи безценната помощ от директорите и майсторите на таксиметровите услуги, които с максимално разбиране на сложността на ситуацията на прехвърляне на шофьори към нов софтуер работиха с шофьори денонощно. Всъщност, след като завършихме инсталирането на нови програми на телефони, не загубихме нито един драйвер. И те не увеличиха критично процента на неотстраняване на клиенти, който скоро беше върнат на нормални нива.

С това приключи първият етап от работата по проекта. И трябва да се отбележи, че резултатът не закъсня. Чрез автоматизирането на разпределението на поръчките към шофьорите без човешка намеса, средното време за чакане на такси от клиент беше намалено с порядък, което естествено увеличи лоялността на клиентите към услугата. Това доведе до увеличаване на броя на поръчките. След това се увеличи броят на таксиметровите шофьори. В резултат на това нараства и броят на успешно изпълнените поръчки. И в резултат на това печалбите на компанията се увеличиха. Разбира се, тук малко изпреварвам, тъй като целият този процес не се случи моментално. Да се ​​каже, че ръководството е доволно, означава да не се каже нищо. Получих неограничен достъп до по-нататъшно финансиране на проекта.

За да продължите.

Източник: www.habr.com

Добавяне на нов коментар