Kujenga Kumbukumbu za Nafasi
Nilitumia miezi mitatu nikijenga Pinterest kwa ajili ya ulimwengu wa kimwili.
Wazo ni rahisi. Unaacha maelezo ya kidijitali, picha, au hadithi kwenye kuratibu maalum za GPS. Watu wanaweza kuziona tu wanapokuwa mahali hapo hasa kimwili. Hii inageuza ulimwengu halisi kuwa mkusanyiko wa vibanda vya muda vya kidijitali (digital time capsules).
Kujenga programu inayotegemea eneo ni vigumu zaidi kuliko inavyoonekana. Hapa kuna nilichojifunza kuhusu teknolojia iliyotumika (tech stack).
Kanzi Data ya Nafasi (The Spatial Database)
Huwezi kuhifadhi latitudo na longitudo kama namba rahisi tu ikiwa unataka kukuza mfumo. Unahitaji viashiria vya nafasi (spatial indexes). Nilitumia PostGIS pamoja na PostgreSQL.
Inashughulikia:
- Uwekaji wa viashiria vya nafasi kwa kutumia R-tree
- Mahesabu ya umbali yaliyojumuishwa
- Hoja za ukaribu za haraka
Ikiwa unahitaji kupata kumbukumbu ndani ya mita 50 kutoka kwa mtumiaji, PostGIS inafanya kazi kubwa.
Mbinu ya Caching (The Caching Strategy)
Maeneo maarufu ya utalii hupata maombi mengi sana. Kuigusa kanzi data kila baada ya sekunda mbili ni vibaya kwa utendaji. Nilitumia amri za Redis GEO ili kuhifadhi (cache) ID za kumbukumbu katika maeneo yenye mzunguko mkubwa.
Kidokezo cha kitaalamu: Usihifadhi (cache) kitu kizima (object) kwenye Redis. Hifadhi ID pekee. Hii inafanya matumizi ya kumbukumbu yawe madogo na inapunguza muda wa hoja kutoka ms 20 hadi ms 2.
Mfumo wa Upakiaji (The Upload Pattern)
Ikiwa seva yako itashughulikia kila upakiaji wa picha, itazidiwa na mzigo na kuzima. Nilitumia mfumo wa upakiaji wa awamu mbili:
- Mteja (client) huomba URL iliyosainiwa mapema (pre-signed URL) kutoka kwa seva
- Mteja hupakia faili moja kwa moja kwenye Cloudflare R2
- Mteja huambia seva wakati upakiaji unapoisha
Nilichagua R2 badala ya S3 kwa sababu hakuna ada za kutolea data (egress fees). Hii huokoa pesa wakati watumiaji wanapopakua vyombo vya habari.
Kilichofanya Kazi
- PostGIS na Redis GEO hufanya hoja za nafasi kuwa za haraka.
- Upakiaji wa moja kwa moja kwenye R2 unaruhusu mfumo wa nyuma (backend) kukuza uwezo.
- Go na Gin hutoa utendaji wa juu kwa matumizi madogo ya kumbukumbu.
- Faragha inayobadilika (Private, Friends, au Public) inawalinda watumiaji.
Kilichofeli
- Usahihi wa GPS haueleweki katika miji yenye majengo marefu.
- Tatizo la "cold start" ni la kweli. Programu inahitaji watumiaji wengi ili ianze kuhisi ina uhai.
- Udhibiti wa maudhui unahitaji uangalizi wa mara kwa mara.
Kujenga hili kulinifundisha kuwa eneo la kimwili ni kipimo ambacho hakijathaminiwi vya kutosha kwa programu za kijamii. Maudhui ya kidijitali yanahisi kuwa na maana zaidi yanapounganishwa na mahali halisi.
Jumuiya ya kujifunza ya hiari: https://t.me/GyaanSetuAi
