Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Distributed Systems Design
1. DISTRIBUTED SYSTEMS
DESIGN
brains might melt… mine did!
@dvdstelt
#blaak
Dennis van der Stelt
Software Architect
http://dennis.bloggingabout.net/
dennis@bloggingabout.net
NServiceBus Community Champ
Dennis van der Stelt
2. slide heb ik er zelf tussen gezet voor kudos richting mark & sandra! ;-)
Dennis van der Stelt
10. why all the layers?
Separation of concerns
Flexibility & Reusability
Scalability
Dennis van der Stelt
11. monolithic
A monolithic design is characterized by such tight coupling
among modules that they really have no independent existence.
Dennis van der Stelt
32. Tenets
services are autonomous
of service orientation
boundaries are explicit
share schema & contract,
not class & type
compatibility is based on policy
Dennis van der Stelt
42. PUBLISH EVENTS
Save event
status locally
Save event
status locally
Customer Disabled
Subscribe to customer status updates
Unpaid Invoices
Subscribe invoice updates
Retrieve companies
Dennis van der Stelt
60. strategic customer
regular customer
Sales Service
Ordering
Regular
Customers
?
Strategic
Customers
Warehouse Service
Shipping
Product Service
Products
Dennis van der Stelt
61. strategic customer
regular customer
Sales Service
Ordering
subscribe
Regular
Customers
Strategic
Customers
Warehouse Service
Shipping
Product Service
Products
Dennis van der Stelt
62. strategic customer
regular customer
Sales Service
Ordering
publish
Regular
Customers
Strategic
Customers
Warehouse Service
Shipping
Product Service
Products
Dennis van der Stelt
66. A service is the
technical authority
of a specific
business capability
If you share data over services you likely
have your boundaries wrong
Dennis van der Stelt
Hekelaan recruitersHelaasvindenzewél het werkvoor je, zoals PHP klussen in Limburg.BlaakSelectie : Actief in Zuid-Holland met vacaturesgefilterd op Rotterdam & Den Haag
Disclaimer : Jon Snow doesn’t know everything, me neither! ;-)I will explain concepts, I will answer questionsI will not go into discussion if it’s wrong or right or better or worse
Wie kent deze plaat?Wie bouwt applicaties volgens deze architectuurWie negeert deze architectuur bewust?
Haight-Ashbury in San Francisco
Network is reliableLatency isn’t a problemBandwith isn’t a problemNetwork is secure (only disconnected computer that is turned off!)Topology won’t change (servers moved across domains)Administrator will know what to doTransport cost isn’t a problem (bandwith, serialization)Network is homogeneous (all speak same protocol)
System is atomic/monolithicSystem is finishedBusiness logic can and should be centralizedMonolithic, één database, is wat ik altijd bouwdeFinished = greatest trick we ever pulled on businessCentralized = wat alle lagen zijn, wat een webservice is? Mag niet centralized?!?!?!
Seperation of concerns : Put the right stuff where it belongs, like business logic. But how many times haven’t you simply used the layers to pass data on to the next layer?Reusability : How many times have you reused business logic related code, like calculating how much something costs? How many times cross applications?Scalability : Have you succesfully scaled out layers over servers?wie schaalt zijn lagen over verschillende servers?wie heeft een database die performance bottleneck is?zien we connectie met de drie additionele fallacies?Database changes, column added. Goes up all the way to user interface to add a single column! What if entire tables change?
We creëren eigenlijk continu monolitische applicaties!Maar wat is een monolitische applicatie nu?A system which consists out of modules that all depend on each other.They cannot be used seperatly and cannot be reused by other software.
Instead of looking at it as computers, load balancer and physical systems...Look at it as an application, calling out to another application using messages. The messages are transferred to the correct handler by the framework.That way we don’t have a hard spatial coupling to our methods. And we can also choose to route our messages to wherever we want!
RPC benchmarks are performed as micro benchmark multiple times.Benchmarks don’t lie, but liers do benchmarks“Connection refused by the remote host”Threads allocate 1MB memory on stack. Data is stored in Generation 0, 1 & 2.GC comes by, tries to free up Gen2 memory & calls everything to complete stop!IIS recycles app pool. DB transactions have to time out though! How long? 5 to 10 minutes!!!
- Weinighandvaten HOE we ditbereiken- Run-time aspecten van services alsscalability, availability, en robustnesswordennietbehandeld.
Capability -> Generic value-add business capability (3rd party credit card processing or rating components)Activity -> Specific application-level business capabilityProcess -> Orchestration of business processUtility -> Generic infrastructural functionality
Websites need companiesContracts need to know which companies are still availableCustomer Services needs to know if bills are paid or not and if it's a higher ranking customerBilling needs to know the price of the products to calculate correct scoreNew requirementProducts need to know if a special discount or bulk discount was made
Hoe bouw je een systeem wat nooit down gaat, zelfs niet tijdens updates.
Wat schaalbaar en flexibel is, maar toch te bouwen is door junior ontwikkelaars.
Exceptionsmogenoptredenvanwege bugs, nooitvanwege business errorsTeken je process flow goed!!!