Lekce 05 / 07

Co appku pohání: backend, data a notifikace

Většina aplikací bez serveru neexistuje. Účty, API, offline režim, synchronizace a push notifikace srozumitelně a bez žargonu.

Ikonka na ploše je špička ledovce. To, co rozhoduje, jestli appka funguje, jestli se vám neztratí data zákazníků a kolik vás bude stát provoz, leží schované na serveru, kam uživatel nikdy nedohlédne. Tahle lekce je o té neviditelné polovině. Nemusíte jí rozumět do řádků kódu, ale měli byste vědět, že existuje a že je to skutečná práce.

Proč skoro každá appka potřebuje backend

Čistě „on-device“ aplikace, která žije celá v telefonu a s ničím venku nemluví, je dnes vzácnost. Kalkulačka, jednoduchá svítilna, offline převodník jednotek. Jakmile přidáte cokoliv živějšího, potřebujete server.

  • Účty a přihlášení. Když se má uživatel přihlásit na jiném telefonu a najít tam svoje data, musí ta data někde být. V telefonu samotném nejsou.
  • Sdílená data. Rezervace v restauraci, zprávy mezi lidmi, sklad v e-shopu. Cokoliv, co vidí víc lidí najednou, musí mít jedno společné místo.
  • Platby. Předplatné, nákupy, faktury. Ceny a oprávnění nikdy nenechte rozhodovat telefon, ten se dá podvrhnout. Patří na server.
  • Obsah, který se mění. Jídelní lístek, ceník, novinky. Když to chcete měnit bez toho, aby si lidé stahovali novou verzi appky, musí to téct ze serveru.

Pravidlo je jednoduché: pokud se data mají objevit i jinde než jen v jednom telefonu, je za appkou backend. A backend je samostatný projekt, ne přívažek k mobilní části.

API je most mezi appkou a serverem

Appka a server jsou dva oddělené světy. Spojuje je API, což si můžete představit jako jídelní lístek a okénko pro objednávky. Appka si „objedná“ („dej mi rezervace na zítra“, „ulož tuhle objednávku“) a server pošle zpátky odpověď. Lístek určuje, co všechno se dá objednat a v jaké podobě to přijde.

Vy jako zadavatel nemusíte umět ten kód napsat. Ale měli byste vědět tohle: každá obrazovka, která ukazuje živá data, znamená jeden nebo víc takových požadavků, a každý z nich někdo musí na serveru postavit, zabezpečit a ošetřit, co se stane, když to selže.

Proto když na schůzce řeknete „a ještě by appka mohla ukazovat stav skladu v reálném čase“, nepřidáváte jednu obrazovku. Přidáváte kus práce na serveru, na API i v appce. Není to drahé proto, že by si někdo přimýšlel. Je to drahé proto, že most se staví na obou březích.

Offline-first zní hezky, ale není zadarmo

Telefon ztrácí signál. V metru, ve výtahu, na vesnici, v zahraničí s vypnutými daty. Appka, která se v tu chvíli zasekne na věčném načítání, působí rozbitě, i když je vlastně v pořádku.

„Offline-first“ znamená, že appka si potřebná data drží i u sebe v telefonu, takže funguje i bez signálu a sama se sesynchronizuje, jakmile se připojí. Pro uživatele zázrak. Pro toho, kdo to staví, ta nejtěžší část celé appky.

Háček se jmenuje synchronizace a řešení konfliktů. Představte si, že si v offline poznámkové appce upravíte stejnou poznámku na telefonu i na tabletu, každou jinak. Když se obojí připojí, server dostane dvě pravdy. Kterou si nechat? Tu novější? Sloučit je? Nechat rozhodnout uživatele? Na tyhle otázky neexistuje jedna univerzální odpověď a každá appka je řeší trochu jinak.

Plný offline režim si objednejte tehdy, když ho appka opravdu potřebuje (terénní pracovník bez signálu, čtečka, poznámky). Pro běžnou appku, kde má uživatel skoro pořád připojení, často stačí slušně ošetřit výpadky a uložit rozdělanou práci. Je to zlomek nákladů.

Push notifikace: nejmocnější páka, kterou nejsnáz pokazíte

Push notifikace doručuje appce systém telefonu, i když ji uživatel zrovna nemá otevřenou. Apple to dělá přes svoji službu APNs, Google přes FCM. Vy si tyhle zkratky pamatovat nemusíte, jen vězte, že iOS a Android mají každý vlastní kanál a appka musí umět obojí.

Je to nejlepší nástroj na udržení uživatele, jaký na mobilu máte. A zároveň ten, kterým si uživatele nejrychleji rozhněváte.

  • Nejdřív se musíte zeptat. Bez svolení vám systém notifikace nepošle. A to svolení dostanete jen jednou, takže o něj neproste hned na první obrazovce, ale ve chvíli, kdy je jasné, k čemu to bude dobré.
  • Posílejte jen to, co má hodnotu pro uživatele. „Vaše zásilka je na cestě“ ano. „Chybíte nám, vraťte se“ potřetí za týden ne.
  • Únava z notifikací končí odinstalací. Když appka otravuje, člověk si notifikace vypne, a pak appku smaže. Ztratíte ho navždy kvůli pár zprávám navíc.

Dobré pravidlo: u každé notifikace si představte, že vám přijde v sobotu večer. Kdyby vás naštvala, neposílejte ji.

Kde leží vaše data a kdo je doopravdy vlastní

Tohle je otázka, kterou si položte dřív, než se postaví první řádek. Účty uživatelů, jejich data, platby, to všechno někde fyzicky leží a někdo k tomu má klíče.

  • Přihlašování (auth). Jak se uživatel přihlásí a jak se uchovávají hesla. Nikdy se nestaví doma na koleně, používají se ověřené postupy a služby.
  • Kde data bydlí. Databáze někde běží, typicky na serveru poskytovatele. Vy byste měli vědět kde, v jaké zemi a kdo k tomu má přístup.
  • GDPR. Jakmile sbíráte osobní údaje uživatelů v EU, platí pro vás pravidla o jejich ochraně, o souhlasu i o právu na výmaz. To není volitelné a appka na to musí být připravená od začátku.

A teď to nejdůležitější, co vám u jiných možná neřeknou. Trvejte na tom, abyste backend, databázi i uživatelské účty vlastnili vy, ne dodavatel. Když celá vaše zákaznická základna sedí na účtu nějaké agentury nebo v uzavřené platformě, ze které data nedostanete ven, nestavíte si majetek. Stavíte si zlatý klec. My ve FRGTN to děláme tak, že kód, server i účty zůstávají vaše, a kdykoliv s nimi můžete odejít jinam. Appka je váš byznys. Ať jsou i klíče k ní vaše.