Umgang mit generierten Klassen am Beispiel von AVRO

AVRO ist derzeit ein sehr populäres Serialisierungs-Framework. Dank Schemaregistry für Enterprise-Anforderungen bestens gerüstet. Es macht Sinn, die generierten Klassen im Code zu verwenden - allerdings ist der Code dann oft mit Zusatzcode zugepflastert, der mit der generierten Klasse interagiert, obwohl die Funktionalität eigentlich besser in die integrierte Klasse passen würde. Ein kurzer Exkurs: Große Schemas verwalten Ein Finding war, dass komplexe Schemas in einer *.avsc File wenig Sinn machen. Die Herausforderung ist, dass beim ersten Vorkommnis ein record typ definiert wird und bei weiterer Verwendung nur mehr referenziert wird – das ist echt mühsam.

Microservices und stabile Interfaces

Microservices sind ein beliebtes Tool, um komplexe Domänen zu zerteilen. Doch am Ende des Tages macht die Entscheidung des übermäßigen Einsatzes – in manchen Fällen – dann mehr Kopfweh als Nutzen. Vor Kurzem ist mir dabei folgendes Beispiel im Zuge einer Diskussion in den Sinn gekommen: Schauen wir uns einen Teil eines Webshops an: Order Management mit der Aufgabe den Bestellvorgang abzuwickeln Pay Service mit der Aufgabe der Bezahlung Neben fachlichen Aspekten, die für das Schneiden wichtig sind, welche Eigenschaft sind noch wichtig? Stabile Interfaces. Schaut man sich diese an, so merkt man, dass diese relativ einfach sind und eigentlich über die Zeit hinweg stabil sein sollten: Pay Service: Input Parameter: Geldbetrag

Sinnvoller Einsatz von Table-Partitioning in SQL Server

Wann macht Table-Partioning Sinn? Vor kurzem hatte ich die Aufgabe, eine Liste aus Rechnungen filterbar zu machen – das schwierige dabei war, dass die Anzahl der Rechnungen nicht bekannt ist und diese auch noch hierarchisch waren (1 Rechnung hat 0..n Positionen – wobei die Positionen von unterschiedlichem Typ sein können). Ebenfalls war die Anforderung “über Jahre hinweg eine stabile Performance zu haben”. Herausforderung 1: Die Pagination in der Übersichtsliste von Rechnungen ist auf der Rechnung – d.h. 10 Element auf der Seite entspricht 10 Rechnungen mit 0..n Positionen. Was bei großen Tabelle gut funktioniert, ist das Suchen nach gewissen Kriterien: e.g. gib mir alle Positionen mit der SomeValue = 123:

Asp.Net Core Controller mit OpenAPI

Wenn man im Projekt die Situation hat, dass man z.B. zwei unterschiedliche Personen hat, welche einerseits den OpenAPI Contract schreiben und anderseits implementieren, macht es Sinn, den Contract-First Approch zu verfolgen. Bei .NET geht das nicht so out-of-the-box, wie z.B. bei Spring mit Maven. Schritt 1: NSwag Studio laden Das neueste NSwag Studio kann man von hier beziehen: https://github.com/RicoSuter/NSwag/releases. In NSwag kann man den OpenAPI Contract pasten und on-the-fly generieren lassen. Ein gutes Beispiel bekommt man hier: https://editor-next.swagger.io/

Domain-Driven-Design

Bei Domain-Driven-Design gibt es zwei Flughöhen: Strategic: Hier befasst man sich mit dem „schneiden“ der Domänen Tactical: Hier geht es bis in die Implementierung Ich möchte meine Gedanken zu Tactical zu Blatt bringen. Analyse von Aggregaten Aggregate umschließen jene Entitäten, welche eine atomare Einheit bilden sollen. Das hört sich auf den ersten Blick nutzlos an – aber in fast allen Applikationen muss man von parallelem arbeiten an einem Datensatz durch mehrere Personen ausgehen. Und hier ist das Thema Konsistenz dann ein großes Thema.

