Alle Leistungen

Go neben PHP

Ein Pfad trägt die Last nicht mehr. Das ist kein Grund, alles neu zu bauen.

Der übliche Vorschlag heißt Rewrite: alles in Go neu, in zwölf Monaten, mit demselben Team, das nebenbei den Betrieb hält. Wie das ausgeht, wissen Sie. Es geht auch anders. Der eine Pfad, der unter Last einbricht, wird herausgelöst und als Go-Dienst neben Ihr PHP gestellt, angebunden über gRPC oder HTTP, mit derselben Datenbank oder einer klaren Grenze. Der Rest bleibt, wo er ist. Und davor wird gemessen: Wenn der Engpass in der Datenbank sitzt, ändert eine andere Sprache daran nichts, und dann sage ich Ihnen das, bevor Sie etwas beauftragen.

Erst messen, dann bauenStrangler Fig statt RewritegRPC oder HTTPFestpreis 1.900 €
Was Sie bekommen
  • Eine Messung unter echter Last, die zeigt, wo die Zeit im heißen Pfad hingeht
  • Die Antwort, ob ein Go-Dienst hier das Mittel ist. Sie darf Nein lauten
  • Einen herausgelösten Pfad als Go-Dienst, lauffähig in einem eigenen Zweig
  • Die Schnittstelle des Dienstes, mit festgelegter Grenze zu den Daten
  • Zahlen vorher und nachher aus demselben Lasttest, nicht aus dem Gefühl
  • Den Weg zur Produktivstellung schriftlich: Umschaltung, Rückweg, Aufwand
Umfang & Zusammenarbeit

Eine Woche, ein Ergebnis, zum Festpreis. Die Produktivstellung wird danach nach Umfang angeboten, nie als offene Rechnung.

Remote aus Deutschland. Direkt mit mir, ohne Agentur dazwischen.

Die Ausgangslage

Die Sprache ist selten das Problem.

Fast jedes gewachsene PHP-System hat eine Handvoll Stellen, die anders sind als der Rest: der Endpunkt, den die App bei jedem Start aufruft. Der Import, der nachts vier Stunden läuft. Die Suche, die zur Spitzenlast alles andere mitzieht. Das Ausführungsmodell von PHP ist für den größten Teil einer Anwendung völlig ausreichend, aber es passt schlecht zu langlebigen Verbindungen, zu Arbeit, die parallel laufen soll, und zu Aufrufen, die im einstelligen Millisekundenbereich beantwortet werden müssen.

Wenn das auffällt, liegt oft schon ein Vorschlag auf dem Tisch: neu bauen, diesmal in Go. Das ist eine Entscheidung über zwölf Monate, in denen niemand etwas anderes liefert und das alte System trotzdem gepflegt werden muss. Der schmalere Weg heißt Strangler Fig und ist keine neue Idee: Man löst genau den einen Pfad heraus, stellt ihn als eigenen Dienst daneben, lenkt den Verkehr schrittweise um und lässt alles andere unangetastet. Kein Stichtag, kein großer Knall, und an jeder Stelle ein Rückweg.

Und dann kommt die Hälfte, die in keinem Angebot steht: Sehr oft lohnt sich das nicht. Der häufigste Grund für einen langsamen Pfad ist nicht die Sprache, sondern eine Abfrage ohne passenden Index, ein N+1 im ORM, eine Datenbank, die an ihrer Grenze läuft, oder ein fremder Dienst, auf den gewartet wird. In allen vier Fällen wartet ein Go-Dienst genauso lange wie das PHP davor, nur mit mehr beweglichen Teilen. Deshalb steht hier die Messung vor dem Bau. Zeigt sie in die Datenbank, sage ich das und wir hören dort auf.

