Blockchain este cuvântul pe care îl auzim din ce în ce mai des în ultimii ani în diverse contexte. Este considerată o tehnologie care are potențialul de a aduce o schimbare și cea care dă startul unui nou val de inovație. Poate te-ai gândit deja să folosești această tehnologie pentru următorul produs sau proiect pe care vrei să-l dezvolți, dar nu ești sigur de unde să începi. În cele ce urmează, vom analiza aspectele de care trebuie să ții cont înainte de a folosi tehnologia.
Adoptarea unei tehnologii inovative vine la pachet cu o serie de considerente, întrucât implică o schimbare radicală. Acest lucru necesită timp. De asemenea, presupune ieșirea din zona de confort - atât pentru tine cât și pentru echipă, utilizatorii și industria ta. Prin urmare, adoptarea acesteia trebuie să aibă loc într-un moment potrivit: când nevoia de a inova și beneficiile unei schimbări depășesc inconvenientele procesului. Acesta este, de fapt, și modul în care s-a născut blockchain: să rezolve o problemă.
Promisiunea Blockchain este crearea unei rețele peer-to-peer pe baza unui registru distribuit ce garantează imposibilitatea de a schimba datele introduse. Mai simplu spus, oferă siguranță și încredere într-un mediu căruia îi lipsesc aceste aspecte. Tehnologia a fost concepută în așa fel încât, modificarea datelor să fie imposibilă (sau cel puțin incredibil de dificil de modificat). Astfel, funcționează ca o istorie permanentă a evenimentelor.
În aparență, totul este simplu. Cu excepția faptului că vine la pachet cu o serie de costuri. Pentru că Blockchain rezolvă o serie de probleme într-o manieră inovatoare, se remarcă automat, o schimbare de paradigmă. Această schimbare vine cu o serie de provocări. O parte dintre acestea, însă, s-ar putea să nu fie evidente de la început pentru că inovația pune sub semnul întrebării tocmai lucrurile cu care suntem obișnuiți. Informațiile de mai jos vin să precizeze aspectele de care trebuie să ții cont înainte de a lua decizia de schimbare.
Cum mă asigur că anumite standarde sunt îndeplinite (ex: GDPR)?
Ce se întâmplă atunci când se produce o eroare umană în momentul în care datele sunt introduse în *blockchain*?
Care sunt efectele unor cerințe noi care necesită schimbarea datelor din blockchain?
Bineînțeles, există deja o serie de tehnici care ajută la rezolvarea acestor provocări, însă sunt aspecte de care trebuie să se țină cont întrucât reprezintă schimbări ale modului în care se opera într-un sistem centralizat.
Utilizatorii tăi trebuie să comunice cu blockchain. Într-un sistem pur descentralizat, utilizatorii nu ar trebui să comunice cu o entitate centrală, ci cu însuși blockchain. Acest lucru nu este ușor și necesită efort din partea utilizatorilor tăi. Pentru a face uz de sisteme descentralizate, este nevoie de software specializat. Utilizatorii tăi trebuie să înțeleagă, de la început, acest aspect și să fie dispuși să treacă printr-o perioadă de învățare Pe de altă parte, utilizatorii sunt deja obișnuiți să interacționeze, în diverse moduri, cu un soft. În funcție de nevoia ta, valoarea pe care o poți oferi utilizatorilor tăi este să găsești o metodă prin care să faci un mix între tehnologiile folosite într-un mediu centralizat și blockcain. În felul acesta le vei oferi acestora lucrurile cu care sunt obișnuiți beneficiind, în același timp, de avantajele blockchain.
Programatorii trebuie să se adapteze la această nouă paradigmă. Prin natura sa, dezvoltarea aplicațiilor pe blockchain este asemănătoare cu dezvoltarea firmware: din momentul în care ai lansat aplicația, aceasta ajunge pe mii de dispozitive asupra cărora nu ai control (sau ai puțin spre deloc). Acest lucru implică o serie de costuri ridicate pentru o eventuală modificare ulterioară. Practic, dacă nu perfecționezi aplicația de la început, vei plăti costurile mai târziu. Aceasta presupune, de asemenea, ca o mare parte dintre bunele practici cu care programatorii sunt obișnuiți, să nu funcționeze atât de bine în cazul blockchain:continous integration, incremental builds și chiar și metodologia Agile. Bineînțeles, poți continua folosirea acestor practici interne, însă prima versiune a produsului ar trebui să fie completă și stabilă.
Datele din Blockchain nu pot fi schimbate. Acest aspect impune realizarea unui produs de calitate superioară încă de la început, lucru ce are impact asupra bugetului proiectului, deoarece va fi nevoie să aloci mai multe resurse pentru proiectarea și testarea produsului. Se spune că procesul de testare nu poate să demonstreze că o bucată de cod nu are buguri, ci numai faptul că toate bugurile cunoscute au fost rezolvate. Astfel, procesul de a asigura calitatea produsului începe încă din faza de proiectare. Va trebui să se ia în calcul alocarea de timp necesară pentru a analiza toate posibilele obstacole: de la limitări și consecințe pe termen lung la cazuri excepționale și implicații ce țin de securitate. Este indicată aplicarea unei serii de măsuri de calitate. A avea o echipă specializată în zona de testare este un alt aspect important. Chiar dacă pornim de la un sistem bine proiectat și scriem cod excelent, sunt șanse mari să se strecoare erori pe parcursul procesului. Acest lucru se întâmplă, deoarece este dificil să-ți testezi propriul cod. Oamenii obișnuiesc să construiască un model mental în momentul în care încearcă să rezolve o problemă, lucru ce se reflectă și în cazul programatorilor: vor folosi același model mental atât pentru scrierea codului cât și pentru testarea acestuia. Acest lucru este normal. Dar o echipă de testare dedicată se poate asigura de calitatea softului folosind un alt model mental. De asemenea, bugetarea unui număr considerabil de ore de testare este un lucru de care trebuie să ții cont. Deși pare șocant, regula, de obicei, este ca pentru fiecare săptămână de codare să se aloce între 5-10 săptămâni de testare. Testarea blockchain nu este doar o modalitate de a asigura calitatea softului ci și o metodă de reducere a riscurilor.
Securitatea este de maximă importanță. Codul tău este accesibil, într-o formă sau alta, oricui deține un nod în blockchain (iar în cazul blockchainurilor publice este accesibil tuturor). Astfel că, securitatea joacă un rol crucial pe parcursul întregului ciclu de dezvoltare software. Mai ales că, odată lansat produsul, codul nu poate fi modificat. Dacă există un bug în soft, sunt puține lucruri pe care le poți face pentru a remedia situația, întrucât nu poți fixa ușor codul așa cum ai face într-un mediu centralizat. Așadar, există posibilitatea ca acest lucru să fie exploatat într-o manieră nedorită de tine.
Tehnologia nu a ajuns încă la stadiul de maturitate. Ecosistemul este încă în stadiu incipient și cu toate că se fac eforturi constante pentru a crea instrumente noi care să faciliteze dezvoltarea pe blockchain, acestea nu sunt încă la fel de stabile ca cele existente deja pentru tehnologii centralizate. Astfel că, deseori, programatorii trebuie să conștientizeze că ceea este ușor de implementat în cazul altor tehnologii, este destul de complex când vine vorba de blockchain.
Probabil că după ce ai citit rândurile de mai sus înclini spre a alege alte tehnologii în detrimentul blockchain, însă nu trebuie să uiți că sunt deja soluții existente care să te ajute să treci cu bine peste aceste provocări. Principala idee cu care trebuie să rămâi este că blockchain revoluționează atât domeniul în care este folosită cât și modul în care este dezvoltat produsul.
Ca și în cazul altor tehnologii, răspunsul este: depinde. Blockchain poate aduce, într-adevăr, inovație în foarte multe industrii și are mult potențial. În unele cazuri oferă cu adevărat, avantaje de neegalat de nici o tehnologie existentă pe piață. Dar trebuie să folosești instrumentul potrivit pentru nevoia ta. Această tehnologie este deosebit de bună pentru a te asigura că informațiile nu pot fi modificate și că există o istorie a evenimentelor, o arhivă permanentă a acțiunilor întreprinse pe blockchain. Dacă aceasta este ceva de care ai nevoie și crezi că poți aduce valoare prin blockchain, atunci este tehnologia potrivită pentru tine.
de Ovidiu Mățan
de Ovidiu Mățan
de Ovidiu Mățan