Πώς ένα μικρό πρόγραμμα μετέτρεψε ένα μικρό γραφείο σε ομοσπονδιακή εταιρεία με κέρδη 100+ εκατομμύρια ρούβλια/μήνα

Στα τέλη Δεκεμβρίου 2008, προσκλήθηκα σε μια από τις υπηρεσίες ταξί στο Περμ με στόχο την αυτοματοποίηση των υπαρχουσών επιχειρηματικών διαδικασιών. Γενικά, μου δόθηκαν τρία βασικά καθήκοντα:


  • Αναπτύξτε ένα πακέτο λογισμικού για τηλεφωνικό κέντρο με εφαρμογή για φορητές συσκευές για οδηγούς ταξί και αυτοματοποιήστε τις εσωτερικές επιχειρηματικές διαδικασίες.
  • Όλα έπρεπε να γίνουν στο συντομότερο δυνατό χρόνο.
  • Έχετε το δικό σας λογισμικό, αντί να το αγοράζετε από τρίτους προγραμματιστές, το οποίο στο μέλλον, καθώς αναπτύσσεται η επιχείρηση, θα μπορεί να κλιμακώνεται ανεξάρτητα στις συνεχώς μεταβαλλόμενες συνθήκες της αγοράς.

Τότε δεν καταλάβαινα πώς λειτουργεί αυτή η αγορά και τις αποχρώσεις της, αλλά παρόλα αυτά δύο πράγματα ήταν προφανή για μένα. Το τηλεφωνικό κέντρο πρέπει να είναι κατασκευασμένο με βάση το λογισμικό ανοιχτού κώδικα PBX με αστερίσκο. Η ανταλλαγή πληροφοριών μεταξύ του τηλεφωνικού κέντρου και της εφαρμογής για κινητά είναι ουσιαστικά μια λύση πελάτη-διακομιστή με όλα τα αντίστοιχα μοτίβα σχεδιασμού της αρχιτεκτονικής του μελλοντικού έργου και του προγραμματισμού του.

Μετά από μια προκαταρκτική αξιολόγηση των εργασιών, των προθεσμιών και του κόστους για το έργο, και έχοντας συμφωνήσει για όλα τα απαραίτητα θέματα με τον ιδιοκτήτη της υπηρεσίας ταξί, ξεκίνησα να εργάζομαι τον Ιανουάριο του 2009.

Κοιτάζοντας μπροστά, θα πω αμέσως. Το αποτέλεσμα ήταν μια επεκτάσιμη πλατφόρμα που λειτουργούσε σε 60+ διακομιστές σε 12 πόλεις στη Ρωσία και 2 στο Καζακστάν. Τα συνολικά κέρδη της εταιρείας ήταν 100+ εκατομμύρια ρούβλια/μήνα.

Στάδιο πρώτο. Πρωτότυπο

Δεδομένου ότι εκείνη την εποχή δεν είχα πρακτική εμπειρία στην τηλεφωνία IP και ήμουν μόνο επιφανειακά εξοικειωμένος με τον αστερίσκο ως μέρος των πειραμάτων "οικίας", αποφασίστηκε να ξεκινήσω να εργάζομαι με την ανάπτυξη μιας εφαρμογής για κινητά και τμήματος διακομιστή. Ταυτόχρονα, κλείνοντας τα κενά στη γνώση σε άλλα καθήκοντα.

Αν με την εφαρμογή για κινητά όλα ήταν λίγο πολύ ξεκάθαρα. Εκείνη την εποχή, μπορούσε να γραφτεί μόνο σε java για απλά τηλέφωνα με κουμπιά, αλλά η σύνταξη ενός διακομιστή που εξυπηρετούσε κινητούς πελάτες ήταν λίγο πιο περίπλοκη:

  • Ποιο λειτουργικό σύστημα διακομιστή θα χρησιμοποιηθεί.
  • Με βάση τη λογική ότι μια γλώσσα προγραμματισμού επιλέγεται για μια εργασία και όχι το αντίστροφο, και λαμβάνοντας υπόψη το σημείο 1, ποια γλώσσα προγραμματισμού θα είναι η βέλτιστη για την επίλυση προβλημάτων.
  • Κατά τη διάρκεια του σχεδιασμού, ήταν απαραίτητο να ληφθούν υπόψη τα αναμενόμενα μελλοντικά υψηλά φορτία στην υπηρεσία.
  • Ποια βάση δεδομένων μπορεί να εγγυηθεί την ανοχή σφαλμάτων υπό υψηλά φορτία και πώς να διατηρείται γρήγορος χρόνος απόκρισης της βάσης δεδομένων καθώς αυξάνεται ο αριθμός των αιτημάτων προς αυτήν.
  • Ο καθοριστικός παράγοντας ήταν η ταχύτητα ανάπτυξης και η ικανότητα γρήγορης κλίμακας του κώδικα
  • Το κόστος του εξοπλισμού και της συντήρησής του στο μέλλον (μία από τις προϋποθέσεις του πελάτη είναι ότι οι διακομιστές πρέπει να βρίσκονται στην περιοχή υπό τον έλεγχό του).
  • Κόστος προγραμματιστών που θα χρειαστούν στα επόμενα στάδια εργασίας στην πλατφόρμα.

