Avastage tüübiohutuse kriitilist rolli tugevate ja skaleeritavate üldiste servaarvutussüsteemide ehitamisel. Õppige peamisi strateegiaid andmete riknemise vältimiseks ja usaldusväärsuse tagamiseks hajuskeskkondades.
Usaldusväärsuse alustala: hajusandmetöötluse tüübiohutuse saavutamine üldises servaarvutuses
Arvutustehnika paradigma on läbi tegemas seismilist nihet. Aastakümneid on pilv olnud andmetöötluse epitsenter, tohutu jõu tsentraliseeritud koloss. Kuid uus piir laieneb kiiresti: serv. Servaarvutus – andmete töötlemine nende allika lähedal, mitte kauges andmekeskuses – ei ole lihtsalt trend; see on revolutsioon. See toidab meie nutikaid linnu, autonoomseid sõidukeid, ühendatud tehaseid ja reaalajas tervishoiuseadmeid. See intelligentsuse jaotus lubab madalamat latentsust, suuremat privaatsust ja suuremat operatiivset vastupidavust. Selle detsentraliseeritud jõuga kaasneb aga varjatud ja sügav väljakutse: andmete terviklikkuse säilitamine tohutus, heterogeenses ja sageli kaootilises ökosüsteemis. Selle väljakutse keskmes on mõiste, mis on tarkvarainseneridele tuttav, kuid nüüd ülemaailmselt suurendatud: tüübiohutus.
Traditsioonilises monoliitses rakenduses on standardne ja lahendatav probleem tagada, et täisarvu ootav funktsioon ei saaks stringi. Üldise servaarvutuse maailmas, kus tuhanded või isegi miljonid erinevad seadmed suhtlevad ebausaldusväärsete võrkude kaudu, võib lihtne tüübierinevus eskaleeruda katastroofiliseks rikkeks. See võib rikkuda andmekogumeid, peatada tootmisliinid või viia valede kriitiliste otsusteni. See postitus on põhjalik ülevaade sellest, miks hajusandmetöötluse tüübiohutus ei ole lihtsalt tore omadus, vaid usaldusväärsete, skaleeritavate ja üldiste servasüsteemide absoluutne alustala. Uurime väljakutseid, analüüsime võimsaid strateegiaid ja esitame arhitektuurimustrid, et taltsutada keerukust ja ehitada vastupidav serv, üks õigesti trükitud andmeosa korraga.
Servaarvutuse revolutsioon: rohkem kui lihtsalt kaugeserverid
Enne kui süveneme tüübiohutuse keerukusse, on ülioluline mõista servakeskkonna ainulaadset olemust. Erinevalt pilvest, mida iseloomustavad suhteliselt homogeensed, võimsad ja hästi hallatud serverid, on serv mitmekesisuse kehastus. See hõlmab seadmete spektrit:
- Piiratud sensorid: väikese võimsusega mikrokontrollerid (MCU-d) tööstuslikes seadetes või keskkonnaseireseadmed, mis koguvad lihtsaid andmepunkte, nagu temperatuur või rõhk.
 - Nutikad seadmed: võimekamad seadmed, nagu nutikad kaamerad, müügikohasüsteemid või meditsiiniseadmed, mis suudavad teostada kohalikku analüüsi ja koondamist.
 - Servalüüsid: võimsad arvutussõlmed, mis koondavad andmeid paljudest väiksematest seadmetest, teostavad keerukat töötlemist ja toimivad side sillana pilve või muude servakohtade vahel.
 - Autonoomsed süsteemid: kõrgelt arenenud servasüsteemid, nagu autonoomsed sõidukid või roboti käed, mis teevad kriitilisi reaalajas otsuseid, tuginedes tohutule hulgale sensorite andmetele.
 
