Reference Guide · APIs

API Design für langlebige Systeme

Eine API ist das Langlebigste, das ein System nach außen gibt — ein Versprechen an fremden Code, das man nicht einseitig zurücknehmen kann. Wie man Schnittstellen entwirft, die man über Jahre weiterentwickeln kann, ohne dieses Versprechen zu brechen. Ein Entscheidungsdokument für CTOs, Lead Developer und Software-Architekten.

Was ist das? · Reference Guide

Ein belastbarer Leitfaden zu einer Engineering-Frage — mit Trade-offs, Kosten und dem Fall, in dem wir anders entscheiden. Kein Meinungsstück, sondern ein Referenztext. Zur Übersicht

Autor
Batunet Engineering
Lesezeit
15 Min.
Niveau
Vertiefung
Status
Freigegeben
Zuletzt geprüft
21. Juli 2026
Aktualisiert
21. Juli 2026
Auf dieser Seite

Der Code hinter einer API kann jederzeit umgebaut, ersetzt, weggeworfen werden — er gehört Ihnen. Die API selbst gehört Ihnen nur zur Hälfte. Die andere Hälfte gehört jedem fremden System, das sich auf ihre Form verlässt, und diese Hälfte können Sie nicht anfassen, ohne in fremde Produktion einzugreifen. Genau das macht API-Entwurf zu einer der unversöhnlichsten Entscheidungen der Softwaretechnik: Fast alles im Inneren ist reversibel, die nach außen sichtbare Form ist es kaum.

Dieses Dokument behandelt den Entwurf von Schnittstellen unter genau diesem Blickwinkel — nicht, wie man eine API baut, sondern wie man sie so entwirft, dass man sie ein Jahrzehnt lang weiterentwickeln kann, ohne ihre Nutzer zu brechen. Es ist bewusst framework-, protokoll- und herstellerneutral: Ob die Schnittstelle im Stil von REST, als RPC oder als abfragebasiertes Protokoll gebaut ist, ändert die Prinzipien nicht. Für die konkrete Mechanik der Versionierung gibt es einen eigenen, tieferen Text; hier geht es um die Entwurfsentscheidungen, die davor kommen.

1. APIs sind Verträge

Der Vertrag einer API ist alles, worauf ein Aufrufer sich verlassen kann: die Struktur der Antwort, die Bedeutung der Felder, die Semantik der Fehler, das Verhalten in Grenzfällen. Vieles davon steht nirgends in der Dokumentation — es steht im Code der Nutzer, die eine bestimmte Antwortform beobachtet und darauf gebaut haben. Der wahre Vertrag ist deshalb größer als der zugesagte: Er umfasst alles Beobachtbare, nicht nur das Dokumentierte.

dokumentiert beobachtet — der wahre Vertrag Feldreihenfolge, Grenzfälle, Timing, Fehlerform sichtbar verlassen sich Nutzer trotzdem darauf

Schema: Was Sie zusichern, ist die Spitze. Worauf sich Nutzer verlassen, reicht tief darunter — jede beobachtbare Eigenschaft wird für irgendjemanden Teil des Vertrags.

Daraus folgt die Grundhaltung des ganzen Dokuments: Eine API zu ändern heißt nicht, den eigenen Code zu ändern, sondern in die Systeme von Menschen einzugreifen, die man nie trifft. Jede Entwurfsentscheidung sollte deshalb mit der Frage geprüft werden, was sie den Aufrufern über Jahre abverlangt — nicht, was sie dem Anbieter heute erspart.

Dafür gibt es eine nüchterne Faustregel: Hat eine Schnittstelle genug Nutzer, wird jede beobachtbare Eigenschaft von irgendjemandem zur Voraussetzung gemacht — unabhängig davon, ob sie je zugesagt wurde. Was man nicht zusichern will, sollte man deshalb gar nicht erst beobachtbar machen. Jedes Detail, das nach außen dringt — ein internes Feld, eine zufällige Sortierung, eine Fehlermeldung mit technischem Innenleben —, ist ein stiller Teil des Vertrags, den man später nur unter Bruch zurücknehmen kann. Sparsamkeit an der Vertragsfläche ist damit keine Kargheit, sondern Vorsorge: Je weniger sichtbar ist, desto mehr bleibt änderbar.

Trade-off. Den Vertrag ernst zu nehmen heißt, weniger nach außen zu geben, als technisch möglich wäre — der Preis ist weniger anfängliche Bequemlichkeit für den Anbieter.

