Microservices und das Twelve-Factor Apps Prinzip

Microservices sind nicht erst seit gestern ein Trend. In den letzten Jahren entstanden und entstehen mehr und mehr modulare Anwendungen, die eher klein sind und miteinander interagieren und sich ergänzen, anstatt als ein großes monolithisches Programm zu funktionieren.
Doch Microservices sind keine problemlose und wartungsfreie Lösung, denn vor allem wenn man Dinge nicht ordentlich strukturiert und dokumentiert kann es schnell in einem absoluten Chaos enden. Um genau diesen Aufbau der Microservices selbst, den Einsatz und die Wartung kümmert sich das Twelve-Factor App Prinzip.
Die Prinzipien starten mit der Codebase, welche in einem Versionsmanagementsystem liegen soll. Weiter geht es mit Abhängigkeiten, die explizit deklariert und isoliert genutzt werden sollen. An der dritten Stelle steht die Konfiguration, welche durch Umgebungsvariablen definiert werden soll. Ebenso wie der Microservice selbst, sollen Unterstützende Dienste behandelt werden, also als unterstützende und angehängte unabhängige Ressourcen.
Server Logs: Mehr ist nicht immer besser

Server Logs sind wichtig für die Admins / Betreiber von Servern, doch wie oft sollte man sie automatisiert zur Begutachtung versenden? Ich selbst hatte tägliche Zusammenfassung zum Status meines Servers und meiner Dienste an mich gesendet und kann nur sagen, lasst es. Nach einiger Zeit tritt derselbe Effekt ein, wie bei zu häufigen und erzwungenen Passwortwechseln. Während man bei Passwörtern Zettel unter der Tastatur findet, mit dem aktuellen Passwort, landen Server-Logs, die z.B. via Mail ankommen, automatisiert in Ordnern wo sie vergessen werden.
Trotzdem bin ich generell der Meinung das Statusnachrichten gut sind, also proaktiv Informationen verteilen. Spezielle Hinweise auf ungewöhnliche Vorkommnisse sind natürlich ebenso nötig, doch eben diese „speziellen Vorkommnisse“ zu definieren kann dazu führen Dinge zu übersehen. Ab wann ist z.B. eine neue große Datei ein Problem? Ab wann sollte man sich vielleicht schnell um Updates kümmern und wie relevant sind eigentlich Logs bezüglich dem Serverzugriff durch andere Nutzer? Hier gibt es viele Regeln und grundlegende Ansätze die helfen, aber nichts davon dürfte absolut perfekt sein.
Entsprechend finde ich es sehr angenehm, mittlerweile einmal pro Woche, Informationen zum Zustand meines Servers zu erhalten. Update-Informationen, Daten zu Logins, offene Netzwerkverbindungen und automatisierte Virenscans gehören unter anderem zum Output. Einmal pro Woche hat sich für mich als praktischer Zeitraum bewährt, denn ich schaue mir die Mails meistens umgehend an und erhalte trotzdem mit eher wenig Verzug relevante Informationen. Wie sieht es bei euch aus, nutzt ihr derartige Funktionen?
Droidcon 2019 startet nächste Woche

Auch dieses Jahr öffnet die Droidcon in Berlin wieder ihre Tore. Vom 01. - 03. Juli gibt es alles rund um den kleinen grünen Roboter im CityCube. Die mittlerweile elfte Ausgabe der Droidcon wird dieses Jahr leider ohne mich stattfinden, da es aktuell zeitlich und auch thematisch diverse andere Dinge gibt die mich beschäftigen.
Falls euch die Konferenz allerdings interessiert kann ich die Website empfehlen, denn dort sind mittlerweile alle Talks hinterlegt open_in_new, sodass man mit der Planung beginnen kann. Sollte es euch wie mir gehen, kann man die Übersicht zumindest nutzen um sich eine kleine Merkliste zu erstellen, sodass man sich später die VODs anschauen kann. Leider konnte ich keine App zur Konferenz finden, aber vielleicht ergibt sich in den nächsten Tagen noch etwas, denn selbige war für mich immer sehr hilfreich vor Ort.
Die Keynote mit dem Thema Designing for Sustainable GROWTH/Digital Well Being wird dieses Jahr von Purnima Kochikar (Director, Apps and Games Business Development at Google Play) gehalten und dürfte sicherlich interessant werden. Die weitere Auswahl der Talks ist durchaus bunt gemischt, denn alles von Android Studio Optimierungen, über Kotlin und Flutter, bis hin zu Performance, Testing, AI und CI ist vertreten. Neben den technischen Themen gibt es auch Talks zu Themen wie der Work / Life Balance. Eine wirklich angenehme Mischung wie ich finde. Ich plane im nächsten Jahr wieder mit von der Partie zu sein.
Stack Overflow Developer Survey 2019

