Bagaimana program kecil mengubah pejabat kecil menjadi syarikat persekutuan dengan keuntungan 100+ juta rubel/bulan

Pada penghujung Disember 2008, saya telah dijemput ke salah satu perkhidmatan teksi di Perm dengan matlamat untuk mengautomasikan proses perniagaan sedia ada. Secara umum, saya diberi tiga tugas asas:


  • Membangunkan pakej perisian untuk pusat panggilan dengan aplikasi mudah alih untuk pemandu teksi dan mengautomasikan proses perniagaan dalaman.
  • Segala-galanya terpaksa dilakukan dalam masa yang sesingkat mungkin.
  • Miliki perisian anda sendiri, bukannya dibeli daripada pembangun pihak ketiga, yang pada masa hadapan, apabila perniagaan berkembang, boleh diskalakan secara bebas kepada keadaan pasaran yang sentiasa berubah.

Pada masa itu, saya tidak faham bagaimana pasaran ini berfungsi dan nuansanya, tetapi bagaimanapun, dua perkara jelas kepada saya. Pusat panggilan mesti dibina berdasarkan perisian asterisk sumber terbuka PBX. Pertukaran maklumat antara pusat panggilan dan aplikasi mudah alih pada dasarnya adalah penyelesaian pelayan-pelanggan dengan semua corak yang sepadan untuk mereka bentuk seni bina projek masa depan dan pengaturcaraannya.

Selepas penilaian awal tugas, tarikh akhir dan kos untuk projek itu, dan setelah bersetuju dengan semua isu yang diperlukan dengan pemilik perkhidmatan teksi, saya mula bekerja pada Januari 2009.

Melihat ke hadapan, saya akan katakan dengan segera. Hasilnya ialah platform berskala yang berjalan pada 60+ pelayan di 12 bandar di Rusia dan 2 di Kazakhstan. Jumlah keuntungan syarikat ialah 100+ juta rubel/bulan.

Tahap satu. Prototaip

Oleh kerana pada masa itu saya tidak mempunyai pengalaman praktikal dalam telefon IP, dan saya hanya biasa dengan asterisk sebagai sebahagian daripada eksperimen "rumah", ia telah memutuskan untuk mula bekerja dengan pembangunan aplikasi mudah alih dan bahagian pelayan. Pada masa yang sama, menutup jurang pengetahuan mengenai tugas lain.

Jika dengan aplikasi mudah alih semuanya lebih kurang jelas. Pada masa itu, ia hanya boleh ditulis dalam java untuk telefon tekan butang mudah, tetapi menulis pelayan yang melayani pelanggan mudah alih adalah sedikit lebih rumit:

  • OS pelayan apa yang akan digunakan;
  • Berdasarkan logik bahawa bahasa pengaturcaraan dipilih untuk tugas, dan bukan sebaliknya, dan mengambil kira titik 1, bahasa pengaturcaraan mana yang akan optimum untuk menyelesaikan masalah;
  • Semasa reka bentuk, adalah perlu untuk mengambil kira beban tinggi masa depan yang dijangkakan pada perkhidmatan;
  • Pangkalan data mana yang boleh menjamin toleransi kesalahan di bawah beban yang tinggi dan cara mengekalkan masa tindak balas pangkalan data yang pantas apabila bilangan permintaan kepadanya meningkat;
  • Faktor penentu ialah kelajuan pembangunan dan keupayaan untuk skala kod dengan cepat
  • Kos peralatan dan penyelenggaraannya pada masa hadapan (salah satu syarat pelanggan ialah pelayan mesti ditempatkan di wilayah di bawah kawalannya);
  • Kos pemaju yang akan diperlukan dalam peringkat kerja seterusnya pada platform;

Serta banyak isu lain yang berkaitan dengan reka bentuk dan pembangunan.

