Über unser Kontaktnetzwerk wurden wir angefragt, ob wir zur internen Entwicklerkonferenz Technology & Engineering Culture (TEC) der Swiss Re beitragen möchten. Diese Einladung nahmen wir gerne an und reichten kurz darauf Themenvorschläge ein. Einige der Einreichungen waren Themen, welche die Organisatoren vorgeschlagen hatten, andere haben wir selbst eingebracht. Am Ende wurden wir eingeladen, fünf Vorträge zu den Themengebieten Best Practices mit Angular, Continuous Delivery und Entwicklung von Microservices zu halten.
In den ersten zwei Märzwochen haben wir uns vorbereitet. Pro Präsentation haben wir rund fünf Arbeitstage investiert. Jeder hat für sich seine Talks vorbereitetet, und dann den anderen Geschäftskollegen präsentiert. So konnten wir uns gegenseitig Feedback geben und die Talks auf ein hohes Niveau bringen.
Im Anschluss an die Vorträge haben wir viele positive Rückmeldungen über die Qualität und den Inhalt erhalten. Dafür, und auch für das kritische Feedback, bedanken wir uns herzlich bei den entsprechenden Personen. Grossen Dank geht auch an das TEC-Team, insbesondere an Tobias Weinmann, für diese Möglichkeit und die Gastfreundschaft.
Der erste Konferenztag war am Mittwoch dem 13. März im Impact Hub “Kraftwerk” Zürich. Der Impact Hub ist ein spannender Ort und – mit seinem Industrial-Look durch die Schiffscontainer – als Veranstaltungsort für eine kleine Konferenz gut geeignet.
Mirco hat im Kommandoraum vor 30 interessierten Zuhörer seinen Vortrag zu State Management in Angular gehalten.
In dem Talk erklärte er, was State Management ist und was für Vorteile ein globaler State im Entwickler-Alltag bringen kann. Er wies aber auch auf dessen Risiken hin und betonte, dass häufig lokale States völlig ausreichend sind.
Die bekannten Frameworks “Plain” RxJs, NgRx, NGXS und Akita stellte Mirco kurz vor. Dazu hatte er für jedes der Frameworks dieselbe Demo-Applikation implementiert. Daran illustrierte er die jeweiligen Vor- und Nachteile der einzelnen Frameworks.
Die Key-Message des Vortrags war, “Global State” kann extrem nützlich sein, aber “Local State is perfectly fine!”. Sprich, nicht jeder noch so belanglose Zustand sollte global verwaltet werden.
Direkt anschliessend hat Mirco den Talk über das Teilen von Code über mehrere Angular Projekte gehalten. Mithilfe der @angular/cli hat er live auf der Bühne zu seiner bestehenden Applikation eine zusätzliche erstellt.
Daraufhin generierte Mirco mit der CLI ein “Library” Projekt, um eine Komponente, die die beiden anderen Applikationen gemeinsam nutzen, zu isolieren.
Dabei konnte Mirco erfolgreich aufzeigen, wie einfach mittels @angular/cli Projekte erstellt werden können und wie gemeinsam genutzte Funktionen einfach in ein Library-Projekt ausgelagert werden können.
Das Beispielprojekt ist auf GitLab verfügbar.
Der zweite Konferenztag fand im neuen Swiss Re NEXT Gebäude am Mythenquai statt. Das Auditorium war beeindruckend. Im Konferenzraum wurden die Präsentationen auf einer sehr gut lesbaren LED Wand dargestellt. Zudem gab es kleine Screens auf den Seiten des Raumes, damit auch die hinteren Reihen die Bildschirminhalte gut mitverfolgen konnten.
Mit der Aufmache Deploy to Prod on Day 2 hat sich Christian die Aufmerksamkeit des Publikums gesichert.
Damit ist gemeint, dass ein Mitarbeiter in einem neuen Team schon am zweiten Tag einen (kleinen) Change machen soll, der dann gleich bis zur Produktion deployed wird.
Mit Bezug darauf erklärte Christian, was notwendig ist, um das “Day 2”-Ziel zu erreichen. Er ging dabei auf praktische Aspekte wie auch auf die Kultur ein, ohne die ein solches Ziel nicht erreicht werden kann.
Am Nachmittag präsentierte Michael, wie man GitLab für die Organisation komplexer Softwareprojekte nutzen kann.
Damit könnten einige bekannte Applikationen durch die zentrale GitLab-Instanz konsolidiert werden.
Anhand der Beispielapplikation “ZIP-Finder” zeigte Michael die verschiedenen Funktionen von GitLab auf: Die Organisation von Projekten mit Milestones und Tasks, die Ablage von relevanten Informationen mittels der Wiki-Funktion und die Versionsverwaltung des Codes.
Im Hauptteil der Vorführung zeigte Michael, wie die GitLab CI/CD Funktionen effizient genutzt werden können. Dazu fügte er zuerst seinem Beispielprojekt mittels der integrierten Web-IDE eine neue Funktion hinzu. Für den daraus erstellten Feature-Branch setzte GitLab automatisch eine neue Testumgebung auf. Nach Beendigung der Entwicklung wurde diese auch gleich wieder automatisch abgeräumt. Dabei erklärte Michael auch die Vorzüge der GitLab Runner, die — wie GitLab selbst — auf beliebiger Infrastruktur (beispielsweise im eigenen Datencenter) installiert werden können und dort Ihre Arbeit verrichten.
Das Beispielprojekt ist auf GitLab verfügbar.
In vielen Unternehmen werden Software-Services von verschiedenen Teams entwickelt. Jeder Service hat seine Spezialaufgabe. Um einen bestimmten Zweck zu erreichen – beispielsweise um die Risikofaktoren einer Versicherung zu berechnen – müssen Informationen aus verschiedenen Services zusammengetragen und kombiniert werden. Diese Services greifen also geschickt ineinander, um ein grösseres Ziel zu erreichen.
Die Herausforderung bei der Entwicklung von solchen Services ist, dass die umliegenden Dienste häufig von anderen Teams entwickelt werden. Manchmal unterscheiden sich die eingesetzten Technologien grundlegend.
Christian hat in seiner Live-Demonstration aufgezeigt, wie unterschiedliche Teams ihre Services untereinander austauschen können.
Dabei kann am Ende jede:r Entwickler:in – unabhängig von anderen Teams – an seinen eigenen Services entwickeln und diese jederzeit mit den Services der anderen Teams lokal kombinieren. So können alle Entwickler:innen ihre eigene Arbeit ungestört und unabhängig von anderen Teams testen.
Die vorgestellte Lösung basiert auf einer geschickten Kombination von docker-compose und Docker Multistage Builds.