Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

19. Februar 2020
von bruno
Kommentare deaktiviert für k3s – 5 weniger als k8s (Kubernetes)

k3s – 5 weniger als k8s (Kubernetes)

Kubernetes (k8s) hat das Betreiben von Software in der Cloud revolutioniert. Anwendungen werden in Containern, wie Docker, bereitgestellt und Kubernetes führt sie performant auf mehreren Servern aus und sorgt bei Last automatisch für eine entsprechende Skalierung.

Will man Kubernetes produktiv einsetzen, sollte man die Dienste der großen Cloud-Anbieter (Google GKE, Amazon EKS, Microsoft AKS) nutzen, da der eigene Betrieb eines ausfallsicheren Kubernetes-Clusters viel Hardware, Wissen und Aufwand erfordert. Für den Einstieg bietet Kubernetes Minikube, das man auf seinem lokalen Rechner installieren kann. Will man jedoch einen Kubernetes-Cluster mit mehreren Rechner aufsetzen, dann sind günstige Raspberry Pis und das ressourcensparende k3s von Ranger eine gute Alternative. Weiterlesen →

14. Dezember 2019
von bruno
Kommentare deaktiviert für Frontend-Entwicklung mit lokalem API-Server

Frontend-Entwicklung mit lokalem API-Server

Viele Webanwendungen werden heutzutage als Single-Page-Webanwendung (SPA) mit Angular, React oder Vue.js umgesetzt. Man kann sie als eigenständige Anwendungen betrachten, die innerhalb des Browsers ausgeführt werden. Lediglich die fachlichen Daten müssen noch vom Server abgefragt werden, was zumeist durch REST-Aufrufe erfolgt. Bei einem Entwicklerteam aus Frontend- und Backend-Entwicklern sind die Frontendler von der REST-Schnittstelle der Backendler abhängig, was zu Verzögerungen bei der Umsetzung führen kann.

Minimale REST-Server mit kompatiblen API-Schnittstellen können bei der Frontend-Entwicklung helfen. Der auf Node basierende JSON-Server bietet passende REST-Funktionalitäten mit minimalem Konfigurationsaufwand. Das ist nicht nur für die lokale Entwicklung nützlich sondern auch unerlässlich für automatisierte Akzeptanztests (z.B. mit Selenium, Geb, Protractor). Weiterlesen →

7. September 2019
von bruno
Kommentare deaktiviert für Veralteter Raspberry Pi: Passwort zurücksetzen, Systeminformationen, System aktualisieren

Veralteter Raspberry Pi: Passwort zurücksetzen, Systeminformationen, System aktualisieren

Für einen kleinen Prototypen habe ich einen betagten Raspberry Pi aus dem Schrank reaktiviert. Aber wie waren die Anmeldedaten? Und welche Version von welchem Betriebssystem ist installiert?

Das Passwort läßt sich mit wenig Aufwand zurücksetzen und dann können wir auch noch das System aktualisieren. Weiterlesen →

23. August 2019
von bruno
Kommentare deaktiviert für Wartbare langlebige Software mit Domain Driven Design (DDD)

Wartbare langlebige Software mit Domain Driven Design (DDD)

Das Blue Book von Eric J. Evans „Domain-Driven Design: Tackling Complexity in the Heart of Software“ ist bereits über 15 Jahre alt. Trotzdem finden die dort genannten umfangreichen Methoden erst in den letzten Jahren ihren Weg in die professionelle Softwareentwicklung. Mit dem Red BookImplementing Domain-Driven Design“ veranschaulicht Vaughn Vernon 2013, wie Domain Driven Design in der Praxis eingesetzt wird, und fördert damit maßgeblich dessen Verbreitung.