Sebelum memulakan kerja pada projek itu, saya mencadangkan keputusan strategik berikut kepada pemilik perniagaan: memandangkan projek itu agak kompleks, pelaksanaannya akan mengambil masa yang ketara, jadi pertama-tama saya membuat versi MVP, yang tidak akan mengambil banyak masa dan wang, tetapi yang akan membolehkan syarikatnya memperoleh kelebihan daya saing di pasaran sudah "di sini dan sekarang", dan juga akan mengembangkan keupayaannya sebagai perkhidmatan teksi. Sebaliknya, penyelesaian perantaraan sedemikian akan memberi saya masa untuk mereka bentuk penyelesaian akhir dan masa untuk eksperimen teknikal dengan lebih teliti. Pada masa yang sama, penyelesaian perisian yang dilaksanakan tidak akan dijamin direka bentuk dengan betul dan mungkin direka bentuk semula atau diganti secara radikal pada masa hadapan, tetapi ia pasti akan melaksanakan fungsi minimum yang diperlukan untuk "melepaskan diri daripada pesaing." Pengasas teksi itu menyukai idea itu, jadi akhirnya mereka melakukannya.

Saya menghabiskan dua minggu pertama mengkaji proses perniagaan dalam syarikat, dan mengkaji kerja teksi dari dalam. Menjalankan analisis perniagaan tentang di mana, apa dan bagaimana boleh diautomatikkan dan sama ada ia perlu sama sekali. Apakah kesukaran dan masalah yang dihadapi oleh pekerja syarikat? Bagaimana mereka diselesaikan. Bagaimana hari bekerja dianjurkan untuk pekerja syarikat. Apakah alatan yang mereka gunakan?

Menjelang akhir minggu ketiga, selepas memulakan kerja dan mengkaji isu-isu yang menarik di Internet, dengan mengambil kira kehendak pemilik perniagaan, serta pengetahuan dan keupayaan saya sendiri pada masa itu, diputuskan untuk menggunakan timbunan berikut :

  • Pelayan pangkalan data: MsSQL (versi percuma dengan had fail pangkalan data sehingga 2GB);
  • Pembangunan pelayan yang melayani pelanggan mudah alih di Delphi di bawah Windows, kerana sudah ada pelayan Windows di mana pangkalan data akan dipasang, serta persekitaran pembangunan itu sendiri memudahkan pembangunan pesat;
  • Dengan mengambil kira kelajuan Internet yang rendah pada telefon mudah alih pada tahun 2009, protokol pertukaran antara pelanggan dan pelayan mestilah binari. Ini akan mengurangkan saiz paket data yang dihantar dan, akibatnya, meningkatkan kestabilan kerja pelanggan dengan pelayan;

Dua minggu lagi dihabiskan untuk mereka bentuk protokol dan pangkalan data. Hasilnya ialah 12 pakej yang memastikan pertukaran semua data yang diperlukan antara klien mudah alih dan pelayan dan kira-kira 20 jadual dalam pangkalan data. Saya melakukan bahagian kerja ini dengan mengambil kira masa depan, walaupun saya perlu menukar timbunan teknologi sepenuhnya, struktur pakej dan pangkalan data harus kekal tidak berubah.

Selepas kerja persediaan, adalah mungkin untuk memulakan pelaksanaan praktikal idea itu. Untuk mempercepatkan sedikit proses dan meluangkan masa untuk tugasan lain, saya membuat versi draf aplikasi mudah alih, melakar UI, sebahagiannya UX, dan melibatkan pengaturcara java yang biasa dalam projek itu. Dan dia menumpukan pada pembangunan, reka bentuk dan ujian bahagian pelayan.

Menjelang akhir bulan kedua kerja pada MVP, versi pertama pelayan dan prototaip klien telah sedia.

Dan menjelang akhir bulan ketiga, selepas ujian sintetik dan ujian lapangan, pembetulan pepijat, penambahbaikan kecil pada protokol dan pangkalan data, aplikasi itu sedia untuk pengeluaran. Mana yang telah dilakukan.

Dari saat ini bahagian projek yang paling menarik dan paling sukar bermula.

Semasa peralihan pemacu kepada perisian baharu, tugas XNUMX jam telah dianjurkan. Memandangkan bukan semua orang boleh datang pada waktu bekerja pada siang hari. Di samping itu, secara pentadbiran, dengan keputusan kuat pengasas syarikat, ia dianjurkan sedemikian rupa sehingga log masuk/kata laluan telah dimasukkan oleh pengurus perkhidmatan teksi dan mereka tidak dimaklumkan kepada pemandu. Di pihak saya, sokongan teknikal untuk pengguna diperlukan sekiranya berlaku kegagalan dan situasi yang tidak dijangka.

