DotnetMinorNotes

Architectuur

Architecton

Vroeger vergeleken met bouwwereld

In de IT kan je opnieuw beginnen als iets omvalt. In de bouwwereld niet (Refactoren van een huis kan niet)

Architectuur beslissingen

Wat?

Beslissingen die wel heel erg duur zijn om later nog aan te moeten passen

Wie?

De architect

Waarom?

De architect heeft genoeg ervaring om dit te kunnen weten

Hoe?

Eerst kijken wat deze applicatie nodig heeft

SOA

Service Oriented Architectureel

Het idee

Service bussen

Hoe werkt het?

Soorten servicebus

Producten

Voordelen

Nadelen

Web scale IT

Web scale

Toolbox

Microservices

SOA, maar dan met een event bus in plaats van een service bus

CQRS

Command Query Responsibility Segregation

CQRS

Event Driven Architecture

Event sourcing

Data niet meer opslaan als data, maar als series van events. Dit heeft ook weer toepassing op bijvoorbeeld de CQRS structuur

CQRS met events

Actor model

Frameworks als Akka.NET, MS Orleans, e.d.

Polyglot X

Per service kiezen hoe je de service inricht

BASE / NoSQL

Domain driven design

Services

Type services

Front end services

Bijvoorbeeld een MVC website en krijgt vaak een database met alle artiekelen, zodat het niet uitmaakt of de boeken service offline is (zie CQRS)

Microservices met cache

Integration service

Communicatie met de buitenwereld

Capability oriented service

Een service die suggesties doet voor welke boeken je moet kopen

Data oriented service

Heeft als taak om data te bewaren voor een langere tijd en dit deelt met anderen

Process oriented service

Bijvoorbeeld een polis aanvraag service

Communicatie soorten

Events

Wanneer events?

Commands

Wanneer commands?

Services bepalen

Wel splitsen

Niet splitsen

Microservices vs SOA

Eventual consistency

Wordt BASE genoemd. Dit is min of meer het tegenovergestelde van ACID

BASE

ACID

CAP Theorem

Driehoek met Consistency, Availability and Partition Tolerance (replicatie mogelijkheden)

SOA

Combinatie van Consistency en Partition tolerance

Web scale

Combinatie van Partition tolerance en Availability