Paieškos variklių pasaulyje šiandien vyksta tikra drama. Iš vienos pusės – Elasticsearch, kuris ilgus metus buvo neginčijamas lyderis, iš kitos – OpenSearch, kuris atsirado kaip atsakas į licencijų ginčus ir dabar sparčiai auga. Jei planuojate diegti paieškos sprendimą savo projektui arba tiesiog domitės, kas vyksta šioje srityje, šis straipsnis jums.
Kaip prasidėjo šis skilimas
Viskas prasidėjo 2021 metų pradžioje, kai Elastic kompanija nusprendė pakeisti Elasticsearch ir Kibana licenciją iš Apache 2.0 į dvigubą licenciją – SSPL ir Elastic License. Šis žingsnis buvo nukreiptas prieš didžiuosius debesų tiekėjus, ypač AWS, kurie naudojo atvirojo kodo Elasticsearch versiją savo komercinėms paslaugoms teikti nemokėdami Elastic kompanijai.
AWS atsakė gana netikėtai – jie sukūrė Elasticsearch 7.10.2 versijos šaką (fork) ir pavadino ją OpenSearch. Tai nebuvo tik paprastas projekto nukopijimas – AWS įsipareigojo palaikyti ir vystyti OpenSearch kaip visavertę atvirojo kodo alternatyvą. Prie projekto prisijungė ir kiti žaidėjai, įskaitant SAP, Capital One ir Red Hat.
Dabar turime dvi skirtingas technologijas, kurios iš pradžių buvo labai panašios, bet su kiekvienu atnaujinimu vis labiau skiriasi. Tai primena situaciją su MariaDB ir MySQL – pradžioje beveik identiški, bet laikui bėgant išsiskiriantys.
Licencijų klausimas – kodėl tai svarbu jums
Licencijos gali atrodyti kaip nuobodi teisinė tema, bet tikrovėje jos turi tiesioginės įtakos jūsų projektui. OpenSearch naudoja Apache 2.0 licenciją, kuri yra viena laisviausių atvirojo kodo licencijų. Galite daryti beveik viską – naudoti komercinėse aplikacijose, modifikuoti, platinti, net parduoti kaip savo produktą.
Elasticsearch dabar veikia pagal dvigubą licenciją. Pagrindinė versija yra nemokama, bet su tam tikrais apribojimais – negalite teikti Elasticsearch kaip paslaugos (managed service) be atskiro susitarimo su Elastic. Jei jums reikia papildomų funkcijų, tokių kaip saugumas, mašininis mokymasis ar anomalijų aptikimas, teks mokėti už prenumeratą.
Praktiškai kalbant, jei kuriate vidinę įmonės paieškos sistemą, abi licencijos jums tiks. Bet jei planuojate kurti SaaS produktą, kuriame paieška yra pagrindinis komponentas, OpenSearch suteikia daugiau laisvės. Vienas mano pažįstamas startuolis turėjo pakeisti Elasticsearch į OpenSearch būtent dėl šios priežasties – jų verslo modelis prieštaravo Elastic licencijos sąlygoms.
Funkcionalumas ir galimybės
Čia dalykai tampa įdomūs. Abi platformos siūlo panašų pagrindinį funkcionalumą – indeksavimą, paiešką, agregacijas, analitiką. Bet yra svarbių skirtumų.
Elasticsearch turi brandesnę ekosistemą. Elastic Stack (anksčiau vadintas ELK stack) – Elasticsearch, Logstash, Kibana – yra gerai suderintas ir plačiai naudojamas. Jų mašininio mokymosi galimybės yra pažangesnės, ypač anomalijų aptikime ir prognozavime. Jei dirbate su logų analize ar saugumo monitoringu, Elastic Security sprendimai yra labai išvystyti.
OpenSearch, nors ir jaunesnis, sparčiai vejasi. Jie turi savo vizualizacijos įrankį OpenSearch Dashboards (Kibana atitikmuo), savo duomenų gavybos įrankius. Vienas didelis privalumas – OpenSearch integruoja kai kurias funkcijas, kurios Elasticsearch yra tik mokamose versijose. Pavyzdžiui, bazinis saugumas (autentifikacija, autorizacija, šifravimas) yra įtrauktas nemokamai.
Kalbant apie našumą, skirtumai nėra dramatiški. Abiejų platformų greitis priklauso nuo konfigūracijos, duomenų struktūros ir aparatūros. Testavau abi sistemas su 50 milijonų dokumentų rinkiniu – rezultatai buvo panašūs, skirtumas paieškos greityje siekė tik 5-10%.
Bendruomenė ir palaikymas
Elasticsearch turi didesnę ir brandesnę bendruomenę. Stack Overflow pilnas Elasticsearch klausimų ir atsakymų, dokumentacija yra išsami, mokymo medžiagos – gausios. Jei susidursite su problema, tikimybė rasti sprendimą internete yra didesnė.
OpenSearch bendruomenė auga sparčiai. AWS aktyviai investuoja į projektą, reguliariai išleidžia atnaujinimus, dokumentacija gerėja. Bet reikia pripažinti – dar ne viskas yra taip gerai aprašyta kaip Elasticsearch atveju. Kartais tenka pasikasti GitHub issue tracker’iuose arba Discord kanaluose, kad rastum atsakymus.
Komercinio palaikymo požiūriu, Elastic siūlo įvairius prenumeratos planus su SLA garantijomis. AWS taip pat teikia palaikymą OpenSearch naudotojams savo debesyje, bet jei naudojate OpenSearch on-premise, palaikymo galimybės yra ribotos. Yra trečiųjų šalių kompanijų, teikiančių OpenSearch palaikymą, bet rinka dar tik formuojasi.
Migracija ir suderinamumas
Jei jau naudojate Elasticsearch 7.10 ar ankstesnę versiją, migracija į OpenSearch yra gana paprasta. API yra beveik identiški, daugelis klientų bibliotekų veikia be pakeitimų. Aš pats migravau vieną projektą per savaitgalį – teko pakeisti tik endpoint URL ir kelias konfigūracijos eilutes.
Bet jei naudojate naujesnę Elasticsearch versiją (8.x), migracija tampa sudėtingesnė. Elasticsearch ir OpenSearch vystosi skirtingomis kryptimis, API skirtumai didėja. Elastic įvedė naujų funkcijų, kurios neegzistuoja OpenSearch, ir atvirkščiai.
Vienas svarbus dalykas – įskiepiai (plugins). Daugelis senų Elasticsearch įskiepių neveiks su OpenSearch be modifikacijų. Teko patirti tai praktikoje su vienu custom analyzer – reikėjo perrašyti dalį kodo, kad jis veiktų OpenSearch aplinkoje.
Debesų sprendimai ir diegimas
Elastic Cloud yra brandus ir patikimas sprendimas. Jie siūlo visiškai valdomą paslaugą su automatiniais backup’ais, skaliavimu, monitoringu. Kainodara yra aiški, nors ne pati pigiausia. Pradedant nuo maždaug 95 dolerių per mėnesį už mažiausią konfigūraciją.
AWS OpenSearch Service yra gerai integruotas su kitomis AWS paslaugomis. Jei jūsų infrastruktūra jau yra AWS, tai natūralus pasirinkimas. Kainodara yra lanksti, galite naudoti Reserved Instances ar Savings Plans, kad sumažintumėte išlaidas. Pradedant nuo apie 15-20 dolerių per mėnesį už mažą instanciją.
Self-hosted variantai abiem atvejais reikalauja daugiau pastangų. Turite pasirūpinti aukštu prieinamumu, backup’ais, saugumu, atnaujinimais. Bet turite ir daugiau kontrolės bei potencialiai mažesnes išlaidas, jei turite kompetenciją tai valdyti.
Konkretūs scenarijai – ką pasirinkti
Jei kuriate e-komercijos paieškos sistemą, abi platformos puikiai tiks. Bet jei jums reikia pažangių rekomendacijų sistemų ar personalizacijos, Elasticsearch mašininio mokymosi funkcijos gali būti pranašesnės.
Logų analizei ir monitoringui – Elasticsearch su Elastic Stack yra klasikinis pasirinkimas, ypač jei naudojate Beats agentus duomenų rinkimui. Bet OpenSearch su Data Prepper taip pat puikiai tvarko šias užduotis ir gali būti ekonomiškesnis variantas.
Jei kuriate SaaS produktą, kuriame paieška yra pagrindinis komponentas, OpenSearch licencija suteikia daugiau laisvės. Nereikės jaudintis dėl galimų teisinių problemų ateityje.
Startupams su ribotu biudžetu OpenSearch gali būti patrauklesnis, nes bazinės saugumo funkcijos yra nemokamos. Elasticsearch atveju už šias funkcijas tektų mokėti.
Ką rodo ateitis ir kaip apsispręsti
Abi platformos aktyviai vystosi, bet skirtingomis kryptimis. Elasticsearch daugiau dėmesio skiria enterprise funkcijoms, mašininiam mokymuisi, saugumo sprendimams. OpenSearch koncentruojasi į atvirumą, bendruomenę ir integracijas su debesų paslaugomis.
Mano rekomendacija – pradėkite nuo savo konkrečių poreikių. Padarykite sąrašą funkcijų, kurios jums tikrai reikalingos. Paskui pažiūrėkite, kaip jas palaiko abi platformos ir kokia kaina. Jei galite, padarykite proof-of-concept su abiem sprendimais – tai užtruks savaitę ar dvi, bet sutaupys daug galvos skausmo ateityje.
Licencijų klausimas yra svarbus, bet ne visada lemiamas. Jei Elasticsearch licencija neprieštarauja jūsų verslo modeliui ir jums patinka jų ekosistema, nėra priežasties keisti. Bet jei vertinate atvirumą ir norite išvengti vendor lock-in, OpenSearch yra puikus pasirinkimas.
Galiausiai, nebijokite eksperimentuoti. Abi technologijos yra pakankamai brandžios produkciniams projektams. Pasirinkimas tarp jų nėra klaida ar pergalė – tai tiesiog skirtingi įrankiai skirtingiems kontekstams. Svarbiausia suprasti savo poreikius ir pasirinkti tą, kuris juos geriausiai atitinka. Ir atminkite – technologijos keičiasi, bet duomenų struktūra ir architektūriniai sprendimai lieka. Investuokite laiko į gerą dizainą, o ne į amžiną ginčą, kuris įrankis geresnis.