Καθώς και πολλά άλλα θέματα που σχετίζονται με το σχεδιασμό και την ανάπτυξη.

Πριν ξεκινήσω τις εργασίες για το έργο, πρότεινα την ακόλουθη στρατηγική απόφαση στον ιδιοκτήτη της επιχείρησης: δεδομένου ότι το έργο είναι αρκετά περίπλοκο, η υλοποίησή του θα πάρει αξιοσημείωτο χρόνο, επομένως πρώτα δημιουργώ μια έκδοση MVP, η οποία δεν θα πάρει πολύ χρόνο και χρήματα, αλλά που θα επιτρέψουν στην εταιρεία του να αποκτήσει ανταγωνιστικό πλεονέκτημα στην αγορά ήδη «εδώ και τώρα», και θα επεκτείνει επίσης τις δυνατότητές της ως υπηρεσία ταξί. Με τη σειρά του, μια τέτοια ενδιάμεση λύση θα μου δώσει χρόνο να σχεδιάσω πιο προσεκτικά την τελική λύση και χρόνο για τεχνικά πειράματα. Ταυτόχρονα, η εφαρμοζόμενη λύση λογισμικού δεν θα είναι εγγυημένη ότι θα σχεδιαστεί σωστά και μπορεί να επανασχεδιαστεί ριζικά ή να αντικατασταθεί στο μέλλον, αλλά σίγουρα θα εκτελεί την ελάχιστη απαραίτητη λειτουργικότητα για να «ξεφύγει από τους ανταγωνιστές». Η ιδέα άρεσε στον ιδρυτή του ταξί, οπότε στο τέλος το κατάφεραν.

Πέρασα τις δύο πρώτες εβδομάδες μελετώντας τις επιχειρηματικές διαδικασίες στην εταιρεία και μελετώντας τη δουλειά ενός ταξί από μέσα. Διεξήγαγε μια επιχειρηματική ανάλυση για το πού, τι και πώς μπορεί να αυτοματοποιηθεί και εάν είναι καθόλου απαραίτητο. Ποιες δυσκολίες και προβλήματα αντιμετωπίζουν οι εργαζόμενοι της εταιρείας; Πώς λύνονται. Πώς οργανώνεται η εργάσιμη ημέρα για τους εργαζόμενους της εταιρείας. Τι εργαλεία χρησιμοποιούν;

Μέχρι το τέλος της τρίτης εβδομάδας, αφού ξεκίνησα την εργασία και μελέτησα θέματα ενδιαφέροντος στο Διαδίκτυο, λαμβάνοντας υπόψη τις επιθυμίες του ιδιοκτήτη της επιχείρησης, καθώς και τις δικές μου γνώσεις και ικανότητες εκείνη την εποχή, αποφασίστηκε να εφαρμόσω την παρακάτω στοίβα :

  • Διακομιστής βάσης δεδομένων: MsSQL (δωρεάν έκδοση με όριο αρχείου βάσης δεδομένων έως 2 GB).
  • Ανάπτυξη διακομιστή που εξυπηρετεί κινητούς πελάτες στους Δελφούς υπό Windows, καθώς υπήρχε ήδη διακομιστής Windows στον οποίο θα εγκαταστάθηκε η βάση δεδομένων, καθώς και το ίδιο το περιβάλλον ανάπτυξης διευκολύνει την ταχεία ανάπτυξη.
  • Λαμβάνοντας υπόψη τις χαμηλές ταχύτητες Διαδικτύου στα κινητά τηλέφωνα το 2009, το πρωτόκολλο ανταλλαγής μεταξύ πελάτη και διακομιστή πρέπει να είναι δυαδικό. Αυτό θα μειώσει το μέγεθος των μεταδιδόμενων πακέτων δεδομένων και, ως εκ τούτου, θα αυξήσει τη σταθερότητα της εργασίας των πελατών με τον διακομιστή.