Kosten. Die Disziplin, jede Antwort als Zusage zu behandeln, verlangt Sorgfalt beim Entwurf und Zurückhaltung beim Preisgeben interner Details — Aufwand, der sich erst über die Lebensdauer zeigt.

Wann wir anders entscheiden. Bei einer rein internen Schnittstelle, deren beide Seiten dasselbe Team gemeinsam und synchron ausrollt, ist die enge Vertragsbindung überzogen; dort darf man freier ändern, weil es keinen fremden Code gibt, den man überrascht.

2. Stabilität vor Bequemlichkeit

Der häufigste Entwurfsfehler entsteht aus einer verständlichen Motivation: die API so zu formen, wie es dem Anbieter im Moment am leichtesten fällt. Interne Datenstrukturen direkt nach außen spiegeln, jede neue Fähigkeit als weiteres Feld anhängen, das Verhalten an der aktuellen Implementierung ausrichten. Jede dieser Bequemlichkeiten ist heute billig und wird morgen zur Fessel, weil sie zum Vertrag wird, sobald ein Nutzer sie beobachtet.

Der Leitsatz lautet deshalb: Eine API wird für den Konsumenten entworfen, nicht für den Produzenten. Sie sollte die Fachlichkeit ausdrücken, nicht die interne Umsetzung — denn die Umsetzung wird sich ändern, die Fachlichkeit ist stabiler. Eine Schnittstelle, die interne Details durchscheinen lässt, koppelt fremde Systeme an Entscheidungen, die man eigentlich frei ändern können wollte. Stabilität nach außen erkauft man mit der Bereitschaft, innen zu übersetzen.

Trade-off. Eine bewusst entworfene Vertragsfläche, entkoppelt vom Inneren, kostet eine Übersetzungsschicht — der Gewinn ist die Freiheit, das Innere zu ändern, ohne den Vertrag zu berühren.

Kosten. Diese Übersetzung ist dauerhafte Arbeit: Jede interne Änderung muss geprüft werden, ob und wie sie sich an der Grenze abbildet.

Wann wir anders entscheiden. Für einen Prototyp oder eine kurzlebige Schnittstelle ist das direkte Spiegeln interner Strukturen die schnellere und richtige Wahl; die Entkopplung lohnt erst, wenn die API lange lebt und fremde Nutzer trägt.

3. Entwurf für Veränderung

Eine langlebige API wird sich mit Sicherheit ändern — man weiß nur nicht, wie. Der einzige verlässliche Umgang mit dieser Unsicherheit ist, die Schnittstelle so zu entwerfen, dass sie Veränderung verträgt, statt sie zu verbieten. Das heißt konkret: Formen wählen, die additiv wachsen können, ohne Bestehendes zu verletzen.

Praktisch bedeutet das, Antworten und Eingaben erweiterbar anzulegen. Aufzählungen so behandeln, dass ein unbekannter Wert einen Client nicht zum Absturz bringt. Objekte so gestalten, dass ein neues, optionales Feld später hinzukommen kann, ohne die Bedeutung der bestehenden zu verschieben. Nicht mehr zusichern, als nötig — jede über das Notwendige hinaus festgeschriebene Eigenschaft ist eine, die man später nicht mehr ändern kann. Die zweite Hälfte ist der tolerante Leser auf beiden Seiten: streng in dem, was man zusichert, großzügig in dem, was man annimmt. Ein Client, der unbekannte Felder überliest, erlaubt dem Server, zu wachsen; ein Server, der unbekannte Eingaben nicht sofort ablehnt, lässt Clients vorausschauend bauen.

Zum Entwurf für Veränderung gehört auch der Zuschnitt der Operationen. Eine Schnittstelle, die eng an der internen Datenform klebt, zwingt Nutzer, viele kleine Aufrufe zu einer fachlichen Handlung zusammenzusetzen — und bindet sie damit an die heutige Struktur. Operationen, die eine fachliche Absicht abbilden statt einer Tabelle, überstehen interne Umbauten besser, weil sich das Innere ändern darf, solange die Absicht gleich bleibt. Der Zuschnitt entlang der Fachlichkeit ist deshalb keine Stilfrage, sondern eine Entscheidung über die Lebensdauer: Was die Absicht ausdrückt, bleibt; was die Struktur spiegelt, altert mit ihr.

