Kepiye program cilik ngowahi kantor cilik dadi perusahaan federal kanthi bathi 100+ yuta rubel / wulan

Ing pungkasan Desember 2008, aku diundang menyang salah sawijining layanan taksi ing Perm kanthi tujuan ngotomatisasi proses bisnis sing wis ana. Umumé, aku diwenehi telung tugas dhasar:


  • Ngembangake paket piranti lunak kanggo pusat panggilan kanthi aplikasi seluler kanggo driver mendhoan lan ngotomatisasi proses bisnis internal.
  • Kabeh kudu rampung ing wektu sing paling cendhak.
  • Nduwe piranti lunak dhewe, tinimbang dituku saka pangembang pihak katelu, sing ing mangsa ngarep, nalika bisnis berkembang, bisa diukur kanthi mandiri kanggo terus ngganti kahanan pasar.

Ing wektu iku, aku ora ngerti cara kerja pasar iki lan nuansa, nanging ana rong perkara sing jelas kanggo aku. Pusat panggilan kudu dibangun kanthi basis piranti lunak bintang open source PBX. Ijol-ijolan informasi antarane pusat panggilan lan aplikasi seluler minangka solusi klien-server kanthi kabeh pola sing cocog kanggo ngrancang arsitektur proyek mbesuk lan pemrograman.

Sawise penilaian awal tugas, tenggat wektu lan biaya kanggo proyek kasebut, lan wis setuju karo kabeh masalah sing dibutuhake karo pemilik layanan taksi, aku miwiti kerja ing Januari 2009.

Looking ahead, Aku bakal ngomong langsung. Asil kasebut minangka platform skalabel sing mlaku ing 60+ server ing 12 kutha ing Rusia lan 2 ing Kazakhstan. Total bathi perusahaan yaiku 100+ yuta rubel / sasi.

tataran siji. Prototipe

Wiwit wektu iku aku ora duwe pengalaman praktis ing IP telephony, lan aku mung superficially menowo asterisk minangka bagéan saka "omah" nyobi, iku mutusaké kanggo miwiti karya karo pangembangan aplikasi seluler lan bagean server. Ing wektu sing padha, nutup kesenjangan ing kawruh ing tugas liyane.

Yen nganggo aplikasi seluler kabeh luwih cetha. Ing wektu iku, iku mung bisa ditulis ing Jawa kanggo push-tombol telpon prasaja, nanging nulis server nglayani klien seluler luwih rumit:

  • OS server apa sing bakal digunakake;
  • Adhedhasar logika yen basa pamrograman dipilih kanggo tugas, lan ora kosok balene, lan njupuk titik 1, basa pamrograman sing paling optimal kanggo ngrampungake masalah;
  • Sajrone desain, perlu kanggo nganggep beban dhuwur ing mangsa ngarep ing layanan kasebut;
  • Basis data sing bisa njamin toleransi kesalahan ing beban dhuwur lan carane njaga wektu respon database kanthi cepet amarga jumlah panjaluk kasebut saya tambah;
  • Faktor sing nemtokake yaiku kacepetan pangembangan lan kemampuan kanggo skala kode kanthi cepet
  • Biaya peralatan lan pangopènan ing mangsa ngarep (salah sawijining syarat pelanggan yaiku server kudu ana ing wilayah sing dikendhaleni);
  • Biaya pangembang sing bakal dibutuhake ing tahap kerja sabanjure ing platform;

Uga akeh masalah liyane sing ana gandhengane karo desain lan pangembangan.