Άλλες δύο εβδομάδες δαπανήθηκαν για το σχεδιασμό του πρωτοκόλλου και της βάσης δεδομένων. Το αποτέλεσμα ήταν 12 πακέτα που διασφαλίζουν την ανταλλαγή όλων των απαραίτητων δεδομένων μεταξύ του mobile client και του διακομιστή και περίπου 20 πίνακες στη βάση δεδομένων. Έκανα αυτό το μέρος της εργασίας λαμβάνοντας υπόψη το μέλλον, ακόμα κι αν χρειαστεί να αλλάξω εντελώς τη στοίβα τεχνολογίας, η δομή των πακέτων και της βάσης δεδομένων θα πρέπει να παραμείνει αμετάβλητη.

Μετά τις προπαρασκευαστικές εργασίες, κατέστη δυνατό να ξεκινήσει η πρακτική εφαρμογή της ιδέας. Για να επιταχύνω λίγο τη διαδικασία και να ελευθερώσω χρόνο για άλλες εργασίες, έφτιαξα μια πρόχειρη έκδοση της εφαρμογής για κινητά, σκιαγράφησα το UI, εν μέρει το UX και συμμετείχα έναν οικείο προγραμματιστή java στο έργο. Και επικεντρώθηκε στην ανάπτυξη, το σχεδιασμό και τη δοκιμή από την πλευρά του διακομιστή.

Μέχρι το τέλος του δεύτερου μήνα εργασίας για το MVP, η πρώτη έκδοση του πρωτοτύπου διακομιστή και πελάτη ήταν έτοιμη.

Και μέχρι το τέλος του τρίτου μήνα, μετά από συνθετικές δοκιμές και δοκιμές πεδίου, διορθώσεις σφαλμάτων, μικρές βελτιώσεις στο πρωτόκολλο και τη βάση δεδομένων, η εφαρμογή ήταν έτοιμη για παραγωγή. Πράγμα που έγινε.

Από αυτή τη στιγμή ξεκινά το πιο ενδιαφέρον και το πιο δύσκολο κομμάτι του έργου.

Κατά τη μετάβαση των οδηγών στο νέο λογισμικό, οργανώθηκε XNUMXωρη υπηρεσία. Δεδομένου ότι δεν μπορούσαν να έρθουν όλοι τις ώρες εργασίας κατά τη διάρκεια της ημέρας. Επιπλέον, διοικητικά, με σθεναρή απόφαση του ιδρυτή της εταιρείας, οργανώθηκε με τέτοιο τρόπο ώστε τα στοιχεία σύνδεσης/κωδικός πρόσβασης να εισαχθούν από τον υπεύθυνο της υπηρεσίας ταξί και να μην κοινοποιηθούν στον οδηγό. Από την πλευρά μου, χρειαζόταν τεχνική υποστήριξη για τους χρήστες σε περίπτωση αστοχιών και απρόβλεπτων καταστάσεων.

Ο νόμος του Μέρφι μας λέει: «Οτιδήποτε μπορεί να πάει στραβά, θα πάει στραβά». Και έτσι ακριβώς τα πράγματα πήγαν στραβά... Είναι ένα πράγμα όταν εγώ και αρκετοί οδηγοί ταξί δοκιμάσαμε την εφαρμογή σε πολλές δεκάδες δοκιμαστικές παραγγελίες. Και είναι εντελώς διαφορετικό το θέμα όταν 500+ οδηγοί στη γραμμή εργάζονται σε πραγματικό χρόνο με πραγματικές παραγγελίες από πραγματικούς ανθρώπους.

Η αρχιτεκτονική της εφαρμογής για κινητά ήταν απλή και υπήρχαν αισθητά λιγότερα σφάλματα σε αυτήν από ότι στον διακομιστή. Επομένως, η κύρια εστίαση της εργασίας ήταν στην πλευρά του διακομιστή. Το πιο κρίσιμο σφάλμα στην εφαρμογή ήταν το πρόβλημα της αποσύνδεσης από τον διακομιστή όταν χάθηκε το Διαδίκτυο στο τηλέφωνο και η συνεδρία αποκαταστάθηκε ξανά. Και το Διαδίκτυο εξαφανιζόταν αρκετά συχνά. Πρώτον, εκείνα τα χρόνια το Διαδίκτυο στο ίδιο το τηλέφωνο δεν ήταν αρκετά σταθερό. Δεύτερον, υπήρχαν πολλά τυφλά σημεία όπου το Διαδίκτυο απλά δεν λειτουργούσε. Εντοπίσαμε αυτό το πρόβλημα σχεδόν αμέσως και μέσα σε XNUMX ώρες διορθώσαμε και ενημερώσαμε όλες τις εφαρμογές που είχαν εγκατασταθεί προηγουμένως.

