2016-12-23 1 views
2

Ich möchte verhaltensorientierte Entwicklung (BDD) auf Google Cloud. Ich habe meine BDD-Geschichten geschrieben und es sieht so aus, als würde eine einfache Web-App die Anforderungen erfüllen. Ich möchte AngularJS verwenden, um Client-Code und Java für den Server zu schreiben, weil mir das am besten bekannt ist. Ich bin auch mit Maven vertraut.Wie richte ich Google Cloud ein, um BDD (Behavior Driven Development) für eine Webanwendung mit einem AngularJS-Client und einem Java-Server durchzuführen?

Wie starte ich auf eine Weise, die es mir erlaubt, mich auf das Schreiben des Codes zu konzentrieren?

1] Einen Google Cloud Service auswählen (App Engine, Compute Engine, Container Engine)?

2] Suchen und kopieren Sie ein Hello World-Beispiel für eine Technologie, die auch so viele andere Komponenten enthält, wie ich verwenden möchte (JBehave für BDD, AngularJS, Java, einen Google Cloud-Dienst oben)? Aber welche Starthilfe soll ich am Anfang haben, damit sich die anderen Komponenten leicht integrieren lassen?

3] Finden Sie einen geeigneten Maven Archetyp?

4] Untersuchen Sie Spring.io? Ich habe gehört, dass Spring.io versucht, es Entwicklern leicht zu machen, sich auf das Programmieren zu konzentrieren. Aber ich weiß nicht viel darüber.

Ich möchte so wenig Zeit wie möglich für die Einrichtung des Projekts aufwenden, damit ich so schnell wie möglich damit beginnen kann, die verhaltensorientierte Entwicklung durchzuführen. Was ich normalerweise bei einem Projekt wie diesem finde, ist, dass ich eine der Entscheidungen über die zu verwendende Technologie verbiete, der Anleitung für die ersten Schritte folge, aber dann in eine Mauer steige, wenn ich mit der Integration der anderen Komponenten beginne.

Wie starte ich dieses Projekt, damit ich möglichst wenig Zeit mit nicht-codierenden Aspekten verbringen kann?

Antwort

2

Persönlich würde ich nicht darauf konzentrieren, wo das System ausgeführt wird. Ich meine Welt, Entwicklung erfolgt auf einem lokalen Computer. CI wird woanders gemacht und die endgültigen Artefakte werden irgendwo ausgeführt. Dies muss irgendwo von Ihrem CI-Build bereitgestellt werden können, damit Sie überprüfen können, ob es tatsächlich vor der Bereitstellung funktioniert.

Ich würde damit beginnen, etwas zu bauen, das lokal auf meinem Computer funktioniert, und dann vorwärts gehen. Ich würde keine Zeit damit verbringen, nach einem Maven-Archetyp zu suchen, ich würde mein Projekt langsam manuell erstellen. Dies mag sich als ein langsamer Weg dazu anhören, aber es wird mir Wissen darüber geben, was passiert. Die Magie hinzugefügt ist Magie, die ich hinzugefügt habe und daher keine Magie.

Wo sollten Sie dann anfangen? Ich schlage vor, mit dem Klonen https://github.com/cucumber/cucumber-java-skeleton zu beginnen und es mit der Geschäftsfunktionalität zu erweitern, die Sie benötigen. Wenn Sie mehr Technologie benötigen, fügen Sie sie hinzu, wenn Sie sie brauchen. Nicht bevor du es brauchst. Meine Erfahrung ist, dass ich normalerweise weniger technisches Zeug brauche, als man sich von Anfang an vorstellen kann. Und definitiv nicht die Werkzeuge, an die ich denken konnte, bevor ich mit dem Projekt angefangen habe.

0

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.

Verwandte Themen