Our tech stack

ababa.tech programuoja su Typescript programavimo kalba. Kiekviename mūsų projekte panaudojame visas šias technologijas ir dar krūvą kitų smulkesnių technologijų. Čia aprašėme šiek tiek apie kiekvieną technologiją – ką ji daro, kodėl ji reikalinga, kodėl ją naudojame. 

Technologijos, kurias naudojame visiems savo projektams:

1

Typescript (TS) – programavimo kalba, paremta ant Javascript (JS). Ši programavimo kalba yra tobulesnė už JS, nes leidžia naudoti kintamųjų tipus. Tai ženkliai sumažina klaidų tikimybę programuojant ir pagreitina programavimą. Vertinant kartu su JS, ši programavimo kalba yra populiariausia pasaulyje jau dešimt metų. Šią programavimo kalbą pasirinkome būtent dėl jos populiarumo – kuo dažniau naudojama programavimo kalba, tuo mažiau „prirakiname” savo klientą prie savęs. Ši kalba populiari ne šiaip sau – mat leidžia iš tiesų patogiai ir greitai sukurti rimtas sistemas.

2

React – JS/TS biblioteka, skirta vartotojo sąsajoms kurti. Biblioteka reiškia, kad yra paruošto kodo gabaliukų, kurių nereikia programuoti nuo nulio. Tai panaikina vieną iš labiausiai erzinančių programuotojo darbo dalių – rašyti karkasinį kodą (angl. boilerplate) vietoje to, kuris iš tiesų kažką daro. Karkasinis kodas reikalingas, kad sistema turėtų griaučius ir atitiktų pasaulines gerąsias praktikas. Galite jį įsivaizduoti kaip Lego kaladėles. Jūsų Lego namelis statomas iš šių kaladėlių, o React yra tarsi dėžutė, kurioje yra įvairių kaladėlių. Visgi, React nauda yra ne pačioje bibliotekoje, o ekosistemoje, kuri yra pastatyta aplink šią biblioteka. Tūkstančiai programuotojų kuria begalias įvairiausių kaladėlių būtent React’ui. Beje, React sukūrė Facebook’as, tai galite būti tikri, kad jis niekur nedings!Dar viena iš pagrindinių priežasčių, kodėl mes ir daugelis kitų programuotojų naudoja React yra palyginus mažas galvos skausmas kurti grafinius sprendimus. Nenaudojant React, sukurti internetinį projektą būtų gerokai sunkiau.

3

Node.js – yra technologija leidžianti rašyti programinį kodą Typescript arba Javascript kalbomis. Node.js leidžia programuoti logiką serveryje, pavyzdžiui, kai paspaudžiate mygtuką „purchase”, Node.js aplinkoje kodas atlieka tą pinigų perdavimo iš jūsų į pardavėjo operaciją. 

Mes ant šios Node.js technologijos uždedame dar NestJS (daugiau sekančiame punkte), kuris mums pagreitina programavimą. Bet pats Node.js yra sistemos logikos branduolys.

4

NestJS – karkasas skirtas patobulinti Node.js veikimą. Karkasas, galima sakyti, yra „rimtesnė” bibliotekos versija. Jei biblioteka yra tiesiog Lego kaladėlių dėžutė, tai karkasas yra panaši dėžutė, tik su instrukcijomis kaip tas kaladėles sudėti. Priklausomai nuo karkaso, šios instrukcijos gali būti lengvi patarimai (kaip yra react’e) arba ypatingai griežtos taisyklės. NestJS yra griežtas karkasas. Jis liepia programuotojams programuoti vienu ir ne kitu būdu. Tai reiškia, kad bet koks programuotojas, kuris supranta šį karkasą, galės lengvai paimti kito programuotojo kurtą projektą. Mes tai labai vertiname, nes vėlgi neužrakiname kliento su technologija, kurią išmanome tik mes.

5

Git – git’as, kalbant paprastai, yra procesas, kuris nustato kaip programuotojai turi organizuoti programinį kodą. Tai yra reikalinga, kad nepasimestų kodas, būtų galima pamatyti programavimo eiliškumą, kas darė kurią dalį, išvengti konfliktų, kai du programuotojai kuria panašią vietą. Visa tai ir ne tik vadinama kodo versijavimu. Kai dirba vienas programuotojas, tai nėra taip svarbu, bet kai vienu metu programuoja keli programuotojai – neišvengiama.

6

PostgreSQL – tai yra reliacinė duomenų bazė (DB), skirta valdyti sistemos duomenis. Yra dvi pagrindinės duomenų bazių grupės – reliacinės ir nereleacinės. Paprastai kalbant, reliacines galite įsivaizduoti kaip excel’į, o nereleacines kaip hierarchinį medį. Mes dirbame su „excel’ine” duomenų baze, mat šios DB yra universalesnės. PostgreSQL yra viena iš populiariausių šios grupės duomenų bazių ir jos populiarumas yra vis augantis lyginant su alternatyvomis, kurių naudojimas stabiliai ir iš lėto krenta, pvz MySQL.