Trade-off. Für Veränderung zu entwerfen bedeutet, weniger festzuschreiben und mehr Fälle offen zu lassen — der Preis ist eine anfangs weniger streng wirkende, dafür dehnbare Schnittstelle.

Kosten. Tolerante Leser und erweiterbare Formen verlangen mehr Sorgfalt bei Validierung und Tests, weil man auch das Verhalten bei Unbekanntem bewusst festlegen muss.

Wann wir anders entscheiden. Wo maximale Strenge eine fachliche Anforderung ist — etwa in stark regulierten Schnittstellen, die jede Abweichung zurückweisen müssen —, wählt man bewusst die enge, wenig dehnbare Form und akzeptiert, dass Änderungen teurer werden.

4. Rückwärtskompatibilität

An einer Schnittstelle mit fremden Nutzern ist Rückwärtskompatibilität keine Höflichkeit, sondern die Voreinstellung. Die entscheidende Grenze verläuft nicht zwischen kleinen und großen Änderungen, sondern zwischen solchen, die ein bestehender Aufrufer bemerkt, und solchen, die er nicht bemerkt.

ÄnderungBricht?Warum
Neues optionales Feld in der Antwortneinalte Clients überlesen es
Neuer Endpunkt / neue Operationneinniemand ruft ihn bisher
Neuer erlaubter Wert in erweiterbarer Aufzählungnein**nur wenn Clients Unbekanntes tolerieren
Feld entfernen oder umbenennenjabestehende Erwartung verletzt
Typ oder Format eines Feldes ändernjaParser der Nutzer brechen
Optionales Feld zur Pflicht machenjabisher gültige Aufrufe werden ungültig
Validierung verschärfen, Grenzen senkenjabisher akzeptierte Aufrufe scheitern
Bedeutung eines Fehlercodes verschiebenjaNutzer reagieren falsch

Der unbequeme Teil: Manche Nutzer verlassen sich auf Verhalten, das nie zugesagt wurde — auf die Reihenfolge von Feldern, auf ein zufälliges Timing, auf eine unspezifizierte Grenze. Deshalb ist die sicherste Annahme, dass jede beobachtbare Änderung für irgendjemanden brechend ist, bis das Gegenteil belegt ist. Kompatibilität ist damit weniger eine Regel als eine Haltung der Vorsicht.

Trade-off. Rückwärtskompatibilität als Voreinstellung kauft Verlässlichkeit mit Altlast: Man trägt überholte Felder und Formen mit, die man heute anders wählen würde.

Kosten. Die kompatible Lösung ist selten die eleganteste; man sammelt optionale Felder an und lebt mit Namen, die man bereut — der Preis dafür, niemanden zu brechen.

Wann wir anders entscheiden. Wenn das Modell grundlegend falsch geworden ist und jede kompatible Verrenkung den Vertrag nur weiter verschleiert, ist eine bewusste, sauber versionierte inkompatible Änderung ehrlicher als eine Kette von Kompromissen.

5. Versionierungsstrategie

Eine neue Version ist teuer — für den Anbieter, der zwei Verträge betreibt, und für die Nutzer, die migrieren müssen. Deshalb ist sie das letzte Mittel, nicht der erste Reflex: Das meiste lässt sich durch kompatible Evolution lösen, wenn man die API von Anfang an auf Veränderung ausgelegt hat. Eine Version ist ein Eingeständnis, dass man nicht mehr kompatibel weiterkommt — man sollte sie selten und bewusst wählen. Die Mechanik dahinter — parallele Versionen, Deprecation, sauberer Ausstieg — ist ausführlich in API-Versionierung ohne Kunden zu brechen behandelt; hier geht es nur um die Entwurfsentscheidung, wo die Version überhaupt getragen wird.

Ort der VersionVorteilPreis
Im Pfad (sichtbar in der Adresse)einfach zu sehen, leicht zu routen, gut zwischenspeicherbarermutigt zu ganzen neuen Versionen statt feiner Evolution
Im Header / in den Metadatentrennt Version von der Ressource, feinkörnigunsichtbarer, leichter zu übersehen, schwerer zwischenzuspeichern
Im Medientyp (Aushandlung)protokollnah, ausdrucksstarkkomplexer für Nutzer, höhere Einstiegshürde

Keine dieser Optionen ist überlegen; jede tauscht Sichtbarkeit gegen Feinkörnigkeit anders ein. Die Wahl folgt daraus, wer die Nutzer sind und wie sie bauen — nicht aus einer allgemeinen Rangordnung.

