Ende Dezember 2008 wurde ich zu einem der Taxidienste von Perm eingeladen, um bestehende Geschäftsprozesse zu automatisieren. Im Allgemeinen wurden mir drei grundlegende Aufgaben gestellt:
- Entwickeln Sie ein Softwarepaket für ein Callcenter mit einer mobilen Anwendung für Taxifahrer und automatisieren Sie interne Geschäftsprozesse.
- Alles musste so schnell wie möglich erledigt werden.
- Um ihre eigene Software zu haben, die nicht von Drittentwicklern gekauft wurde, könnte sie in Zukunft, während sich das Geschäft entwickelte, unabhängig auf sich ständig ändernde Marktbedingungen skaliert werden.
Zu dieser Zeit verstand ich nicht, wie dieser Markt strukturiert war und welche Nuancen er hatte, aber dennoch waren mir zwei Dinge klar. Das Call Center muss auf der Basis eines Open-Source-Asterisk-Softwareaustauschs aufgebaut sein. Der Informationsaustausch zwischen dem Call Center und der mobilen Anwendung ist im Wesentlichen eine Client-Server-Lösung mit allen relevanten Mustern für die Gestaltung der Architektur eines zukünftigen Projekts und seiner Programmierung.
Nach einer vorläufigen Bewertung der Aufgaben, Fristen und Kosten des Projekts, nachdem ich alle notwendigen Fragen mit dem Eigentümer des Taxidienstes vereinbart hatte, begann ich im Januar 2009 zu arbeiten.
Mit Blick auf die Zukunft werde ich sofort sagen. Das Ergebnis war eine skalierbare Plattform, die auf über 60 Servern in 12 Städten Russlands und 2 Kasachstans läuft. Der Gesamtgewinn des Unternehmens betrug mehr als 100 Millionen Rubel / Monat.
Stufe Eins. Prototyp
Da ich zu diesem Zeitpunkt keine praktische Erfahrung in der IP-Telefonie hatte und im Rahmen von "Heim" -Experimenten oberflächlich mit Sternchen vertraut war, wurde beschlossen, mit der Entwicklung einer mobilen Anwendung und eines Serverteils zu beginnen. Unterwegs Wissenslücken bei anderen Aufgaben schließen.
Bei einer mobilen Anwendung war alles mehr oder weniger klar. Zu dieser Zeit konnte es nur für einfache Drucktastentelefone in Java geschrieben werden. Mit dem Schreiben eines Servers für mobile Clients war die Frage etwas komplizierter:
- Welches Server-Betriebssystem wird verwendet?
- Basierend auf der Logik, dass eine Programmiersprache für die Aufgabe ausgewählt wird und nicht umgekehrt, und unter Berücksichtigung von Anspruch 1, welche Programmiersprache zur Lösung von Problemen optimal ist;
- Beim Entwerfen musste die erwartete zukünftige hohe Belastung des Dienstes berücksichtigt werden.
- Welche Datenbank kann Fehlertoleranz bei hohen Lasten garantieren und wie kann eine schnelle Datenbankantwortzeit mit einer Erhöhung der Anzahl der Zugriffe auf diese Datenbank aufrechterhalten werden?
- Ausschlaggebend war die Entwicklungsgeschwindigkeit und die Fähigkeit, den Code schnell zu skalieren
- Die Kosten für Geräte und deren Wartung in der Zukunft (eine der Bedingungen des Kunden - der Server muss sich in seinem Hoheitsgebiet befinden);
- Die Kosten für Entwickler, die in den nächsten Phasen der Arbeit an der Plattform benötigt werden;
Sowie viele andere Fragen im Zusammenhang mit Design und Entwicklung.
Bevor ich mit der Arbeit an dem Projekt begann, schlug ich dem Geschäftsinhaber die folgende strategische Lösung vor: Da das Projekt recht komplex ist, wird seine Implementierung spürbar viel Zeit in Anspruch nehmen. Daher erstelle ich zunächst eine MVP-Version, die nicht so viel Zeit und Geld kostet, aber seinem Unternehmen einen Wettbewerbsvorteil verschafft Der Markt ist bereits „hier und jetzt“ und wird auch seine Fähigkeiten als Taxidienst erweitern. Für mich wiederum gibt mir eine solche Zwischenlösung Zeit, die endgültige Lösung gezielter zu entwerfen, und Zeit für technische Experimente. Gleichzeitig wird nicht garantiert, dass die implementierte Softwarelösung korrekt entworfen und möglicherweise in Zukunft radikal überarbeitet oder ersetzt wird, aber sie wird definitiv die minimal notwendige Funktionalität für die „Trennung von Wettbewerbern“ erfüllen. Dem Taxi-Gründer gefiel die Idee, und am Ende taten sie es auch.
Die ersten zwei Wochen verbrachte ich damit, Geschäftsprozesse im Unternehmen zu studieren und die Arbeit eines Taxis „von innen“ zu studieren. Durchführung einer Geschäftsanalyse, wo, was und wie zu automatisieren ist und ob dies überhaupt erforderlich ist. Vor welchen Schwierigkeiten und Problemen stehen die Mitarbeiter des Unternehmens? Wie man sie löst. Wie ist der Arbeitstag von den Mitarbeitern des Unternehmens organisiert? Welche Tools verwenden Sie?
Am Ende der dritten Woche nach Beginn der Arbeit und dem Studium interessanter Themen im Internet unter Berücksichtigung der Wünsche des Geschäftsinhabers sowie meiner damaligen Kenntnisse und Fähigkeiten wurde beschlossen, den folgenden Stapel zu verwenden:
- Datenbankserver: MsSQL (kostenlose Version mit einer Datenbankdateibeschränkung von bis zu 4 GB);
- Die Entwicklung eines Servers für mobile Clients in Delphi für Windows, da bereits ein Windows-Server vorhanden war, auf dem die Datenbank installiert werden soll, sowie die Entwicklungsumgebung selbst tragen zur schnellen Entwicklung bei.
- Angesichts der geringen Internetgeschwindigkeit auf Mobiltelefonen im Jahr 2009 sollte das Austauschprotokoll zwischen Client und Server binär sein. Dies verringert die Größe der übertragenen Datenpakete und erhöht infolgedessen die Stabilität der Clients, die mit dem Server arbeiten.
Weitere zwei Wochen wurden für die Gestaltung des Protokolls und der Datenbank aufgewendet. Es stellte sich heraus, dass 12 Pakete den Austausch aller erforderlichen Daten zwischen dem mobilen Client und dem Server sowie etwa 20 Tabellen in der Datenbank ermöglichen. Ich habe diesen Teil der Arbeit mit Blick auf die Zukunft erledigt, auch wenn ich den Technologie-Stack komplett ändern muss, sollte die Struktur der Pakete und der Datenbank unverändert bleiben.
Nach den Vorarbeiten konnte mit der praktischen Umsetzung der Idee begonnen werden. Um den Prozess ein wenig zu beschleunigen und mich für den Rest der Aufgaben freizugeben, habe ich eine Entwurfsversion der mobilen Anwendung erstellt, die Benutzeroberfläche, teilweise UX, skizziert und einen vertrauten Java-Programmierer für das Projekt gewonnen. Und er konzentrierte sich auf die Entwicklung der Serverseite, das Design und das Testen.
Am Ende des zweiten Monats der Arbeit an MVP war die erste Version des Prototypservers und -clients fertig.
Und am Ende des dritten Monats nach synthetischen Tests und Feldversuchen, der Behebung von Fehlern und geringfügigen Verbesserungen des Protokolls und der Datenbank war die Anwendung für die Ausgabe an die Produktion bereit. Welches wurde getan.
Von diesem Moment an beginnt der interessanteste und schwierigste Teil des Projekts.
Während des Übergangs der Treiber zur neuen Software wurde ein Dienst rund um die Uhr organisiert. Da nicht jeder tagsüber während der Arbeitszeit ankommen konnte. Darüber hinaus wurde es durch eine willensstarke Entscheidung des Firmengründers administrativ so organisiert, dass das Login / Passwort vom Taxiservice-Manager eingegeben und dem Fahrer nicht mitgeteilt wurde. Ich für meinen Teil brauchte technische Unterstützung von Benutzern bei Fehlern und unvorhergesehenen Situationen.
Murphys Gesetz sagt uns: "Alles, was schief gehen kann, wird schief gehen." Und so lief es nicht ... Es war eine Sache, als ich und mehrere Taxifahrer die Anwendung auf Dutzenden von Testaufträgen testeten. Und eine andere Sache ist, wenn mehr als 500 Fahrer auf der Linie in Echtzeit an echten Aufträgen von echten Menschen arbeiten.
Die Architektur der mobilen Anwendung war einfach und es gab deutlich weniger Fehler als auf dem Server. Daher lag der Schwerpunkt der Arbeit auf der Serverseite. Der kritischste Fehler in der Anwendung war das Problem der Trennung vom Server, als das Internet auf dem Telefon verschwand und die Sitzung erneut wiederhergestellt wurde. Und das Internet verschwand ziemlich oft. Erstens war das Internet am Telefon selbst in diesen Jahren nicht stabil genug. Zweitens gab es viele blinde Flecken, in denen das Internet einfach nicht funktionierte. Wir haben dieses Problem fast sofort erkannt und alle zuvor installierten Anwendungen innerhalb von 24 Stunden beseitigt und aktualisiert.
Auf dem Server gab es hauptsächlich Fehler im Algorithmus für die Verteilung von Bestellungen und die fehlerhafte Verarbeitung einiger Anfragen von Kunden. Nach der Entdeckung von Störungen wurde der Server korrigiert und aktualisiert.
Tatsächlich gab es zu diesem Zeitpunkt nicht so viele technische Probleme. Die ganze Schwierigkeit bestand darin, dass ich fast einen Monat lang im Büro Dienst hatte und nur gelegentlich nach Hause kam. Wahrscheinlich 4-5 mal. Und er schlief in Anfällen und Anfängen, da zu dieser Zeit allein an dem Projekt gearbeitet wurde und niemand außer mir etwas reparieren konnte.
Ein Monat, das bedeutet nicht, dass ein Monat lang ständig alles fehlerhaft war, und ich habe dort ohne Unterlass etwas codiert. Wir haben uns gerade so entschieden. Immerhin hat das Geschäft bereits funktioniert und einen Gewinn erzielt. Und es ist besser, auf Nummer sicher zu gehen und sich später zu entspannen, als jetzt Kunden und Gewinne zu verlieren. Wir alle haben das perfekt verstanden, daher hat das gesamte Team der Einführung neuer Software in das Taxisystem maximale Aufmerksamkeit und Zeit gewidmet. Und unter Berücksichtigung des aktuellen Auftragsverkehrs werden wir in einem Monat definitiv alle Mängel beseitigen. Nun, versteckte Fehler, die möglicherweise bestehen bleiben, haben sicherlich keine kritischen Konsequenzen für den Geschäftsprozess, und wenn nötig, können sie in der Arbeitsordnung behoben werden.
An dieser Stelle sei auf die unschätzbare Hilfe der Direktoren und Teamleiter der Taxidienste hingewiesen, die mit größtmöglichem Verständnis der Komplexität der Situation bei der Übertragung von Fahrern auf neue Software rund um die Uhr mit Fahrern zusammengearbeitet haben. Nach Abschluss der Installation neuer Programme auf Telefonen haben wir keinen einzigen Treiber verloren. Und sie haben den Prozentsatz der Nicht-Export-Kunden nicht kritisch erhöht, der bald wieder auf das normale Niveau zurückkehrte.
Dies war die erste Phase der Arbeit an dem Projekt. Und es sollte angemerkt werden, dass das Ergebnis nicht lange auf sich warten ließ. Durch die Automatisierung der Auftragsverteilung an Fahrer ohne menschliches Eingreifen konnte die durchschnittliche Wartezeit eines Kunden für ein Taxi um eine Größenordnung reduziert werden, was natürlich die Kundenbindung an den Service erhöhte. Dies hat zu einer Erhöhung der Anzahl der Bestellungen geführt. Im Anschluss erhöhte sich die Anzahl der Taxifahrer. Infolgedessen erhöhte sich die Anzahl der erfolgreich abgeschlossenen Bestellungen. Infolgedessen hat sich der Gewinn des Unternehmens erhöht. Natürlich renne ich hier ein wenig voraus, da dieser ganze Prozess nicht augenblicklich war. Zu sagen, dass das Management genug war, bedeutet nichts zu sagen. Ich war unbegrenzt in der weiteren Finanzierung des Projekts.
Fortsetzung folgt..