Društvena mreža za spajanje s ljudima na temelju zajedničkih interesa
Ljudi se pronalaze po tome što ih zanima: zajednički interesi predlažu spajanja, a poruke i obavijesti stižu istog trena — jednako na mobitelu i na računalu.
Izazov
Persice je povezivao ljude međusobno i s događajima oko zajedničkih interesa, a u takvom rješenju poruka koja zakasni znači razgovor koji se nikad ne dogodi. Chat, spajanja i notifikacije morali su stizati istog trena, na mobitelu i na računalu, iz baze koda dovoljno male da je startup tim može održavati.
Naš pristup
Krenuli smo od trenutka koji je najvažniji: netko pošalje poruku i druga je strana vidi odmah. Chat, spajanja i obavijesti putuju preko websocketa s pub/sub slojem ispod, a jedna autentikacija na tokenima pokriva i websocket vezu i REST API. Da bi dvije aplikacije bile održive za mali tim, mobilnu i desktop aplikaciju gradili smo iz jedne baze koda sa statičkim tipovima — servisi, modeli i storeovi stanja napisani su jednom — a brzima ih je držalo asinkrono učitavanje modula i build s tree-shakingom. Prijava preko Facebooka, Twittera i LinkedIna svela je registraciju na jedan klik, a kontinuirani deploy, pokriven unit i end-to-end testovima, svaku je promjenu isti dan stavljao pred korisnike.
Rezultati
Startup je dobio jedno rješenje u dvije aplikacije u kojima poruke, spajanja i obavijesti stižu istog trena — isto iskustvo na mobitelu i na računalu, a mali ih je tim držao u pokretu obje odjednom kroz dvije godine suradnje.
Što smo napravili
- Dvije single-page aplikacije — mobilnu i desktop — gradili smo iz jedne baze koda sa statičkim tipovima, pa su servisi, modeli i storeovi stanja napisani jednom i koriste se u objema
- Chat, spajanje i notifikacije uživo isporučili smo preko websocketa, s pub/sub slojem u pozadini
- REST i websockete pokrili smo jednim autentikacijskim slojem na tokenima
- Povezali smo prijavu preko Facebooka, Twittera i LinkedIna, pa registracija traje jedan klik
- Obje aplikacije držali smo brzima asinkronim učitavanjem modula i produkcijskim buildom s tree-shakingom
- Postavili smo kontinuirani deploy na aplikacijske servere iza reverse proxyja, sa statičkim datotekama u objektnoj pohrani
- Bazu koda pokrili smo unit i end-to-end testovima, pa je svaki deploy išao van bez ručne provjere