Der Entwicklungsprozess

Jira

jira dasjboard

Seit Oktober 2019 gibt es eine gratis Version von Jira: Cloud Free. Zu meinem Glück, den Jira ist eine geniale Software, um den agilen Workflow eines jeden Projektes zu unterstützen. Ich plane damit alle Arbeitschritte und habe damit eine stetige Übersicht was ich bereits erledigt habe, was ich gerade machen muss und was in Zukunft noch zu tun ist. Ich arbeite agil, das bedeutet, ich teile alle Arbeitsschritte, die zu erledigen sind, in Tickets ein. Diese werden dann priorisiert und der Reihe nach abgearbeitet. Dazu plane ich momentan was ich diese Woche erledigen will und was nächste Woche. Jede neue Idee oder neuer nötiger Arbeitsschritt kommt direkt als Ticket in den Backlog dazu. Am Ende jeder Woche gehe ich durch alle Tickets im Backlog und prorisiere diese falls nötig neu.

Link: Atlassion - Jira Website

Git - Bitbucket

git workflow

Als Versionsverwaltung verwende ich GIT, als Hosting dafür Bitbucket. Der Grund ist einfach - es bietet eine super Integration mit JIRA und ist ebenfalls für kleine Teams gratis. So sind zum Beispiel alle Commits zu einem bestimmten Ticket verlinkt. Dazu kommen noch eine große Reihe an Features, die man nutzen kann, während das Projekt wächst - wie zum Beispiel die CI/CD Pipeline. Obwohl ich am Projekt momentan alleine arbeite, verwende ich einen von vielen Entwicklerteams sehr der häufig benutzen Workflow. Der Grund dafür ist, dass dieser auch für die alleinige Entwicklung sehr viele Vorteile bietet.

Link: Atlassian - Bitbucket Website
git commits
Feature Branches

Jede Entwicklung (Feature, Bugfix) findet ausschließlich auf Featurebranches statt. Für diese gibt es eine eigene Systemumgebung, die komplett offline funktionert - damit kann man das komplette Feature entwicklen und testen, ohne damit irgendetwas anderes zu beeinflussen. In meinem Fall wird hierfür eine lokale Sql Datenbank verwendet (statt der DB auf Azure), und dazu ein lokaler Ordner für die Bilder (statt dem Azure Blobstorage).

code review
Development Branch

Ist ein Feature fertig (lokal getestet + alle Unit/Integration/E2E Tests laufen), gibt es einen Pull Request auf den Development Branch. Hierbei gibt es die Möglichkeit einer Code-Review, normalerweise von einem Teammitglied durchgeführt, in meinem Fall grober Selbst-Check, um zu sehen, ob ich nicht aus versehen Files oder Code angefasst habe, der eigentlich nicht zum Feature gehört). Für den Development Branch gibt es eine eigene Sytemumgebung, die ein Duplikat vom Produktivsystem ist - in diesem Fall auf Azure gehostet: Eine eigene Staging Frontend-App, Backend-App, Blobstorage & SQL Server. Das Deployment auf dieses System erfolg immer dann, wenn es neue Features gibt, die ich live testen möchte - üblicherweise 1-3 mal pro Woche.

Master Branch

Der Masterbranch repräsentiert den Code der auf dem Produktivsystem läuft. Ich release immer nach einer bestimmten Anzahl von Features, was momentan zu einem Zyklus von 3-6 Wochen führt. Das ist deswegen flexibel, da ich agil arbeite - eine Version wird immer dann released, wenn alle Features in ihr fertig entwickelt sind und diese stabil auf der Staging-Umgebung laufen.

Deployment - Docker

azure docker

Für das Deployment auf das Staging und Produktiv System verwende ich Docker. Einmal aufgesetzt, ist damit das Deployment jedesmal in Minuten erledigt. Das läuft so ab, dass ich lokal ein neues Docker-Image von meinem Frontend-App und Backend-API baue. Durch die Integration von Docker in Azure published Azure dann automatisch die neue Version, sobald ich diese auf Dockerhub pushe.

Hosting

scalable web app

Wie schon erwähnt hoste ich vieles auf Azure. Für The City Game sind das momentan zwei Webapps, ein MS SQL Server und Blob Storage. Der Grund dafür ist, dass Azure eine Riesenpalette an Features bietet, die einem Arbeit ersparen - so könnte ich zum Beispiel in Sekunden die Performance meiner Server vervielfachen. Damit ist jedes Projekt, das potenziell in seiner Größe skaliert, zukunftssicher aufgestellt. Dazu kommen eine große Reihe an Tools für Entwickler, wie zum Beispiel die Möglichkeit neue Test-Apps mit wenigen Klicks zu erstellen.

Brauchst du Unterstützung?

Wenn du gern Unterstützung hättest den richtigen agilen Workflow zu finden oder Continuous Integration/ Continuous Deployment in deinem Projekt einzuführen oder zu verbessern: Melde dich bei mir, ich helfe gerne!

office [at] bassa-solutions.at