Problem Nr. 3: End-to-End-Testing

Mit End-to-End-Tests gibt es ähnliche Probleme wie mit Entwicklungsumgebungen. Früher war es recht einfach, eine neue Entwicklungsumgebung mit virtuellen Maschinen oder Containern zu erstellen. Ebenso war es recht einfach, eine Testsuite mit Selenium zu erstellen, um Geschäftsabläufe durchzugehen und sicherzustellen, dass sie funktionieren, bevor eine neue Version bereitgestellt wird.

Stellenmarkt
  1. PreSales Consultant (w/m/d) Security
    Bechtle Logistik & Service GmbH, Neckarsulm, Dortmund, Gaildorf
  2. Senior Projektmanager (w/m/d) SAP/ERP betriebswirtschaftliche Systeme
    Deutsche Welle, Bonn
Detailsuche

Mit Microservices können wir, selbst wenn wir alle oben genannten Probleme mit den entsprechenden Umgebungen lösen, nicht mehr generell behaupten, dass ein System funktioniert. Wir können höchstens behaupten, dass ein System mit bestimmten Versionen der aktuellen Dienste und in einer bestimmten Konfiguration zu einem bestimmten Zeitpunkt funktioniert. Das ist ein riesiger Unterschied!

Es war sehr schwierig, Leute davon zu überzeugen, dass wir nur ein paar dieser End-to-End-Tests machen konnten. Und dass es nicht reichte, sie im Continuous-Integration-Ablauf laufen zu lassen.

Vielmehr sollten sie kontinuierlich laufen. Und sie sollten im Produktivsystem laufen und dementsprechend Hinweise produzieren. Ich habe unzählige Male Cindy Sridharans Artikel Testing in production, the safe way geteilt, um meinen Standpunkt klarzumachen.

Problem Nr. 4: eine riesige, gemeinsam genutzte Datenbank

Golem Akademie
  1. Advanced Python - Fortgeschrittene Programmierthemen
    16./17. September 2021, online
  2. Einführung in die Programmierung mit Rust
    21.-24. September 2021, online
  3. Webentwicklung mit React and Typescript
    20.-24. September 2021, online
Weitere IT-Trainings

Ein einfacher Weg, um von Monolithen wegzukommen und gleichzeitig die Datenkonsistenz zu wahren, ist die Verwendung einer gemeinsamen Datenbank. Sie erhöht die Betriebslast nicht und macht es einfach, einen Monolithen schrittweise zu zerlegen.

Allerdings hat sie auch ein paar beträchtliche Nachteile. Abgesehen davon, dass es sich um einen offensichtlichen SPOF handelt, der einigen Prinzipien der serviceorientierten Architektur zuwider läuft, gibt es noch weitere schwierige Fragen wie: Legen Sie einen Benutzer pro Dienst an? Haben Sie fein abgestufte Berechtigungen, so dass Dienst A nur aus bestimmten Tabellen lesen oder in bestimmte Tabellen schreiben kann?

Was ist, wenn jemand unbeabsichtigt einen Index entfernt? Woher wissen wir, wie viele Dienste verschiedene Tabellen verwenden? Wie sieht es mit der Skalierung aus?

Das alles zu entwirren, ist ein ganz eigenes Problem. Technisch gesehen ist es wahrscheinlich nicht trivial - wenn man bedenkt, dass Datenbanken dazu neigen, Software zu überdauern. Eine Lösung des Problems mithilfe von Datenreplikation (Kafka, AWS DMS oder Ähnlichem) setzt voraus, dass die Entwicklerteams die Besonderheiten von Datenbanken verstehen und zum Beispiel wissen, wie mit doppelten Ereignissen umzugehen ist.

Problem Nr. 5: API-Gateways

API-Gateways sind typisch für serviceorientierte Architekturen. Sie sind hilfreich, um das Backend von den Frontend-Konsumenten zu entkoppeln. Sie sind auch gut, wenn es um die Implementierung von Aggregationen am Endpunkt, um Rate-Limiting oder Authentifizierungen im gesamten System geht.

In jüngster Zeit bewegt sich die Branche hin zu Backend-für-Frontend-Architekturen, bei denen diese Gateways für jeden einzelnen Frontend-Nutzer - iOS-, Android-, Web- oder Desktop-Apps - eingesetzt werden, so dass ihre Entwicklung voneinander getrennt stattfindet.