Kommt Ihnen etwas davon bekannt vor?
  • Ein einzelner Endpunkt zieht die Antwortzeit der ganzen Anwendung nach unten.
  • Zur Spitzenlast werden Server dazugestellt, weil ein Pfad die CPU auffrisst.
  • Ein nächtlicher Import läuft stundenlang und blockiert alles, was danach kommt.
  • Jemand hat einen kompletten Rewrite in Go vorgeschlagen, und niemand weiß, wie das ausgehen soll.
  • Es gibt bereits eine Go-Insel, die ein Kollege gebaut hat und die sonst niemand anfasst.
  • Niemand kann sagen, welcher Teil einer Anfrage die Zeit tatsächlich verbraucht.

Für wen das passt

Für PHP-Teams mit einem belegten Engpass – nicht mit einem Rewrite-Wunsch.

Das Angebot richtet sich an CTOs und Backend-Leads mit einer produktiven PHP-Anwendung. Ein klarer Pfad stößt bei Last, Parallelität oder Latenz an Grenzen, während der übrige Monolith zuverlässig weiterarbeitet.

01

Der Engpass ist gemessen.

Profiling, Lastdaten oder Betriebsmetriken zeigen, welcher abgegrenzte Pfad die Anwendung begrenzt.

02

PHP bleibt Teil der Lösung.

Der bestehende Monolith wird nicht entwertet. Go übernimmt nur den Teil, für den sich die zusätzliche Sprache technisch rechnet.

03

Das Team muss den Service betreiben können.

Deployment, Monitoring, Schnittstelle und Wissenstransfer gehören deshalb genauso zum Auftrag wie der Go-Code.

Was ich mache

Was dabei entsteht

01

Messung vor der ersten Zeile Code

k6OpenTelemetrypprof

Ein Lasttest gegen den verdächtigen Pfad und eine Ablaufverfolgung, die zeigt, wo die Zeit hingeht: Datenbank, Serialisierung, Netz und Interpreter getrennt ausgewiesen. Das Ergebnis ist eine Aufteilung in Millisekunden und ein Satz dazu, ob ein eigener Dienst hier überhaupt etwas ändert. Fällt der Satz negativ aus, steht er trotzdem im Bericht, und dort endet das Paket.

02

Der Schnitt: ein Pfad, kein System

Strangler Figein PfadGrenze

Herausgelöst wird das kleinste Stück, das für sich stehen kann, mit klar benanntem Ein- und Ausgang. Nicht ein Modul, nicht eine Domäne, nicht „der Bestellprozess", sondern der eine Aufruf, der die Last trägt. Je enger der Schnitt, desto kürzer der Weg zurück.

03

Der Go-Dienst

GolangNebenläufigkeitTests gegen das Altverhalten

Ein Dienst, kein Ökosystem: ein Binary, wenige Abhängigkeiten, Nebenläufigkeit dort, wo sie etwas bringt, und ein Speicherbedarf, den man vorhersagen kann. Dazu Tests, die den bisherigen Pfad nachbilden, damit die Ablösung überprüfbar ist und nicht nur plausibel. Er entsteht in einem eigenen Zweig und wird dort gegen echte Daten gemessen.

04

Die Anbindung an PHP

gRPCProtocol BuffersREST

gRPC mit Protocol Buffers, wenn die Aufrufe häufig sind und ein Vertrag helfen soll. Das setzt allerdings einen dauerhaften PHP-Prozess voraus, etwa RoadRunner oder FrankenPHP, oder Aufrufe, die den Verbindungsaufbau je Anfrage vertragen: Unter klassischem PHP-FPM ist der Prozess kurzlebig, der gRPC-Kanal überlebt die Anfrage nicht, und genau die Wiederverwendung der HTTP/2-Verbindung ist der Vorteil von gRPC. Dort ist schlichtes REST mit Keep-Alive der ehrlichere Weg, ebenso wenn Ihr Team damit besser zurechtkommt. Dazu Zeitüberschreitungen, Wiederholungen und ein Ersatzweg auf den alten Pfad, damit ein ausgefallener Dienst kein ausgefallenes System ist – das gehört zu dem Weg zur Produktivstellung, der in dieser Woche schriftlich entsteht.

