Prezentace k přednášce o spolehlivém doručování zpráv do mobilních zařízení a o tom, jak jsme místo nemonitorovatelného a nespolehlivého kanálu postavili robustní monitorovatelnou platformu.
Prezentováno na Storyous Dev Conference #1
Záznam: https://youtu.be/XR0FLeNCrj8
2. Co doručujeme za zprávy
- Přidání položky na účet
- Hlavní součást produkt
- Objednaná svíčková musí být vidět na všech
tabletech v podniku
- Jak zaručit doručení při přechodu mezi
několika WiFi sítěmi a mobilními daty?
3.
4. Co doručujeme za zprávy
- Tisky účtenek
- Každý tablet nemá přístup ke všem tiskárnám
- Příklad:
- Objednám pivo a svíčkovou
- Pivo se tiskne o patro níž na baru
- Svíčková ve vedlejší budově v kuchyni
5. Co doručujeme za zprávy
- Změna denního menu
- Dostupnost nové verze aplikace
- Klienti sami neaktualizují, musíme je k tomu donutit
7. Na počátku Offline
- TCP socket
- Na první pohled rychlá a cool věc, ale …
- Nemonitorovatelnost
- Nespolehlivost
- Nelze škálovat
- Bottleneck
- Rychlost
8. PHP-FPM
Původní stack
- Většina komunikace
dovnitř i ven z mobilního
zařízení přes TCP socket
- Komunikace mezi
socketovým serverem a
aplikací přes FPM
- Občas dotaz přes HTTP
GET na další APIs
9. Požadavky na nový systém
- Monitorovatelnost
- Alerting
- Debugging
- Škálovatelnost
- Jednoduchá spravovatelnost
- DevOps
- Testovatelnost
- Spolehlivost
- Doručit 100% zpráv
10. Hledání náhrady socketu
- socket.io
- HTTP/2 + Server Sent Events
- rapid.io (STRV)
- Firebase Realtime Database
- Firebase Cloud Messaging
- Amazon SNS
- Ably.io
- Pushy.me
Každá alternativa ale víceméně jen nahrazovala transportní vrstvu.
14. Finální stack
- Aplikace odesílá zprávu do
Message API
- Message API zprávu
zpřístupňuje přes HTTP Message
API
Get Message
15. Finální stack
- Aplikace odesílá zprávu do
Message API
- Message API zprávu
zpřístupňuje přes HTTP
- Zároveň odesílá notifikaci
přes Pushy
Message
API
16. Finální stack
- Aplikace odesílá zprávu do
Message API
- Message API zprávu
zpřístupňuje přes HTTP
- Zároveň odesílá notifikaci
přes Pushy
- Mobilní zařízení vyzvedává
seznam zpráv
Message
API
Get Message
17. Finální stack
- Aplikace odesílá zprávu do
Message API
- Message API zprávu
zpřístupňuje přes HTTP
- Zároveň odesílá notifikaci
přes Pushy
- Mobilní zařízení vyzvedává
seznam zpráv
- Volá micro APIs pro
zpracování konkrétního
typu zprávy
Message
API
Get Message
20. Mínusy
- Pár chyb jsme přidělali
- Rychlost
- Inhouse vývoj
Plusy
- Robustnost
- Spolehlivost
- Snadná spravovatelnost
- Monitoring
- Jednodušší debugging
- Testovatelnost komponent
- Výhody HTTP
- Připravenost na HTTP/2
- Vhodné pro náš produkt
- Happiness
21.
22. Pošta
- Adresát dostává oznámení
o doručení a zásilku si osobně
vyzvedne.
- Pokud oznámení o očekávané
zásilce nepřichází, jde se zeptat
na poštu.
- Pro kontrolu se může i u
odesílatele zkontrolovat, jestli
zprávu odeslal.
Message API
- Adresát dostává notifikaci a
volá API, kde získá kompletní
payload.
- Má záložní mechanismus pro
případ výpadku notifikační
služby.
- Klient má záložní mechanismus
pro případ výpadku Message
API.
23. Co si z přednášky odnést
- Nevyvíjejte něco co nepotřebujete
- Když už to potřebujete, tak ať to je:
- Monitorovatelné
- Spolehlivé
- Škálovatelné
- Jednoduše spravovatelné
- Zvažte, zda potřebujete nejrychlejší řešení
- Stavíte MMO hru, nebo pokladní systém?
- Opensource?
- Bude!
Notas del editor
Co děláme
Vzít si do ruky 2 tablety - ukázat demonstrativně objednávku - obrázky na dalšim slidu