Küçük bir program, küçük bir ofisi ayda 100 milyon ruble'den fazla kar elde eden federal bir şirkete nasıl dönüştürdü?

Aralık 2008'in sonunda, mevcut iş süreçlerini otomatikleştirmek amacıyla Perm'deki taksi hizmetlerinden birine davet edildim. Genel olarak bana üç temel görev verildi:


  • Taksi şoförlerine yönelik mobil uygulama içeren bir çağrı merkezi yazılım paketi geliştirin ve dahili iş süreçlerini otomatikleştirin.
  • Her şeyin mümkün olan en kısa sürede yapılması gerekiyordu.
  • Üçüncü taraf geliştiricilerden satın almak yerine, gelecekte iş geliştikçe bağımsız olarak sürekli değişen pazar koşullarına göre ölçeklendirilebilecek kendi yazılımınıza sahip olun.

O zamanlar bu pazarın nasıl çalıştığını ve nüanslarını anlamadım ama yine de iki şey benim için açıktı. Çağrı merkezi, açık kaynaklı yıldız işareti yazılımı PBX temel alınarak oluşturulmalıdır. Çağrı merkezi ile mobil uygulama arasındaki bilgi alışverişi, esasen, gelecekteki projenin mimarisini ve programlamasını tasarlamak için ilgili tüm kalıpları içeren bir istemci-sunucu çözümüdür.

Projenin görevleri, son teslim tarihleri ​​ve maliyetleri konusunda bir ön değerlendirme yaptıktan ve taksi hizmeti sahibi ile gerekli tüm konularda anlaştıktan sonra Ocak 2009'da işe başladım.

İleriye baktığımda hemen söyleyeceğim. Sonuç, Rusya'da 60 ve Kazakistan'da 12 şehirde 2'tan fazla sunucuda çalışan, ölçeklenebilir bir platform oldu. Şirketin toplam karı ayda 100+ milyon ruble oldu.

Birinci aşama. Prototip

O zamanlar IP telefonu konusunda pratik deneyimim olmadığından ve "ev" deneylerinin bir parçası olarak yıldız işaretine yalnızca yüzeysel olarak aşina olduğumdan, bir mobil uygulama ve sunucu bölümünün geliştirilmesiyle çalışmaya başlamaya karar verildi. Aynı zamanda diğer görevlerdeki bilgi boşluklarını kapatmak.

Mobil uygulamada her şey az çok netti. O zamanlar yalnızca basit tuşlu telefonlar için Java ile yazılabiliyordu, ancak mobil istemcilere hizmet veren bir sunucu yazmak biraz daha karmaşıktı:

  • Hangi sunucu işletim sisteminin kullanılacağı;
  • Bir programlama dilinin bir görev için seçilmesi ve bunun tersinin yapılmaması mantığına dayanarak ve sorunları çözmek için hangi programlama dilinin en uygun olacağı 1. nokta dikkate alınarak;
  • Tasarım sırasında hizmet üzerinde gelecekte beklenen yüksek yüklerin hesaba katılması gerekliydi;
  • Hangi veritabanının yüksek yükler altında hata toleransını garanti edebileceği ve istek sayısı arttıkça hızlı veritabanı yanıt süresinin nasıl korunacağı;
  • Belirleyici faktör, geliştirme hızı ve kodu hızlı bir şekilde ölçeklendirme yeteneğiydi.
  • Gelecekteki ekipmanın maliyeti ve bakımı (müşterinin koşullarından biri, sunucuların kendi kontrolü altındaki bölgede bulunması gerektiğidir);
  • Platformdaki çalışmanın sonraki aşamalarında ihtiyaç duyulacak geliştiricilerin maliyeti;

Tasarım ve geliştirmeyle ilgili diğer birçok konunun yanı sıra.