05

Daten und Grenze

PostgreSQLMySQLRedis

Entweder derselbe Datenbestand mit klar geregeltem Zugriff, oder eine eigene Grenze mit einem definierten Weg der Daten. Beides ist in Ordnung, das Dazwischen nicht: Zwei Systeme, die dieselben Tabellen nach eigenem Gutdünken schreiben, sind der Teil, der später weh tut.

06

Umschaltung, Betrieb und Rückweg

Feature FlagsAmazon ECSTerraform

Der Verkehr wird über ein Feature Flag umgelenkt, erst ein Bruchteil, dann mehr, und der Weg zurück ist eine Einstellung und keine Auslieferung. Der Dienst läuft dort, wo Sie ohnehin betreiben, beschrieben als Infrastruktur in Code, mit denselben Metriken wie das PHP daneben. Dieser Schritt steht am Ende der Woche schriftlich da, mit Aufwandsschätzung, und wird danach als eigenes Angebot ausgeführt.

Sie haben einen Pfad, der unter Last einbricht?

Schicken Sie mir den Pfad und die Zahlen, die Sie haben. Sie bekommen eine Einschätzung, ob ein eigener Dienst hier etwas ändert, bevor Sie etwas beauftragen.

Ablauf

Wie das abläuft

Vier Schritte in einer Woche. Nach dem zweiten wissen Sie, ob sich der dritte lohnt, und diese Antwort darf Nein lauten.

SCHRITT 01

Gespräch, 30 Minuten

Welcher Pfad, welche Last, welche Zahlen liegen vor. Oft steht danach schon eine Vermutung im Raum, die nichts mit der Sprache zu tun hat. Wenn ich sie habe, sage ich sie Ihnen sofort und nicht erst am Ende der Woche.

SCHRITT 02

Messung

Lasttest und Ablaufverfolgung gegen den Pfad, in einer Testumgebung mit echten Datenmengen oder gegen ein Lastprofil aus Ihrer Produktion. Danach steht in Millisekunden, wo die Zeit verbraucht wird, getrennt nach Datenbank, Serialisierung, Netz und Interpreter. Zeigt das Ergebnis in die Datenbank oder in eine einzelne Abfrage, endet es hier, und Sie behalten den Befund.

SCHRITT 03

Ein Pfad, herausgelöst

Der Dienst, die Schnittstelle und die Grenze zu den Daten, lauffähig in einem eigenen Zweig und gegen echte Daten gemessen. Vorher und nachher am selben Vorgang. In Ihrer Produktivumgebung wird dabei nichts angefasst, und genau deshalb trägt der Festpreis.

SCHRITT 04

Der Weg zur Produktivstellung

Anbindung, Umschaltung über ein Feature Flag, Rückweg und Betrieb, schriftlich und mit Aufwandsschätzung. Damit endet das Paket. Ob Sie diesen Weg mit Ihrem Team gehen oder mit mir, entscheiden Sie danach; von mir bekommen Sie dafür ein eigenes Angebot zum Festpreis, bevor es beginnt.

Die andere Seite

Was Sie der heutige Zustand kostet.

Die Summe steht unten nicht, weil ich sie nicht kenne. Die Posten kenne ich. Ein System, das unter Last einbricht, kostet nicht einmal, sondern jeden Monat weiter. Rechnen Sie selbst nach, dann gehört Ihnen die Zahl.

  1. 01
    Server gegen einen einzelnen PfadWie viele Instanzen laufen nur, damit ein Pfad die Spitzenlast übersteht, und was kosten sie im Monat?
  2. 02
    Abbrüche unter LastWie viele Vorgänge brechen bei einer Spitze ab, und was ist ein abgebrochener Vorgang bei Ihnen wert?
  3. 03
    Nachtarbeit und BereitschaftWie oft steht jemand nachts an einem Lauf, der zu lange dauert, und was kostet diese Zeit im Jahr?
  4. 04
    Funktionen, die deshalb nicht kommenWas wurde nicht gebaut, weil das System die zusätzliche Last nicht ausgehalten hätte, und was wäre es Ihnen wert gewesen?
  5. 05
    Der Rewrite, den Sie stattdessen erwägenWelche Zahl steht im Angebot für den Neubau, und um welchen Faktor liegt sie über einem einzelnen herausgelösten Pfad?

