Offline-First -sovelluksen arkkitehtuuri | Osa 1

Heinäkuussa 2020 Internetin käyttäjiä oli Statistan tutkimuksen mukaan 4.57 miljardia, eli noin 59% koko maapallon väestöstä. Tämä ei kuitenkaan tarkoita sitä, että yhteys olisi jatkuvaa tai että tiedonsiirtonopeudet olisivat kaikkialla samaa luokkaa kuin esimerkiksi Suomessa. Köyhien maiden syrjäseuduilla ei ole mitenkään tavatonta nähdä 56K-modeemia, joka pääsee valintayhteyden (dial-up) kautta maksimissaan 56 kbit/s -nopeuksiin.

Toisaalta hyväkin datayhteys saattaa yskähdellä jopa suurkaupungin keskellä, jos signaalit eivät rakenteiden tai maanmuotojen vuoksi löydä tietään laitteesta lähimmälle tukiasemalle. Lentokoneessa tai keskellä valtamerta on turha edes yrittää ja satelliittiyhteyksiin taas on harvalla varaa (nähtäväksi jää, josko Elon Muskin Starlink tuo tähän muutoksen).

Offline-First pähkinänkuoressa

Astutaan askel taaksepäin. Mobile-First on suunnittelufilosofia, joka tähtää parempaan käyttökokemukseen rajoittuneemmista mobiililaitteista lähtien. Käyttöliittymän ja -kokemuksen suunnittelu mobiililaitteille on haastavampaa kuin esim. pöytätietokoneille. Tämän vuoksi vaikein ja rajoittunein osa tehdään ensin.

Offline-First jatkaa samalla linjalla ottaen huomioon sovelluskäyttäjät, joilla on erittäin epävakaa tai täysin puuttuva Internet-yhteys. Tavoitteena on, että ainakin osa sovelluksen toiminnallisuudesta on käytettävissä myös offline-tilassa. Yhteyden muodostuessa sovelluksen tulisi osata siirtää dataa sovelluksesta verkkopalvelimelle ja toisin päin. Käytännön esimerkein offline-first tarkoittaa mm. seuraavia toiminnallisuuksia:

  • Sähköpostisovellus lataa saapuneet viestit laitteelle, jolloin niitä voi lukea myös yhteyden puuttuessa.
  • Pikaviestisovellus antaa lukea keskusteluja ja kirjoittaa vastauksia niihin. Viestit toimitetaan keskustelukumppanille yhteyden muodostettua.
  • Blogipalvelu mahdollistaa artikkelin kirjoittamisen yhteyden katkeamisen jälkeenkin. Muutokset tallennetaan lokaalisti laitteeseen ja työtä voidaan jatkaa myöhemminkin ilman yhteyttä. Vain lopullinen julkaisu vaatii Internet-yhteyden.

Suunnittelumallia ei ole rajattu pelkkiin web-sivuihin, vaan sitä voidaan hyödyntää myös työpöytä- ja mobiilisovelluksissa. Toisaalta suurin haaste liittyy juuri web-sivuihin, koska ne ovat perinteisesti vaatineet jatkuvaa Internet-yhteyttä. Vasta 2010-luvun alkupuolella HTML5:n myötä saatiin alustava tuki web-sovelluksille, jotka toimivat myös yhteydettömässä tilassa.

Online-First

Yhteydettömän tilan sovellukset kuulostavat hienolta, mutta on otettava huomioon, että tietyt sovellukset ovat niin online-painotteisia, ettei niiden avaintoiminnallisuutta pystytä toteuttamaan yhteydettömässä tilassa. Esimerkkejä näistä ovat:

  • Reaaliaikaiset online-pelit
  • Videochat-sovellukset
  • Livestriimaus
  • yms. sovellukset joissa reaaliaikavaatimukset ovat korkeat

Avaintoiminnallisuuden puutteesta huolimatta joitain toimintoja voidaan silti avata myös yhteydettömässä tilassa käytettäväksi. Esimerkiksi profiilitiedot, yhteystietolista, soittohistoria yms. ovat tietoja, jotka saattavat olla tärkeitä käyttäjälle ilman yhteyttäkin. Näiden tallentaminen lokaalisti on teknisesti triviaalia, mutta niiden olemassaolo tuo pientä lisäarvoa.

Seuraavaksi

Tämä artikkeli toimi kevyenä alustuksena offline-first -sovellusten maailmaan. Seuraavissa osissa on tarkoitus pureutua syvemmälle tekniseen toteutukseen korkean tason arkkitehtuurista itse sovellustason arkkitehtuuriin. Jos olet kuitenkin kärsimätön ja haluat ahmia aiheesta kaiken mahdollisen lisätiedon, seuraavassa on muutama lukuvinkki pimeneviin syysiltoihin:

Kirjoita kommentti

Nimi

Sähköpostiosoite