Handbuch für Softwareentwickler: Das Standardwerk für professionelles Software Engineering

Wie bei allem entwickeln Menschen auch hier neue, kreative Anwendungsfälle dafür. Manchmal ist es nur ein kleiner Hack, um die mobile Anwendung abwärtskompatibel zu machen. Plötzlich wird aber das "API-Gateway" zum SPOF - weil die Leute es einfacher finden, die Authentifizierung an einem einzigen Ort zu machen - und zusätzlich dazu bekommt es eine unbeabsichtigte Anwendungslogik.

Statt eines Monolithen, der den gesamten Datenverkehr bewältigt, haben Sie dafür jetzt einen selbstgebauten Spring-Boot-Service. Da kann doch eigentlich nichts schiefgehen ...

Entwickler erkennen zwar schnell, dass das ein Fehler ist. Da aber viele Anpassungen nötig sind, können sie diesen Teil manchmal nicht durch zustandslose, skalierbare Teile ersetzen.

Die größten API-Gateway-Probleme entstehen, wenn Endpunkte verwendet werden, die nicht paginiert sind oder massenhaft Rückmeldungen liefern. Oder wenn eine Aggregation ohne Fallback-Mechanismen verwendet wird und somit ein einziger API-Aufruf das Gateway zum Absturz bringen kann.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Problem Nr. 1: zu kleinteilige DiensteProblem Nr. 6: Timeouts, Wiederholungen und Ausfallsicherheit 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6.  


Aktuell auf der Startseite von Golem.de
Software
Elon Musk verrät Teslas Tricks zur Bewältigung der Chipkrise

Teslas Autos haben viel Elektronik an Bord, doch die Chipkrise scheint dem Unternehmen nichts anzuhaben. Elon Musk verrät, wie das geschafft wurde.

Software: Elon Musk verrät Teslas Tricks zur Bewältigung der Chipkrise
Artikel
  1. Sexismus: Mitarbeiter von Blizzard wenden sich gegen Management
    Sexismus
    Mitarbeiter von Blizzard wenden sich gegen Management

    Der Konflikt bei Activision Blizzard eskaliert, die Arbeit an World of Warcraft soll weitgehend eingestellt sein.

  2. Surface: Microsoft patentiert ungewöhnliches Scharnier für Notebooks
    Surface
    Microsoft patentiert ungewöhnliches Scharnier für Notebooks

    Baut Microsoft ein neues Surface-Gerät? Patentgrafiken zeigen zumindest ein bisher unbekanntes Gerät mit einem ungewöhnlichen Scharnier.

  3. Unwetter: Wie viel Hochwasser verträgt ein Elektroauto?
    Unwetter
    Wie viel Hochwasser verträgt ein Elektroauto?

    Deutsche Hersteller machen sehr unterschiedliche Angaben über die Wassertauglichkeit von Elektroautos. Und können Teslas wirklich schwimmen?
    Ein Bericht von Friedhelm Greis

Marconry 23. Jul 2021 / Themenstart

Wie Bluejanis schrieb, eine programmiersprachenunabhängige Spezifikation (z.B. OpenAPI...

TheUnichi 20. Jul 2021 / Themenstart

Es geht darum, ein gesamtes Framework in einzelnes Paket zu schmeißen. Man braucht nie...

ds4real 20. Jul 2021 / Themenstart

Man kann Dinge im Code erzwingen - aber die Erfordernisse unterscheiden sich sogar von...

ds4real 20. Jul 2021 / Themenstart

Ich arbeite selbst seit über 10 Jahren im Java-Umfeld, kenne mich aber auch in vielen...

mnementh 19. Jul 2021 / Themenstart

All diese Ansätze dienen ja im Endeffekt dazu komplexe Software zu handhaben. Aber meine...

Kommentieren



Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Schnäppchen • Crucial Ballistix 16GB Kit 3200MHz 66,66€ • PCGH-Gaming-PCs stark reduziert (u. a. PC mit RTX 3060 & Ryzen 5 5600X 1.400€) • Samsung 27" Curved FHD 240Hz 239,90€ • OnePlus Nord CE 5G 128GB 299,49€ • Microsoft Flight Simulator Xbox Series X 69,99€ • 3 für 2 Spiele bei MM [Werbung]
    •  /