Rechnen Sie den ersten Posten dieser Liste auf ein Jahr hoch. Kommt dabei mehr heraus, als die Woche unten kostet, ist die Frage nach der Messung schon beantwortet. Sie ersetzt keine dieser Zahlen, aber sie macht die erste davon belegbar, und im Zweifel erspart sie Ihnen den letzten Posten dieser Liste.

Einstieg

Engpass gemessen, ein Pfad herausgelöst. Festpreis 1.900 €

Festpreis, und er trägt, weil das Ergebnis eine Messung und ein Zweig in Ihrem Repository ist. In Ihrer Produktivumgebung wird dabei nichts angefasst. Die Produktivstellung wird danach angeboten, ebenfalls zum Festpreis, bevor sie beginnt.

Kein Prototyp und kein Rewrite, sondern eine Woche mit einem Ergebnis: Sie wissen in Millisekunden, wo die Zeit im heißen Pfad verbraucht wird, ob ein Go-Dienst daran überhaupt etwas ändert, und falls ja, liegt der herausgelöste Pfad lauffähig in einem eigenen Zweig, gegen echte Daten gemessen.

Was Sie bekommen

  • Messung des heißen Pfades unter echter Last: wo die Zeit hingeht, in Millisekunden statt in Vermutungen
  • Die Aufteilung getrennt ausgewiesen: Datenbank, Serialisierung, Netz, Interpreter. Erst danach lässt sich über die Sprache reden
  • Die Antwort auf die Frage, ob ein Go-Dienst hier das Mittel ist. Sie darf Nein lauten, und dann ist dieses Nein das Ergebnis, für das Sie bezahlt haben
  • Falls ja: ein Pfad herausgelöst und als Go-Dienst lauffähig, in einem eigenen Zweig, gegen echte Daten gemessen, bis zu acht Stunden Umsetzung. Vorher und nachher am selben Vorgang. Trägt der Pfad mehr, wird der Schnitt enger gezogen
  • Der Weg zur Produktivstellung schriftlich: Anbindung, Umschaltung, Rückweg, mit Aufwandsschätzung

