Geschrieben von Patrick Fuchs
am 5. Januar 2024
Die Suche nach dem idealen Self-Hosted Newsletter-Tool kann herausfordernd sein.
Es gibt inzwischen auch sehr viele Produkte mit (im grossen und ganzen) ähnlichem Funktionsumfang.
In diesem Beitrag werden drei populäre Lösungen verglichen:
-
Listmonk, ein leistungsstarkes und schnelles Tool, bekannt für seine hohe Skalierbarkeit und einfache Bedienung,
-
Keila, welches in Deutschland entwickelt wird und sich durch seine Benutzerfreundlichkeit und Flexibilität auszeichnet.
-
Mautic, eine umfassende und flexible Lösung, die eine breite Palette an Marketing-Automatisierungsfunktionen bietet.
Jedes dieser Tools bietet unterschiedliche Funktionen und Vorteile, aber welches passt am besten zu den Anforderungen
moderner Systeme?
Geschrieben von Thomas Kruse
am 7. Juni 2021
Jib CLI als Build Container
Bereits in dem Beitrag Jib CLI Docker Images wurde das Potential von Jib CLI vorgestellt.
Als nächster Schritt soll Jib CLI auch in Build Pipelines eingesetzt werden, um auch hier ohne Docker Daemon Container Images bauen zu können.
Geschrieben von Thomas Kruse
am 2. April 2021
Jib CLI - Docker Images ohne Dämon bauen
Aus dem Java Umfeld stammt das Werkzeug Jib, mit dem sich Anwedungen in optimierte Docker / OCI Container Images verwandeln lassen.
Typischerweise wird Jib zusammen mit dem Buildsystem der Anwendung, z.B. maven oder gradle, verwendet.
Doch nun hat Google Jib auch als Kommandozeilenwerkzeug (CLI) in einer ersten Version bereitgestellt.
Damit lässt sich Jib auch für andere Arten von Containern einsetzen.
Geschrieben von Thomas Kruse
am 9. März 2021
In vielen Kundenprojekten ist der Wunsch zu beobachten, von klassisch betriebenen Anwendungen sofort in die Cloud oder zumindest nach Kubernetes zu migrieren.
Vielleicht schwingt dabei der Wunsch mit, Zeit zu sparen, indem Zwischenschritte ausgelassen werden.
Oder man ist sich sehr wohl bewußt, dass man in Gewissen Bereichen versäumt hat, Know-How aufzubauen und in Modernisierung zu investieren.
Wir empfehlen regelmäßig zumindest kleine Zwischenschritte einzuplanen, um Erfahrungen mit der Erstellung aber auch dem Design von Anwendungen für Container- und Cloudumgebungen zu sammeln.
Das gilt um so mehr, wenn das Unternehmen sich nicht ganze Teams, die sich nur um Infrastruktur und Support kümmern können, leisten möchte.
Eine gute Möglichkeit zum Start stellt der Einsatz von Docker Containern ohne automatischen Orchestrator wie Kubernetes, Mesos oder Docker-Swarm dar.
Dabei wählt man typischerweise eine Anwendung aus, die nicht absolut essentiell ist, und optimalerweise bereits von einem Team mit modernen Technologien und vor allem Mindset entwickelt und betreut wird.
Mit verhältnismäßig wenig Infrastruktur können dann auch bereits Patterns aus der Cloud-Welt verprobt werden und entsprechende Erfahrungen mit den notwendigen Umsystemen und Prozessen gewonnen werden.
Wichtig ist dabei, dass man den Schwenk auf fertige Lösungen vornimmt, und nicht mit eigenen Mitteln Dinge nachbaut und wartet, die ein Orchestrator mitliefert.
Hat man sich für traefik als Reverseproxy und Loadbalancer entschieden, um Container verfügbar zu machen, kann man bereits von vielen Vorzügen profitieren.
Ein Kunde wünschte sich Canary-Deployments auszuprobieren, und das allein mit traefik.
Wie so ein Canary oder A/B Deployment mit traefik umgesetzt werden kann, zeigt der folgende Beitrag.
Geschrieben von Thomas Kruse
am 4. September 2020
Dank Spring Boot ist die Erstellung von Java basierten Anwendungen und Microservices extrem leicht geworden:
Mit Spring Initializr ( https://start.spring.io ) ist eine API Anwendung schnell erstellt.
Sinnvolle Standardeinstellungen und eine gute Entwicklerproduktivität machen Spring Boot auch im weiteren Verlauf eines Softwareprojekts zu einer beliebten Plattform.
Doch was ist, wenn man von den vorgegebenen Pfaden abweichen will?
Spring Boot zeigt sich hier flexibel:
Am Beispiel von YAML als Datenformat für unsere Anwendung schauen wir uns das einmal genauer an.
Geschrieben von Thomas Kruse
am 26. Mai 2020
Regelmäßig kommt in unseren Docker Schulungen Verwunderung auf, wenn wir Beispiele zum Einsatz von Containern im Entwicklungsprozess aufzeigen.
Denn Container bzw. Docker bringt gerade da auch immense Vorteile:
Neben einer möglichen Parität zwischen Produktionsumgebung und Entwicklersystem ist es gerade die sehr einfache Möglichkeit, Umsysteme als Container bereitzustellen.
Das kann für einen Frontendentwickler das Backend sein, für einen Backendentwickler kann es die richtige Datenbank, Message-Queue oder ein anderer (Micro-)Service sein.
Verfügen aktuelle IDEs in der Regel über Docker-Integration oder wird docker-compose
eingesetzt, stellt sich die Frage, wie in CI-Umgebungen Container für Integrationstests am besten eingesetzt werden können.
Hier hat das Projekt Testcontainers eine Lösung ins Rennen geschickt:
Durch eine gelungene Abstraktion lassen sich Container sehr leicht in Tests verwalten und zusammen mit den Tests orchestrieren.
Container-Typen und Versionen werden gemeinsam mit dem Testcode versioniert, was die Wartung und Refactoring erleichtert.
Auch ein häufiges Problem, nämlich auf den erfolgreichen Start eines Containers bzw. des damit bereitgestellten Dienstes zu warten, wird gut gelöst.
Testcontainers gibt es für verschiedene Programmiersprachen bzw. Plattformen.
Wir schauen uns im folgenden einmal die Umsetzung für Java speziell im Kontext von JUnit 5 genauer an.
Geschrieben von Thomas Kruse
am 26. Januar 2019
In diesem Kubernetes Beitrag geht es darum, eine CI Pipeline auf Kubernetes Infrastruktur aufzusetzen.
Wie bereits in den vorherigen Kubernetes Beiträgen soll auch hier ein Augenmerk auf dem Support der ARM Plattform gelegt werden.
Leider trotz der zunehmenden Verbreitung von ARM im Serverumfeld noch immer nicht selbstverständlich, dass Multi-Arch Images bereitgestellt werden.
Geschrieben von Thomas Kruse
am 4. Januar 2019
Lange Zeit war Spring zusammen mit Spring Boot der Defacto-Standard, wenn es um die Entwicklung von Microservices bei hoher Entwicklerproduktivität ging.
Nun schicken die Entwickler von Grails ein neues Framework ins Rennen: Micronaut.
Das Versprechen von Micronaut:
Aus den Ansätzen von Grails, Spring Boot und Spring zu lernen und ein Framework bereitzustellen, das den Anforderungen von modernen Cloud- und Microserviceumgebungen gewachsen ist.
Aus technischer Sicht sind einige Punkte, wie minimierter Einsatz von Java-Reflection und Proxies, spannend, die für die Verwendung der Substrate VM und Graal relevant sind.
Werfen wir einen Blick auf Micronaut - eine Einführung.
Geschrieben von Stefan Reuter
am 18. August 2016
Die diesjährige Devoxx findet vom 7. bis 11. November in Antwerpen, Belgien, statt.
Die weltweit größte herstellerunabhängige Java-Konferenz wird seit 2001 von der belgischen Java User Group organisiert und ist mit konstant mehr als 3000 Teilnehmern eine wichtige Größe in der Entwicklercommunity.
Die trion wird in diesem Jahr von Stefan Reuter und Thomas Kruse mit dem Talk "Authentication and Authorization in a Cloud and Microservice World" vertreten sein.