
Anstatt vorzustellen
Wie alle interessanten Geschichten begann diese vor langer Zeit und unerwartet. Als unsere Partnerbank zu uns kam und sagte: „Leute, wir haben gelernt, in einer Minute in unserem System zu punkten. Wie wäre es, Kräfte zu bündeln und Projekte zu integrieren? Mit uns - eine Entscheidung und Anerkennung, mit Ihnen - Autos. “ Zu sagen, dass wir inspiriert waren - nichts zu sagen! Wir hatten jede Chance, der erste fast auf der Welt zu werden, der in einer Minute online einen Kredit für ein gebrauchtes Auto vergeben kann (ONE MINUTE, CARL)! Im Folgenden werde ich Ihnen sagen, was daraus geworden ist, aber zuerst werde ich Ihnen sagen, wer wir tatsächlich sind, WIR.

Wir sind „Räder | Dach | Market “ist das größte IT-Unternehmen mit Sitz in Kasachstan. Unsere Produkte helfen jeden Tag sechs Millionen Kasachstanern, Autos, Wohnungen, Krippen und Tausende anderer Dinge zu kaufen und zu verkaufen. Kolesa.kz ist die größte Auto-Ressource und -Anwendung und nimmt bereits seit mehreren Jahren den ersten Platz in der Mobilfunkbewertung von Kasachstan ein.
Was ist das Projekt „Autokredit“?
Derzeit sind 103.400 Autos Gebrauchtwagen, mehr als 60% davon sind auf Kredit erhältlich!
Wie es in Bildern aussieht1. Wählen Sie das Auto aus, das wir gutschreiben möchten

Abbildung 1. Suchergebnisse für Autos, die auf Kredit verfügbar sind
Abbildung 2. Anzeigenseitenbildschirm
3. Wählen Sie den Zeitraum und die Anzahlung aus und klicken Sie, um die Genehmigung zu erhalten

Abbildung 3. Kreditrechner für die Ankündigung

Abbildung 4. Initialisierungsformular eines Kreditantrags
Hier geben wir Ihre Handynummer Name und IIN ein (in Russland wäre es eine TIN)
5. Als nächstes müssen Sie den SMS-Code eingeben, der zu Ihrer Nummer kommt

Abbildung 5. Bestätigungsformular für die Telefonnummer durch Eingabe von SMS
6. Danach beginnt der Bewertungsprozess selbst, der nicht länger als 1 Minute dauert
Abbildung 6. Bildschirm für den Bewertungsprozess der Anwendung
7. Es gibt verschiedene Möglichkeiten, Ergebnisse zu erzielen:
- Sie genehmigen einen Kredit
- Ihnen wird ein Darlehen verweigert
- Ihnen werden alternative Bedingungen angeboten
- Sie werden um zusätzliche Informationen gebeten. Danach erhalten Sie eine der vorherigen Optionen (a, b, c).

Abbildung 7. Beispiel für einen Bildschirm zur automatischen Kreditgenehmigung
Nachdem eine Person die Genehmigung ihres Antrags erhalten hat, ruft der Manager der Bank ihn innerhalb von 10 Minuten zurück und informiert die Person darüber, welche Maßnahmen sie als Nächstes ergreifen muss, um einen Kredit zu erhalten. Praktisch, nicht wahr? Mal sehen, wie alles umgesetzt wurde.
Erinnerst du dich, wie alles begann ...
Alles war zum ersten Mal und wieder! Wenn wir früher nur ein Feedback-Formular als Kreditformular hatten, dann war unsere neue Idee etwas völlig Neues und Unverständliches. Weil Wir hatten keine Analoga, wir hatten eine sehr aufregende Aufgabe vor uns - zu planen, zu entwerfen, zu verteilen und umzusetzen. Zunächst haben wir den gesamten Prozess unserer gemeinsamen Integration in zwei parallel durchgeführte Blöcke unterteilt, nämlich:
- Infrastrukturintegration
Software-Integration
Zunächst haben wir mit der Partnerbank vereinbart, dass er (die Partnerbank) uns eine Art API zur Verfügung stellt, in die wir einige Daten senden und einige Antworten erhalten. Das haben sie beschlossen. Wir warteten auf die API-Dokumentation der Bank und brachten unsere und ihre Netzwerktechniker zusammen! In Bezug auf die Software-Integration hat sich ein ziemlich einfaches Schema herausgebildet. Wir senden Daten an die Bank, die Bank scrollt sie in ihrem System und gibt sie an uns zurück, und das alles für garantierte 60 Sekunden. Im Falle einer Zeitüberschreitung (wo könnte dies ohne sein) haben wir vereinbart, einen Notfallfragebogen anzuzeigen, in dem wir Daten erhalten, die die Bank möglicherweise zusätzlich benötigt.
Netzwerke
Zu dieser Zeit, als die Entwickler Tools für die Implementierung auswählten, entwarfen sie ihr System und warteten auf die Dokumentation des Partnersystems. Die Arbeit in der Infrastrukturabteilung war bereits in vollem Gange! Meine Partnerbank und ich hatten zwei: 2 cisi nebeneinander in einem DC, ein Kabel, das Tsiska, einen VPN-Tunnel, Sicherheitszertifikate und Pribludy für die Arbeit mit ihnen in allen Farben und Größen verbindet ... Der Plan war wie folgt: Wir leiten den verschlüsselten VPN-Kanal zwischen unseren weiter Server und bauen direkte Integration zwischen unseren Diensten. Schematisch kann dies wie folgt dargestellt werden:

Lassen Sie uns über den Code sprechen
Im Folgenden werden wir darüber sprechen, wie und was von unserem Service arrangiert wird. Nachdem wir ein Dokument erhalten hatten, in dem der zur Integration bereitgestellte Service des Partners beschrieben ist, haben wir festgestellt, dass die Bank im Gegensatz zu uns nur mit SOAP-Anfragen arbeitet und nichts über RESTful-Services erfahren möchte. Und da wir in unseren Diensten SOAP etwas seltener als je zuvor verwenden, haben wir viele wunderbare Entdeckungen gemacht, wie man lernt, wie man SOAP in unserem neuen Produkt vorbereitet. Daher mussten wir unserem Service beibringen, SOAP-Anforderungen zu analysieren und unsere Antworten wieder in SOAP umzuwandeln.
Rahmenauswahl
Für den Anfang musste man mindestens eine Implementierungssprache wählen, es gab viele Ideen, angefangen mit C und C # bis hin zu golang und erlang. Wir beschlossen, einen einfachen Weg zu gehen. Das System muss unterstützt werden, und um nicht auf den Busfaktor mit dem Mangel an Spezialisten auf dem Markt zu stoßen, haben wir uns entschlossen, uns auf die in unserem Unternehmen am weitesten verbreitete Technologie zu konzentrieren - PHP. Gott sei Dank, dass außerhalb des Fensters bereits nicht 2001, sondern 2017 war und es so viele PHP-Frameworks gibt, dass sie die Bedürfnisse selbst sehr hoch entwickelter Ingenieure befriedigen können. Nachdem wir eine ganze Reihe durchgearbeitet hatten, wählten wir eine der einfachsten und gleichzeitig unterstützten - Yii 2.
Für diese Entscheidung war:
- Leicht zu beherrschen, eine ganze Reihe von Literatur;
- Es ist einfach genug, Formulare und Validatoren zu erstellen.
- Es gibt eine aktive Aufzeichnung und ein Auto, das bereit ist, mit allen Arten von Werkzeugen zu arbeiten.
- Er ist sehr schnell;
- Darauf aufbauend wird einfach eine API erstellt, und es ist bequem, Konsolenbefehle zu schreiben.
Gegen war:
- Das Framework basiert auf statischen Methoden - dies ist sehr unpraktisch, auch beim Schreiben von Tests
- Es war nicht klar, welche zusätzlichen Tools wir in naher Zukunft nach dem Start benötigen würden, und daher bestand die Gefahr, dass die erforderlichen Bibliotheken nicht gefunden wurden ...
Speicherauswahl
Das Framework wurde ausgewählt, jetzt ist es Zeit, ein Repository für Anwendungen auszuwählen. Es gab verschiedene Optionen, MySQL, mongoDB, postgreSQL ... Einerseits ist eine Anwendung ein Dokument, dessen Struktur sich höchstwahrscheinlich von Zeit zu Zeit ändern kann, ergänzt durch neue Felder und das Entfernen irrelevanter Felder. Andererseits wird die Verwendung nicht relationaler Datenbanken ihre Grenzen auferlegen. Nachdem wir alle Vor- und Nachteile abgewogen hatten, entschieden wir uns, auf zwei Stühlen zu sitzen und MySQL zum Starten zu verwenden. Nach dem Start migrierten wir zu einer Reihe von mongoDB + ElasticSearch. Infolgedessen wurden 2 MySQL-Replikate als Speicher erstellt und mit ActiveRecord an die Anwendung angeschlossen. Als wir mit der Umstellung auf mongoDB begannen, wuchs die Datenmenge sehr stark und nahm eine solche Wachstumsrate an, dass erneut Anwendungen in bedingte Repositorys unterteilt werden mussten. Als Tool für die zeitnahe Indizierung von Dokumenten entschied sich ElasticSearch für einen in Golang geschriebenen Dienst - monstache.
Gebäudeinfrastruktur
Wir haben uns für die folgende Infrastruktur entschieden: 10 Backends mit der Anwendung durch den Anwendungsprozessor, 2 Balancer, 2 MySQL-Replikate, 3 Elasticsearch-Shards, 3 MongoDB-Replikate und 2 Monstache-Service-Replikate. 
Der Prozess
Im Allgemeinen kann der Autokreditprozess in zwei Teile unterteilt werden:
- Um loszulegen, müssen Sie ein geeignetes Auto finden, das auf Kredit verfügbar ist. Höchstwahrscheinlich werden Sie von ihrem Zustand und den Bedingungen des Darlehens geleitet.
- Nachdem Sie ein Auto ausgewählt haben, benötigen Sie eine Kreditgenehmigung. Dazu müssen Sie einen Antrag ausfüllen
Über die Implementierung des zweiten Teils, den wir mehr oder weniger oben beschrieben haben, sprechen wir über die Implementierung des ersten Teils. Die Implementierung des ersten Teils besteht aus mehreren Unterteilen:
- Bei der Suche nach einem Auto sollte sich eine Person neben technischen Parametern auf die Verfügbarkeit eines Autos für den Kauf auf Kredit und auf die monatliche Mindestzahlung konzentrieren können. Dazu müssen wir zum Zeitpunkt der Ankündigung wissen, dass das Auto auf Kredit verfügbar ist und wie hoch die Mindestzahlung sein wird.
- Nachdem eine Person ein Auto ausgewählt hat, müssen wir ihr einen Kreditrechner zur Verfügung stellen, in dem sie die Höhe der Anzahlung und die Laufzeit des Kredits auswählen und so den bequemsten monatlichen Zahlungsbetrag auswählen kann.
Zu diesem Zweck wurde ein spezieller Microservice in der Go-Sprache entwickelt. Sein Kern war wie folgt: Wenn eine Anzeige an den Microservice gesendet wird, wird ein Objekt mit allen Daten über das Auto gesendet. Der Microservice gibt basierend auf den Regeln, die separat für das Auto geschrieben wurden, die monatliche Mindestzahlung für die Indexierung bei der Suche sowie die minimale Anzahlung und akzeptable Fristen zurück Kreditvergabe, die die Grundlage für den Aufbau eines Kreditrechners bilden.

Wir speichern die Fehlberechnungsoptionen im Voraus für die Standardanzahlungs- und monatlichen Zahlungswerte. Dies erfolgt für jede der verfügbaren Kreditperioden. Wenn eine Person die anfängliche Zahlung ändert (innerhalb des akzeptablen Bereichs), berechnet der Microservice erneut alle Daten. Wenn die anfängliche Zahlung weniger als zulässig ist, zeigt der Rechner einen Validierungsfehler an.

Aufgrund der hohen Belastung unseres Service verfügt der Kreditrechner über zwei Caching-Grade: Der erste findet im Backend statt, wo sich die Kunden zunächst für den Rechner entscheiden, der zweite im Microservice selbst.
Was ist das Endergebnis?
Wir haben das Projekt am 11. September 2017 gestartet. Bis zu diesem Zeitpunkt (4. Dezember 2018) wurden 2.973.868 Anmeldungen eingereicht. Wir sind in einem kontinuierlichen Prozess der Verbesserung unseres Service und der Vereinfachung der Benutzerreise. Wir machen es schneller einfacher und stabiler! Die Projektverfügbarkeit für den gesamten Zeitraum seit dem Start betrug 99,99%.
Als Ergebnis haben wir die folgenden Ergebnisse:
- Deutlich reduzierter Benutzerpfad
- Wir haben das Volumen der zur Ausleihe verfügbaren Autos auf 60% der gesamten Basis erweitert
- Bisher ist die Anzahl der Bewerbungen um mehr als das Siebenfache gestiegen!
Anstelle einer Schlussfolgerung
In 3 Monaten haben wir es geschafft, ein wirklich erstaunliches und einzigartiges Projekt aufzubauen. Hauptziel war es, unseren Kunden die Möglichkeit zu geben, Gebrauchtwagen zu kaufen, ohne unsere Plattform zu verlassen. In nur 1 Minute kann der Benutzer eine Entscheidung über seinen Antrag treffen, den Verkäufer anrufen und alle erforderlichen Dokumente am selben Tag erstellen.
Anhand der Anzahl der Bewerbungen für das Jahr und die zwei Monate können wir den Schluss ziehen, dass wir den Service wirklich bequem und gefragt gestalten können.