Stack Overflow ist der de facto Standard wenn es um Programmierfragen geht. Quasi jede Google Suche zu einem Softwareentwicklungsproblem liefert unter den ersten drei Ergebnissen mindestens einen Stack Overflow Beitrag. Entsprechend gibt es eine sehr große Community, mit welcher jährlich eine große Umfrage durchgeführt wird. Diese soll helfen Tendenzen, Entwicklungen und Trends zu erkennen.
In den Related Links habe ich das aktuelle Ergebnis des Developer Survey 2019 hinterlegt. Dieser zeigt z.B. das Python derzeit am schnellsten wächst, JavaScript am populärsten ist und passend dazu jQuery und Node.js in den Bereichen Web Frameworks und allgemeine Frameworks auf den ersten Plätzen liegen. Der Datenbanksektor wird weiterhin von SQL dominiert und nach MySQL und PostgreSQL, folgt erst auf Platz 5 mit MongoDB eine NoSQL Lösung. Linux, Windows und Docker sind die Top drei Plattformen, gefolgt von Android.
Wenn es um die Zufriedenheit geht liegt Rust auf dem ersten Platz bei den Sprachen, React.js bei den Web Frameworks und .NET Core bei den allgemeinen Frameworks. Hier belegt übrigens Flutter den dritten Platz, ohne allzu großen Abstand vom ersten Platz. Bei den Datenbank liegt Redis vorn, bei den Plattformen Linux und bei den Entwicklungstools Visual Studio Code. Vor allem letzteres kann ich sehr gut verstehen, denn abseits von Android und Java bin auch ich sehr gerne mit VS Code unterwegs. Falls euch die komplette Auswertung interessiert schaut doch einfach in die Related Links, ich fand es auf jeden Fall spannend sich das Ganze mal etwas genauer anzusehen.
Flutter - Android Platform Tools Version 29 Probleme

Solltet ihr Flutter Apps für Android entwickeln und selbiges unter Windows tun, wäre es aktuell eine gute Idee nicht auf die Android Platform Tools Version 29 zu aktualisieren. Hier gibt es zurzeit Build Probleme (Error retrieving device properties for ro.product.cpu.abi), welche das Ausliefern der App aufs Smartphone oder den Emulator verhindern. Solltet ihr bereits vom Problem betroffen sein, hilft ein Downgrade auf die Version 28.0.2 open_in_new oder aber ein Wechsel vom Flutter Stable, auf den Flutter Master Branch. Für letzteres navigiert via Konsole in den Flutter Ordner, nicht in euren Projekt Ordner und führt git pull aus. Durch den Befehle flutter channel master wechselt ihr dann auf den Master Branch und mittels flutter doctor könnt ihr prüfen ob alles funktioniert hat. Dadurch dass das Problem auf dem Master Branch bereits behoben ist, hoffe ich das bald ein Fix für die Stable Version erscheint.
Flutter Google I/O Talks

Sollte euch Flutter interessieren, dürften einige Talks der letzten Google I/O durchaus interessant für euch sein. Denn das Cross-Platform Framework für die Entwicklung von Apps wurde im Rahmen von Googles jährlicher Konferenz mit neuen Informationen versorgt. Fünf Videos mit direktem Flutter Content gibt es.
Falls ihr euch für neue Widgets und Funktionen interessiert, schaut euch mal Material Design, Adaptable UIs, and Flutter open_in_new an, denn genau dies ist dort das Thema. Solltet ihr nicht nur für Android entwickeln, was bei Flutter ja durchaus wahrscheinlich ist, dürfte Building for iOS with Flutter open_in_new und Building Flutter Apps for iOS, Android, Chrome OS, and Web open_in_new vermutlich etwas für euch sein.
Solltet ihr euch für tiefergehende Informationen interessieren sind Dart: Productive, Fast, Multi-Platform - Pick 3 open_in_new und Pragmatic State Management in Flutter open_in_new unter Umständen von Relevanz für euch. Ich selbst habe bis dato die beiden zuerst genannten Talks gesehen und finde sie durchaus gut. Allem voran um auf dem Laufenden und im Bereich der Best-Practices am Ball zu bleiben, finde ich derartige Talks sehr hilfreich. Zusätzlich ist ein schneller Überblick bezüglich Änderungen und Anpassungen natürlich auch immer praktisch.
Flutter Fehler - Dart VM: Wrong full snapshot version

Während ich mal wieder an einem meiner Flutter Projekte weiter arbeiten wollte, stolperte ich nach einem flutter upgrade über app Error while initializing the Dart VM: Wrong full snapshot version. Der Fehler trat interessanterweise nicht beim Installieren auf, sondern erst beim initialen Starten der App. Selbige stürzte dann mit dem genannten Fehler ab.
Beheben konnte ich ihn durch das Entfernen des ~/flutter/bin/cache Ordners. Es scheint nämlich so als hätte sich das Flutter Upgrade-Tool verschluckt, was zu diesem Fehler führt. Andere Nutzer mit ähnlichen Problemen berichten davon das git clean –xffd, direkt im Flutter Ordner ausgeführt, das Problem löst. Dabei ist anzumerken das der Root Flutter Ordner selbst ein Git Repository ist. Weitere Informationen findet ihr im dazugehörigen GitHub Issue, welchen ich in den Related Links hinterlegt habe.
Lohnen sich neue Programmiersprachen?

