چگونه یک برنامه کوچک یک دفتر کوچک را به یک شرکت فدرال با سود بیش از 100 میلیون روبل در ماه تبدیل کرد

در پایان دسامبر 2008، با هدف خودکارسازی فرآیندهای تجاری موجود، به یکی از خدمات تاکسی در پرم دعوت شدم. به طور کلی، سه وظیفه اساسی به من داده شد:


  • یک بسته نرم افزاری برای یک مرکز تماس با یک برنامه تلفن همراه برای رانندگان تاکسی توسعه دهید و فرآیندهای تجاری داخلی را خودکار کنید.
  • همه چیز باید در کمترین زمان ممکن انجام می شد.
  • به جای خرید از توسعه دهندگان شخص ثالث، نرم افزار خود را داشته باشید، که در آینده، همانطور که کسب و کار توسعه می یابد، می توان آن را به طور مستقل به شرایط بازار در حال تغییر تغییر داد.

در آن زمان من نمی فهمیدم این بازار چگونه کار می کند و تفاوت های ظریف آن را درک می کردم، اما با این وجود دو چیز برایم آشکار بود. مرکز تماس باید بر اساس نرم افزار سانترال منبع باز ستاره ساخته شود. تبادل اطلاعات بین مرکز تماس و اپلیکیشن موبایل اساسا یک راه حل سرویس گیرنده-سرور با تمام الگوهای مربوطه برای طراحی معماری پروژه آینده و برنامه نویسی آن است.

پس از ارزیابی اولیه وظایف، مهلت‌ها و هزینه‌های پروژه و توافق در مورد کلیه موارد لازم با صاحب تاکسی سرویس، در ژانویه 2009 شروع به کار کردم.

با نگاه کردن به آینده، بلافاصله می گویم. نتیجه یک پلت فرم مقیاس پذیر بود که روی بیش از 60 سرور در 12 شهر روسیه و 2 شهر در قزاقستان اجرا می شد. سود کل شرکت 100+ میلیون روبل در ماه بود.

مرحله یک. نمونه اولیه

از آنجایی که در آن زمان من هیچ تجربه عملی در تلفن IP نداشتم و فقط به صورت سطحی با ستاره به عنوان بخشی از آزمایشات "خانه" آشنا بودم، تصمیم گرفته شد که با توسعه یک برنامه تلفن همراه و بخش سرور شروع به کار کنم. در عین حال، شکاف های دانش در سایر وظایف را از بین ببرید.

اگر با اپلیکیشن موبایل همه چیز کم و بیش روشن بود. در آن زمان، فقط می‌توانست در جاوا برای تلفن‌های دکمه‌ای ساده نوشته شود، اما نوشتن سروری که به مشتریان موبایل خدمت می‌کند کمی پیچیده‌تر بود:

  • چه سیستم عامل سرور استفاده خواهد شد.
  • بر اساس این منطق که یک زبان برنامه نویسی برای یک کار انتخاب می شود و نه برعکس و با در نظر گرفتن نکته 1 که کدام زبان برنامه نویسی برای حل مسائل بهینه خواهد بود.
  • در طول طراحی، لازم بود بارهای بالای مورد انتظار آینده در سرویس در نظر گرفته شود.
  • کدام پایگاه داده می تواند تحمل خطا را تحت بارهای بالا تضمین کند و چگونه می توان زمان پاسخگویی سریع پایگاه داده را با افزایش تعداد درخواست ها حفظ کرد.
  • عامل تعیین کننده سرعت توسعه و توانایی مقیاس سریع کد بود
  • هزینه تجهیزات و نگهداری آن در آینده (یکی از شرایط مشتری این است که سرورها باید در قلمرو تحت کنترل او قرار داشته باشند).
  • هزینه توسعه دهندگانی که در مراحل بعدی کار بر روی پلت فرم مورد نیاز خواهند بود.

و همچنین بسیاری از مسائل دیگر مربوط به طراحی و توسعه.