Dar viena priežastis yra kur kas paprastesnė – dažniausiai viena ar kita duomenų bazė yra pasirenkama dėl programuotojo įpročio, patirties, patogumo. Čia ir mes pasirinkome dirbti su šia duomenų baze, kuriant sistemas, mat tiesiog esame įpratę su ja dirbti.

7

Docker – paprastai kalbant yra programa, kuri kodą įdeda į konteinerį ir standartizuoja jo paleidimą. Įsivaizduokite jūrinį konteinerį. Kažkas kinijoje įdeda prekes į konteinerį, jį ant fūros, vėliau į traukinį, po to į krovininį laivą. Laivas nuplaukia į Lietuvą ir čia tas pats procesas tik į kitą pusę. Akcentuojama vieta – tas konteineris tinka visur, tiek ant kiniško laivo, tiek ant lietuviškos fūros. Docker’is daro tą patį, tik kodui. Jis leidžia tą patį kodą paleisti ant Windows’ų, Linux’ų, Mac’o ir t.t.

Ši programa yra naudojama, nes be jos, vienas programuotojas turi vienokią programavimo aplinką, o kitas – kitokią. Abejose aplinkose kodas neveiks be papildomų problemų sprendimo. Docker’is šią problemą išsprendžia, nes supakuoja visą aplinką į konteinerį.

8

Digital Ocean (DO) – Serverių talpinimo platforma. Būtent čia mes talpiname visas savo sukurtas sistemas, tame tarpe ir šią svetainę. Kai jūs einate į vieną iš mūsų sistemų, jūs iš tiesų einate į DO serverius. Digital Ocean yra gerokai draugiškesnis programuotojui nei Amazon, Google ar Microsoft teikiamos alternatyvos. Taip pat Digital Ocean teikiamas talpinimas yra pigesnis už minėtas alternatyvas. Galiausiai, DO turi daug straipsnių, kurie padeda programuotojui greitai išspręsti tam tikrą problemą.

9

Sass – plėtinys skirtas stiliaus rašymo kalbai CSS. CSS yra atsakinga už visą sistemų stilių. Šrifto spalva, tarpukas tarp eilučių, fono spalva ir šimtai kitų nustatymų yra konfigūruojami per CSS. CSS yra labai elementari kalba, ją yra lengva išmokti, tačiau ji turi nemažai trūkumų. Sass praplėčia CSS funkcionalumą ir pagreitina programavimą N-kartų.

10

Redux – ši technologija yra reikalinga bet kuriai programai, kuri naudoja React. Redux’as yra tarsi atmintis React’ui, mat be jo React’as beveik nieko neatsimena. Įsivaizduokite, kad esate e-parduotuvėje ir paspaudėte „Add to cart” mygtuką. Nenaudojant Redux’o, sistema iškart pamirš, kad jūs paspaudėte šį mygtuką ir negalės pridėti jūsų prekės į krepšelį. Redux’as taip pat naudojamas navigacijai. Pvz paspaudėte nuorodą į kontaktų puslapį meniu juostoje ir spaudžiate „back” mygtuką. Redux’as atsimena, kur jūs prieš tai buvote ir grąžina jus ten.

Be Redux’o arba vieno iš jo alternatyvų jokia didesnė sistema negali funkcionuoti tvarkingai. Maži projektėliai, pvz koks primityvus skaičiuotuvas gali apsieiti, bet jei sistemai reikia „navigacijos”, tai reikia ir Redux’o.

11

CircleCI – platforma automatizuojanti programinio kodo „įdėjimą” į serverį. Ši technologija reikšmingai greitina programuotojo darbą ir mažina klaidų tikimybę.

Nenaudojant šios technologijos, programuotojui, parašius kodą savo notepad’e, reiktų rankiniu būdu jį įdėti į testavimo aplinką, tada patestavus, pataisyti vėl savo notepad’e, įkelti į testavimo aplinką, įsitikinti, kad viskas OK ir tada įkelti į „gyvają” aplinką, kurią mato sistemos naudotojai. Sunku suprasti? Ha! Būtent dėl to ir naudojamas CircleCI, kuris leidžia visą šį procesą automatizuoti. Šis įrankis gali automatiškai patestuoti sistemą, atšaukti atnaujinimą, jei kažkas įvyko ne taip, informuoti programuotojus ar klientą, kad įvyko atnaujinimas ir t.t.

12