See jaotus ei ole ainult asukoha küsimus; see on seotud funktsiooniga. Töötlemine ei ole enam monoliitne ülesanne, vaid hajutatud töövoog. Sensor võib jäädvustada toorandmeid, lähedal asuv lüüs võib neid puhastada ja filtreerida, piirkondlik servaserver võib sellel käitada masinõppe mudeli ja pilv võib saada lõplikud koondatud teadmised pikaajaliseks analüüsiks. See mitmeastmeline ja mitme seadme töötlemise torujuhe on koht, kus andmete riknemise oht mitmekordistub eksponentsiaalselt.
Vaikne saboteerija: mis on tüübiohutus ja miks on see servas oluline?
Põhimõtteliselt on tüübiohutus põhimõte, et programm või süsteem hoiab ära või heidutab vigu, mis tulenevad erinevate andmetüüpide mittevastavustest. Näiteks tagab see, et te ei saa tekstistringiga teostada matemaatilist liitmist ega käsitleda ajatemplit geograafilise koordinaadina. Kompileeritud keeltes toimub suur osa nendest kontrollidest kompileerimise ajal, püüdes vead kinni enne, kui koodi kunagi käivitatakse. Dünaamiliselt trükitud keeltes tabatakse need vead käitamise ajal, mis võib programmi kokku kukkuda.
Hajus servakeskkonnas laieneb see kontseptsioon ühest programmist kaugemale. See on seotud selle tagamisega, et kahe sõltumatu teenuse vahelise andmevahetuse leping, mis on potentsiaalselt kirjutatud erinevates keeltes ja töötab erineval riistvaral, on rangelt au sees. Kui Singapuri servaandur saadab temperatuurinäidu, peab Frankfurdi töötlemissõlm tõlgendama neid andmeid mitte ainult arvuna, vaid ka 32-bitise ujukomaarvuna, mis tähistab Celsiuse kraade. Kui Frankfurdi sõlm ootab 16-bitist täisarvu, mis tähistab Fahrenheiti, on kogu süsteemi loogika kahjustatud.
Põhiline väljakutse: heterogeensus ja servaandmete "metsik lääs"
Peamine põhjus, miks tüübiohutus on servas nii keeruline, on keskkonna tohutu, taltsutamatu heterogeensus. Me ei tööta ühe andmekeskuse puhastes, hästi määratletud seinte vahel. Me tegutseme digitaalses "metsikus läänes".
Seadmete Kambriumi plahvatus
Servavõrgud koosnevad seadmetest lugematutelt tootjatelt, mis on ehitatud erinevatel aegadel ja erinevate eesmärkidega. 1990. aastate pärandtööstuskontroller võib suhelda patenteeritud binaarprotokolli abil, samas kui uhiuus AI-kaamera voogesitab andmeid, mis on kodeeritud kaasaegses vormingus. Üldine servasüsteem peab suutma neid kõiki sisse võtta, mõista ja töödelda, ilma et see oleks igaühe jaoks kohandatud. See nõuab tugevat viisi andmestruktuuride määratlemiseks ja jõustamiseks kogu selle mitmekesisuse ulatuses.
Protokollide ja keelte Paabel
Servas ei ole ühtset "keelt". Seadmed räägivad üle MQTT, CoAP, AMQP, HTTP ja lugematute muude protokollide. Nendes töötav tarkvara võib olla kirjutatud C, C++, Python, Rust, Go või Java keeles. Pythoni teenus, mis ootab JSON-objekti väljaga `{"timestamp": "2023-10-27T10:00:00Z"}`, ebaõnnestub, kui C++ teenus saadab ajatemple Unixi epohhi täisarvuna `{"timestamp": 1698397200}`. Ilma andmetüüpide jagatud, jõustatud mõistmiseta on kogu süsteem kaardimaja.
Tüübi mittevastavuse reaalne hind
Need ei ole akadeemilised probleemid. Tüübivigadel hajusates servasüsteemides on tõsised, käegakatsutavad tagajärjed:
- Tööstuslik tootmine: Roboti käsi ootab koordinaati kujul `{x: 10.5, y: 20.2, z: 5.0}`. Süsteemi värskenduse tõttu saadab uus andur selle stringina `"10.5, 20.2, 5.0"`. Parsimisviga põhjustab roboti seiskumise, peatades mitme miljoni dollari suuruse tootmisliini, kuni viga leitakse ja parandatakse.
 - Ühendatud tervishoid: Patsiendi pulsimonitor saadab andmeid iga sekund. Viga põhjustab selle, et see saadab aeg-ajalt täisarvu asemel `null` väärtuse. Allavoolu hoiatusesüsteem, mis ei ole loodud `null`-i käsitlemiseks, jookseb kokku. Kriitiline südamejuhtumi hoiatus jääb vahele, seades patsiendi elu ohtu.
 - Autonoomne logistika: Autonoomsete kohaletoimetamise droonide park tugineb GPS-i andmetele. Ühe tootja droon teatab oma kõrguse meetrites (nt `95.5`), samas kui teine teatab selle jalgades, kuid kasutab sama numbrilist tüüpi. Koondamisteenus, eeldades, et kõik andmed on meetrites, arvutab valesti drooni kõrguse, mis viib peaaegu kokkupõrkeni või kokkupõrkeni.
 
