Ein Ansatz ist, von vorne nach hinten oder von hinten nach vorne zu denken. Von vorne nach hinten zu denken bedeutet, mit der Benutzeroberfläche zu beginnen, und wenn das einmal erstellt ist, erstellen Sie die mittleren Ebenen und schließlich das Backend.
Das Problem beim Starten mit der Benutzeroberfläche ist jedoch, dass Sie nicht wirklich überprüfen können, dass es ohne Back-End funktioniert. Aber ich glaube, das ist ein Problem, das Dependency Injection (DI) löst. Sie erstellen die Benutzeroberfläche und wo immer es erforderlich ist, um die nächste Ebene im Stapel aufzurufen (z. B. die Server-APIs), geben Sie stattdessen einen Mock-Server zum Aufruf an. Sie können genügend Mock-Server implementieren, um die BDD-Storys für die Benutzerschnittstelle zu übergeben. Wenn jede BDD-Story für die Benutzeroberfläche übergeben wird, können Sie die nächste Ebene im Stack erstellen.
Es sollte möglich sein, um die Benutzeroberfläche mit der Entwicklung von der Suche nach einem Hallo Welt Beispiel für die Front-End-Technologie (AngularJS) beginnen. Suchen Sie nach einem Hello World-Beispiel, das die zwei notwendigen Teile zum Testen enthält: BDD und Dependency Injection. Wenn Sie keinen finden können, dann beginnen Sie einfach mit der AngularJS Hello World, um es zu starten. Führen Sie als separate Aufgabe eine Hello World für BDD aus, und hoffentlich wird es nach dem Erlernen, wie BDD funktioniert, damit BDD mit dem AngularJS-Projekt arbeiten kann, offensichtlich werden. Machen Sie das Gleiche für Dependency Injection. Hoffentlich bringt Sie das auf den Punkt, dass Sie ein vollständig implementiertes AngularJS-Frontend haben, das mit BDD und Dependency Injection funktioniert.
Dann können Sie auf der mittleren Ebene arbeiten. Sie können es als separates Projekt einrichten, unabhängig vom AngularJS-Projekt, sodass Sie sich keine Gedanken über die Probleme machen müssen, Code aus zwei Ebenen des Stapels zu einem Projekt zu kombinieren. Maven sollte das können, aber Dokumentation für Maven ist nicht so einfach zu benutzen.
Um die mittlere Ebene zu entwickeln, ein Hallo Welt Beispiel für die Entwicklung einer REST-basierte API-Server finden, die auf Google Cloud läuft. Sie brauchen das vordere oder hintere Ende an dieser Stelle nicht. Das Frontend kann durch die BDD Stories simuliert werden und das Backend kann von DI simuliert werden. Sobald alle BDD-Storys für die mittlere Ebene übergeben wurden, können Sie das Back-End erstellen.
die Back-End-Entwicklung ist ähnlich die mittlere Schicht zu bauen. Finden Sie ein Hello World-Beispiel für die Entwicklung einer Datenbankanwendung, die in Google Cloud ausgeführt wird. Wahrscheinlich ist die relevante Technologie der Google Datastore, der Objectify als objektorientierten Wrapper verwendet. Aber nennen wir diese Ebene die Service-Schicht, da zwischen der REST-API und dem Datenspeicher eine Abstraktionsschicht vorhanden sein sollte. Die Komplikation hier ist möglicherweise nicht sehr einfach, diese Schicht unabhängig von der mittleren Schicht zu entwickeln, aber versuchen Sie, wenn möglich, das zu tun. Erstellen Sie mit anderen Worten ein separates Projekt, das auf einem Google Datastore Hello World-Beispiel basiert. Verwenden Sie BDD, um die mittlere Ebene zu simulieren. Möglicherweise benötigen Sie DI nicht mehr, da Sie sich am Ende des Stapels befinden. Rufen Sie einfach den Datenspeicher direkt auf. Aber DI könnte auch nützlich sein, wenn es nicht möglich ist, den Datastore auf Ihrem lokalen Computer auszuführen, auf dem Sie gerade arbeiten.
Nachdem Sie nun BDD-Storys auf allen drei Layern (Benutzeroberfläche Front-End, REST-API Mittelschicht, Service-Layer-Back-End) ausgeführt haben, beginnen Sie jetzt mit der Arbeit auf den Produktionsservern. Ich bin nicht zuversichtlich, dass dies der beste Ansatz ist, denn es scheint, als könnten in diesem letzten Schritt viele Komplikationen auftreten. Theoretisch sollte jeder Layer, der die BDD-Tests bestanden hat, alles gut zusammenschließen. Aber alles zusammen zu integrieren könnte nicht so reibungslos verlaufen. Eine Strategie, um sicherzustellen, dass es reibungslos funktioniert, besteht darin, jede Schicht auf ihr eigenes dediziertes Produktionssystem abzubilden. Wenn jedes Teil auf einer Entwicklungsmaschine reibungslos läuft, sollte es auf einer Produktionsmaschine nicht reibungslos funktionieren?
Nun hoffentlich, aber ich hoffe, dass jemand anderes einen besseren Ansatz vorschlagen wird, der es jemandem ermöglicht, einen noch höheren Anteil an Zeit für die Programmierung und einen geringeren Zeitaufwand für dieses DevOps-Material auszugeben.