Sentry – yra programa skirta aptikti programines klaidas. Jos veikimas yra ganėtinai kėblus, bet galite įsivaizduoti, kad Sentry tarsi įsisiurbia į sistemos branduolį kaip koks virusas (bet geras virusas!) ir ištikus kažkokiai klaidai, iškart siunčia perspėjimus programuotojams, kad kažkas netvarkoje. Sentry aptinka visus nulūžimus, neužkrautus puslapius, striginėjimus iškart, kai jie įvyksta, dėl to programuotojai gali anksčiau pradėti tvarkyti kritines klaidas. Iš tiesų, būtent dėl šios technologijos, mes retkarčiais sutvarkome klaidą, kol mūsų klientai net nesuprato, kad ji egzistuoja!

13

Redis – yra technologija skirta ypatingai dideliu greičiu pateikti parinktus elementus. Dažniausiai tai vadinama cache’inimu (kešinimas). Žmonės dažnai būna girdėję šį žodį pakalbėję su SEO specialistais. Tai cache’inimas sprendžia greičio problemą. Pvz kai reikia užkrauti daug prekių vienu metu arba įvedus į paiešką „kompiuteris” iš tūkstančių prekių reikia rodyti tik kelias. Redis būtent tai ir sprendžia – užsaugo informaciją į specialią atmintį, iš kurios labai greitai galima užkrauti tą pačią informaciją. Galite įsivaizduoti, kad Redis yra operatyvioji atmintis kompiuteriuose (ram’as) arba jūsų „instinktyvioji” atmintis, kai prisiliečiate prie karštos keptuvės. Prisilietus prie tokios keptuvės jūsų ranka tiesiog nuskrenda nuo jos, tai panašiai Redis atskraidina informaciją iki jūsų kompo.

14

Nginx – yra programa skirta valdyti serverį. Jei Digital Ocean’e mes išsinuomojame serverį, mes gauname tiesiog folderiuką internete kaip koks Google Drive. Bet kad šis folderiukas pradėtų funkcionuoti taip, kad tiktų pavežti svetainę, mums reikia Nginx’o. Ši technologija yra tarsi operacinė sistema, „ant kurios” veikia sistema. Na iš tiesų ant Nginx veikia Node.js, ant kurio veikia NestJS. 

Šiame puslapyje nuoširdžiai bandėme paaiškinti mūsų naudojamas technologijas kaip tik galime paprasčiau, bet jei vis tiek pasirodė komplikuota nepergyvenkite – jums nereikia žinoti, kaip dirbti su kiekviena technologija, tai yra programuotojo darbas! 

Visgi, suprasti, kad tokios technologijos egzistuoja yra pravartu renkantis programavimo komandą jūsų sistemos kūrimui.

Typescript (TS)

Programavimo kalba, paremta ant Javascript (JS). Ši programavimo kalba yra tobulesnė už JS, nes leidžia naudoti kintamųjų tipus. Tai ženkliai sumažina klaidų tikimybę programuojant ir pagreitina programavimą. Vertinant kartu su JS, ši programavimo kalba yra populiariausia pasaulyje jau dešimt metų. Šią programavimo kalbą pasirinkome būtent dėl jos populiarumo – kuo dažniau naudojama programavimo kalba, tuo mažiau „prirakiname” savo klientą prie savęs. Ši kalba populiari ne šiaip sau – mat leidžia iš tiesų patogiai ir greitai sukurti rimtas sistemas.

React

JS/TS biblioteka, skirta vartotojo sąsajoms kurti. Biblioteka reiškia, kad yra paruošto kodo gabaliukų, kurių nereikia programuoti nuo nulio. Tai panaikina vieną iš labiausiai erzinančių programuotojo darbo dalių – rašyti karkasinį kodą (angl. boilerplate) vietoje to, kuris iš tiesų kažką daro. Karkasinis kodas reikalingas, kad sistema turėtų griaučius ir atitiktų pasaulines gerąsias praktikas. Galite jį įsivaizduoti kaip Lego kaladėles. Jūsų Lego namelis statomas iš šių kaladėlių, o React yra tarsi dėžutė, kurioje yra įvairių kaladėlių. Visgi, React nauda yra ne pačioje bibliotekoje, o ekosistemoje, kuri yra pastatyta aplink šią biblioteka. Tūkstančiai programuotojų kuria begalias įvairiausių kaladėlių būtent React’ui. Beje, React sukūrė Facebook’as, tai galite būti tikri, kad jis niekur nedings!Dar viena iš pagrindinių priežasčių, kodėl mes ir daugelis kitų programuotojų naudoja React yra palyginus mažas galvos skausmas kurti grafinius sprendimus. Nenaudojant React, sukurti internetinį projektą būtų gerokai sunkiau.