Trade-off. Jede Platzierung der Version kauft eine Eigenschaft — Sichtbarkeit, Feinkörnigkeit, Protokollnähe — mit dem Verlust einer anderen.

Kosten. Unabhängig vom Ort kostet jede zusätzlich betriebene Version doppelte Pflege: zwei Verträge, zwei Testketten, zwei Migrationspfade.

Wann wir anders entscheiden. Für eine kleine, kontrollierte Nutzerschaft, die man direkt begleiten kann, genügt oft die sichtbare Version im Pfad; für eine große, heterogene Nutzerschaft mit feinen Evolutionsschritten kann die Version in den Metadaten die schonendere Wahl sein.

6. Fehlerbehandlung

Fehler sind Teil des Vertrags, nicht ein Randfall daneben. Ein Aufrufer baut nicht nur auf die Erfolgsantwort, sondern ebenso darauf, was im Fehlerfall zurückkommt — und wie er darauf reagieren soll. Eine API, deren Fehler unklar, inkonsistent oder wechselhaft sind, ist selbst dann schwer zu benutzen, wenn der Erfolgsfall makellos ist.

Ein praktischer Prüfstein: Ein Client sollte auf einen Fehler reagieren können, ohne dessen Text zu lesen. Der Text ist für Menschen und darf sich ändern — etwa in einer anderen Sprache; der Code ist für Maschinen und muss stabil bleiben. Wer beides vermischt und Nutzer zwingt, auf Formulierungen zu prüfen, macht die Meldung selbst zum Vertrag und verliert die Freiheit, sie je umzuformulieren.

Drei Prinzipien tragen den Entwurf. Erstens: Fehler müssen unterscheidbar und maschinell auswertbar sein — ein stabiler, klassifizierter Code, auf den ein Client zuverlässig reagieren kann, nicht ein wechselnder Fließtext. Zweitens: Die Trennung zwischen einem Fehler des Aufrufers und einem Fehler des Anbieters muss klar sein, denn sie entscheidet, ob der Aufrufer es erneut versuchen darf oder seine Anfrage korrigieren muss. Drittens: Ein Fehler darf keine internen Details preisgeben — kein Innenleben, keine technischen Spuren, die zum Vertrag würden und die man später nicht mehr zurücknehmen kann. Die Fehlersemantik muss über die Zeit so stabil bleiben wie die Erfolgssemantik; einen Fehlercode umzudeuten ist ein Bruch wie jeder andere.

Trade-off. Ein sauber entworfenes, stabiles Fehlermodell kostet Entwurfsarbeit im Voraus und die Disziplin, es nicht beiläufig zu ändern — der Gewinn ist, dass Nutzer verlässlich auf Fehler reagieren können.

Kosten. Stabile, klassifizierte Fehler bedeuten, eine weitere Vertragsfläche zu pflegen und beim Ändern dieselbe Vorsicht walten zu lassen wie bei den Erfolgsantworten.

Wann wir anders entscheiden. Für eine interne Schnittstelle mit einem einzigen, mitwachsenden Nutzer darf das Fehlermodell schlanker und formloser bleiben; die volle Strenge lohnt sich erst bei fremden Nutzern, die man nicht koordiniert.

7. Idempotenz

Sobald eine API über ein Netzwerk erreichbar ist, wird sie irgendwann dieselbe Anfrage doppelt erhalten — durch einen Wiederholungsversuch, eine unklare Zeitüberschreitung, eine erneute Zustellung. Das ist kein Fehler, sondern eine Eigenschaft verteilter Kommunikation. Ein langlebiger API-Entwurf nimmt das an, statt es zu ignorieren.

Die Entwurfsantwort ist Idempotenz: Operationen so gestalten, dass ihre mehrfache Ausführung dieselbe Wirkung hat wie die einmalige. Lesevorgänge sind das von Natur aus; das Setzen eines Wertes oder das Löschen per Kennung ebenfalls. Zustands- und geldändernde Operationen sind es nicht von selbst — für sie braucht es einen Mechanismus, etwa einen vom Aufrufer mitgegebenen Idempotenz-Schlüssel, an dem der Anbieter eine Wiederholung erkennt und nicht erneut wirkt. Wer diese Eigenschaft nicht im Vertrag vorsieht, zwingt jeden Nutzer, das Fehlen später zu umgehen. Die Tiefe dieses Themas — Schlüssel, Nebenläufigkeit, Zustellung — behandelt Idempotenz in verteilten Systemen; für den Entwurf zählt, sie von Anfang an einzuplanen.