Was Sie nicht bekommen

  • Keine Produktivstellung. Anbindung, Umschaltung des Verkehrs und Betrieb sind ein eigenes Angebot, das nach dem Ergebnis kommt, zum Festpreis, bevor es beginnt
  • Kein Rewrite und kein Sprachwechsel. Was in PHP läuft, bleibt in PHP
  • Kein zweiter Pfad und keine Umsetzung über die acht Stunden hinaus. Gemessen wird das ganze Bild, herausgelöst wird ein Pfad
  • Keine Optimierung Ihrer Abfragen. Zeigt die Messung dorthin, steht das im Befund und ist ein eigenes Vorhaben
  • Keine Datenbankmigration und keine Umstellung Ihres Datenmodells
  • Keine Änderung an Ihrer Oberfläche und keine Arbeit am Frontend
  • Keine laufende Betreuung ohne eigene Vereinbarung
  • Lesezugriff auf das Repository genügt, mindestens auf den Pfad, um den es geht. Der Zweig entsteht daneben und wird Ihnen übergeben; soll er direkt im Repository liegen, braucht es Schreibzugriff auf einen eigenen Zweig. Dazu ein erreichbarer Ansprechpartner aus dem Team
  • Eine Testumgebung mit echten Datenmengen, gegen die gemessen werden darf. Ein Lastprofil aus Ihrer Produktion hilft zusätzlich, ersetzt die Umgebung aber nicht: Wer sie erst bauen muss, verbringt damit die Woche
  • Die Erlaubnis, in dieser Umgebung zu instrumentieren, mit OpenTelemetry, pprof, Xdebug oder Vergleichbarem. Ohne Instrumentierung gibt es keine Aufteilung nach Datenbank, Serialisierung, Netz und Interpreter, sondern nur eine Gesamtzeit
  • Ein Pfad ist ein Aufruf oder ein Lauf mit benanntem Ein- und Ausgang. Nicht ein Modul, nicht eine Domäne und nicht „der Bestellprozess"
  • Ab etwa 200.000 Zeilen oder mehreren Anwendungen wird der Umfang vorher abgestimmt
  • Zeigt die Messung, dass ein Go-Dienst nicht das Mittel ist, endet das Paket dort. Der Befund ist dann das Ergebnis und wird in voller Höhe berechnet, denn er erspart Ihnen ein Vorhaben
  • Zeigt die Messung Ja, trägt aber auch der engste mögliche Schnitt keine Woche, endet das Paket mit Messung, Schnittvorschlag und einem Angebot für das Herauslösen. Der Preis bleibt derselbe
  • Was entsteht, liegt in Ihrem Repository und gehört Ihnen
  • Festpreis, unabhängig davon, wie lange ich brauche
  • Die Woche zählt ab dem Tag, an dem die Zugänge stehen
  • Der Betrag wird angerechnet, wenn Sie die Produktivstellung anschließend beauftragen
  • Preis netto, zuzüglich Umsatzsteuer
  • Sie sind zu nichts weiter verpflichtet. Manche Teams gehen den Weg zur Produktivstellung danach selbst

Das Ergebnis

Was danach anders ist

Eine Antwort statt einer Vermutung

Nach der Messung steht in Millisekunden, wo die Zeit im heißen Pfad verbraucht wird, getrennt nach Datenbank, Serialisierung, Netz und Interpreter. Damit ist die Frage nach der Sprache beantwortet und nicht vertagt. Lautet die Antwort Ja, liegt der herausgelöste Pfad daneben und der Unterschied steht als Zahl in Ihrem Vorher-Nachher-Test, nicht als Prozentversprechen auf dieser Seite.

Das bestehende System bleibt bestehen

Ihr PHP wird nicht abgelöst, nicht umgeschrieben und nicht eingefroren. Ihr Team arbeitet weiter dort, wo es sich auskennt, und muss nicht nebenbei eine zweite Sprache lernen, um eine Fehlerkorrektur auszuliefern.

Ein Rückweg, der nicht theoretisch ist

Der Rückweg ist Teil des Plans, bevor der erste Verkehr umgelenkt wird: Solange das Feature Flag steht und der alte Pfad läuft, ist die Rücknahme eine Einstellung. Das ist der eigentliche Unterschied zum Rewrite. Dort ist der Rückweg nach dem dritten Monat weg, und niemand merkt den Zeitpunkt.

Der zweite Dienst ist Fleißarbeit

Der Schnitt, die Messstrecke und die Anbindung an PHP sind einmal durchdacht. Der nächste Pfad ist danach eine Entscheidung über den Schnitt und kein neues Vorhaben.

Eingesetzte Technologien

Womit ich arbeite

Sprachen
  • Golang
  • PHP 8
Anbindung
  • gRPC
  • Protocol Buffers
  • REST
Daten
  • PostgreSQL
  • MySQL
  • Redis
Nachrichten
  • Kafka
  • RabbitMQ
Laufzeit
  • Amazon ECS
  • AWS Lambda
  • Terraform
Messung
  • k6
  • pprof
  • OpenTelemetry
Vorgehen
  • Strangler Fig
  • Feature Flags

Aus der Praxis

Ebenfalls aus echten Projekten

Tim Rutte, Cloud & Software Architect

Mit wem Sie es zu tun haben

Direkt mit mir als Freelancer. Keine Agentur dazwischen.