قبل از شروع کار روی پروژه، تصمیم استراتژیک زیر را به صاحب کسب و کار پیشنهاد دادم: از آنجایی که پروژه کاملاً پیچیده است، اجرای آن زمان قابل توجهی خواهد داشت، بنابراین ابتدا یک نسخه MVP ایجاد می کنم که زمان زیادی را صرف نمی کند و پول، اما به شرکت او اجازه می دهد تا از قبل "اینجا و اکنون" مزیت رقابتی در بازار به دست آورد، و همچنین قابلیت های خود را به عنوان یک سرویس تاکسی گسترش خواهد داد. به نوبه خود، چنین راه حل میانی به من زمان می دهد تا راه حل نهایی را با دقت بیشتری طراحی کنم و برای آزمایش های فنی وقت بگذارم. در عین حال، راه‌حل نرم‌افزار پیاده‌سازی‌شده تضمینی برای طراحی صحیح نخواهد بود و ممکن است در آینده به‌طور اساسی بازطراحی یا جایگزین شود، اما قطعاً حداقل عملکرد لازم را برای «دیدن از رقبا» انجام می‌دهد. بنیانگذار تاکسی از این ایده خوشش آمد، بنابراین در نهایت آن را انجام دادند.

من دو هفته اول را صرف مطالعه فرآیندهای تجاری در شرکت کردم و کار یک تاکسی را از داخل مطالعه کردم. یک تجزیه و تحلیل کسب و کار انجام داد که کجا، چه چیزی و چگونه می تواند خودکار شود و آیا اصلاً لازم است یا خیر. کارمندان شرکت با چه مشکلات و مشکلاتی روبرو هستند؟ چگونه حل می شوند. نحوه سازماندهی روز کاری برای کارکنان شرکت از چه ابزاری استفاده می کنند؟

تا پایان هفته سوم، پس از شروع کار و مطالعه موضوعات مورد علاقه در اینترنت، با در نظر گرفتن خواسته های صاحب کسب و کار و همچنین دانش و توانایی های خودم در آن زمان، تصمیم گرفته شد که پشته زیر را اعمال کنم. :

  • سرور پایگاه داده: MsSQL (نسخه رایگان با محدودیت فایل پایگاه داده تا 2 گیگابایت)؛
  • توسعه سروری که به مشتریان تلفن همراه در دلفی تحت ویندوز سرویس می دهد، زیرا قبلاً یک سرور ویندوز وجود داشت که پایگاه داده روی آن نصب می شد و همچنین خود محیط توسعه توسعه سریع را تسهیل می کند.
  • با در نظر گرفتن سرعت پایین اینترنت تلفن های همراه در سال 2009، پروتکل تبادل بین مشتری و سرور باید باینری باشد. این امر باعث کاهش اندازه بسته های داده ارسال شده و در نتیجه افزایش ثبات کار مشتریان با سرور می شود.

دو هفته دیگر صرف طراحی پروتکل و پایگاه داده شد. نتیجه 12 بسته بود که تبادل تمام داده های لازم بین مشتری تلفن همراه و سرور و حدود 20 جدول در پایگاه داده را تضمین می کند. من این بخش از کار را با در نظر گرفتن آینده انجام دادم، حتی اگر مجبور باشم پشته فناوری را به طور کامل تغییر دهم، ساختار بسته ها و پایگاه داده باید بدون تغییر باقی بماند.

پس از انجام کارهای مقدماتی، امکان شروع اجرای عملی ایده وجود داشت. برای سرعت بخشیدن به فرآیند و آزاد کردن زمان برای کارهای دیگر، نسخه پیش نویس اپلیکیشن موبایل را ساختم، رابط کاربری، تا حدی UX را ترسیم کردم و یک برنامه نویس آشنای جاوا را در پروژه مشارکت دادم. و او بر توسعه، طراحی و آزمایش سمت سرور متمرکز شد.

در پایان ماه دوم کار بر روی MVP، اولین نسخه از نمونه اولیه سرور و کلاینت آماده شد.

و در پایان ماه سوم، پس از آزمایش های مصنوعی و آزمایش های میدانی، رفع اشکال، بهبود جزئی در پروتکل و پایگاه داده، برنامه آماده تولید شد. کاری که انجام شد.

از این لحظه جالب ترین و سخت ترین قسمت پروژه شروع می شود.

در طول انتقال رانندگان به نرم افزار جدید، وظیفه XNUMX ساعته سازماندهی شد. از آنجایی که همه نمی توانستند در ساعات کاری در طول روز بیایند. علاوه بر این، از نظر اداری، با تصمیم قاطعانه مؤسس شرکت، سازماندهی آن به گونه ای بود که ورود / رمز عبور توسط مدیر تاکسی سرویس وارد شده و به راننده اطلاع داده نمی شد. از طرف من، پشتیبانی فنی برای کاربران در صورت خرابی و موقعیت های پیش بینی نشده مورد نیاز بود.