Trade-off. Idempotenz im Entwurf vorzusehen kostet zusätzliche Mechanik — Schlüssel, Prüfung, Speicherung —, kauft dafür aber die Fähigkeit, sicher wiederholen zu dürfen, ohne Schaden anzurichten.

Kosten. Die Erkennung von Wiederholungen braucht Zustand und Sorgfalt bei Nebenläufigkeit; das ist echter Aufwand, der pro schreibender Operation anfällt.

Wann wir anders entscheiden. Für reine Lesevorgänge und natürlich idempotente Operationen baut man keinen Schlüsselmechanismus; der Aufwand gilt nur den Operationen, die von sich aus nicht wiederholbar sind.

8. Evolution ohne Kunden zu brechen

Das Ziel ist eine API, die jahrelang wächst, ohne je einen Nutzer zu überraschen. Das gelingt, wenn Änderungen überwiegend additiv geschehen und die seltenen inkompatiblen Schritte als geordneter Prozess ablaufen, nicht als Ereignis. Eine Schnittstelle sollte sich anfühlen wie ein Ort, an dem Neues hinzukommt, ohne dass Altes verschwindet.

API-Vertrag Nutzer Nutzer Nutzer fremdes System fremdes System fremdes System

Schema: Ein Vertrag, viele Nutzer, die man nicht kontrolliert. Eine brechende Änderung trifft sie alle zugleich — deshalb ist der geordnete Ausstieg keine Kür, sondern Pflicht.

Wird ein inkompatibler Schritt unvermeidbar, ist Deprecation der Weg: die alte Form als überholt markieren, die neue parallel anbieten, einen klaren Abschalttermin nennen und ihn kommunizieren, bevor er kommt. Der Ausstieg darf niemanden überraschen. Zwei Versionen eine Zeit lang parallel zu betreiben ist der Preis dafür, dass die Migration bei den Nutzern in deren Tempo geschehen kann statt unter Zwang.

Trade-off. Geordnete Evolution kauft die Verlässlichkeit für die Nutzer mit doppeltem Betrieb und langer Geduld beim Abschalten des Alten.

Kosten. Parallele Versionen und ein sauberer Deprecation-Prozess binden dauerhaft Kapazität — für Kommunikation, für den Parallelbetrieb, für die Begleitung der Migration.

Wann wir anders entscheiden. Bei einer kleinen, bekannten Nutzerschaft, die man direkt erreicht, kann ein kurzer, eng begleiteter Umstieg günstiger sein als ein langer Parallelbetrieb; je größer und anonymer die Nutzerschaft, desto länger und formeller muss der Prozess sein.

9. Typische Fehler

Die wiederkehrenden Muster, an denen langlebiger API-Entwurf scheitert — fast alle sind Varianten desselben Fehlers, die API für den Anbieter statt für den Nutzer zu entwerfen:

  • Interne Datenstrukturen direkt nach außen spiegeln und so fremde Systeme an das eigene Innenleben koppeln.
  • Mehr zusichern als nötig — Feldreihenfolge, Timing, unspezifizierte Grenzen —, das später zum unkündbaren Vertrag wird.
  • Aufzählungen und Objekte starr entwerfen, sodass kein neuer Wert und kein neues Feld additiv hinzukommen kann.
  • Fehler als formlosen Text statt als stabile, klassifizierte Codes gestalten, auf die Nutzer verlässlich reagieren könnten.
  • Interne Details in Fehlermeldungen durchsickern lassen und damit unfreiwillig zum Vertrag machen.
  • Idempotenz erst nachrüsten, wenn die ersten Doppelbuchungen aufgetreten sind, statt sie im Vertrag vorzusehen.
  • Zu früh und zu großzügig versionieren und so feine Evolution durch teure Vollversionen ersetzen.
  • Eine alte Version ohne angekündigten Termin abschalten und Nutzer ohne Vorwarnung brechen.
  • Beobachtbares Verhalten ändern in der Annahme, es sei nicht Teil des Vertrags, weil es nicht dokumentiert war.

10. Entscheidungs-Checkliste