Ich bin Tim Rutte. Über 20 Jahre Softwareentwicklung, viele davon in gewachsenen PHP-Systemen, in die ich Go-Dienste gestellt habe, ohne den Betrieb anzuhalten. Sie sprechen mit der Person, die Ihren Code anfasst, vom ersten Gespräch bis zur Übergabe.

  • 20+Jahre Softwareentwicklung
  • 50+erfolgreiche Projekte
  • 2003seit diesem Jahr remote im Einsatz
Mehr über mich

Häufige Fragen

Häufige Fragen zu Go neben PHP

Müssen wir dafür von PHP weg?

Nein, und das ist der Punkt. Ihr PHP bleibt das System, in dem der Alltag stattfindet. Daneben steht ein Dienst, der genau eine Sache tut, und zwar die, für die das Ausführungsmodell von PHP schlecht passt. Wenn dieser Dienst morgen wieder verschwindet, läuft der alte Pfad weiter, solange das Feature Flag steht.

Unser System ist langsam. Bringt ein Go-Dienst das nicht ohnehin?

Meistens nicht, und das ist der häufigste Fall. Wenn die Zeit in einer Abfrage ohne passenden Index verbraucht wird, in einem N+1 im ORM, in einer Datenbank an ihrer Grenze oder in der Wartezeit auf einen fremden Dienst, dann wartet ein Go-Dienst genauso lange wie das PHP davor, nur mit mehr beweglichen Teilen. Ohne Messung ist die Sprachfrage ein Münzwurf. Deshalb steht sie hier hinten und die Messung vorn.

Woran erkennt man, dass es sich doch lohnt?

Wenn die Zeit im eigenen Code verbraucht wird und nicht im Warten: viele gleichzeitige, langlebige Verbindungen; Arbeit, die parallel laufen könnte, es im Anfrage-pro-Prozess-Modell aber nicht tut; Serialisierung oder Rechnerei in großen Mengen; ein Aufruf, der im einstelligen Millisekundenbereich beantwortet werden muss. Das sieht man in der Ablaufverfolgung, nicht in der Diskussion.

Warum Go und nicht einfach schnelleres PHP?

Weil beides zusammengehört, und der PHP-Weg meistens der billigere ist. Ein richtig eingestellter OPcache, Preloading und vor allem aufgeräumte Abfragen holen bei den meisten Pfaden mehr heraus als ein zweiter Dienst. Der JIT gehört ausdrücklich nicht in diese Aufzählung: Er hilft dort, wo tatsächlich gerechnet wird, und das ist selten der Engpass, weil typische Webanwendungen an Ein- und Ausgabe hängen und nicht an der CPU. Dazu kommt, dass sich das Ausführungsmodell selbst ändern lässt, ohne die Sprache zu wechseln: RoadRunner, FrankenPHP und Swoole halten den PHP-Prozess am Leben und gehen damit genau die drei Schwächen an, die oben stehen, nämlich langlebige Verbindungen, Nebenläufigkeit und Aufrufe im einstelligen Millisekundenbereich. Wer noch auf PHP 7 oder älter steht, für den ist ohnehin das Upgrade der erste Hebel, und dafür gibt es hier eine eigene Seite. Go lohnt sich erst dort, wo auch das nicht reicht. Fällt Ihr Fall in eine der Gruppen davor, sage ich das und Sie sparen sich diese Seite.

gRPC oder HTTP, was nehmen Sie?

Das entscheidet Ihr Team mit, und Ihre Laufzeit entscheidet mit. gRPC mit Protocol Buffers ist die bessere Wahl, wenn die Aufrufe häufig sind, ein verbindlicher Vertrag zwischen beiden Seiten helfen soll und auf PHP-Seite ein dauerhafter Prozess läuft, etwa RoadRunner oder FrankenPHP. Unter klassischem PHP-FPM ist der Prozess kurzlebig, der Kanal überlebt die Anfrage nicht, und damit fällt der eigentliche Vorteil von gRPC weg, nämlich die wiederverwendete HTTP/2-Verbindung. Dort und überall, wo Ihre Leute mit REST vertrauter sind, ist schlichtes REST mit Keep-Alive die ehrlichere Wahl. Ein Werkzeug, das im Betrieb niemand versteht, ist kein Fortschritt.