Sadurunge miwiti nggarap proyek kasebut, aku ngusulake keputusan strategis ing ngisor iki marang pemilik bisnis: amarga proyek kasebut cukup rumit, implementasine bakal mbutuhake wektu sing cukup suwe, mula aku nggawe versi MVP, sing ora butuh wektu akeh. dhuwit, nanging kang bakal ngidini perusahaan kanggo gain kauntungan competitive ing pasar wis "kene lan saiki", lan uga bakal nggedhekake kabisan minangka layanan mendhoan. Sabanjure, solusi penengah kasebut bakal menehi wektu kanggo ngrancang solusi pungkasan lan wektu kanggo eksperimen teknis kanthi luwih ati-ati. Ing wektu sing padha, solusi piranti lunak sing dileksanakake ora bakal dijamin bakal dirancang kanthi bener lan bisa uga didesain ulang utawa diganti kanthi radikal ing mangsa ngarep, nanging mesthi bakal nindakake fungsi minimal sing dibutuhake kanggo "nyingkirake pesaing." Sing ngedegake taksi seneng karo ide kasebut, mula pungkasane dheweke nindakake.

Aku ngenteni rong minggu pisanan sinau proses bisnis ing perusahaan, lan sinau babagan taksi saka njero. Nindakake analisis bisnis ing ngendi, apa lan carane bisa otomatis lan apa perlu. Apa kangelan lan masalah sing diadhepi karyawan perusahaan? Carane lagi ditanggulangi. Carane dina kerja diatur kanggo karyawan perusahaan. Apa piranti sing digunakake?

Ing pungkasan minggu katelu, sawise miwiti karya lan sinau masalah kapentingan ing Internet, njupuk menyang akun wishes saka pemilik bisnis, uga kawruh lan kabisan dhewe ing wektu iku, iku mutusaké kanggo aplikasi tumpukan ing ngisor iki. :

  • Server database: MsSQL (versi gratis kanthi watesan file database nganti 2GB);
  • Pangembangan server sing nglayani klien seluler ing Delphi ing Windows, amarga wis ana server Windows sing database bakal diinstal, uga lingkungan pangembangan dhewe nggampangake pembangunan kanthi cepet;
  • Ngelingi kacepetan Internet sing sithik ing ponsel ing taun 2009, protokol ijol-ijolan antarane klien lan server kudu binar. Iki bakal nyuda ukuran paket data sing dikirim lan, minangka asil, nambah stabilitas karya klien karo server;

Rong minggu liyane digunakake kanggo ngrancang protokol lan database. Asil ana 12 paket sing njamin ijol-ijolan kabeh data perlu antarane klien seluler lan server lan bab 20 tabel ing database. Aku iki bagéan saka karya njupuk menyang akun mangsa, malah yen aku kudu ngganti tumpukan teknologi rampung, struktur paket lan database kudu tetep panggah.

Sawise karya preparatory, iku bisa kanggo miwiti implementasine praktis saka idea. Kanggo nyepetake proses sethithik lan mbebasake wektu kanggo tugas liyane, aku nggawe draf versi aplikasi seluler, nggawe sketsa UI, sebagian UX, lan melu programmer java sing akrab ing proyek kasebut. Lan dheweke fokus ing pangembangan, desain lan tes sisih server.

Ing pungkasan sasi kapindho karya ing MVP, versi pisanan saka server lan klien prototipe siap.

Lan ing pungkasan wulan katelu, sawise tes sintetik lan tes lapangan, koreksi bug, perbaikan cilik ing protokol lan database, aplikasi wis siyap kanggo produksi. Sing ditindakake.

Saka wektu iki, bagean proyek sing paling menarik lan paling angel diwiwiti.

Sajrone transisi pembalap menyang piranti lunak anyar, tugas XNUMX jam diatur. Amarga ora saben wong bisa teka ing wayah awan. Kajaba iku, sacara administratif, kanthi keputusan sing kuat saka pendiri perusahaan, iki diatur kanthi cara supaya login / sandhi dilebokake dening manajer layanan taksi lan ora dikomunikasikake menyang sopir. Ing sisihku, dhukungan teknis kanggo pangguna dibutuhake yen ana kegagalan lan kahanan sing ora dikarepake.

