| Component | Failure mode | Effect | Oorzaak | Maatregel | Implementatie Voorbeeld |
|---|---|---|---|---|---|
| Database | Verbinding met database verbreekt tijdens het ophalen van de database | het wordt niet opgeslagen in de database dat de notificatie verzonden is, en zal opnieuwe verzonden worden. | DDoS, verkeerd geconfigureerde container, internet problemen, crash | bij de start van de applicatie checken we de database connectie params. | Implementatie |
| Database | Verbinding met database verbreekt tijdens het weghalen uit de database | Er worden geen berichten in de queue gezet. | DDoS, verkeerd geconfigureerde container, internet problemen, crash | retry systeem wat berichten blijft proberen tot het lukt | |
| Database | data corruptie | berichten gaan verloren of raken corrupt | crash, externe vps conditions, hack, verkeerd geconfigureerde container | backups, data validation, transactional integrity | |
| External Message broker | Broker onbereikbaar voor plugin | het bericht wordt nooit verzonden | DDoS, verkeerd geconfigureerde container, internet problemen, crash, verkeerd geconfigureerd | crash met een error message dat de plugin beter geconfigureerd moet worden, en dat het manual moet gebeuren (bij startup). want dit is onze single point of failure | Implementatie Implementatie |
| External Message broker | Broker onbereikbaar voor Inbound Processor | het bericht wordt nooit uitgelezen en nooit verwerkt | DDoS, verkeerd geconfigureerde container, internet problemen, crash | bij de start van de applicatie checken we de rabbitMQ connectie params. | Implementatie Implementatie |
| External Message broker | Inbound Processor crasht na consume, vóór verwerking | bericht kwijt, nooit verstuurd | applicatie crash | het op spinnen van meerdere Inbound Processor containers | Implementatie, try it yourself: docker compose -f containers-docker-compose.yml up |
| External Message broker | Dubbele delivery van bericht | bericht wordt 2 keer verstuurd | zo werkt een rabbitMQ queue | checken op duplicate ID in de database, en negeer het 2e bericht | Implementatie |
| Internal Message broker | Broker onbereikbaar voor Scheduler | het bericht wordt nooit verzonden | DDoS, verkeerd geconfigureerde container, internet problemen, crash | de Scheduler verstuurd het bericht opnieuw als er na een tijd geen “verstuurd” confirmation is. | |
| Internal Message broker | Broker onbereikbaar voor Notification Worker | het bericht wordt nooit gelezen en dus nooit verzonden | DDoS, verkeerd geconfigureerde container, internet problemen, crash | bij de start van de applicatie checken we de rabbitMQ connectie params | Implementatie Implementatie |
| Internal Message broker | Notification Worker crasht na consume, vóór verwerking | bericht kwijt, nooit verstuurd | applicatie crash | de Scheduler verstuurd het bericht opnieuw als er na een tijd geen “verstuurd” confirmation is. | |
| Internal Message broker | Dubbele delivery van bericht | bericht wordt 2 keer verstuurd | zo werkt een rabbitMQ queue | checken op duplicate ID in de database, en negeer het 2e bericht | |
| OpenMRS plugin | verstuurd geen berichten | notificaties zullen nooit ontvangen worden | applicatie crash, mis configuratie, openMRS crash | een duidelijke handlijding over hoe je het moet installeren. | Implementatie Implementatie Guide |
| OpenMRS plugin | partial / malformed berichten | kunnen we niks mee | mis configuratie, openMRS crash | valideren van het berichten formaat. | Implementatie Implementatie |
| Docker | network failure | containers kunnen niet communiceren, berichten worden niet verwerkt | netwerk driver crash, container DNS failure, host firewall, overlay network issues | automatic container restart, netwerk connectivity monitoring bij startup | |
| VPS | disk vol | logs kunnen niet geschreven worden, database crashes, containers crashen | database groeit ongecontroleerd, temp files | disk space monitoring/alerting, cleanup scripts voor temp files | Implementatie |
| Notification Worker | External sender is unreachable | Er wordt geen bericht gestuurd | DDoS, verkeerd geconfigureerde container, internet problemen, crash | retry met exponential backoff. noteren in de DB dat het faalde | Implementatie |
| Notification Worker | External sender times out | Er wordt geen bericht gestuurd | DDoS, internet problemen, crash | retry met exponential backoff. noteren in de DB dat het faalde | Implementatie |
| Scheduler | Timing issue | berichten worden op verkeerde momenten gestuurd | timezone mismatch | alle tijden worden in UTC berekend. | Implementatie |