In meinem letzten Projekt konnte ich mehrere Jahre bei der Firma neuland in Bremen Internetshops nach DDD entwickeln. Dabei nutzten wir eine Vielzahl der Methoden des strategischen und taktischen Designs ein. Passenderweise bekam ich von meinen Kollegen zum Abschied das erste ins deutsche übersetzte Buch zu DDD geschenkt: „Domain-Driven Design kompakt“ von Vaughn Vernon (übersetzt von meinen ehemaligen Kollegen der WPS – Workplace Solutions Carola Lilienthal und Henning Schwentner).

Buch: Domain-Driven Design kompakt

Weiterlesen →

10. März 2019
von bruno
Kommentare deaktiviert für EU-Urheberrechtsreform – Uploadfilter verhindern !

EU-Urheberrechtsreform – Uploadfilter verhindern !

In weniger als drei Wochen stimmen die Abgeordneten des EU-Parlaments über die Urheberrechtsreform ab. Sie beinhaltet viele positive Regelungen, aber mit Artikel 11 und Artikel 13 leider auch die Einführung des Leistungsschutzrechts und den Einsatz von Uploadfiltern. Teile der Bevölkerung und der Wirtschaft organisieren entsprechende Proteste:

Dank Botbrief.eu habe ich entsprechende Briefe für die EU-Parlamentarier aus meiner Region verfasst.

Briefe an EU-Parlamentarier wegen Urheberrechtsrefor-

Briefe an EU-Parlamentarier wegen Urheberrechtsreform

Weiterlesen →

11. November 2018
von bruno
Kommentare deaktiviert für Schnittstellen-Dokumentation mit Swagger

Schnittstellen-Dokumentation mit Swagger

Bei der Erstellung von Schnittstellen (API: Application Programming Interface) für externe Systeme stellt sich meistens die Frage, wie die Schnittstellen dokumentiert werden sollen. Für REST-Schnittstellen hat Swagger die Dokumentation maßgeblich geprägt, sodass sich mittlerweise aus der ursprünglichen Swagger-Specification die OpenAPI-Specification (Github) in der Version 3 entwickelt hat. Eine Schnittstellen-Spezifikation (z.B. YAML-Datei) lässt sich auf zwei Arten konzipieren:

  • Contract/API First: Spezifikation wird mit Werkzeug oder manuell erzeugt
  • Code First: Schnittstelle wird programmiert und daraus Spezifikation generiert

Swagger bietet eine Reihe von lokalen und cloud-basierten Werkzeugen zur Erzeugung und Bereitstellung von Schnittsstellen-Dokumentationen:

  • Swagger UI: Dokumentation und REST-Interaktion für Schnittstellen-Konsumenten
  • Swagger Editor: Schnittstellen-Dokumentation erstellen und bearbeiten
  • Swagger Codegen: Generierung von Code aus Schnittstellen-Dokumentation
  • Swagger Inspector: Online-Werkzeug zum Testen von APIs
  • SwaggerHub: Software as a Service, das die Swagger-Werkzeuge (Codegen, Editor, UI) vereinigt

Weiterlesen →

14. Juli 2018
von bruno
Kommentare deaktiviert für Neues Release von Spring Boot – jetzt upgraden auf Version 2

Neues Release von Spring Boot – jetzt upgraden auf Version 2

Vor einigen Monaten ist die 2. Version von Spring Boot erschienen. Mit Spring Boot lassen sich einfach Spring-Anwendungen entwickeln, die bereits mit den benötigten Bibliotheken für den jeweiligen Anwendungszweck ausgestattet sind.

Eine Anwendung auf Basis von Spring Boot zu erstellen, bietet einige Vorzüge:

  • einfaches ‚bootstrapen‘ einer Spring-Anwendung (Version 5) per Spring Initializr
  • Vielzahl von ‚Spring Boot Starters‘ (z.B. Security, Reactive Web, JPA, MongoDB, Hystrix)
  • große Anzahl von Guides für den produktiven Einsatz
  • Generierung einer passenden Build-Konfiguration für Gradle oder Maven
  • Unterstützung von reaktiver Webprogrammierung
  • einfache Konfiguration der Anwendung, z.B. per Property-Dateien und Environment-Variablen