Vor und während des Entwurfs einer langlebigen API der Reihe nach zu klären:

  • Für wen entworfen? Drückt die Schnittstelle die Fachlichkeit für den Konsumenten aus — oder spiegelt sie die interne Umsetzung des Produzenten?
  • Vertragsfläche bewusst? Ist klar, was zugesichert wird, und ist möglichst wenig darüber hinaus beobachtbar festgeschrieben?
  • Additiv wachsbar? Können neue Felder, Werte und Operationen hinzukommen, ohne Bestehendes zu verletzen?
  • Toleranter Leser? Überlesen beide Seiten, was sie nicht kennen, statt bei Unbekanntem zu brechen?
  • Fehler als Vertrag? Sind Fehler stabil, klassifiziert, maschinell auswertbar und frei von internen Details?
  • Client- und Serverfehler getrennt? Kann ein Aufrufer erkennen, ob er wiederholen darf oder korrigieren muss?
  • Idempotenz vorgesehen? Sind zustands- und geldändernde Operationen so entworfen, dass eine Wiederholung keinen Schaden anrichtet?
  • Versionierung als letztes Mittel? Ist entschieden, so viel wie möglich kompatibel zu lösen — und wo die Version getragen wird, falls sie nötig wird?
  • Geordneter Ausstieg? Gibt es einen Deprecation-Prozess mit Parallelbetrieb und angekündigtem Termin, bevor je etwas abgeschaltet wird?

Wer diese Fragen nicht beantworten kann, entwirft keine langlebige Schnittstelle, sondern ein Versprechen, das man später bricht.

FAQ

Was ist der häufigste Fehler beim API-Entwurf? Die API für den Anbieter statt für den Nutzer zu entwerfen — meist, indem interne Datenstrukturen direkt nach außen gespiegelt werden. Das ist im Moment am bequemsten und koppelt fremde Systeme an das eigene Innenleben, das man eigentlich frei ändern können wollte. Fast alle anderen Fehler sind Varianten davon.

Ist Rückwärtskompatibilität nicht irgendwann ein Klotz am Bein? Sie kostet, ja — man trägt überholte Formen mit. Aber die Alternative, Nutzer zu brechen, kostet mehr: verlorenes Vertrauen und stille Ausfälle in fremden Systemen. Die kompatible Lösung ist selten die eleganteste, aber fast immer die günstigere. Wird das Modell grundlegend falsch, ist eine sauber versionierte inkompatible Änderung der ehrliche Ausweg.

Welche Versionierung ist die richtige — Pfad, Header oder Medientyp? Keine ist überlegen. Der Pfad ist sichtbar und leicht zu routen, verführt aber zu ganzen neuen Versionen; Header und Medientyp sind feinkörniger, aber unsichtbarer und komplexer. Die Wahl folgt daraus, wer die Nutzer sind und wie sie bauen — nicht aus einer Rangordnung.

Warum gehören Fehler zum Vertrag? Weil Nutzer auf sie reagieren müssen. Ein Client verzweigt anhand des Fehlers — wiederholen oder korrigieren. Sind Fehler unklar oder wechselhaft, ist die API schwer zu benutzen, selbst wenn der Erfolgsfall makellos ist. Deshalb müssen Fehlercodes so stabil sein wie die Erfolgsantworten, und ihre Umdeutung ist ein Bruch wie jeder andere.

Braucht wirklich jede API Idempotenz? Nein. Reine Lesevorgänge und natürlich idempotente Operationen tragen sie schon in sich. Der Aufwand gilt zustands- und geldändernden Operationen, die nicht von selbst wiederholbar sind — dort aber lohnt er sich, weil das Netzwerk früher oder später Wiederholungen erzwingt.

Sollten wir die API zuerst entwerfen oder die Implementierung? Den Vertrag zuerst. Wer die Implementierung zuerst baut und die API daraus ableitet, spiegelt fast zwangsläufig internes Innenleben nach außen. Der Vertrag entworfen als Fachlichkeit, unabhängig von der Umsetzung, hält länger — weil die Umsetzung sich ändern darf, ohne den Vertrag zu berühren.

Weiterführend

Grundlage ist die Batunet Engineering Method: den Vertrag vor der Umsetzung entwerfen, für Veränderung bauen, niemanden überraschen.


Der Code hinter einer API ist Ihrer — Sie dürfen ihn jederzeit ändern. Die API selbst haben Sie verliehen. Guter Entwurf ist die Kunst, sie weiterzuentwickeln, ohne je zurückzufordern, worauf sich andere verlassen.

Referenzierte Entitäten

Ein konkretes Vorhaben in diesem Feld?

Reference Guides zeigen, wie wir denken. Für Ihr System sprechen Sie mit der Geschäftsführung — technisch, ohne Vertrieb.