Laravel in Frankfurt
Laravel-Entwicklung in Frankfurt für Banken und Versicherer
Eine Laravel-Agentur in Frankfurt für Finanzunternehmen. Ein Protokoll, das Lesezugriffe erfasst, Aufbewahrungsfristen, die ein Löschverlangen überstimmen, und Vier-Augen-Freigabe im Schema.
Frankfurt ist der Ort, an dem ein Backend nicht mehr danach beurteilt wird, was es tut, sondern danach, was es belegen kann.
Die Käufer sind Banken, Versicherer, Asset Manager und Zahlungsinstitute. Von ihrer Software wird nicht nur erwartet, dass sie funktioniert, sondern dass sie Monate später jemandem Rechenschaft gibt, der nicht dabei war - aus Aufzeichnungen, die damals geschrieben wurden. Diese eine Anforderung formt eine Laravel-Anwendung stärker um als jedes Performance-Ziel.
Ein Frankfurter Protokoll muss Lesezugriffe erfassen, nicht nur Schreibzugriffe
Die meisten Anwendungen protokollieren Änderungen. Finanzinstitute müssen wissen, wer hingesehen hat.
Ein von einem Berater geöffneter Kundendatensatz ist ein protokollwürdiger Vorgang, und kein Framework protokolliert ihn, weil die überwältigende Mehrheit der Anwendungen keinen Grund hat, sich dafür zu interessieren. Es wird also zum Entwurf: ein einziger Lesepfad, über den Kundendaten geholt werden, eine Tabelle mit wer, wann, welcher Datensatz und welche genannte Begründung, und ein Query-Log mit dem tatsächlichen Statement statt seiner Rekonstruktion.
Am Anfang kostet das eine Woche. Nachträglich, wenn eine Prüfung zwei Jahre Zugriffshistorie sehen will, heißt die Antwort, dass die Anwendung es nicht weiß.
Aufbewahrung und Löschung zeigen in Frankfurt in verschiedene Richtungen
Das ist der Konflikt, der bis ins Schema reicht, und in einer Datenschutzerklärung ist er nicht lösbar.
Das deutsche Handelsrecht verlangt, bestimmte Unterlagen über Jahre aufzubewahren. Das Datenschutzrecht gibt einer Person das Recht, ihre Daten löschen zu lassen. Beides gilt, und eine Anwendung, die nur das Zweite umsetzt, löscht etwas, das sie später vorlegen müsste.
Auflösen lässt es sich über einen dritten Zustand. Der Datensatz ist weder live noch weg, sondern eingeschränkt - lesbar nur für den Prozess mit Rechtsgrundlage, aus jeder gewöhnlichen Abfrage ausgeschlossen, und die Einschränkung selbst als eigener Vorgang festgehalten. Das ist eine echte Spalte, ein Global Scope und eine dokumentierte Ausnahme, kein Flag.
Deshalb ist ein Soft Delete kein Löschen Pflichtlektüre, bevor jemand die Migration schreibt. Eine deleted_at-Spalte erfüllt keine der beiden Pflichten. Sie verbirgt eine Zeile vor den Abfragen, die zu filtern daran denken, und lässt sie lesbar für alle, die es vergessen - also das Schlechteste aus beiden Welten.
Freigabe gehört in die Laravel-Daten, nicht auf den Bildschirm
Das Vier-Augen-Prinzip ist in Frankfurt Routine und wird routinemäßig falsch gebaut.
Eine Freigabe in der Oberfläche ist eine Gewohnheit. Ein Console-Command, ein Cron-Job oder ein künftiger Entwickler unter Zeitdruck schreibt die Zeile direkt, und nichts im System widerspricht. Was trägt, ist ein Änderungsantrag als Datensatz - vorgeschlagene Werte, Antragsteller, Freigeber, Zeitpunkt -, bei dem die Live-Zeile nur durch den anwendenden Übergang geschrieben wird.
Dieselbe Logik gilt für Berechtigungen überhaupt. Autorisierung ist nicht Authentifizierung, und in einem beaufsichtigten Institut ist der Unterschied nicht akademisch - gefragt wird, ob ein Export, ein Report oder ein internes Werkzeug Datensätze erreichen könnte, die der Bediener nicht sehen durfte.
Eine Frankfurter Auslagerung reicht bis in den Code
Wenn ein beaufsichtigtes Institut Softwarearbeit einkauft, kommen die aufsichtlichen Erwartungen an Auslagerungen mit dem Einkauf mit, und ein Teil davon landet in der Anwendung statt im Vertrag.
Prüfungsrechte sind das deutlichste Beispiel. Das Institut muss die Vereinbarung prüfen lassen können, und das heißt praktisch - der Dienstleister kann Nachweise vorlegen statt Zusicherungen. Wer hatte Zugriff worauf, welche Änderungen wurden wann ausgerollt, wie wurde ein Release freigegeben, wo wurden Daten verarbeitet. Eine Anwendung, die das ohnehin festhält, beantwortet eine Prüfung in einer Woche. Eine, die das nicht tut, erzeugt eine Rekonstruktion.
Unterauftragnehmer müssen aufzählbar sein, und daran scheitern die meisten Anwendungen. Jeder Dritte, den die Daten erreichen, gehört zur Kette, auch die, die wie Werkzeug aussehen, und das Institut braucht die Liste mit Zwecken und Standorten statt eines Satzes, es gebe keine. Diese Liste zu dem zu machen, woraus die Anwendung ihre Integrationen liest, statt zu einer Beschreibung davon, hält sie wahr.
Ein Ausstiegsplan ist verlangt, und er ist ein technisches Artefakt. Was das Institut bei Beendigung bekommt - den Code, die Daten in einem dokumentierten Format, die Infrastrukturdefinitionen, die Zugangsdaten - und wie lange es dauert. Die ehrliche Fassung dieses Dokuments benennt, was schwierig wäre, und die ist mehr wert als eine, die alles für portabel erklärt.
Laravel-Testdaten für ein Frankfurter Haus, ohne die Produktionsdatenbank
Der schnellste Weg zu realistischen Testdaten ist eine Kopie der Produktion, und in einem beaufsichtigten Institut ist es auch der schnellste Weg zu einem Vorfall.
Eine Produktionskopie auf dem Laptop eines Entwicklers ist eine Offenlegung, die auf eine verlorene Tasche wartet, und sie wird nicht akzeptabel, weil die Platte verschlüsselt ist oder jemand versprochen hat, sie zu löschen. Die Arbeitsannahme ist also - Produktionsdaten verlassen die Produktion nicht. Die Testumgebungen brauchen damit Daten, die realistisch sind, ohne echt zu sein.
Anonymisierung ist schwerer als Namen zu ersetzen, denn die referentielle Integrität muss sie überleben. Derselbe Kunde muss über sechs Tabellen derselbe Kunde bleiben, sonst reizt der Datenbestand genau die Codepfade nicht mehr, auf die es ankommt - die Transformation ist deshalb deterministisch pro Kennung und nicht zufällig pro Zeile. Datumswerte werden einheitlich verschoben statt einzeln, sonst ergibt die Abfolge der Ereignisse keinen Sinn mehr. Und Freitextfelder sind der Teil, den man vergisst - ein Notizfeld enthält Namen, Kontonummern und manchmal ein Passwort, und keine feldbezogene Regel erfasst das verlässlich. Was ein gutes Argument dafür ist, Freitext in Testdaten wegzulassen statt zu versuchen, ihn zu säubern.
Erzeugte Daten sind die bessere Antwort, wo sie sich hinbekommen lassen. Eine Factory, die ein plausibles Portfolio erzeugt - Konten mit Historie, Transaktionen mit Verteilungen, die nach etwas aussehen, die unangenehmen Sonderfälle absichtlich enthalten - gibt der Testsuite etwas, das Produktionsdaten nie geben, nämlich im Voraus bekannte und reproduzierbare Fälle. Die Sonderfälle sind der Punkt. Eine Produktionskopie enthält die, die schon passiert sind. Ein erzeugter Bestand kann die enthalten, über die man sich Sorgen macht.
Kaufmännisch
Umfang vor Beginn schriftlich, Preis pro Projekt. Der Rahmen auf Länderebene - was der deutsche Datenschutz von einem Dienstleister erwartet, das E-Rechnungsformat, Hosting - steht auf der Länderseite Deutschland.
Abgerechnet von der Codefacture Yazılım A.Ş. in der Türkei, in Euro, per Überweisung auf ein IBAN-Konto, ohne türkische Umsatzsteuer unter der Befreiung für exportierte Leistungen. Dieser Name steht später in Ihrem Auslagerungsregister, deshalb gehört er früh in die Unterlagen.