Proje üzerinde çalışmaya başlamadan önce işletme sahibine şu stratejik kararı önerdim: Proje oldukça karmaşık olduğu için uygulanması gözle görülür bir zaman alacak, bu yüzden önce fazla zaman almayacak bir MVP sürümü oluşturuyorum ve para, ancak bu, şirketinin halihazırda "burada ve şimdi" piyasada rekabet avantajı elde etmesine olanak tanıyacak ve aynı zamanda taksi hizmeti olarak yeteneklerini de genişletecek. Buna karşılık, böyle bir ara çözüm bana nihai çözümü daha düşünceli bir şekilde tasarlamam için zaman ve teknik deneyler için zaman verecektir. Aynı zamanda, uygulanan yazılım çözümünün doğru şekilde tasarlandığı garanti edilmeyecek ve gelecekte radikal bir şekilde yeniden tasarlanabilecek veya değiştirilebilir, ancak "rakiplerden kopmak" için gerekli minimum işlevselliği kesinlikle gerçekleştirecektir. Taksinin kurucusu bu fikri beğendi ve sonunda yaptılar.

İlk iki haftayı şirketteki iş süreçlerini inceleyerek ve bir taksinin işleyişini içeriden inceleyerek geçirdim. Nerede, neyin ve nasıl otomatikleştirilebileceğine ve bunun gerekli olup olmadığına dair bir iş analizi yapıldı. Şirket çalışanları ne gibi zorluklar ve sorunlarla karşılaşıyor? Bunlar nasıl çözülüyor. Şirket çalışanları için çalışma gününün nasıl organize edildiği. Hangi araçları kullanıyorlar?

