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

На крајот на декември 2008 година, бев поканет во една од такси услугите во Перм со цел да ги автоматизирам постоечките деловни процеси. Во принцип, ми беа дадени три основни задачи:


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

Тогаш не разбирав како функционира овој пазар и неговите нијанси, но сепак две работи ми беа очигледни. Повикувачкиот центар мора да биде изграден врз основа на софтверот со ѕвездички со отворен код PBX. Размената на информации помеѓу центарот за повици и мобилната апликација во суштина е решение клиент-сервер со сите соодветни обрасци за дизајнирање на архитектурата на идниот проект и негово програмирање.

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

Гледајќи напред, веднаш ќе кажам. Резултатот беше скалабилна платформа која работи на 60+ сервери во 12 градови во Русија и 2 во Казахстан. Вкупниот профит на компанијата беше 100+ милиони рубли / месец.

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

Бидејќи во тоа време немав практично искуство во IP телефонија и само површно бев запознаен со ѕвездичката како дел од „домашните“ експерименти, беше одлучено да почнам да работам со развој на мобилна апликација и серверски дел. Во исто време, затворање на празнините во знаењето за други задачи.

Ако со мобилната апликација сè беше повеќе или помалку јасно. Во тоа време, можеше да се пишува само во java за едноставни телефони со копчиња, но пишувањето сервер што опслужува мобилни клиенти беше малку покомплицирано:

  • Кој оперативен систем на сервер ќе се користи;
  • Врз основа на логиката дека за задача се избира програмски јазик, а не обратно, и имајќи ја предвид точката 1, кој програмски јазик ќе биде оптимален за решавање проблеми;
  • За време на дизајнот, неопходно беше да се земат предвид очекуваните идни високи оптоварувања на услугата;
  • Која база на податоци може да гарантира толеранција на грешки при големи оптоварувања и како да се одржи брзо време на одговор на базата на податоци како што се зголемува бројот на барања до неа;
  • Одлучувачки фактор беше брзината на развој и способноста за брзо скалирање на кодот
  • Цената на опремата и нејзиното одржување во иднина (еден од условите на клиентот е серверите да се наоѓаат на територијата под негова контрола);
  • Цената на програмерите кои ќе бидат потребни во следните фази на работа на платформата;

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

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

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

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

  • Сервер за бази на податоци: MsSQL (бесплатна верзија со ограничување на датотеката со база на податоци до 2 GB);
  • Развој на сервер кој опслужува мобилни клиенти во Делфи под Windows, бидејќи веќе постоеше Windows сервер на кој ќе се инсталира базата на податоци, како и самата развојна околина го олеснува брзиот развој;
  • Имајќи ги предвид ниските брзини на Интернет на мобилните телефони уште во 2009 година, протоколот за размена помеѓу клиентот и серверот мора да биде бинарен. Ова ќе ја намали големината на пренесените пакети со податоци и, како резултат на тоа, ќе ја зголеми стабилноста на работата на клиентите со серверот;

Уште две недели беа потрошени за дизајнирање на протоколот и базата на податоци. Резултатот беа 12 пакети кои обезбедуваат размена на сите потребни податоци помеѓу мобилниот клиент и серверот и околу 20 табели во базата на податоци. Го направив овој дел од работата земајќи ја предвид иднината, дури и ако треба целосно да го сменам технолошкиот стек, структурата на пакетите и базата на податоци треба да останат непроменети.

По подготвителната работа, беше можно да се започне со практично спроведување на идејата. За малку да го забрзам процесот и да ослободам време за други задачи, направив нацрт верзија на мобилната апликација, го скицирав UI, делумно UX и вклучив познат java програмер во проектот. И тој се фокусираше на развој, дизајн и тестирање од страна на серверот.

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

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

Од овој момент започнува најинтересниот и најтешкиот дел од проектот.

При преминот на возачите на новиот софтвер беше организирано 24-часовно дежурство. Бидејќи не можеше секој да дојде во работно време во текот на денот. Дополнително, административно, со силна волја на основачот на компанијата, тоа беше организирано на тој начин што најавата/лозинката беа внесени од менаџерот на такси-службата и тие не беа доставени до возачот. Од моја страна, потребна беше техничка поддршка за корисниците во случај на неуспеси и непредвидени ситуации.

Марфиевиот закон ни кажува: „Сè што може да тргне наопаку, ќе тргне наопаку“. И токму така работите тргнаа наопаку... Едно е кога јас и неколку таксисти ја тестиравме апликацијата на неколку десетици тест нарачки. А сосема поинаква работа е кога над 500 возачи на линија работат во реално време по реални нарачки од вистински луѓе.

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

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

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

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

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

Ова ја заврши првата фаза од работата на проектот. И треба да се напомене дека резултатот не се чекаше долго. Со автоматизирање на дистрибуцијата на нарачките до возачите без човечка интервенција, просечното време кога клиентот чека такси се намали за ред на големина, што природно ја зголеми лојалноста на клиентите кон услугата. Ова доведе до зголемување на бројот на нарачки. По ова се зголеми бројот на таксисти. Како резултат на тоа, се зголеми и бројот на успешно завршени нарачки. И како резултат на тоа, профитот на компанијата се зголеми. Се разбира, тука станувам малку понапред од себе, бидејќи целиот овој процес не се одвиваше веднаш. Да се ​​каже дека управата била задоволна е да не се каже ништо. Ми беше даден неограничен пристап до понатамошно финансирање на проектот.

Да се ​​продолжи ...

Извор: www.habr.com

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