قانون مورفی به ما می گوید: "هر چیزی که ممکن است اشتباه شود، اشتباه خواهد شد." و این دقیقاً همان چیزی است که همه چیز اشتباه پیش رفت... زمانی که من و چندین راننده تاکسی برنامه را روی چندین سفارش آزمایشی آزمایش کردیم، یک چیز است. و زمانی که بیش از 500 راننده در خط در زمان واقعی بر اساس سفارشات واقعی افراد واقعی کار می کنند، موضوع کاملاً متفاوت است.

معماری اپلیکیشن موبایل ساده بود و باگ های کمتری نسبت به سرور در آن وجود داشت. بنابراین تمرکز اصلی کار روی سمت سرور بود. مهمترین مشکل در برنامه، مشکل قطع شدن اتصال از سرور در هنگام قطع اینترنت تلفن و بازیابی مجدد جلسه بود. و اینترنت اغلب ناپدید شد. اولاً، در آن سال ها اینترنت روی تلفن خود به اندازه کافی پایدار نبود. ثانیا، نقاط کور بسیاری وجود داشت که اینترنت به سادگی کار نمی کرد. ما این مشکل را تقریباً بلافاصله شناسایی کردیم و ظرف XNUMX ساعت همه برنامه‌های نصب شده قبلی را برطرف و به روز کردیم.

سرور عمدتاً دارای خطاهایی در الگوریتم توزیع سفارش و پردازش نادرست برخی از درخواست‌های مشتریان بود. با شناسایی اشکالات، سرور را اصلاح و به روز کردم.

در واقع، در این مرحله مشکلات فنی چندانی وجود نداشت. تمام مشکل این بود که من تقریباً یک ماه در اداره مشغول به کار بودم و فقط گاهی به خانه می رفتم. احتمالا 4-5 بار. و من در شرایط مناسب خوابیدم و شروع کردم، زیرا در آن زمان به تنهایی روی پروژه کار می کردم و هیچ کس جز من نمی توانست چیزی را درست کند.

یک ماه، این بدان معنا نیست که همه چیز به مدت یک ماه دائماً خراب می شد و من بدون توقف چیزی را کدنویسی می کردم. ما همین الان تصمیم گرفتیم از این گذشته ، این تجارت قبلاً کار می کرد و سود می برد. بهتر است که با خیال راحت بازی کنید و دیرتر استراحت کنید تا اینکه اکنون مشتریان و سود خود را از دست بدهید. همه ما این را به خوبی درک کردیم، بنابراین کل تیم در مجموع حداکثر توجه و زمان را برای معرفی نرم افزار جدید به سیستم تاکسی اختصاص دادند. و با در نظر گرفتن ترافیک فعلی سفارشات، قطعا در عرض یک ماه تمامی نواقص را برطرف خواهیم کرد. خب، باگ‌های پنهانی که ممکن است باقی بمانند، مطمئناً عواقب حیاتی بر فرآیند کسب و کار نخواهند داشت و در صورت لزوم، می‌توان آن‌ها را به طور معمول اصلاح کرد.

در اینجا لازم است به کمک های بسیار ارزشمند مدیران و کارگزاران تاکسیرانی اشاره کرد که با درک حداکثری از پیچیدگی وضعیت انتقال رانندگان به نرم افزارهای جدید، به صورت شبانه روزی با رانندگان کار می کردند. در واقع پس از اتمام نصب برنامه های جدید روی گوشی ها، حتی یک درایور را از دست ندادیم. و درصد عدم حذف مراجعین را به شدت افزایش ندادند که به زودی به سطح عادی بازگشت.

این مرحله اول کار روی پروژه را تکمیل کرد. و باید توجه داشت که نتیجه آن دیری نپایید. با توزیع خودکار سفارش‌ها به رانندگان بدون دخالت انسان، میانگین زمان انتظار برای یک تاکسی توسط مشتری با یک مرتبه بزرگ کاهش می‌یابد که طبیعتا وفاداری مشتری به خدمات را افزایش می‌دهد. این امر منجر به افزایش تعداد سفارشات شد. به دنبال آن تعداد رانندگان تاکسی افزایش یافت. در نتیجه، تعداد سفارشات با موفقیت تکمیل شده نیز افزایش یافته است. و در نتیجه سود شرکت افزایش یافت. البته، در اینجا من کمی جلوتر از خودم هستم، زیرا کل این روند فوراً انجام نشد. اینکه بگوییم مدیریت راضی بود، چیزی نگفت. به من دسترسی نامحدود برای تامین مالی بیشتر پروژه داده شد.

ادامه ...

منبع: www.habr.com

اضافه کردن نظر