Üldise servaarvutuse määratlemine: koostalitlusvõime paradigma
Selle heterogeensuse lahendus ei ole sundida kõiki seadmeid olema identsed. See on võimatu. Lahendus on ehitada üldine servaarvutuse raamistik. Üldine süsteem ei ole seotud konkreetse riistvara, operatsioonisüsteemi või programmeerimiskeelega. See tugineb hästi määratletud abstraktsioonidele ja lepingutele, et võimaldada erinevatel komponentidel sujuvalt koostööd teha.
Mõelge sellele kui standardsele transpordikonteinerile. Enne selle leiutamist oli laeva laadimine iga kaubatüübi puhul kaootiline ja eritellimusel protsess. Konteiner standardiseeris liidese (kuju ja ühenduspunktid), jäädes samas sisu (mis sees on) suhtes agnostiliseks. Üldises servaarvutuses pakub tüübiohutus selle andmete standardiseeritud liidese. See tagab, et olenemata sellest, milline seade andmeid toodab või milline teenus neid tarbib, on nende andmete struktuur ja tähendus ühemõtteline ja usaldusväärne.
Põhistrateegiad tüübiohutuse jõustamiseks servas
Selle usaldusväärsuse taseme saavutamine nõuab mitmekihilist lähenemist. See ei ole seotud ühe maagilise lahenduse leidmisega, vaid mitme võimsa strateegia kombineerimisega, et luua kaitse andmete riknemise vastu.
Strateegia 1: skeemipõhine disain andmete serialiseerimise vormingutega
Kõige põhilisem strateegia on oma andmete struktuuri selgesõnaline määratlemine. Selle asemel, et lihtsalt saata lahtist JSON-i või binaarplekki, kasutate skeemi, et luua ametlik leping. See skeem toimib andmete väljanägemise ainsa tõe allikana.
Selle ruumi juhtivad tehnoloogiad on järgmised:
- Protokollipuhvrid (Protobuf): Google'i välja töötatud Protobuf on keelest sõltumatu, platvormineutraalne mehhanism struktureeritud andmete serialiseerimiseks. Saate oma andmestruktuuri määratleda lihtsas `.proto` failis ja Protobufi kompilaator genereerib teie valitud keele(de) jaoks lähtekoodi, et hõlpsalt kirjutada ja lugeda oma struktureeritud andmeid. See tagab kompileerimise ajal ohutuse ja väga tõhusa binaarserialiseerimise, mis on ideaalne ressursside piiratud servaseadmete jaoks.
 - Apache Avro: Avro on veel üks võimas andmete serialiseerimise süsteem. Peamine omadus on see, et skeem salvestatakse koos andmetega (sageli päises), mis on suurepärane skeemide aja jooksul arendamiseks ja süsteemide jaoks, nagu andmejärved ja voogesitusplatvormid, kus võivad eksisteerida erinevate skeemiversioonide andmed.
 - JSON-skeem: Süsteemide jaoks, mis tuginevad suuresti JSON-ile, pakub JSON-skeem sõnavara JSON-dokumentide märkimiseks ja valideerimiseks. See on vähem jõudluslik kui binaarvormingud, nagu Protobuf, kuid on väga inimloetav ja töötab mis tahes tavalise JSON-teegiga.
 
