Eine kleine Reise zur Entwicklung einer Cloud-Native Anwendung mit modernen Client-Frameworks

Möchte man heutzutage eine Anwendung entwickeln, so steht man vor der großen Auswahl an verschiedenen Technologien. Dies umfasst nicht nur die Art, wie der Anwender mit dem Anwendung interagiert (z.B. Handy-App oder Web-Site), sondern auch wie die Anwendung betrieben wird (Server mieten oder Cloud-Hosting).

Da die Möglichkeiten schier unendlich sind und man somit vor den Qual der Wahl steht, werden wir uns hier einige moderne und vielversprechende Technologien anschauen. Dabei werden wir eine kleine Anwendung entwickeln, welche typische Szenarien abdeckt und dabei aktuelle Tools und Frameworks verwendet.

Daher wird es in den nächsten Wochen/Monaten verschiedene Beiträge geben, welche die Implementierung der einzelnen Bestandteile der Anwendung beschreiben. Dabei werden wir bewusst einige Komponenten doppelt entwickeln, da es doch gute Vor- und Nachteile der verschiedenen betrachteten Möglichkeiten gibt. Letztendlich wird es kein „So wird es gemacht“ geben, sondern mehr ein „So könnte es gemacht werden“. Abhängig von den konkreten Bedürfnissen an Features für die Anwendung und das vorhandene Know-How ist die ein oder andere Lösung passender.

Verwendete Technologien

Bei den einzusetzenden Technologien werden wir diese grob in Frontend und Backend unterscheiden. 

Im Frontend wird alles behandelt, was der Anwender zu Gesicht bekommt und damit praktisch bedient. Im Backend wird es vor Allem um das Speichern der Daten gehen, welche der Anwender beim Benutzen des Frontends mit der Anwendung erzeugt. Das Backend wird somit ausschließlich von der Anwendung verwendet.

Frontend

  • Single-Page Application mit Angular
  • Hybrid Mobile App mit React Native

Backend

  • REST-Service mit C# und Azure Clound
  • Serverless Cloud in Python mit AWS

Umfang der Anwendung

Unsere Anwendung wird eine einfache ToDo-Liste sein, in der Aufgaben erstellt und verwaltet werden können.

Folgende Funktionen wird die Anwendung beinhalten:

  • Es soll die Anlage, Auflistung, Anzeige, Bearbeitung und Löschung von ToDo-Aufgaben möglich sein.
  • Aufgaben bestehen aus den Feldern: Name, Priorität und Beschreibung. Intern wird noch eine ID vorhanden sein.
  • Aufgaben können 0 bis unendlich viele Anhänge von verschiedenen Dateitypen (Bilder, Video, Text, …) haben.
  • Anhänge können dabei pro Aufgabe hinzugefügt, angezeigt und gelöscht werden.
  • Es werden mehrere Sprachen unterstützt.
  • Die Daten werden über einen REST-Service abgerufen und gespeichert. Der REST-Service bietet dabei CRUD-Operationen auf die von der Anwendung verwendeten Elemente an.
 
Später wird noch eine einfache Benutzerverwaltung hinzugefügt, sodass beim Anlegen und Ändern einer Aufgabe sichtbar ist, wer dies gemacht hat.

Beitragsserie

Um die Beiträge besser finden zu können, ist hier eine Liste der aktuell vorhandenen Beiträge. Diese wird im Laufe der Zeit um weitere Beiträge ergänzt.