Eine Web Anwendung ohne stabile Internetanbindung? Wie bitte soll das funktionieren? Im Gegensatz zum Allways-on Paradigma traditioneller Web Anwendungen, ist beim Offline-first Ansatz eine permanente Netzwerkverbindung nicht Pflicht sondern Kür. Eine optimale User Experience auch bzw. gerade im Falle einer schlechten oder nicht vorhandenen Netzverbindung steht im Fokus des Anwendungsdesigns. „Act locally, sync globally“ statt Request-Response-Modell, heißt die Zauberformel. In seiner Session zeigt Lars Röwekamp, was dies im Detail bedeutet und wie die dazu passenden Architektur- und Kommunikationspattern aussehen. Aha-Effekte garantiert!
Offline-first Architekturen: Wer bitte braucht schon Internet
1. #WISSENTEILEN
Wer braucht schon Internet
Offline-First Architekturen
Lars Röwekamp | CIO New Technologies | open knowledge GmbH
@_openKnowledge | @mobileLarson
3. ÜBER MICH
Wer bin ich - und wenn ja, wie viele?
• CIO New Technologies
• Enterprise & Mobile
• Autor, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast
• Mehrfacher Vater, einfacher Ehemann
Lars Röwekamp (a.k.a. @mobileLarson)
LR
#WISSENTEILEN
16. Offline-first:
Offline ist kein Fehler sondern
einer von mehreren gültigen
Zuständen der Anwendung.
*
*Wi-Fi, LTE, 4G, 3G, Edge, GPS, Bluetooth, RFID
#WISSENTEILEN
17. Offline-first:
Offline ist der Default-Status der
Anwendung. Online ist lediglich
ein “nettes“ Enhancement.*
*für ausgewählte Szenarien
#WISSENTEILEN
31. App Cache GOTCHAS
#01: einmal Cache, immer Cache
#02: Manifest File als Cache-Indikator
#03: Inner non-cached Ressourcen
#04: ergänzend zum Browser-Cache
...
#99: App Cache ist DEPRECATED
#WISSENTEILEN
32. Service Worker
„Ein Service Worker ist ein Skript,
das vom Browser im Hintergrund
asynchron ausgeführt wird.“
#WISSENTEILEN
33. Service Worker
„Ein Service Worker ist ein Skript,
das zwischen deiner Web Seite und
dem Netzwerk steht.“
*
*programmierbarer Network-Proxy
#WISSENTEILEN
48. Web Storages
einfache Key/Value Storages
Session oder Local Storage
auch offline verfügbar
get / set / remove
clear / length
#WISSENTEILEN
49. Web Storages GOTCHAS
#01: synchrone API
#02: nur Strings als Values
#03: kein Index, keine QL
#04: 2-10Mb Speicherlimit
#05: Security Issues bei Local Storage
*
* https://github.com/bebraw/jswiki/wiki/Storage-libraries/
#WISSENTEILEN
50. Indexed DB
NoSQL Datenbank für Web Apps
speichert beliebige Objekte
Object Stores als Basis
Key / Object Records
TX & Cursor
#WISSENTEILEN
51. Indexed DB GOTCHAS
#01: komplex
#02: Pending TX bei Browser Shutdown
...
#99: Synchronization
*
*localForage (https://github.com/mozilla/localforage)
#WISSENTEILEN
55. PouchDB
Open-Source JavaScript In-Browser DB
Sync via Couch Replication Protocol
nutzt Indexed DB (o. Web SQL)
funktioniert online und offline
extrem klein (46KB)
#WISSENTEILEN
74. #WISSENTEILEN
Offline-first:
a.k.a. „Best of both Worlds“
Anwendung ist jederzeit nutzbar.
Keine Datenverluste falls offline.
Dank Caches & Co extrem schnell!
Sinnvolle Use-Cases evaluieren.