Näide: Protokollipuhvrite kasutamine anduriandmete jaoks
Kujutage ette, et soovime määratleda struktuuri tavalise keskkonnaanduri näidu jaoks. Loome faili nimega `sensor.proto`:
(Märkus: see on esitus, mitte täidetav kood selles kontekstis)
syntax = "proto3";
package edge.monitoring;
message SensorReading {
  string device_id = 1;
  int64 timestamp_unix_ms = 2; // Unix epoch in milliseconds
  float temperature_celsius = 3;
  float humidity_percent = 4;
  optional int32 signal_strength_dbm = 5;
}
Sellest lihtsast failist saame genereerida C++ koodi oma anduri püsivarale, Pythoni koodi oma lüüsi töötlemisskriptile ja Go koodi oma pilve sissevõtmise teenusele. Igal genereeritud klassil on tugevalt trükitud väljad. Programmaatiliselt on võimatu panna stringi väljale `timestamp_unix_ms`. See püüab vead kinni kompileerimise ajal, kaua enne koodi juurutamist tuhandetele seadmetele.
Strateegia 2: Tüübiohutu side gRPC-ga
Andmestruktuuri määratlemine on pool võitu. Teine pool on tagada, et sidekanal austab neid määratlusi. Siin on raamistikud nagu gRPC (gRPC kaugprotseduurikõne) suurepärased. gRPC on samuti Google'i välja töötatud ja kasutab vaikimisi protokollipuhvreid teenuse lepingute ja sõnumivormingute määratlemiseks.
gRPC-ga määratlete mitte ainult sõnumid (mis), vaid ka teenused ja nende meetodid (kuidas). See loob tugevalt trükitud kliendi ja serveri tüve. Kui klient kutsub välja kaugmeetodi, tagab gRPC, et taotlussõnum vastab nõutavale tüübile ja serialiseerib selle. Seejärel de-serialiseerib server selle ja on garanteeritud, et saab õigesti trükitud objekti. See abstraheerib võrguside ja serialiseerimise räpased detailid, pakkudes seda, mis tundub kohaliku, tüübiohutu funktsioonikõnena.
Strateegia 3: Lepingupõhine arendus API-de jaoks
Servateenuste jaoks, mis suhtlevad RESTful API-de kaudu, kasutades HTTP-d ja JSON-i, on OpenAPI spetsifikatsioon (varem Swagger) tööstusstandard. Sarnaselt Protobufile määratlete lepingu (YAML- või JSON-failis), mis määrab iga lõpp-punkti, oodatavad taotlusparameetrid ja nende tüübid ning vastuskehade struktuuri. Seda lepingut saab kasutada kliendi SDK-de, serveri tüvede ja valideerimise vahevara genereerimiseks, tagades, et kogu HTTP-side järgib määratud tüüpe.
Strateegia 4: Staatiliselt trükitud keelte jõud
Kuigi skeemid ja lepingud pakuvad turvavõrku, mängib programmeerimiskeele valik olulist rolli. Staatiliselt trükitud keeled nagu Rust, Go, C++, Java või TypeScript sunnivad arendajaid deklareerima muutujate andmetüübid. Seejärel kontrollib kompilaator tüübi järjepidevust kogu koodibaasis. See on võimas, ennetav lähenemine kogu veaklassi kõrvaldamiseks enne nende juhtumist.
Eelkõige Rust kogub servas ja IoT-s populaarsust oma jõudluse, mäluohutuse ja tugeva tüübisüsteemi tõttu, mis aitab ehitada uskumatult tugevaid ja usaldusväärseid rakendusi ressursside piiratud keskkondade jaoks.
Strateegia 5: Tugev käitusaja valideerimine ja saniteerimine
Isegi kõigi kompileerimise ajal tehtavate kontrollide korral ei saa te alati usaldada välismaailmast tulevaid andmeid. Valesti konfigureeritud seade või pahatahtlik tegija võib saata valesti vormindatud andmeid. Seetõttu peaks iga servateenus kohtlema oma sisendeid kui umbusaldusväärseid. See tähendab valideerimiskorra rakendamist oma teenuse piiril, mis kontrollib selgesõnaliselt sissetulevaid andmeid nende eeldatava skeemi suhtes enne nende töötlemist. See on teie viimane kaitseliin. Kui andmed ei vasta – kui nõutav väli puudub või täisarv on väljaspool oma eeldatavat vahemikku – tuleks see tagasi lükata, logida ja saata analüüsimiseks surnud tähe järjekorda, selle asemel, et lasta sellel süsteemi rikkuda.
Arhitektuurimustrid tüübiohutuks servaökosüsteemiks
Nende strateegiate rakendamine ei ole ainult tööriistade küsimus; see on seotud arhitektuuriga. Teatud mustrid võivad oluliselt parandada tüübiohutust hajusüsteemis.
Keskne skeemiregister: ainsa tõe allikas
Suuremahulises servajuurutuses võivad skeemid vohada. Kaose vältimiseks on Skeemiregister hädavajalik. See on tsentraliseeritud teenus, mis toimib kõigi andmeskeemide (olgu need Protobuf, Avro või JSON-skeem) peahoidlana. Teenused ei salvesta skeeme kohapeal; nad hangivad need registrist. See tagab, et iga süsteemi komponent kasutab sama lepingu sama versiooni. See pakub ka võimsaid võimalusi skeemi arendamiseks, võimaldades teil värskendada andmestruktuure tagasi- või edasiühilduval viisil, ilma et kogu süsteem katki läheks.
Servavõrk: poliitika jõustamine võrgutasandil
Servavõrk (nagu Linkerd või Istio või serva jaoks mõeldud kergemad alternatiivid) võib osa valideerimisloogikat rakendusest endast maha laadida. Teie rakenduse kõrval asuvat servavõrgu puhverserverit saab konfigureerida liikluse kontrollimiseks ja sõnumite valideerimiseks tuntud skeemi suhtes. See jõustab tüübiohutuse võrgutasandil, pakkudes ühtset kaitsekihti kõigile võrgus olevatele teenustele, olenemata keeles, milles need on kirjutatud.
Muutumatu andmetorujuhe: olekuriikuse vältimine
Üks levinumaid tüübipõhiste vigade allikaid on oleku aja jooksul muutmine. Objekt algab kehtivas olekus, kuid rida toiminguid muudab selle kehtetuks. Võttes kasutusele muutumatuse mustri – kus andmeid, kui need on loodud, ei saa muuta – saate neid vigu vältida. Andmete muutmise asemel loote värskendatud väärtustega uue koopia. See funktsionaalne programmeerimiskontseptsioon lihtsustab arutlust andmevoo üle ja tagab, et andmeosa, mis oli torujuhtme ühes punktis kehtiv, jääb kehtivaks kogu selle elutsükli jooksul.
Juhtumiuuring tegevuses: ülemaailmne nutika põllumajanduse võrk
Põhjendame neid kontseptsioone realistliku ja ülemaailmse stsenaariumi abil.
Stsenaarium
Rahvusvaheline põllumajandusettevõte "AgriGlobal" soovib luua ühtse "nutika farmi" platvormi. Nad tegutsevad farmides Põhja-Ameerikas, Lõuna-Ameerikas ja Euroopas. Nende riistvara on segu pärandniisutuskontrolleritest, mis väljastavad CSV-andmeid üle jadapordi, Euroopa tarnija kaasaegsetest mulla niiskuse sensoritest, mis kasutavad JSON-i üle MQTT ja Aasia tootja uutest autonoomsete droonide pargist, mis voogesitavad binaarvideo voogusid ja GPS-i andmeid. Eesmärk on koguda kõik need andmed piirkondlikesse servalüüsidesse, töödelda neid reaalajas otsuste tegemiseks (nt niisutuse reguleerimiseks) ja saata koondatud teadmised AI-toega saagikuse prognoosimiseks kesksele pilveplatvormile.
Rakendamine
AgriGlobali arhitektid otsustasid iga seadme jaoks kohandatud parserite kirjutamise vastu. Selle asemel võtsid nad kasutusele üldise skeemipõhise arhitektuuri:
- Keskne skeemiregister: Nad seadsid üles keskmise Avro skeemiregistri. Nad määratlesid skeemid põhimõistete jaoks, nagu `SoilMoistureReading`, `GpsCoordinate` ja `IrrigationStatus`.
 - Adapteriteenused: Iga seadmetüübi jaoks kirjutasid nad väikese "adapteri" teenuse, mis töötab servalüüsiga. Pärandkontrolleri adapter loeb jadalt CSV-andmeid ja teisendab need kehtivaks `IrrigationStatus` Avro objektiks. Anduriadapter saab JSON MQTT sõnumid ja teisendab need `SoilMoistureReading` Avro objektideks. Iga adapter vastutab ainult ühe asja eest: konkreetse seadme toorväljundi tõlkimise kanooniliseks, tugevalt trükitud vorminguks, mis on määratletud skeemiregistris.
 - Tüübiohutu töötlemise torujuhe: Allavoolu töötlemisteenused, mis on kirjutatud Go-s, ei pea teadma CSV-st või JSON-ist. Nad tarbivad ainult puhtaid, valideeritud Avro andmeid sõnumisiinist nagu Kafka või NATS. Nende äriloogika on lihtsustatud ja nad on täielikult lahti ühendatud füüsilisest riistvarast.
 