Hukum Murphy ngandhani: "Apa wae sing bisa salah, bakal salah." Lan sing persis kaya mengkono iku salah ... Iku siji bab nalika aku lan sawetara driver mendhoan dites aplikasi ing sawetara rolas pesenan test. Lan prakara temen beda nalika 500+ pembalap ing baris bisa ing wektu nyata ing pesenan nyata saka wong nyata.

Arsitèktur aplikasi seluler iku prasaja lan ana kewan omo sing luwih sithik tinimbang ing server. Mulane, fokus utama karya ana ing sisih server. Masalah sing paling kritis ing aplikasi kasebut yaiku masalah pedhot saka server nalika Internet ing telpon ilang lan sesi kasebut dibalekake maneh. Lan Internet asring ilang. Kaping pisanan, ing taun-taun kasebut Internet ing telpon dhewe ora cukup stabil. Kapindho, ana akeh titik wuta ing ngendi Internet ora bisa digunakake. Kita ngenali masalah iki meh langsung lan ing XNUMX jam ndandani lan nganyari kabeh aplikasi sing wis diinstal sadurunge.

Server utamane duwe kesalahan ing algoritma distribusi pesenan lan salah pangolahan sawetara panjalukan saka klien. Sawise ngenali glitches, aku mbenerake lan nganyari server.

Nyatane, ora akeh masalah teknis ing tahap iki. Kabeh kangelan iku aku tugas ing kantor wis meh sasi, mung sok-sok mulih. Mbokmenawa 4-5 kaping. Lan aku turu ing mathuk lan wiwit, wiwit ing wektu iku aku lagi nggarap project piyambak lan ora ana siji kajaba kula bisa ndandani apa-apa.

Sewulan, iki ora ateges kabeh terus-terusan glitching sajrone sewulan lan aku ngode tanpa mandheg. Kita mung mutusake. Sawise kabeh, bisnis wis mlaku lan entuk bathi. Iku luwih apik kanggo muter aman lan ngaso mengko saka kelangan pelanggan lan bathi saiki. Kita kabeh ngerti iki kanthi apik, mula kabeh tim kanthi kolektif menehi perhatian maksimal lan wektu kanggo ngenalake piranti lunak anyar menyang sistem taksi. Lan njupuk menyang akun lalu lintas pesenan saiki, kita mesthi bakal ngilangi kabeh shortcomings ing sasi. Ya, kewan omo sing didhelikake sing bisa tetep mesthi ora duwe akibat kritis ing proses bisnis lan, yen perlu, bisa didandani kanthi rutin.

Kene iku perlu kanggo Wigati pitulungan invaluable saka direktur lan mandor layanan mendhoan, sing, karo pangerten maksimum saka kerumitan kahanan nransfer driver kanggo piranti lunak anyar, kerjo karo pembalap watara jam. Nyatane, sawise ngrampungake instalasi program anyar ing telpon, kita ora kelangan driver siji. Lan padha ora kritis nambah persentasi saka non-remote saka klien, kang enggal bali menyang tingkat normal.

Iki ngrampungake tahap pertama proyek kasebut. Lan kudu dicathet yen asile ora suwe. Kanthi ngotomatisasi distribusi pesenan menyang pembalap tanpa campur tangan manungsa, rata-rata wektu tunggu taksi dening klien dikurangi kanthi urutan gedhene, sing kanthi alami nambah kesetiaan pelanggan marang layanan kasebut. Iki nyebabake tambah akeh pesenan. Sawise iki, jumlah sopir taksi tambah akeh. Akibaté, jumlah pesenan sing sukses uga saya tambah. Lan minangka asil, bathi perusahaan saya tambah. Mesthi wae, ing kene aku luwih maju, amarga kabeh proses iki ora kedadeyan langsung. Ngomong yen manajemen seneng ora ngomong apa-apa. Aku diwenehi akses tanpa wates kanggo pendanaan proyek kasebut.

Diteruske..

Source: www.habr.com

Add a comment