développeur PHP depuis 12 ans
Retour d'expérience de 20 mois
en informatique, la résilience est la capacité d'un système ou d'une architecture réseau à continuer de fonctionner en cas de panne
Beaucoup plus facile de se lancer aujourd'hui
Cart
Product
Customer
GET
GET
POST
Ajouter un produit au panier
{
"product_id": "e4dc6426-eb0f-42aa-9f77-f2f6f9e198f1",
"customer_id": "368c748f-d636-4acb-a632-d5257ffb0764",
"quantity": 1
}
Service A
Service B
Service C
Wrapping appels HTTP via des fault-handling librairies
https://github.com/Tolerance/Tolerance
<?php
$this->httpClient = new PluginClient(
new HttpClient,
[
new RetryPlugin(new CountLimited(new SleepWaiter(), 10)),
]
);
// L'appel ne change pas, tout le mécanisme est intégré dans le plugin
$this->httpClient->sendRequest($this->messageFactory->createRequest('GET', '/'));
Service
Stratégie de retry
POST
Product
{
"title": "Maillot de l'OM 93",
"quantity": 1,
"photo": "http://autresite.com/maillot.jpg"
}
Ajouter un produit à partir d'une photo existante
Déceptif et pourtant pas de notre faute
Source: CQRS Journey by microsoft
Source: CQRS Journey by microsoft
EventStore
EventBus
QueryStore
Publish
Listen
POST
Product
{
"title": "Maillot de l'OM 93",
"quantity": 1,
"photo": "http://autresite.com/maillot.jpg"
}
Ajouter un produit à partir d'une photo existante
On s'occupera de cette photo plus tard
ES
PhotoWasAdded
Ajouter un produit à partir d'une photo existante
PhotoWasAdded
EventBus
PhotoWasAdded
PhotoWasDownloaded
PhotoWasNotDownloaded
EventStore
Listener
Service Product
spoiler alert : c'est tout pareil
Query Storage
EventStore
App A
Query Storage
EventStore
App B
EventBus
EventBus comme canal de communication
Cart
Product
Customer
EventBus
Product
Cart
Customer
Cart
ProductWasRegistred
Publish
Listen
CustomerWasSignedUp
Publish
Listen
Cart
Product
Customer
GET
GET
POST
Ajouter un produit au panier
https://github.com/dreamhead/moco
Stub Server
https://github.com/Runscope/requestbin
Inspect HTTP calls
Tester un EventListener qui fait un appel HTTP
MyEvent
SUT
Mon test
Moco
requestbin
ack
EventBus
POST
Polling