<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog von Tim Rutte</title><description>Artikel zu AWS, Backend-Architektur und KI-Integration. Aus Projekten, nicht aus Folien.</description><link>https://timrutte.de/</link><language>de-DE</language><atom:link href="https://timrutte.de/rss.xml" rel="self" type="application/rss+xml"/><item><title>Acht Schritte statt Prompt: So arbeite ich mit Coding Agents</title><link>https://timrutte.de/blog/coding-agents-acht-schritte/</link><guid isPermaLink="true">https://timrutte.de/blog/coding-agents-acht-schritte/</guid><description>Der Agent arbeitet in einem von acht Schritten. Wie Spezifikation, Architekturregeln, CI und Review dafür sorgen, dass aus Tempo Software wird.</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Ein Go-Projekt übernehmen: die erste Woche</title><link>https://timrutte.de/blog/go-projekt-uebernehmen/</link><guid isPermaLink="true">https://timrutte.de/blog/go-projekt-uebernehmen/</guid><description>Go-Code verrät fast alles über sich, nur nicht, ob er läuft. Was ich in der ersten Woche prüfe: Betrieb, Build, erreichbare Lücken und Last.</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Ist Ihr Code zu alt für Coding-Agenten?</title><link>https://timrutte.de/blog/code-zu-alt-fuer-coding-agenten/</link><guid isPermaLink="true">https://timrutte.de/blog/code-zu-alt-fuer-coding-agenten/</guid><description>Nicht das Alter einer Codebasis entscheidet, ob ein Coding-Agent darin sicher arbeitet, sondern ob ein Befehl Nein sagen kann. Vier Fragen, die das klären.</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>PHP 8.2 endet am 31. Dezember: was jetzt zu tun ist</title><link>https://timrutte.de/blog/php-8-2-end-of-life/</link><guid isPermaLink="true">https://timrutte.de/blog/php-8-2-end-of-life/</guid><description>PHP 8.2 bekommt ab Januar keine Sicherheitsupdates mehr. Wen das trifft, welche Zielversion sich lohnt und was der Sprung von 8.2 kostet.</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Terraform oder AWS CDK? Wie ich Infrastructure as Code auswähle</title><link>https://timrutte.de/blog/terraform-oder-aws-cdk/</link><guid isPermaLink="true">https://timrutte.de/blog/terraform-oder-aws-cdk/</guid><description>Terraform oder AWS CDK? Warum ich AWS-Infrastruktur meist mit Terraform beschreibe und wann CDK seinen Programmierlayer wirklich verdient.</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>API Gateway oder Application Load Balancer? Was braucht eine normale API auf AWS?</title><link>https://timrutte.de/blog/api-gateway-oder-alb/</link><guid isPermaLink="true">https://timrutte.de/blog/api-gateway-oder-alb/</guid><description>API Gateway oder Application Load Balancer auf AWS? Wann ein ALB reicht, und wann API Gateway seine zusätzliche Schicht wirklich rechtfertigt.</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>ECS Fargate oder Kubernetes: Was braucht eine normale Anwendung wirklich?</title><link>https://timrutte.de/blog/ecs-fargate-oder-kubernetes/</link><guid isPermaLink="true">https://timrutte.de/blog/ecs-fargate-oder-kubernetes/</guid><description>ECS Fargate oder Kubernetes auf AWS? Warum ich normale Anwendungen mit Fargate starte, und ab wann Kubernetes seinen Aufwand zurückzahlt.</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>REST oder gRPC für Backend-Services?</title><link>https://timrutte.de/blog/rest-oder-grpc/</link><guid isPermaLink="true">https://timrutte.de/blog/rest-oder-grpc/</guid><description>REST oder gRPC? Warum ich öffentliche APIs anders entscheide als interne Service-Kommunikation, und welche Kriterien dabei wirklich zählen.</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Synchron oder event-driven? Wann ich Backend-Services wirklich entkopple</title><link>https://timrutte.de/blog/synchron-oder-event-driven/</link><guid isPermaLink="true">https://timrutte.de/blog/synchron-oder-event-driven/</guid><description>Synchron oder event-driven? Warum ich Backend-Services nicht grundsätzlich entkopple, und wann Aufruf, Queue und Event jeweils passen.</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Strangler Fig Pattern in der Praxis</title><link>https://timrutte.de/blog/strangler-fig-pattern-praxis/</link><guid isPermaLink="true">https://timrutte.de/blog/strangler-fig-pattern-praxis/</guid><description>Die Weiche ist ein Nachmittag, die Daten sind das Vorhaben: Schnitt nach Zuständigkeit, Schattenbetrieb, Umschalten in Stufen, und wo es reißt.</description><pubDate>Sun, 13 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Vom Monolithen zu Microservices</title><link>https://timrutte.de/blog/monolith-zu-microservices/</link><guid isPermaLink="true">https://timrutte.de/blog/monolith-zu-microservices/</guid><description>Drei der vier Gründe für die Teilung sind Probleme der Auslieferung. Was ein Dienst kostet, was ein Modul schon kann, und wann ein Dienst wirklich einer ist.</description><pubDate>Sun, 13 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Muss das Altsystem nach Kubernetes?</title><link>https://timrutte.de/blog/altsystem-auf-kubernetes/</link><guid isPermaLink="true">https://timrutte.de/blog/altsystem-auf-kubernetes/</guid><description>Die Vorarbeit kostet Wochen, der Plattformwechsel Tage. Drei Bedingungen, unter denen sich ein Cluster rechnet, und was dazwischen liegt.</description><pubDate>Sun, 13 Sep 2026 12:00:00 GMT</pubDate></item><item><title>NIS2 und der Altbestand</title><link>https://timrutte.de/blog/nis2-altsysteme/</link><guid isPermaLink="true">https://timrutte.de/blog/nis2-altsysteme/</guid><description>Vier der zehn Bereiche sind für ein gewachsenes System eine Frage der Bauart, nicht der Absicht. Die Befunde, der Nachweis und die richtige Reihenfolge.</description><pubDate>Sun, 13 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Quellcode und Zugänge zurückholen</title><link>https://timrutte.de/blog/quellcode-vom-dienstleister/</link><guid isPermaLink="true">https://timrutte.de/blog/quellcode-vom-dienstleister/</guid><description>Ein Archiv ist keine Software. Was auf die Liste gehört, in welcher Reihenfolge man es anfordert, und was am ersten Tag danach zu tun ist.</description><pubDate>Sun, 13 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Vierundvierzig Artikel, fünf Sätze, die geblieben sind</title><link>https://timrutte.de/blog/legacy-modernisierung-fuenf-saetze/</link><guid isPermaLink="true">https://timrutte.de/blog/legacy-modernisierung-fuenf-saetze/</guid><description>Fünf Sätze, die sich durch vierundvierzig Artikel gezogen haben, zwei Einschätzungen, die sich verschoben haben, und vier Einstiege nach Lage.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Rector im Altprojekt</title><link>https://timrutte.de/blog/rector-im-altprojekt/</link><guid isPermaLink="true">https://timrutte.de/blog/rector-im-altprojekt/</guid><description>Ein Regelset, ein Verzeichnis, ein Antrag: warum der erste Versuch scheitert, welche Sets Mechanik und welche Meinung sind, und wie man sie prüft.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Der Übergabetag</title><link>https://timrutte.de/blog/softwareprojekt-uebergeben/</link><guid isPermaLink="true">https://timrutte.de/blog/softwareprojekt-uebergeben/</guid><description>Übergabe ist ein Zustand, kein Termin. Der eine Test, der etwas aussagt, die Zugangsinventur davor und die Frist statt der offenen Tür.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Blue/Green und Canary ohne Kubernetes</title><link>https://timrutte.de/blog/blue-green-canary-ohne-kubernetes/</link><guid isPermaLink="true">https://timrutte.de/blog/blue-green-canary-ohne-kubernetes/</guid><description>Zwei Maschinen und eine Weiche reichen. Die Bedingung liegt in der Datenbank, nicht im Werkzeug, und ohne Abbruchregel ist Canary nur langsamer.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Mandantenfähigkeit nachrüsten</title><link>https://timrutte.de/blog/mandantenfaehigkeit-nachruesten/</link><guid isPermaLink="true">https://timrutte.de/blog/mandantenfaehigkeit-nachruesten/</guid><description>Drei Modelle und wofür sie passen, der Filter eine Ebene tiefer, der Test, der Lecks findet, und die Hälfte des Aufwands, die nicht in der Datenbank liegt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Was eine Modernisierung kostet</title><link>https://timrutte.de/blog/was-kostet-eine-legacy-modernisierung/</link><guid isPermaLink="true">https://timrutte.de/blog/was-kostet-eine-legacy-modernisierung/</guid><description>Nicht die Codemenge treibt den Preis, sondern fünf Größen, die in einer Woche feststellbar sind. Dazu die Posten, die in jeder Rechnung fehlen.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Funktionen entfernen, die niemand mehr nutzt</title><link>https://timrutte.de/blog/ungenutzte-funktionen-entfernen/</link><guid isPermaLink="true">https://timrutte.de/blog/ungenutzte-funktionen-entfernen/</guid><description>Messen statt raten, die Wartezeit nach dem Takt der Sache statt des Vorhabens, und die Liste dessen, was mitgeht. Halb gelöscht ist schlimmer als gar nicht.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Ein EOL-Kalender für den ganzen Stack</title><link>https://timrutte.de/blog/eol-kalender-fuer-den-stack/</link><guid isPermaLink="true">https://timrutte.de/blog/eol-kalender-fuer-den-stack/</guid><description>Was alles ein Ablaufdatum hat, wie die Liste an einem Tag entsteht, warum nur Termin minus Vorlauf zählt, und der Satz, der das Budget bringt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Der verteilte Monolith</title><link>https://timrutte.de/blog/verteilter-monolith/</link><guid isPermaLink="true">https://timrutte.de/blog/verteilter-monolith/</guid><description>Fünf Sätze zur Diagnose, warum die Schnitte entlang der Substantive liegen, was ohne Umbau sofort hilft, und warum Zusammenlegen kein Rückschritt ist.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>IAM aufräumen in einem gewachsenen AWS-Konto</title><link>https://timrutte.de/blog/iam-aufraeumen-aws-account/</link><guid isPermaLink="true">https://timrutte.de/blog/iam-aufraeumen-aws-account/</guid><description>Erst sehen, dann die Schlüssel, dann die Rechte: Zugangsbericht und Nutzungshistorie, OIDC statt Schlüsselpaar, eine Grenze statt zweihundert Regeln.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Testdaten aus der Produktion</title><link>https://timrutte.de/blog/testdaten-aus-produktion/</link><guid isPermaLink="true">https://timrutte.de/blog/testdaten-aus-produktion/</guid><description>Nicht der Abzug, sondern der geformte Ausschnitt: Anker wählen, stille Verweise finden, deterministisch maskieren, die Ausgänge dichtmachen.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Coding-Agenten im Altsystem</title><link>https://timrutte.de/blog/coding-agenten-im-altsystem/</link><guid isPermaLink="true">https://timrutte.de/blog/coding-agenten-im-altsystem/</guid><description>Wofür ein Agent im Bestand taugt, woran er vorhersagbar scheitert, und die Vorbedingung, ohne die er nicht das Tempo vervielfacht, sondern das Risiko.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>OpenTelemetry in PHP und Go einführen</title><link>https://timrutte.de/blog/opentelemetry-php-go-einfuehren/</link><guid isPermaLink="true">https://timrutte.de/blog/opentelemetry-php-go-einfuehren/</guid><description>Traces zuerst, ein Pfad statt aller: die PHP-Eigenheit beim Ausliefern, der Kontext in Go, die Naht über die Warteschlange und was die Rechnung treibt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Der Cache als Schuld</title><link>https://timrutte.de/blog/cache-invalidierung-altsystem/</link><guid isPermaLink="true">https://timrutte.de/blog/cache-invalidierung-altsystem/</guid><description>Drei Arten von Zwischenspeicher, warum Ablaufzeit meist schlägt, was bei zwischengespeicherten Berechtigungen schiefgeht und wie die Schuld zurückkommt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Server-gerenderte Oberflächen modernisieren, ohne SPA</title><link>https://timrutte.de/blog/frontend-modernisieren-ohne-spa/</link><guid isPermaLink="true">https://timrutte.de/blog/frontend-modernisieren-ohne-spa/</guid><description>Teilaktualisierung statt Rahmenwechsel: die drei Probleme, die Nutzer wirklich stören, zwanzig Zeilen JavaScript und die Grenze dieses Wegs.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Zwölf Wochen Modernisierung: ein realistischer Plan</title><link>https://timrutte.de/blog/modernisierung-in-zwoelf-wochen/</link><guid isPermaLink="true">https://timrutte.de/blog/modernisierung-in-zwoelf-wochen/</guid><description>Ein Zuschnitt, der in ein Quartal passt: sechs Abschnitte, ein Ergebnis nach jedem, eine Entscheidung am Ende und die Stelle, an der jeder Plan reißt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Backups, die niemand je wiederhergestellt hat</title><link>https://timrutte.de/blog/backup-wiederherstellung-testen/</link><guid isPermaLink="true">https://timrutte.de/blog/backup-wiederherstellung-testen/</guid><description>Drei Arten, wie Sicherungen still versagen, was eine Probe wirklich misst, wie sie abläuft und welcher Rhythmus sich durchhalten lässt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Konfiguration und Secrets für Go-Services</title><link>https://timrutte.de/blog/konfiguration-und-secrets-in-go/</link><guid isPermaLink="true">https://timrutte.de/blog/konfiguration-und-secrets-in-go/</guid><description>Drei Ebenen mit drei Herkünften, ein Start, der bei fehlenden Angaben scheitert, Geheimnisse ohne Umgebungsvariablen und ein Wechsel ohne Neustart.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Zehn Lücken, die in jedem alten PHP-System stecken</title><link>https://timrutte.de/blog/php-sicherheitsluecken-altcode/</link><guid isPermaLink="true">https://timrutte.de/blog/php-sicherheitsluecken-altcode/</guid><description>Die zehn Lücken, die ich in gewachsenen PHP-Systemen am häufigsten finde, der Befehl, der jede findet, und eine Reihenfolge nach Risiko statt nach Aufwand.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Eine API vor den Monolithen setzen</title><link>https://timrutte.de/blog/api-vor-den-monolithen/</link><guid isPermaLink="true">https://timrutte.de/blog/api-vor-den-monolithen/</guid><description>Warum die Schnittstelle vor dem neuen Frontend kommt, wo sie geschnitten wird, wie die Anmeldung gelöst wird und was die Schicht nicht tun darf.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>MySQL 5.7 auf 8.0: was beim Umzug bricht</title><link>https://timrutte.de/blog/mysql-5-7-auf-8-0-migration/</link><guid isPermaLink="true">https://timrutte.de/blog/mysql-5-7-auf-8-0-migration/</guid><description>Vier Klassen von Brüchen, von denen zwei sich nicht melden, wie Sie sie vorher finden, und was der verwaltete Dienst zusätzlich anders macht.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>PHPStan Stufe für Stufe in Altcode einführen</title><link>https://timrutte.de/blog/phpstan-in-altcode-einfuehren/</link><guid isPermaLink="true">https://timrutte.de/blog/phpstan-in-altcode-einfuehren/</guid><description>Aus achttausend Meldungen wird an einem Tag eine Null: die Baseline, was auf welcher Stufe gefunden wird, und wo weitere Stufen nichts mehr bringen.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Modernisieren mit externem Freelancer</title><link>https://timrutte.de/blog/modernisieren-mit-externem-freelancer/</link><guid isPermaLink="true">https://timrutte.de/blog/modernisieren-mit-externem-freelancer/</guid><description>Warum das Team nach dem Projekt oft nichts ändert, vier prüfbare Kriterien für Übergabefähigkeit und die Rollenverteilung, die sich verschiebt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Ein PHP-Monolith auf ECS Fargate</title><link>https://timrutte.de/blog/php-monolith-auf-ecs-fargate/</link><guid isPermaLink="true">https://timrutte.de/blog/php-monolith-auf-ecs-fargate/</guid><description>Container ohne Cluster-Verwaltung: was in das Image gehört, wie Konfiguration und Geheimnisse getrennt werden, und was der Gesundheitscheck prüfen muss.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Von Cronjobs zu Queues</title><link>https://timrutte.de/blog/cronjobs-durch-queue-ersetzen/</link><guid isPermaLink="true">https://timrutte.de/blog/cronjobs-durch-queue-ersetzen/</guid><description>Wann ein Zeitplan nicht mehr reicht, wie aus dem Job ein Auftrag mit Zustand wird, und warum die Auftragstabelle oft reicht statt einer eigenen Queue.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Wartungsmodus: ein Altsystem sicher weiterbetreiben</title><link>https://timrutte.de/blog/altsystem-im-wartungsmodus/</link><guid isPermaLink="true">https://timrutte.de/blog/altsystem-im-wartungsmodus/</guid><description>Nicht modernisieren heißt nicht nichts tun. Fünf Dinge, die weiterlaufen, drei, die aufhören, und die zwei Angaben, ohne die es Vernachlässigung ist.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Go lernen als PHP-Entwickler: fünf Denkfehler</title><link>https://timrutte.de/blog/go-lernen-als-php-entwickler/</link><guid isPermaLink="true">https://timrutte.de/blog/go-lernen-als-php-entwickler/</guid><description>Fünf Stellen, an denen Go anders gemeint ist, als es aussieht: Fehler, Nebenläufigkeit, Pakete, Interfaces und das fehlende Framework.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Shopware-5-Plugins bei der Migration auf 6</title><link>https://timrutte.de/blog/shopware-5-plugins-migration/</link><guid isPermaLink="true">https://timrutte.de/blog/shopware-5-plugins-migration/</guid><description>Nicht die Daten sind der Kostentreiber, sondern die Plugins. Drei Listen statt einer, vier Kategorien mit vier Antworten und die Reihenfolge, die sich lohnt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Dual-Write und Backfill: wo Umstellungen wirklich scheitern</title><link>https://timrutte.de/blog/dual-write-und-backfill/</link><guid isPermaLink="true">https://timrutte.de/blog/dual-write-und-backfill/</guid><description>Die fünf Phasen einer Datenumstellung im laufenden Betrieb, der Code für die heikelste davon, und die vier Stellen, an denen es in der Praxis reißt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Wissen in einer Person ist ein Architekturproblem</title><link>https://timrutte.de/blog/wissensmonopol-aufloesen/</link><guid isPermaLink="true">https://timrutte.de/blog/wissensmonopol-aufloesen/</guid><description>Wissen sammelt sich nicht, weil jemand es hortet, sondern weil das System es erzwingt. Fünf Eigenschaften und drei Maßnahmen, die nichts bringen.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Terraform-Drift: wenn Konsole und Code auseinanderlaufen</title><link>https://timrutte.de/blog/terraform-drift-erkennen/</link><guid isPermaLink="true">https://timrutte.de/blog/terraform-drift-erkennen/</guid><description>Drift ist in gewachsenen Umgebungen kein Ausnahmefall. Wie Sie ihn sichtbar machen, welche drei Antworten es gibt und wo Codifizierung aufhört.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Laravel-Upgrades: wo die Fallen anders liegen</title><link>https://timrutte.de/blog/laravel-upgrade-fallen/</link><guid isPermaLink="true">https://timrutte.de/blog/laravel-upgrade-fallen/</guid><description>Warum die Werkzeuge aus dem Symfony-Upgrade hier nicht greifen, und vier Stellen, an denen Laravel-Upgrades ihre eigenen Fallen haben.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Einen Anti-Corruption Layer zwischen Go und PHP bauen</title><link>https://timrutte.de/blog/anti-corruption-layer-bauen/</link><guid isPermaLink="true">https://timrutte.de/blog/anti-corruption-layer-bauen/</guid><description>Damit das alte Datenmodell nicht in den neuen Dienst wandert: wo die Schicht liegt, was sie übersetzt, was sie nebenbei erledigt und wann sie verschwindet.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Drei Kennzahlen, bevor Sie eine Zeile refaktorieren</title><link>https://timrutte.de/blog/baseline-vor-refactoring/</link><guid isPermaLink="true">https://timrutte.de/blog/baseline-vor-refactoring/</guid><description>Welche drei Kennzahlen vor dem ersten Umbau stehen müssen, wie Sie sie ohne Spezialwerkzeug bekommen und warum der Durchschnitt die falsche Zahl ist.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Composer als Archäologie</title><link>https://timrutte.de/blog/composer-abhaengigkeiten-rekonstruieren/</link><guid isPermaLink="true">https://timrutte.de/blog/composer-abhaengigkeiten-rekonstruieren/</guid><description>Kein Lockfile, vendor im Repository, geforkte Pakete: wie Sie den Abhängigkeitsbaum eines alten PHP-Projekts rekonstruieren, bevor Sie ihn anheben.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Sessions, Uploads, Konfiguration: drei Ketten an den Server</title><link>https://timrutte.de/blog/php-anwendung-stateless-machen/</link><guid isPermaLink="true">https://timrutte.de/blog/php-anwendung-stateless-machen/</guid><description>Was eine Anwendung daran hindert, auf mehr als einer Maschine zu laufen: Sitzungen, hochgeladene Dateien, Zustand im Prozess. Und wie Sie das lösen.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Feature Flags in einem Monolithen ohne Framework-Support</title><link>https://timrutte.de/blog/feature-flags-im-monolithen/</link><guid isPermaLink="true">https://timrutte.de/blog/feature-flags-im-monolithen/</guid><description>Eine Umsetzung, die an einem Tag steht: Tabelle, Schalterklasse, stabile Zuteilung. Wo der Schalter sitzt und wie er wieder verschwindet.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Lift-and-Shift oder Replatforming</title><link>https://timrutte.de/blog/lift-and-shift-oder-replatforming/</link><guid isPermaLink="true">https://timrutte.de/blog/lift-and-shift-oder-replatforming/</guid><description>Umzug und Umbau sind zwei Vorhaben. Was sich auch beim reinen Umzug ändert, wann Replatforming sich rechnet und warum die erste Rechnung steigt.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Welchen Service Sie zuerst aus dem Monolithen lösen</title><link>https://timrutte.de/blog/ersten-service-aus-monolith-loesen/</link><guid isPermaLink="true">https://timrutte.de/blog/ersten-service-aus-monolith-loesen/</guid><description>Der erste Schnitt entscheidet, ob es einen zweiten gibt. Vier Kriterien, drei Kandidaten, die fast immer passen, und drei Stellen, die man nie zuerst anfasst.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Der Business Case für eine Modernisierung</title><link>https://timrutte.de/blog/business-case-modernisierung/</link><guid isPermaLink="true">https://timrutte.de/blog/business-case-modernisierung/</guid><description>Vier Kostenarten, die sich beziffern lassen, die Durchlaufzeit als Messung statt Schätzung, eine Risikorechnung mit Erwartungswert und die eine Folie.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Symfony-Deprecations abarbeiten, ohne im Log zu ertrinken</title><link>https://timrutte.de/blog/symfony-deprecations-abarbeiten/</link><guid isPermaLink="true">https://timrutte.de/blog/symfony-deprecations-abarbeiten/</guid><description>Aus zwölftausend Meldungen eine Reihenfolge machen: drei Sorten Deprecation, der Weg von unten nach oben, und die drei Umbauten, die sich nie melden.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Das eigentliche Legacy ist Ihr Datenbankschema</title><link>https://timrutte.de/blog/legacy-datenbankschema/</link><guid isPermaLink="true">https://timrutte.de/blog/legacy-datenbankschema/</guid><description>Das Schema überlebt jede Modernisierung des Codes. Die vier Altlasten, die fast immer da sind, was Sie vorher messen und in welcher Reihenfolge Sie ändern.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Wenn das Deployment noch per FTP läuft</title><link>https://timrutte.de/blog/deployment-per-ftp-abloesen/</link><guid isPermaLink="true">https://timrutte.de/blog/deployment-per-ftp-abloesen/</guid><description>Von „jemand lädt hoch&quot; zu einem Rollout mit Rückweg: Artefakt, atomarer Umschaltmoment, Rollback und wo die Datenbank die Grenze zieht.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Legacy-Code testen, wenn es keine Tests gibt</title><link>https://timrutte.de/blog/legacy-code-testen-ohne-tests/</link><guid isPermaLink="true">https://timrutte.de/blog/legacy-code-testen-ohne-tests/</guid><description>Wie Sie das Verhalten eines Altsystems festhalten, bevor Sie es ändern: Characterization Tests, Golden Master, Nahtstellen und wann Sie aufhören.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Technische Due Diligence: ein Altsystem in fünf Tagen prüfen</title><link>https://timrutte.de/blog/technische-due-diligence-altsystem/</link><guid isPermaLink="true">https://timrutte.de/blog/technische-due-diligence-altsystem/</guid><description>Wie ich ein Altsystem in fünf Tagen prüfe, bevor jemand es kauft oder übernimmt: die Reihenfolge, die Befehle und was am Ende im Bericht steht.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Wann Modernisieren die falsche Antwort ist</title><link>https://timrutte.de/blog/wann-modernisieren-die-falsche-antwort-ist/</link><guid isPermaLink="true">https://timrutte.de/blog/wann-modernisieren-die-falsche-antwort-ist/</guid><description>Modernisieren ist nicht immer die richtige Antwort. Wann Einfrieren, Standardsoftware oder Abschalten besser sind, und woran Sie das erkennen.</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Ihr Entwickler ist weg. Die erste Woche entscheidet, was es kostet.</title><link>https://timrutte.de/blog/entwickler-weg-erste-woche/</link><guid isPermaLink="true">https://timrutte.de/blog/entwickler-weg-erste-woche/</guid><description>Wenn der Entwickler eines laufenden Systems weg ist, entscheidet die erste Woche über die Kosten. Was vor dem Code zu sichern ist, in der Reihenfolge.</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>E-Rechnungspflicht 2027: Entscheidend ist Ihr Umsatz von 2026</title><link>https://timrutte.de/blog/e-rechnungspflicht-2027/</link><guid isPermaLink="true">https://timrutte.de/blog/e-rechnungspflicht-2027/</guid><description>Ob Sie ab Januar 2027 E-Rechnungen ausstellen müssen, entscheidet Ihr Umsatz 2026. Was zählt, was ausgenommen ist, und warum Empfangen nicht reicht.</description><pubDate>Wed, 09 Sep 2026 12:00:00 GMT</pubDate></item><item><title>Ein Agent ist so gut wie sein Kontext</title><link>https://timrutte.de/blog/second-brain-fuer-ki-agenten/</link><guid isPermaLink="true">https://timrutte.de/blog/second-brain-fuer-ki-agenten/</guid><description>Wie ich mein Wissen in ein Git-Repository gelegt habe, damit Agenten damit arbeiten. Was nach neun Tagen hält, was nicht, und was das ein Team lehrt.</description><pubDate>Wed, 09 Sep 2026 12:00:00 GMT</pubDate></item><item><title>PHP 7.4 auf PHP 8.4: Was bei diesem Upgrade wirklich auf Sie zukommt</title><link>https://timrutte.de/blog/php-7-4-auf-php-8-4/</link><guid isPermaLink="true">https://timrutte.de/blog/php-7-4-auf-php-8-4/</guid><description>PHP 7.4 ist seit Ende 2022 ohne Sicherheitsupdates. Was der Sprung auf 8.4 bedeutet: harte Brüche, stille Verhaltensänderungen, echte Aufwandstreiber.</description><pubDate>Sat, 29 Aug 2026 12:00:00 GMT</pubDate></item><item><title>Zend Framework 1 läuft noch. Der Support endete 2016.</title><link>https://timrutte.de/blog/zend-framework-1-support-ende/</link><guid isPermaLink="true">https://timrutte.de/blog/zend-framework-1-support-ende/</guid><description>Zend Framework 1 ist seit 2016 ohne Support und läuft trotzdem in Produktion. Was das bedeutet, was Forks leisten und welche drei Wege hinausführen.</description><pubDate>Mon, 24 Aug 2026 12:00:00 GMT</pubDate></item><item><title>Ein Jahr FinOps auf AWS: von 15.000 auf 2.500 Euro im Monat</title><link>https://timrutte.de/blog/aws-kosten-senken-praxisbericht/</link><guid isPermaLink="true">https://timrutte.de/blog/aws-kosten-senken-praxisbericht/</guid><description>Zwölf Monate FinOps über zwei AWS-Accounts: wo die großen Beträge lagen und warum Commitments zuletzt kommen.</description><pubDate>Wed, 19 Aug 2026 12:00:00 GMT</pubDate></item><item><title>Ein KI-System mit Budget null: sechs Entscheidungen, drei Fehler</title><link>https://timrutte.de/blog/ki-in-produktion-ohne-budget/</link><guid isPermaLink="true">https://timrutte.de/blog/ki-in-produktion-ohne-budget/</guid><description>Sechs Architekturentscheidungen und drei Fehler aus einem KI-Nebenprojekt, das nichts kosten darf. Mit echtem Code und den Stellen, an denen es schiefging.</description><pubDate>Tue, 18 Aug 2026 12:00:00 GMT</pubDate></item><item><title>Schlechte Architektur schickt keine Alerts. Sie kostet einfach weiter.</title><link>https://timrutte.de/blog/finops-aws-versteckte-architekturkosten/</link><guid isPermaLink="true">https://timrutte.de/blog/finops-aws-versteckte-architekturkosten/</guid><description>Wo in gewachsenen AWS-Setups vier- bis fünfstellige Beträge still verschwinden, und wie Sie sie ohne eine Zeile Code-Änderung zurückholen.</description><pubDate>Thu, 11 Jun 2026 12:00:00 GMT</pubDate></item><item><title>Wenn AWS eine Region verliert: Was wirklich zählt wenn es ernst wird</title><link>https://timrutte.de/blog/aws-region-ausfall-multi-region/</link><guid isPermaLink="true">https://timrutte.de/blog/aws-region-ausfall-multi-region/</guid><description>Was wirklich zählt, wenn eine AWS-Region ausfällt: Multi-Region-Strategien, realistische Failover-Konzepte und die Kosten, die niemand einplant.</description><pubDate>Thu, 09 Apr 2026 12:00:00 GMT</pubDate></item><item><title>Agentic Coding mit Spec-Driven Development: Warum Ihr KI-Agent Struktur braucht, bevor er Code schreibt</title><link>https://timrutte.de/blog/agentic-coding-spec-driven-development/</link><guid isPermaLink="true">https://timrutte.de/blog/agentic-coding-spec-driven-development/</guid><description>Warum Ihr KI-Agent Struktur braucht, bevor er Code schreibt. Spec-Driven Development als Methode für planbare, konstante Qualität bei KI-Tools.</description><pubDate>Mon, 30 Mar 2026 12:00:00 GMT</pubDate></item><item><title>Golang in einer PHP-Welt: Wie ich neue hochperformante Services integriere ohne alles umzubauen</title><link>https://timrutte.de/blog/golang-in-einer-php-welt/</link><guid isPermaLink="true">https://timrutte.de/blog/golang-in-einer-php-welt/</guid><description>Wie ich neue hochperformante Go-Services in bestehende PHP-Systeme integriere, ohne alles umzubauen. Strangler-Fig in der Praxis statt Big-Bang-Rewrite.</description><pubDate>Tue, 03 Feb 2026 12:00:00 GMT</pubDate></item><item><title>Warum Full-Rewrites fast immer scheitern</title><link>https://timrutte.de/blog/warum-full-rewrites-scheitern/</link><guid isPermaLink="true">https://timrutte.de/blog/warum-full-rewrites-scheitern/</guid><description>Rewrites scheitern, Stillstand auch. Warum der komplette Neubau fast nie funktioniert und wie schrittweise Modernisierung messbare Ergebnisse liefert.</description><pubDate>Sun, 11 Jan 2026 12:00:00 GMT</pubDate></item><item><title>Von Sphinx zu Manticore Search: Eine Migration über Latenz, Relevanz und operative Disziplin</title><link>https://timrutte.de/blog/von-sphinx-zu-manticore-search/</link><guid isPermaLink="true">https://timrutte.de/blog/von-sphinx-zu-manticore-search/</guid><description>Eine Suchmigration von Sphinx zu Manticore über Latenz, Relevanz und operative Disziplin. Von 5 Sekunden auf unter 100 ms in der Praxis.</description><pubDate>Thu, 10 Jul 2025 12:00:00 GMT</pubDate></item><item><title>Technische Schulden als Geschäftsrisiko – und warum niemand zuhört bis es zu spät ist</title><link>https://timrutte.de/blog/technische-schulden-als-geschaeftsrisiko/</link><guid isPermaLink="true">https://timrutte.de/blog/technische-schulden-als-geschaeftsrisiko/</guid><description>Technische Schulden sind kein Entwickler-Problem, sondern ein Geschäftsrisiko. Sie wachsen still und werden sichtbar, wenn am wenigsten Platz dafür ist.</description><pubDate>Thu, 03 Apr 2025 12:00:00 GMT</pubDate></item></channel></rss>