Durch meine Besuche in der Flutter Welt bin ich in der letzten Zeit offener für neue Sprachen, neue Ansätze und Versuche selbige bei meinen aktuellen Projekten einzusetzen. Entsprechend baue ich gerade ein kleines privates Projekt in Flutter und sammle dabei Ideen für eine Tutorial / How To Reihe zu Flutter und der Entwicklung mit Googles Cross-Platform Framework.
Doch nicht nur Dart, was die Basis von Flutter ist, ist aktuell ein Thema für mich. Auch Go ist ein sehr wichtiges Thema für mich, denn ich schreibe gerne Microservices. Entweder für meinen Blog oder für andere Projekte die ich noch plane oder bereits umsetze. Und für diese Art von Projekten ist Go extrem praktisch. Ideen habe ich viele, Zeit leider eher wenig.
Doch durch einige lange Wochenenden hatte ich in den letzten Wochen etwas Zeit, mir vor allem Go mal etwas näher anzusehen und war sehr angetan. Denn vieles von dem was ich plane kann Go, teilweise von Haus aus und ohne zusätzliche externe Abhängigkeiten. Ein Umstand der kein Muss ist, aber durchaus praktisch sein kann. Alles in allem freue ich mich auf jeden Fall die Zeit investiert zu haben, denn insgesamt bin ich glaube ich auf längere Sicht schneller und kann bessere Software schreiben, als ich mit Java umsetzen könnte.
Boehrsi.de Version 8.2 - Dark-Mode und Design Update

Dem häufigeren Besucher ist es vielleicht schon aufgefallen, es gab ein kleines Design Update. Dieses bringt die Version meiner Website auf 8.2 und ist seit gestern Abend aktiv. Geänderte Hauptfarben, ein angepasster Header und Footer, sowie Anpassungen an den einzelnen Cards, welche den Content der Seite beinhalten, stellen die Basis für die Änderungen da. Ergänzt wird das Ganze durch leichte Abrundungen bei allen Bildern, diverse kleine Fehlerbehebungen und Optimierungen der Lesbarkeit.
Ein wirklich neues Feature ist der Dark-Mode (nutzbar durch das Sonne- / Mond-Symbol in der Navigation), welchen ich persönlich sehr mag und z.B. bei diversen Tools und auch Webseiten nutze. Unter anderem Twitter nutze ich nur im Dark-Mode. Das Ganze ist relativ simple implementiert und durch meinen Wechsel von CSS zu SCSS war der Aufwand sogar noch etwas geringer. Gespeichert wird euer Setting im Local Storage open_in_new eures Browsers, wodurch es an selbigen gebunden ist. Es wird nicht weiter an meinen Server weitergeleitet. Lediglich etwas JavaScript wird beim Laden der Seite bei euch lokal ausgeführt und prüft ob ihr den Dark-Mode aktiviert habt. Falls ja ändert es entsprechend eine CSS Klasse und ansonsten passiert einfach nichts. Inspiriert wurde ich zum genannten Vorgehen durch diesen Blogbeitrag auf flaviocopes.com open_in_new (englisch).
Ich hoffe die Änderungen kommen gut an und vielleicht findet der eine oder andere sogar gefallen am Dark-Mode. Über Feedback freue ich mich wie immer sehr. Selbiges darf gerne direkt in die Kommentare geworfen werden.
Android Studio 3.4 erschienen

Der geneigte Android Entwickler sollte dem Update Feature seines Android Studios mal wieder ein wenig Aufmerksamkeit schenken, denn Android Studio 3.4 (basierend auf Intellij 2018.3.4) wurde veröffentlicht. Dieses größere Update ist ein Milestone Release und war knapp sechs Monate lang in der Entwicklung. Es ist nach Android Studio 3.3 der zweite Release der Project Marble Reihe, welche vor allem auf grundlegende Optimierungen, Performance Verbesserungen und die Stabilität eingehen soll. Aus diesem Grund gibt es im Feature Bereich auch eher kleinere Änderungen, da man sich auf die tieferen Ebenen fokussierte. In Zahlen bedeutet dies mehr als 300 behobene Bugs und Stabilitätsverbesserungen erhalten mit Android Studio 3.4 Einzug in die IDE.
Im Bereich der Features wurde der Resource Manager eingeführt. Er bietet euch eine Ansicht für Layouts, Drawables, Farben und diverse weitere Dinge und soll die Verwaltung der von euch genutzten Ressourcen vereinfachen. Die Import Intentions sollen euch helfen ohne mehr Aufwand auf moderne und abwärtskompatible Kernfunktionen von Android zuzugreifen. Aus diesem Grund erhaltet ihr nun direkt Vorschläge um Jetpack and Firebase Libraries einzubinden. Dabei wird dann direkt die Gradle Abhängigkeit und der jeweilige Import in der Klasse erzeugt. Im Layout Editor wurden die Einstellungen überarbeitet und diverse kleinere Optimierungen vorgenommen.