Spring Boot Initializr

Spring Boot Initializr

Weiterlesen →

4. Mai 2018
von bruno
Kommentare deaktiviert für Codey Rocky der neue fahrende Coding-Begleiter

Codey Rocky der neue fahrende Coding-Begleiter

Meine letzte Crowdfunding-Unterstützung bei Kickstarter hat sich gelohnt, denn mein neuer Coding-Begleiter „Codey Rocky – Your new coding companion“ ist endlich eingetroffen. Der Codey Rocky von Makeblock ist ein Programmierroboter, der mit Lego-Bausteinen erweiterbar ist, und aus zwei Teilen besteht:

  • einer niedlichen Zentraleinheit mit LED-Display, Sensoren und Knöpfen (Codey)
  • einem fahrbaren Untersatz für Codey, der ebenfalls einige Sensoren enthält (Rocky)

Rocky, Codey und ein Bluetooth-Stick

Der Codey-Rockey bietet einen leichten Einstieg in die Programmierung, indem man mit wenigen Befehlen das Display, die Motoren und die Sensoren ansprechen kann. Sobald das Programm fertig geschrieben ist, wird es per Bluetooth auf Codey übertragen und ausgeführt. Codey steuert sein Rocky entsprechend, weicht Hindernissen aus, gibt Töne von sich, reagiert auf Tasten und stellt Zeichen auf dem Display dar.

Freie Fahrt für Codey Rocky

Weiterlesen →

16. März 2018
von bruno
Kommentare deaktiviert für Einfaches Server-Monitoring mit Datadog

Einfaches Server-Monitoring mit Datadog

Für den stabilen Betrieb einer Server-Anwendung ist ein entsprechendes Monitoring von System-Kennzahlen erforderlich (z.B. verwendeter Arbeitsspeicher, freier Festplattenplatz, Anzahl von Datenbank-Verbindungen, Netzwerkauslastung). Wenn dabei die Daten aus unterschiedlichsten Quellen zusammengeführt werden, sie gemeinsam visualisiert werden und auch eine fachliche Analyse (z.B. Page Impressions, Newsletter-Conversion, Anzahl abgeschlossener Bestellungen) stattfindet, sprechen wir bereits von APM (Application Performance Management).

Lange Zeit galt die eigene Installation von Zappix oder Nagios (mit Check_MK) als das Mittel der Wahl. Mittlerweise bietet mein Lieblings-Werkzeug GitLab Unterstützung für Monitoring und es existieren viele SAAS-Lösungen in der Cloud. Ein weit verbreiteter Internetdienst mit sehr umfangreichen Monitoring- und Alarm-Funktionen ist Datadog.

Datadog: Vorgefertigtes Überblick-Dashboard

Weiterlesen →

5. Februar 2018
von bruno
Kommentare deaktiviert für Kalender-Server im Haushalt mit Radicale

Kalender-Server im Haushalt mit Radicale

Vor drei Jahren habe ich meinen Banana Pi mit der OwnCloud ausgestattet. Da der Einplatinencomputer als OwnCloud-Server doch etwas langsam agierte, bin ich bei der Datei-Verwaltung auf ein performanteres System umgestiegen. Für die Kalenderfunktionen habe ich mit Radicale (A Free and Open-Source CalDAV and CardDAV Server) auch einen einfachen, leichtgewichtigen Ersatz gefunden.

Radicales Eigenschaften sind vollkommen ausreichend für meinen Anwendungsbereich als Familienkalender und passen hervorragend zu dem eher leistungsschwachen Banana Pi:

  • Kalender-Anbindung von Clients über CalDAV, WebDAV und HTTP
  • Adressbuch-Anbindung von Clients über CardDAV, WebDAV und HTTP
  • kaum Installation und Konfiguration notwendig
  • arbeitet mit Dateien und benötigt keine Datenbank
  • implementiert nur die wichtigsten Spezifikationen
  • Unterstütung von Authentifizierung

Weiterlesen →