Üçüncü haftanın sonunda işe başlayıp internette ilgimi çeken konuları inceledikten sonra, işletme sahibinin istekleri ve o zamanki bilgi ve yeteneklerim de dikkate alınarak aşağıdaki yığının uygulanmasına karar verildi: :

  • Veritabanı sunucusu: MsSQL (2 GB'a kadar veritabanı dosyası sınırına sahip ücretsiz sürüm);
  • Veritabanının kurulacağı bir Windows sunucusu zaten mevcut olduğundan ve geliştirme ortamının kendisi hızlı gelişmeyi kolaylaştırdığından, Windows altında Delphi'de mobil istemcilere hizmet veren bir sunucunun geliştirilmesi;
  • 2009'da cep telefonlarındaki düşük İnternet hızları dikkate alındığında, istemci ile sunucu arasındaki değişim protokolünün ikili olması gerekir. Bu, iletilen veri paketlerinin boyutunu azaltacak ve sonuç olarak müşterilerin sunucuyla çalışmalarının istikrarını artıracaktır;

Protokolü ve veritabanını tasarlamak için iki hafta daha harcandı. Sonuç olarak, mobil istemci ile sunucu arasında gerekli tüm verilerin alışverişini sağlayan 12 paket ve veritabanındaki yaklaşık 20 tablo ortaya çıktı. İşin bu kısmını geleceği hesaba katarak yaptım, teknoloji yığınını tamamen değiştirmek zorunda kalsam bile paketlerin ve veritabanının yapısı değişmeden kalmalı.

Hazırlık çalışmalarından sonra fikrin pratik uygulamasına başlamak mümkün oldu. Süreci biraz hızlandırmak ve diğer görevlere zaman kazandırmak için mobil uygulamanın taslak versiyonunu hazırladım, kullanıcı arayüzünün, kısmen de kullanıcı deneyiminin taslağını çizdim ve tanıdık bir java programcısını projeye dahil ettim. Sunucu tarafı geliştirme, tasarım ve test konularına odaklandı.

MVP üzerindeki çalışmanın ikinci ayının sonunda sunucu ve istemci prototipinin ilk versiyonu hazırdı.

Üçüncü ayın sonunda ise sentetik testler ve saha testleri, hata düzeltmeleri, protokol ve veritabanında yapılan küçük iyileştirmeler sonrasında uygulama üretime hazır hale geldi. Yapılan da buydu.

Bu andan itibaren projenin en ilginç ve en zor kısmı başlıyor.

Sürücülerin yeni yazılıma geçişi sırasında 24 saat görev düzenlendi. Çünkü gündüz mesai saatlerinde herkes gelemiyor. Ayrıca idari olarak şirket kurucusunun iradesiyle alınmış bir kararla, kullanıcı adı/şifrenin taksi hizmeti yöneticisi tarafından girileceği ve sürücüye bildirilmeyeceği şekilde düzenlendi. Benim açımdan arıza ve öngörülemeyen durumlarda kullanıcılara teknik desteğe ihtiyaç duyuldu.

Murphy Yasası bize şunu söyler: "Ters gidebilecek her şey ters gider." İşte işler tam da böyle ters gitti... Birkaç taksi şoförüyle birlikte uygulamayı birkaç düzine test siparişinde test ettiğimizde bir şey oldu. Ve hattaki 500'den fazla sürücünün gerçek insanlardan gelen gerçek siparişler üzerinde gerçek zamanlı olarak çalışması tamamen farklı bir konudur.

Mobil uygulamanın mimarisi basitti ve sunucuda olduğundan belirgin şekilde daha az hata vardı. Bu nedenle asıl çalışma odağımız sunucu tarafındaydı. Uygulamadaki en kritik aksaklık, telefondaki internetin kesilmesi ve oturumun tekrar açılması durumunda sunucudan kopma sorunuydu. Ve İnternet oldukça sık ortadan kayboldu. Birincisi, o yıllarda telefondaki internet yeterince istikrarlı değildi. İkincisi, internetin çalışmadığı pek çok kör nokta vardı. Bu sorunu hemen tespit ettik ve 24 saat içinde önceden yüklenmiş tüm uygulamaları düzelttik ve güncelledik.

Sunucunun esas olarak sipariş dağıtım algoritmasında hatalar ve istemcilerden gelen bazı isteklerin yanlış işlenmesi vardı. Hataları tespit ettikten sonra sunucuyu düzelttim ve güncelledim.

Aslında bu aşamada çok fazla teknik sorun yaşanmadı. Bütün zorluk, neredeyse bir ay boyunca ofiste görevde olmam ve sadece ara sıra eve gitmemdi. Muhtemelen 4-5 kez. Ve ben de ara sıra uyudum, çünkü o zamanlar proje üzerinde tek başıma çalışıyordum ve benden başka kimse hiçbir şeyi düzeltemezdi.

Bir ay, bu bir ay boyunca her şeyin sürekli aksadığı ve durmadan bir şeyler kodladığım anlamına gelmiyor. Buna yeni karar verdik. Sonuçta işletme zaten faaliyet gösteriyor ve kâr ediyordu. Şimdi müşteri ve kar kaybetmektense, güvenli davranıp sonra dinlenmek daha iyidir. Hepimiz bunu çok iyi anladık ve bu nedenle tüm ekip, taksi sistemine yeni yazılımın getirilmesine azami dikkat ve zaman ayırdı. Ve mevcut sipariş trafiğini de dikkate alarak bir ay içerisinde tüm eksiklikleri mutlaka gidereceğiz. Geriye kalabilecek gizli hataların iş süreci üzerinde kesinlikle kritik sonuçları olmayacak ve gerekirse rutin olarak düzeltilebilir.

Burada, sürücüleri yeni yazılıma aktarma durumunun karmaşıklığını maksimum düzeyde anlayarak, sürücülerle günün her saati çalışan taksi hizmetleri yöneticilerinin ve ustabaşılarının paha biçilmez yardımlarına dikkat etmek gerekir. Hatta telefonlara yeni programların kurulumunu tamamladıktan sonra tek bir sürücüyü bile kaybetmedik. Ayrıca müşterilerin kaldırılmama yüzdesini de ciddi bir şekilde artırmadılar ve bu oran kısa sürede normal seviyelere döndü.

Böylece projedeki çalışmanın ilk aşaması tamamlandı. Ve sonucun gelmesinin uzun sürmediğine dikkat edilmelidir. Siparişlerin sürücülere insan müdahalesi olmadan dağıtılmasının otomatikleştirilmesiyle, bir müşterinin taksi için ortalama bekleme süresi büyük ölçüde azaldı ve bu da doğal olarak müşterinin hizmete olan bağlılığını artırdı. Bu da sipariş sayısında artışa neden oldu. Bunun ardından taksi şoförlerinin sayısı arttı. Sonuç olarak başarıyla tamamlanan siparişlerin sayısı da arttı. Ve bunun sonucunda şirketin kârı arttı. Tabii tüm bu süreç bir anda gerçekleşmediği için burada biraz öne çıkıyorum. Yönetimin memnun olduğunu söylemek hiçbir şey söylememektir. Projenin daha fazla finansmanı için bana sınırsız erişim verildi.

Devam edecek ..

Kaynak: habr.com

Yorum ekle