Undang-undang Murphy memberitahu kita: "Apa-apa yang boleh menjadi salah, akan menjadi salah." Dan begitulah keadaan menjadi salah... Satu perkara apabila saya dan beberapa pemandu teksi menguji aplikasi pada beberapa dozen pesanan ujian. Dan ini adalah perkara yang sama sekali berbeza apabila 500+ pemandu dalam talian bekerja dalam masa nyata atas pesanan sebenar daripada orang sebenar.

Seni bina aplikasi mudah alih adalah mudah dan terdapat lebih sedikit pepijat di dalamnya berbanding dalam pelayan. Oleh itu, tumpuan utama kerja adalah pada bahagian pelayan. Gangguan yang paling kritikal dalam aplikasi adalah masalah terputus sambungan dari pelayan apabila Internet pada telefon hilang dan sesi dipulihkan semula. Dan Internet agak kerap hilang. Pertama, pada tahun-tahun itu Internet pada telefon itu sendiri tidak cukup stabil. Kedua, terdapat banyak titik buta di mana Internet tidak berfungsi. Kami mengenal pasti masalah ini hampir serta-merta dan dalam masa XNUMX jam membetulkan dan mengemas kini semua aplikasi yang dipasang sebelum ini.

Pelayan terutamanya mempunyai ralat dalam algoritma pengedaran pesanan dan pemprosesan yang salah untuk beberapa permintaan daripada pelanggan. Setelah mengenal pasti gangguan, saya membetulkan dan mengemas kini pelayan.

Sebenarnya, tidak banyak masalah teknikal pada peringkat ini. Keseluruhan kesukarannya ialah hampir sebulan saya bertugas di pejabat, hanya sekali-sekala pulang ke rumah. Mungkin 4-5 kali. Dan saya tidur dengan selesa dan mula, kerana pada masa itu saya sedang mengerjakan projek itu sahaja dan tiada siapa kecuali saya yang dapat memperbaiki apa-apa.

Sebulan, ini tidak bermakna semuanya sentiasa bermasalah selama sebulan dan saya mengekodkan sesuatu tanpa henti. Kami hanya memutuskan itu. Lagipun, perniagaan itu telah pun beroperasi dan mendapat keuntungan. Lebih baik bermain dengan selamat dan berehat kemudian daripada kehilangan pelanggan dan keuntungan sekarang. Kami semua memahami perkara ini dengan baik, jadi seluruh pasukan secara kolektif menumpukan perhatian dan masa maksimum untuk memperkenalkan perisian baharu ke dalam sistem teksi. Dan mengambil kira trafik pesanan semasa, kami pasti akan menghapuskan semua kekurangan dalam masa sebulan. Nah, pepijat tersembunyi yang mungkin kekal pastinya tidak akan mempunyai akibat kritikal pada proses perniagaan dan, jika perlu, ia boleh diperbetulkan secara rutin.

Di sini perlu diperhatikan bantuan yang tidak ternilai daripada pengarah dan mandor perkhidmatan teksi, yang, dengan pemahaman maksimum tentang kerumitan situasi memindahkan pemandu ke perisian baru, bekerja dengan pemandu sepanjang masa. Malah, selepas menyelesaikan pemasangan program baharu pada telefon, kami tidak kehilangan satu pemandu. Dan mereka tidak secara kritikal meningkatkan peratusan bukan penyingkiran pelanggan, yang tidak lama lagi dikembalikan ke tahap normal.

Ini melengkapkan peringkat pertama kerja projek. Dan harus diingat bahawa hasilnya tidak lama lagi. Dengan mengautomasikan pengedaran pesanan kepada pemandu tanpa campur tangan manusia, purata masa menunggu teksi oleh pelanggan dikurangkan dengan susunan magnitud, yang secara semula jadi meningkatkan kesetiaan pelanggan kepada perkhidmatan tersebut. Ini membawa kepada peningkatan dalam bilangan pesanan. Berikutan itu, bilangan pemandu teksi bertambah. Akibatnya, bilangan pesanan yang berjaya disiapkan juga meningkat. Dan akibatnya, keuntungan syarikat meningkat. Sudah tentu, di sini saya semakin maju sedikit daripada diri saya sendiri, kerana keseluruhan proses ini tidak berlaku serta-merta. Untuk mengatakan bahawa pihak pengurusan gembira adalah untuk mengatakan apa-apa. Saya diberi akses tanpa had kepada pembiayaan selanjutnya bagi projek itu.

Akan diteruskan ..

Sumber: www.habr.com

Tambah komen