Ο διακομιστής είχε κυρίως σφάλματα στον αλγόριθμο διανομής παραγγελιών και εσφαλμένη επεξεργασία ορισμένων αιτημάτων από πελάτες. Κατά τον εντοπισμό δυσλειτουργιών, διόρθωσα και ενημέρωσα τον διακομιστή.

Στην πραγματικότητα, δεν υπήρχαν τόσα πολλά τεχνικά προβλήματα σε αυτό το στάδιο. Η όλη δυσκολία ήταν ότι ήμουν σε υπηρεσία στο γραφείο για σχεδόν ένα μήνα, μόνο περιστασιακά πήγαινα σπίτι. Μάλλον 4-5 φορές. Και κοιμήθηκα σε βολές και ξεκινήματα, αφού εκείνη την περίοδο δούλευα μόνος μου το έργο και κανείς εκτός από εμένα δεν μπορούσε να φτιάξει τίποτα.

Ένας μήνας, αυτό δεν σημαίνει ότι όλα γίνονταν συνεχώς glitching για ένα μήνα και κωδικοποιούσα κάτι χωρίς να σταματήσω. Μόλις το αποφασίσαμε. Άλλωστε η επιχείρηση λειτουργούσε ήδη και έβγαζε κέρδη. Είναι καλύτερα να το παίζετε με ασφάλεια και να ξεκουράζεστε αργότερα παρά να χάνετε πελάτες και κέρδη τώρα. Το καταλάβαμε όλοι αυτό πολύ καλά, οπότε όλη η ομάδα αφιέρωσε συλλογικά τη μέγιστη προσοχή και χρόνο στην εισαγωγή νέου λογισμικού στο σύστημα ταξί. Και λαμβάνοντας υπόψη την τρέχουσα επισκεψιμότητα των παραγγελιών, σίγουρα θα εξαλείψουμε όλες τις ελλείψεις μέσα σε ένα μήνα. Λοιπόν, τα κρυφά σφάλματα που μπορεί να παραμείνουν σίγουρα δεν θα έχουν κρίσιμες συνέπειες στην επιχειρηματική διαδικασία και, εάν είναι απαραίτητο, μπορούν να διορθωθούν σε τακτική βάση.

Εδώ είναι απαραίτητο να σημειωθεί η πολύτιμη βοήθεια από τους διευθυντές και τους επιστάτες των υπηρεσιών ταξί, οι οποίοι, έχοντας τη μέγιστη κατανόηση της πολυπλοκότητας της κατάστασης μεταφοράς οδηγών σε νέο λογισμικό, εργάζονταν με τους οδηγούς όλο το εικοσιτετράωρο. Μάλιστα, αφού ολοκληρώσαμε την εγκατάσταση νέων προγραμμάτων στα τηλέφωνα, δεν χάσαμε ούτε ένα πρόγραμμα οδήγησης. Και δεν αύξησαν κριτικά το ποσοστό μη απομάκρυνσης πελατών, το οποίο σύντομα επανήλθε σε κανονικά επίπεδα.

Αυτό ολοκλήρωσε το πρώτο στάδιο των εργασιών για το έργο. Και πρέπει να σημειωθεί ότι το αποτέλεσμα δεν άργησε να έρθει. Με την αυτοματοποίηση της διανομής των παραγγελιών στους οδηγούς χωρίς ανθρώπινη παρέμβαση, ο μέσος χρόνος αναμονής για ταξί από έναν πελάτη μειώθηκε κατά μια τάξη μεγέθους, γεγονός που φυσικά αύξησε την πίστη των πελατών στην υπηρεσία. Αυτό οδήγησε σε αύξηση του αριθμού των παραγγελιών. Μετά από αυτό, αυξήθηκε ο αριθμός των οδηγών ταξί. Ως αποτέλεσμα, ο αριθμός των παραγγελιών που ολοκληρώθηκαν με επιτυχία έχει επίσης αυξηθεί. Και ως αποτέλεσμα, τα κέρδη της εταιρείας αυξήθηκαν. Εδώ βέβαια προλαβαίνω λίγο, αφού όλη αυτή η διαδικασία δεν έγινε ακαριαία. Το να πούμε ότι η διοίκηση ήταν ευχαριστημένη σημαίνει να μην πω τίποτα. Μου δόθηκε απεριόριστη πρόσβαση σε περαιτέρω χρηματοδότηση του έργου.

Συνέχεια ..

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο