
Im Jahr 2018, wenn es möglich ist, mit Android Pay sogar einen Döner zu bezahlen, ist ein Smartphone das wichtigste Finanzinstrument für den Benutzer. Jetzt wollen die Leute mit seiner Hilfe im Allgemeinen alle Probleme im Zusammenhang mit Geld lösen. Daher sind die entsprechenden mobilen Anwendungen besonders relevant geworden.
Für Finanzanwendungen, die von CFT für verschiedene Kunden entwickelt wurden, liegt die Gesamtzahl der Installationen in Millionenhöhe - das heißt, nur wenige können sich einer solchen Erfahrung in diesem Bereich rühmen. Wir nutzten die Tatsache, dass das Unternehmen bei unserer Mobius-Konferenz anwesend war, und stellten dem Leiter der Android-Anwendungsentwicklungsgruppe
Mikhail Emelyanov einige Fragen, wie die Android-Entwicklung in CFT aussieht.
- Erzählen Sie uns zunächst kurz von „CFT“ für diejenigen, die diesen Namen noch nicht gehört haben.- Das Unternehmen ist seit mehr als 25 Jahren auf dem Fintech-Markt tätig: Als es erschien, gab es nicht einmal ein Konzept für Fintech, aber selbst dann produzierte es Produkte und Dienstleistungen, die heute so genannt werden. Tatsächlich bleibt der Name „Center for Financial Technologies“, der Anfang der 90er Jahre erschien, immer noch relevant und spricht für sich.
Natürlich hat sich in der Vergangenheit viel geändert (wer hätte sich Android 1991 vorstellen können?), Aber das Wesentliche blieb gleich: CFT entwickelt und entwickelt IT-Lösungen und technologische Dienstleistungen, die Finanztransaktionen einfach und bequem machen (einschließlich Geldtransfers) und Zahlungen).
Das Unternehmen trat im Novosibirsk Academgorodok auf und sein Hauptentwicklungszentrum befindet sich noch immer dort. Aber jetzt gibt es neben ihm Büros in vielen anderen Städten Russlands sowie in Chisinau, Almaty und Duschanbe. Das Wachstum setzt sich fort: Es entstehen ständig neue Dienstleistungen und Einheiten, die F & E-Richtung entwickelt sich aktiv weiter.
- Und wie viele Personen beschäftigen sich speziell mit der mobilen Entwicklung, und können Sie Beispiele für Anwendungen nennen, die in der CFT entwickelt wurden?- Wir haben ein verteiltes mobiles Team in Nowosibirsk, Tomsk und St. Petersburg. Jetzt sind es mehr als 50 Mitarbeiter, aber das Unternehmen hat Pläne für die mobile Entwicklung, dass wir doppelt so schnell wachsen müssen, um sie zu erreichen.
Unsere beliebtesten Anwendungen für iOS und Android sind
Geldtransfers (über 1,3 Millionen Downloads bei Google Play),
Beeline und
Corn Zahlungsbüros.
Außerdem verfügt unser Online-Banking-
Anbieter Faktura.ru über mehr als 100 angepasste mobile Anwendungen für iOS und Android. Insgesamt hat das Faktura.ru-Team 340 Online-Banking-Projekte für Firmen- und Privatkunden umgesetzt. Im Allgemeinen arbeiten rund 130 Banken auf dieser Technologieplattform.
- Die Arbeit mit Finanzen hat ihre eigenen Besonderheiten - wie unterscheidet sich die Android-Entwicklung in CFT vom „durchschnittlichen“ Unternehmen?- Da wir mit personenbezogenen Daten und Benutzerfinanzen arbeiten, sind strenge Anforderungen an den Schutz von Informationen eine der Hauptregeln. Wir beschäftigen uns regelmäßig mit Themen wie dem Sichern von Mobile Banking auf API-Ebene und während der Datenübertragung, der biometrischen Authentifizierung, dem Schlüsselbund, dem SSL-Pinning usw. Wir haben viele relevante Erfahrungen gesammelt, deshalb hat Mobius gerade
den Bericht „Grundlagen der Sicherheit mobiler Anwendungen“ vorgestellt.
Gleichzeitig führt die mobile Entwicklung in der Fintech-Branche nicht zu einer kontinuierlichen Einhaltung der Sicherheitsanforderungen, die von den Wünschen lebender Menschen getrennt sind. Die Endnutzer sind immer noch Millionen gewöhnlicher Bürger. Jetzt steuert jeder den Geldbetrieb von einem Smartphone aus - er bezahlt für Dienstleistungen, überweist Geld. Und unsere Endprodukte richten sich speziell an solche Menschen.
Daher ist es in der Fintech-Branche sehr interessant, sich nur auf die mobile Entwicklung einzulassen: Endbenutzer sind tatsächlich bei Ihnen. Anwendungen sollten daher nicht nur sicher, sondern auch einfach und so technologisch wie möglich sein. Wir schaffen nichts im luftleeren Raum, sondern ein Produkt für den Verbraucher.
- Neben dem Schutz von Informationen müssen Sie auch besonders stabil sein: Wenn ein Startup Produktionsfehler verursachen kann, erwarten sie Zuverlässigkeit von den Finanzen. Gleichzeitig ist es aber auch unmöglich, sich in einen langsamen „Wasserfall“ zu verwandeln und ein halbes Jahr lang alles zu koordinieren. Wie lösen Sie dieses Problem?- Zunächst mit einem architektonischen Ansatz. Wir haben die Idee einer sauberen Architektur als Standard genommen und ihre Prinzipien werden für reale Anwendungen entwickelt. Wir stellen neue Anwendungen im Rahmen der Aufteilung in Ebenen, Einzelverantwortung und schwach verbundene Einheiten.
Gewinn: Der Einsatz verschiedener Technologien, ohne dass der gesamte Code neu geschrieben werden muss, hohe Qualität durch Tests und vor allem einfache Skalierbarkeit, die für uns sehr wichtig ist.
Wir haben auch die strengste Codeüberprüfung, fast das gesamte Team nimmt daran teil, und wir erkennen die meisten schwierigen Momente in der Überprüfungsphase, sodass sie die Produktion nicht erreichen.
Natürlich testen - fast überall, wo wir Unit-Tests behandeln, schreiben einige Entwickler Code mit der TDD-Methode. Natürlich ist die Benutzeroberfläche nicht in TDD enthalten, aber wir vergessen auch nicht die UI-Tests: Gemeinsam mit einem Team von Testern haben wir daran gearbeitet, dass sie Espresso so effizient wie möglich verwenden.
- Da Fintech Konservativismus erfordert, kann dies in einigen Fällen den Einsatz neuer Technologien beeinträchtigen. Daher ist es interessant zu fragen: Welche neuen Funktionen haben Sie im letzten Jahr in Android ausprobiert? Und welche Technologien setzen Sie übrigens überhaupt ein?- Ziemlich viel zu versuchen. Als Google die Version von Android Architecture Component veröffentlichte, haben wir beschlossen, zu experimentieren und sie in einem der neuen Projekte zu implementieren. Aber wir sind auf einen Rechen gestoßen: Zum Beispiel haben wir in seinem ViewModel kein ausreichend effektives Mittel zur Lösung des Lebenszyklusproblems für unser Projekt gesehen. LiveData schien uns jedoch für die Präsentationsebene nützlich zu sein.
Nachdem das AAC-Ergebnis nicht den Erwartungen entsprach, haben wir es herausgeschnitten und durch einen effizienteren Ansatz ersetzt. Dank der sauberen Architektur mussten wir nicht die gesamte Anwendung wiederholen, sondern die Präsentationsschicht verfeinern. Es gibt ein weiteres Beispiel für die Verwendung des neuen ORM-Raums.
Wir entwickeln uns jetzt aktiv bei Kotlin. Bei Mobius fragten sich viele, „warum Kotlin überall ist“, aber das bittet darum. Es bietet sofort mehr Funktionen als Java: Es gibt viel weniger Code und mehr Funktionen. Mit einer einzigen Codezeile kann viel getan werden, z. B. mit der Deklaration von Klassen. Jetzt versuchen wir auch Coroutinen in einem der Projekte.
Im Allgemeinen gefällt uns die Art und Weise, wie sich Kotlin entwickelt, und wir freuen uns, dass seine Community wächst. Und da es so weit verbreitet ist, muss man sehr starke Überzeugungen und Prinzipien haben, um es nicht zu entwickeln.
Wir verwenden auch RxJava / RxKotlin, das beliebte Retrofit und Dagger 2, Googles Datenbindung. Wir planen, RxBinding zu testen. Lange Zeit kann alles aufgelistet werden. Im Allgemeinen stört Fintech nicht das volle Spiel mit verschiedenen Technologien.
- Android-Architekturkomponenten passten nicht zu Ihnen - aber können Sie sie anderen empfehlen? Wie ressourcenintensiv war die Migration zu ihnen: Langjährige Projekte sollten darüber nachdenken, oder ist es besser, sie neu zu lassen?„Obwohl AAC unsere Erwartungen nicht erfüllt hat, eignen sie sich gut für einige Aufgaben: zum Beispiel das Speichern und Wiederherstellen von Daten beim Ändern der Bildschirmausrichtung. Wenn also in einem Projekt mit einer Reihe von Legacy-Code die Unterstützung für das Ändern der Ausrichtung ineffektiv implementiert ist, sollten Sie über die Verwendung von AAC nachdenken. Um dies jedoch unglücklicherweise zu implementieren, müssen Sie zunächst die Architektur vorbereiten, kritische Fehler beheben und Integrationspunkte finden, um nicht die gesamte Anwendung zu verarbeiten.
- Der oben erwähnte Raum ist eine relativ neue Technologie, für die viele noch keine Zeit hatten. Daher ist es interessant: Welche Erfahrungen haben Sie mit ihr gemacht?- Zimmer hat uns gefallen. Mithilfe von Anmerkungen können Sie die Erstellung von Tabellen, das Definieren von Transaktionen usw. einfach beschreiben. Es gibt eine integrierte Unterstützung für Kotlin, Rx, LiveData. Zu den Minuspunkten in der aktuellen stabilen Version (1.1.0) zählen das Fehlen von Befehlen zum Bereinigen der Datenbank und die Notwendigkeit, die Kommunikation manuell zu konfigurieren. Es gab immer noch unangenehme Kleinigkeiten bei der Verwendung von Room in Kotlin, aber sie entschieden sich allmählich mit der Veröffentlichung neuer Versionen. Beispielsweise wurden die Standardtransaktionsmethoden in Schnittstellen nur in 1.1.0-alpha2 unterstützt.
Im Allgemeinen ist die Arbeit mit Datenbanken mit Room wesentlich komfortabler und effizienter geworden.
- Es gibt eine Sichtweise: "Alle Ihre ORMs sind schlau, Abstraktionen fließen immer noch und Sie müssen auf die SQL-Ebene gehen." - Was denken Sie darüber?- Um nicht triviale Aufgaben zu lösen, müssen Sie in jeder Technologie Code schreiben, sogar SQL. Die Hauptsache ist, dass dies nicht zu einem Overhead wird. In Room können Sie SQL-Abfragen auch manuell schreiben (z. B. Migration oder komplexe Abfragen). Durch Anmerkungen ist dies jedoch viel bequemer. Beispielsweise können Sie mit Relation Daten aus mehreren Tabellen abrufen.
- Da CFT älter als Android selbst ist, ist die Frage nach dem Vermächtnis wahrscheinlich für Sie relevant. Refactor Sie oft?- Natürlich ist in jedem Projekt Legacy-Code vorhanden. Und die beliebte Aussage „Jeder Code, der heute geschrieben wird, wird morgen zum Vermächtnis“ ist ganz richtig.
So ist es bei uns. Es gibt Anwendungen, die vor einigen Jahren veröffentlicht wurden. Wenn es objektive Gründe für die Änderung des gesamten Codes gibt (Fehler, geringe Skalierbarkeit, Mangel an effektiven Technologien usw.), tun wir dies. Wir führen ein schrittweises Refactoring durch. Parallel dazu veröffentlichen wir Funktionen, bei denen Code von Komponenten, Ebenen oder nur Bildschirmen verarbeitet wird.
Auch beim Einsatz von Technik. In einem unserer Projekte wurde beispielsweise Volley als http-Client verwendet. Die Technologie ist nicht neu und wir wollten auf OkHttp + Retrofit umsteigen. Zu diesem Zweck haben wir die Verbindungen im Projekt mit dem Restclient analysiert, die Architektur für den Übergang vorbereitet und sind jeweils zu dieser übergegangen, ohne viel Zeit damit zu verbringen.
- CFT hat Kurse, einschließlich Android - und was unterrichten Sie dort? Und was fehlt Ihrer Erfahrung nach für unerfahrene Android-Entwickler am meisten?- Ja, es gibt mehrere Bildungsprojekte in der CFT. Für Junioren - SHIFT School, in deren Rahmen wir einen Kurs zur grundlegenden Android-Entwicklung auf Basis von NSU durchgeführt haben. Und für ältere Studenten und Junioren - das Focus Start-Projekt, bei dem es 6 multidirektionale Kurse gibt, einschließlich mobiler Entwicklung (Android und iOS). Das Android-Kursprogramm bietet detaillierte Kenntnisse in Android, Java, Kotlin, Rx. Einige der besten Absolventen haben bereits mehrere Sets veröffentlicht und sind zu unseren Mitarbeitern geworden.
Anfängern von Android-Entwicklern fehlt häufig die Erfahrung mit OOP, dem SOLID-Prinzip. Einige verstehen den Unterschied zwischen den MVC-MVP-MVVM-Mustern und den Clean Architecture-Prinzipien nicht, da sie die Geschäftslogik falsch verstehen.
Es gibt auch Lücken im Android SDK, Java, dem Verständnis von Multithreading und dessen Implementierung in Android. Nun, die grundlegenden: Rx, Dolch, Nachrüstung verstehen. Viele versuchen nicht, die Dokumentation verschiedener Technologien zu lesen.
Unsere Praxis zeigt jedoch, dass Schulungsintensive die Lücken schnell und effizient genug schließen, um in der IT zu arbeiten.
