Wie organisiere ich das Backend einer mobilen Anwendung?

Bild

Was machen wir? Benutzerregistrierungs- und Autorisierungsdienst für eine mobile Anwendung

In Haustierprojekten jedes mobilen Entwicklers kommt früher oder später eine Zeit, in der Sie schnell und ohne allzu große Kopfschmerzen einen Server für Ihre Anwendung erstellen müssen. Es spielt keine Rolle, welche Funktion der Server ausführen soll: ob es sich um Datenspeicherung oder Benutzerregistrierung / -autorisierung handelt.

In der Regel geht am Anfang jeder (gut oder am meisten) den Weg des geringsten Widerstands. Wir suchen nach einer schlüsselfertigen Lösung und sehen, wie schnell sie an unsere Bedürfnisse angepasst werden kann.

Zu diesem Zeitpunkt können Sie als Erstes Firebase-Dienste „googeln“, deren kostenlose Limits mehr als ausreichend sind, um das Backend einer kleinen mobilen Anwendung zu organisieren. In diesem Fall riskieren wir jedoch, genau unter Berücksichtigung des russischen Entwicklers, auf die Gesetzgebung zu setzen - grenzüberschreitende Datenübertragung und Speicherung der persönlichen Daten des Benutzers.

(Bundesgesetz 152 „Über personenbezogene Daten“, Artikel 12, Kapitel 2) Die

Versuchung, Firebase zu verwenden, ist groß. Wenn wir uns jedoch gegen unnötigen Aufwand mit verschiedenen Aufsichtsbehörden versichern möchten, suchen wir nach alternativen Optionen.

Die nächste Stufe ist die Verwendung eines VDS-Servers mit einer Art Open-Source- oder Freemium-Lösung, wobei der fertige „Service-as-a-Service“ oder eine Lösung, die die Bereitstellung ähnlicher Funktionen ermöglicht, als Grundlage dient.

Vor einigen Jahren habe ich auf Habré bereits einen detaillierten BaasBox-Setup-Leitfaden (der Artikel wurde aufgrund veralteter Informationen aus der Öffentlichkeit entfernt) auf einem gemieteten Server geschrieben und ein Beispiel für die Verwendung verschiedener Aufrufe in der iOS-Anwendung für die Objective C-Sprache gegeben. Aber BaasBox ist wirklich „schwergewichtig“ und diktiert Ihr Minimum für einen gemieteten Server. Nachdem ich ein wenig mit ihm gespielt hatte, wurde beschlossen, eine andere Lösung zu verwenden. Zu dieser Zeit wurde der Parse-Server erst kürzlich von Facebook in die Open-Source-Entwicklung integriert. Er verfügte nicht über so viele Adapter wie derzeit, aber seine Funktionen waren mehr als ausreichend für persönliche Projekte und Anwendungen von Privatkunden (viele Projekte sind noch vorhanden) existieren und stabil arbeiten).

Fairerweise ist anzumerken, dass der Parse-Server sehr ausgereift ist und sich aktiv weiterentwickelt. Im Moment wurde fast die gesamte Funktionalität, die in einem kommerziellen Vorfahren verfügbar war, neu erstellt. Sie können Ihre eigenen Hooks, lokalisierten Push-Benachrichtigungen, einen Prozessmanager und sogar ein Abonnement zum Ändern von Objekten basierend auf Sockets schreiben (ParseLiveQuery - wenn es interessant ist, schreibe ich einen separaten Artikel zum Einrichten von ParseLiveQuery).

Der Analyseserver war jedoch gerade zu dem Zeitpunkt nicht mehr interessant, als ein nicht standardmäßiger Datentyp implementiert werden musste, der auf der Grundlage der im System definierten Typen nur schwer zu verarbeiten ist. Es stört auch die Tatsache, dass ich als spezialisierter Serverentwickler bisher nicht auf eine effizientere Bereitstellung der Umgebung Wert gelegt habe und viele Konfigurationsdateien von Hand erstellt wurden, während die Aktionen auf jedem neuen Server ständig wiederholt wurden. In diesem Moment wird klar, dass eine Boxed-Lösung nicht für alle Probleme geeignet ist, und Sie sollten mit der nächsten Phase der Organisation Ihres Servers für eine mobile Anwendung fortfahren.

In letzter Zeit ist Swift meine Hauptentwicklungssprache.Daher ist er es, der mich hauptsächlich beim Schreiben von serverseitigem Code interessiert. Swift selbst ist einfach auf einem Unix-System zu installieren, bietet jedoch keine offensichtlichen Vorteile. Im Kern wird es der Entwicklung einer Konsolenanwendung mit komplexer Logik ähneln. Das Wiederherstellen der auf dem Server erforderlichen grundlegenden Methoden wird viel Zeit in Anspruch nehmen.

Wie in vielen anderen Sprachen verfügt Server Side Swift über eigene Frameworks und Communities, die an der Entwicklung dieser Lösungen beteiligt sind.