Tulemused
Ettemakse investeering skeemipõhisesse arhitektuuri tasus end suurepäraselt ära:
- Kiire integreerimine: Kui nad omandasid uue farmi, millel oli teist marki ilmajaam, pidid nad kirjutama ainult uue, väikese adapteriteenuse. Põhiline töötlemise torujuhe jäi muutumatuks. Uue riistvara integreerimise aeg langes kuudest päevadeni.
 - Suurem usaldusväärsus: Andmetega seotud töötlemisvead langesid üle 90%. Adapterid püüdsid vead kinni servas, mis märkis defektse anduri valesti vormindatud andmeid enne, kui see võiks kesksed analüüsimudelid mürgitada.
 - Tulevikukindlus: Süsteem on nüüd üldine. See on üles ehitatud abstraktsete andmetüüpide, mitte konkreetse riistvara ümber. See võimaldab AgriGlobalil kiiremini uuendusi teha, võttes kasutusele mis tahes tarnija parima tehnoloogia, ilma et peaks kogu oma andmeplatvormi ümber arhitektuurima.
 
Tuleviku horisont: mis on tüübiohutuse jaoks järgmine servas?
Püüdlus tugeva tüübiohutuse poole on pidev teekond ja mitmed põnevad tehnoloogiad on valmis riba veelgi kõrgemale tõstma.
WebAssembly (Wasm): universaalne tüübiohutu käituskeskkond
WebAssembly on virnapõhise virtuaalmasina binaarne juhendvorming. See võimaldab Rusti, C++ ja Go keeltes kirjutatud koodil töötada liivakastiga piiratud keskkonnas kõikjal – ka servaseadmetes. Wasmil on hästi määratletud ja tugevalt trükitud mälumudel. See muudab selle veenvaks sihtmärgiks turvaliste, kaasaskantavate ja tüübiohutute funktsioonide juurutamiseks servas, luues universaalse käituskeskkonna, mis võib abstraheerida aluseks oleva riistvara ja operatsioonisüsteemi.
AI-toega anomaaliate tuvastamine andmetüüpide jaoks
Tulevased süsteemid võivad kasutada masinõppe mudeleid, et õppida tundma tavaliste andmevoogude "kuju". Need mudelid suudaksid tuvastada mitte ainult räigeid tüübivigu (nt string täisarvu asemel), vaid ka peeneid semantilisi anomaaliaid (nt temperatuurinäit, mis on tehniliselt kehtiv ujukomaarv, kuid on oma asukoha jaoks füüsiliselt võimatu). See lisab intelligentse ja kontekstitundliku valideerimise kihi.
Ametlik kontrollimine ja tõestatavalt õiged süsteemid
Kõige missioonikriitilisemate servasüsteemide (nagu lennundus või meditsiiniseadmed) puhul võime näha ametliku kontrollimise suurenemist. See on matemaatiline lähenemine, et tõestada, et tarkvara on vaba teatud klassi vigadest, sealhulgas tüübivigadest. Kuigi see on keeruline ja ressursimahukas, pakub see kõrgeimat võimalikku õigsuse garantiid.
Kokkuvõte: vastupidava serva ehitamine, üks tüüp korraga
Ülemaailmset nihet servaarvutuse suunas ei saa peatada. See avab enneolematuid võimalusi ja tõhusust igas tööstusharus. Kuid see hajus tulevik võib olla kas habras ja kaootiline või tugev ja usaldusväärne. Erinevus seisneb ranguses, mida me selle vundamendile rakendame.
Hajusandmetöötluse tüübiohutus ei ole funktsioon; see on eeltingimus. See on distsipliin, mis võimaldab meil ehitada üldisi, koostalitlusvõimelisi süsteeme, mis saavad areneda ja skaleeruda. Võttes omaks skeemipõhise mõtteviisi, kasutades tüübiohutuid tööriistu ja protokolle ning kujundades vastupidavaid arhitektuurimustreid, saame liikuda kaugemale eritellimusel lahenduste ehitamisest üksikutele seadmetele. Saame hakata ehitama tõeliselt globaalset, üldist ja usaldusväärset serva – ökosüsteemi, kus andmed voolavad usaldusväärselt, otsuseid tehakse enesekindlalt ja hajusintelligentsuse tohutu lubadus realiseeritakse täielikult.