Greifen dann zwei Systeme auf dieselbe Datenbank zu?

Entweder das, mit klar geregeltem Zugriff, oder eine eigene Grenze mit einem definierten Weg der Daten. Beides funktioniert. Was nicht funktioniert, ist das Dazwischen: zwei Systeme, die dieselben Tabellen nach eigenem Gutdünken schreiben. Welcher der beiden Wege es wird, gehört in den Schnitt und steht fest, bevor gebaut wird.

Wir haben ein gewachsenes PHP-System. Ist das hier richtig oder die Legacy-Modernisierung?

Das entscheidet der Zuschnitt Ihres Problems und nicht das Alter des Codes. Hier geht es um genau einen Pfad, der unter Last einbricht, während der Rest seinen Dienst tut. Ist dagegen der Bestand selbst das Problem, weil ihn niemand mehr anfassen will, weil es keine Tests gibt und jede Änderung an drei Stellen weh tut, dann ist die Legacy-Modernisierung der passendere Einstieg, und dann sage ich das. Sie hat hier eine eigene Seite unter den Leistungen.

Wir betreiben eine SaaS-Plattform, die unter Last einbricht. Diese Seite oder die zu SaaS-Plattformen?

Beide Einstiege kosten 1.900 Euro fest, dauern eine Woche, liefern einen Zweig und belegen mit derselben Case Study. Die Frage ist nur, was bei Ihnen bricht. Geht es um das Mandantenmodell, die Abrechnung oder die Nutzungsmessung, also um den Zuschnitt der Plattform selbst, dann ist die Seite zu SaaS-Plattformen die richtige. Bricht dagegen nicht das Mandantenmodell, sondern ein einzelner Pfad, während der Rest der Plattform trägt, sind Sie hier richtig.

Wir haben niemanden, der Go kann. Wer betreibt das danach?

Diese Frage stellt sich vor der Produktivstellung und nicht danach, und das ist der Vorteil des kleinen Zuschnitts: Nach der Woche liegt der Dienst in einem Zweig, der Weg in den Betrieb liegt schriftlich daneben, und erst dann entscheiden Sie. Deshalb bleibt es auch ein Dienst und kein Ökosystem: ein Binary, wenige Abhängigkeiten, dieselben Metriken und dieselbe Auslieferung wie beim Rest. Sagt Ihr Team, es will das nicht betreiben, haben Sie einen Zweig verworfen und keinen zwölften Monat eines Rewrites.

Was kostet ein Go-Dienst neben dem PHP-Bestand?

Die Messung mit dem herausgelösten Pfad kostet 1.900 Euro netto, das Ergebnis liegt nach einer Woche vor. Das ist ein Festpreis und kein Startpreis, und der Grund steht im Zuschnitt: Was in dieser Woche entsteht, ist eine Messung und ein Zweig in Ihrem Repository. In Ihrer Produktivumgebung wird nichts angefasst, also hängt der Aufwand auch nicht an fremden Freigaben, Umgebungen und Terminen. Nicht enthalten ist die Produktivstellung, also Anbindung, Umschaltung des Verkehrs und Betrieb. Die wird nach dem Ergebnis angeboten, ebenfalls zum Festpreis, bevor sie beginnt, denn erst dann weiß man, was sie umfasst. Zeigt die Messung, dass ein Go-Dienst nicht das Mittel ist, endet es dort. Bezahlt haben Sie dann eine Woche und eine Antwort, die Ihnen ein Vorhaben von zwölf Monaten erspart, und das ist der billigste Ausgang von allen.

Weitere Leistungen

Womit ich sonst helfe.