Derzeit gibt es drei wichtige Lösungen für die schnelle Entwicklung der Serverseite:

  • Perfekt
  • Dampf
  • Kitura

Es gibt andere Möglichkeiten, aber sie sind wegen ihrer lang anhaltenden Entwicklung und ihres Todes nicht erwähnenswert.

In Bezug auf Dokumentation und Support mag ich Vapor mehr, aber es ist Geschmackssache. Andere Lösungen werden jemandem nahe sein. Auf die eine oder andere Weise sind sie in vielen Momenten ähnlich.

Natürlich werde ich im Verlauf des Artikelzyklus in meinen Beispielen Vapor verwenden. Darauf aufbauend implementieren wir den Benutzerregistrierungs- / Autorisierungsdienst, senden und bestätigen E-Mails, können das Passwort zurücksetzen und ändern.

BildBild
BildBild
Lohnt es sich, eine Implementierung ohne praktischen Nutzen durchzuführen?

Wahrscheinlich nein! Aus diesem Grund stellen wir den Dienst für Erwachsene bereit, mit dem Sie die Logik zum Speichern von Benutzerdaten auf Ihrem Server organisieren können.

Wenn die Entscheidung erwachsen ist, müssen absichtliche Entscheidungen getroffen werden. Wir müssen die Skalierung vereinfachen, die Datenüberprüfung implementieren und die Speicherung der Benutzersitzung sicherstellen, damit er nicht jedes Mal gezwungen wird, seinen Benutzernamen und sein Kennwort einzugeben.

Was brauchen wir dafür?

  • VAPOR 4 (ja, noch in der Beta, aber die Veröffentlichung kommt bald, wie die Entwickler versprochen haben)
  • PostgreSQL (es gibt einen hervorragenden Adapter für die Arbeit mit dieser Datenbank)
  • Nginx
  • SSL (schließen Sie alle unsere Anforderungen vom Client an den Server mithilfe eines Zertifikats)
  • Localhost (Berücksichtigen Sie die Entwicklungsmethode vor Ort, um nicht an das Netzwerk angeschlossen zu werden und problemlos unterwegs zu arbeiten.)

Nun, wir werden all dies in Docker packen , um die gleiche Arbeit unabhängig von der aktuellen Laufzeitumgebung sicherzustellen.

Ehrlich gesagt war ich einmal skeptisch gegenüber dem Docker, aber ich hätte mir diese Technologie genauer ansehen sollen. Der Zweck des Artikels ist nicht, seine Arbeit zu erklären und zu lernen, wie man mit ihm arbeitet (ich vermute, dass ich selbst noch viele interessante Funktionen des Dockers lernen muss). Aber diejenigen, die nicht wissen, was es ist und wie sie damit arbeiten sollen, können Docker über den offiziellen Link unabhängig voneinander kennenlernen: www.docker.com

Mit Blick auf die Zukunft werde ich einen nützlichen Link zur Kitematic-Anwendung hinterlassen, die die Arbeit mit Docker-Containern vereinfachen soll : kitematic.com (muss für diejenigen vorhanden sein, die das Terminal nicht nutzen möchten ).

Beginnen wir also mit der Installation von Docker auf einem Mac-Computer: Folgen Sie dem

Link hub.docker.com/editions/community/docker-ce-desktop-mac und laden Sie Get Docker Desktop für Mac (stabil) herunter .

Bild

Öffnen Sie das resultierende Image und installieren Sie nichts unterscheidet sich vom Standardkopieren der Anwendung in das Programmverzeichnis.

Bild

Starten Sie danach einfach die Anwendung und warten Sie, bis der Dienst vollständig initialisiert ist.

BildBild

Wenn noch keine Docker-ID vorhanden ist, sollte diese auf hub.docker.com erstellt werden. Wenn dies der Fall ist, melden Sie sich einfach bei der Anwendung an.

Bild

Damit ist die Vorbereitung für die Verwendung von Docker abgeschlossen. Es bleibt nur die aktuelle Version und Informationen über die Umgebung zu überprüfen.

> Docker-Version
Bild

> Docker-Informationen
Bild
Damit ist die Vorbereitung für die Entwicklung des Autorisierungsdienstes abgeschlossen. Im nächsten Teil werden wir sehen, wie Sie Container mit verschiedenen Diensten verwenden können. Wir werden uns mit Docker-Compose befassen, um die Assemblierung unserer Umgebung zu automatisieren und mit dem Schreiben von Code zu beginnen.

PS: Ein kleiner Rat aus persönlicher Erfahrung. Wenn wir Dienste auf unserem lokalen Computer entwickeln, weist Docker Standardressourcen für unsere Verwendung zu. Wenn wir das erwartete Verhalten des Dienstes auf einem Remote-Server visualisieren möchten, sollten wir uns um die Ressourcen auf dem lokalen Computer kümmern, so nah wie möglich an den Eigenschaften des Servers. Sie können dies in den Einstellungen der Docker Desktop-Anwendung tun, die wir heruntergeladen haben: Artikelautor

Bild

:
Vitaly Podolsky, HackerU-Lehrer

All Articles