Requirements dokumentieren in agilgen Projekten

Welche Funktionalität ist in meiner Software? Diese Frage ist oft in agilen Projekten nicht einfach zu beantworten – zumindest seriös. Ist das Benutzerhandbuch die einzig valide Quelle? Folgende Vorgehensweise habe ich kennengelernt (es gibt auch viele andere): 1. User-Story Map Als erstes versucht man die User-Stories zu priorisieren. Da kann eine User-Story Map helfen, um eine gute End-to-End-Sicht zu bekommen. Wichtig ist nur zu verstehen: Man soll nicht versuchen, alles in eine User-Story Map zu pressen – man kann ohne weiteres mehrere haben.

Auvergne

Die Reise führte uns nach Auvergne. Die beste Verbindung gibt es wieder über VIE nach LYS. Das 40ige Lebensjahr heuer gut gefeiert – der CO2 Fußabdruck ist aber dementsprechend hoch. Die erste Station war in Clermont-Ferrand. Und zwar in einem alten Schloss. Es war ein schöner, großer Garten dabei. Leider war das Haus im Inneren so niedrig, dass man sich 20 Mal am Tag den Schädl angehaut hat. Zähneputzen in 45 Grad Kopfneigung. Aber es ist ein gutes Base-Camp:

Schottland

Begonnen hat die Reise in Edinburgh Flughafen. Dort haben wir bei Enterprise ein Auto ausgeborgt – wieder über den ÖAMTC. Vorteil: kein Selbstbehalt und gute Konditionen. Mit dem Auto ging es nach Stirling. Das Fahren auf der „falsche“ Seite fühlt sich komisch an – da ich aber sehr wenig fahre, war die Umstellung auch nicht sonderlich groß. In Stirling haben wir in einer AirBnb geschlafen – eigenes Bad und geteilte Küche mit der Bewohnerin. Stirling selbst ist ok – die wichtigsten Geschäfte und eine kleine Essmeile gabs auch. Die Geschäfte waren wichtig, da unser Gepäck mit all dem Gewand in Wien zurückgeblieben ist. Mittwoch geflogen – Samstag bekommen … Idealer Voraussetzungen für einen Wanderurlaub …

Toskana

1 Woche vor Osteren ging es in die Toskana. Geschlafen haben wir in Siena. Das wichtigste in der Stadt: wenn man ein Mietauto hat muss man unbedingt beim richtigen Tor reinfahren und sich im Vorfeld sehr gut informieren, wo Parkplätze außerhalb der Z.T.L. sind. Siena selbst ist sehr schön. Weitere Highlights findet man auf der Karte: Pienza und die Gladiator Drehorte: bei Sonnenuntergang eher schwierig zu fotografieren - tendenziell bei Sonnenaufgang. Die Stadt selber ist auch sehr sehenswert - wenngleich auch nicht groß Greve in Chianti: sehr schöne Wanderungen (nach Rother Wanderführer) - leider waren alle Restaurants auf der Wegstrecke zu San Gimignano: Sehr, sehr schöne Stadt. Schöne Ausblicke Grosseto: Sollte einer der Highlights sein - am Ende des Tages war das Zentrum in Ordnung - aber nicht unbedingt sehenswert. Der zweite Standort Florenz - ebenfalls sehr zu empfehlen. Highlights:

Fenster absichern

Viele tragische Unfälle derselben Art sind in den Medien zu finden: Kind aus Fenster in den Tod gestürzt Kleinkind stürzt in Wien-Hernals aus Fenster Hamburg: Junge stirbt nach Sturz aus dem sechsten Stock Auch findet man folgende Aussage: Durchschnittlich alle vier Wochen stürzt in Österreich ein Kind unter 15 Jahren aus dem Fenster Es gibt für Eltern wohl nichts Schlimmeres. Prävention Der Vormieter hat den Fensterrahmen angebohrt und mit einem billigen Schloss gesichert. Hat nicht gut gehalten und im gekippten Zustand hat es nur recht schlecht gesichert.