Billingo.hu A Billingo online számlázó blogja. Gyors és élvezetes elektronikus számlázás.
Blog / Egyéb / Mi fán terem az ElasticSearch …
Egyéb - 2016.03.10. - 4 p. olvasás

Mi fán terem az ElasticSearch és miért lett ettől sokkal-sokkal jobb a Billingo?

Február utolsó hetében szépen lassan elkészül az egyik kedvenc fejlesztésünk, és úgy éreztük, hogy eljött az ideje megosztani veletek, hogy mi is az. A Billingo gyorsabb lesz. Sokkal-sokkal gyorsabb!

ElasticSearch

De kezdjük az elején, mi is történt pontosan?

Amikor 2013 végén a Billingot elkezdtük tervezni még a legmerészebb álmainkban sem gondoltuk volna, hogy egyszer ott fogunk tartani ahol ma. Sok ezren használjátok a Billingot nap mint nap, közel 200 ezer számla lett kiállítva több mint 100 ezer ügyfél részére, több mint 300 ezer termékről. Mindez nem egészen két év alatt. Ráadásul a forgalmunk szinte exponenciálisan növekedik napról napra. Azonban tavaly már bizonyos felhasználóknál érezhetően elkezdett lassulni a rendszer. Ezt részben a statisztikák folyamatos számolása okozta, amit ugyan különböző cacheléssel tudtunk puhítani, de a megoldás nem volt tökéletes. Sőt! Két lépcsőben fogalmaztuk meg fejlesztést a sebesség növeléséhez. Elsősorban a régi szervereinket le kellett cserélni új és modern szerverekre. Erre sor került még tavaly év végén. A második lépcsőben pedig a teljes számlalistát, a statisztika számolást és keresést is újra kellett gondolni. A keresés mindezektől függetlenül is egy olyan része a Billingónak, amelynek egy sokkal központibb szerepet és jobb működést szánunk. Mi fán terem az ElasticSearch és miért lett ettől sokkal-sokkal jobb a Billingo? De hogy jön mindehhez az ElasticSearch?

A Billingo és az ElasticSearch

Az ElasticSearch az Apache Lucene nyílt forráskódú projektből kinőtt szintén nyílt forráskódú keresőmotor. Nagyon hasonlít a már meglévő Apache Solr projekthez ami szintén a Lucene-re épül. Sőt, elmondható, hogy hajszál vékony különbség van a kettő között. Több ok is volt, ami miatt az ES mellett döntöttünk:

Dokumentum séma liberális és könnyed kezelése

Könnyebben és jobban lehet skálázni az egész rendszert JSON natív ElasticSearch ökoszisztéma: LogStash és Kibana Az egész művelet tulajdonképpen egészen egyszerű. Megfogunk egy JSON dokumentumot, amit felvezetünk ES-be, ami pedig ebből csinál egy invertált indexet. Nagyon egyszerű példával:

{
    "id": 12345,
    "client.name": "Teszt Elek"
}

A felvitt JSON dokument

Az invertált index azt mondja meg, hogy a "Teszt Elek" név mely azonosítókhoz tartozik. Így nagyon gyorsan lehet keresni a dokumentumokban, hiszen csak megkeressük az invertált indexben, mely azonosítók tartoznak a keresett szóhoz és visszaadjuk a legközelebb eső dokumentumokat. Így elkerülhető, hogy minden dokumentumot egyesével végig kelljen vizsgálni. Természetesen ez egy borzasztóan leegyszerűsített példa volt, a háttérben bonyolult algoritmusok futtatnak analíziseket a felvitt adatokon.

És ez miért is jó?

Azon kívül, hogy a keresés sokkal gyorsabb lesz, van egy másik nagyon fontos és jó funkciója az ElasticSearch-nek. A csoportosításokkal (aggregations) tulajdonképpen a dokumentumok mezőin (értékein) különböző számolásokat tudunk végezni valamint a szűrőkkel (filter) tudjunk pontosítani az értékek számolását. Az egész nagyjából úgy működik, hogy először szűrőkkel meghatározunk egy vödröt (bucket). Például legyen az egyik ilyen vödör a nem piszkozat számlák halmaza, amelyeket január 1. és január 31. között állítottak ki. Ezután ezen a vödrön különböző számításokat (metrics) tudunk végezni, például összeadni a számlák végösszegeit, hogy megkapjuk a január hónap teljes bevételét. Természetesen a szőrökön kívül a keresést (query) is használhatjuk, hogy tovább finomítsuk a lekérdezésünket. Azonban összehasonlítva a régi relációs adatbázisban történő lekérdezésekkel, ez elképesztő sebességgel történik.

Jó, jó, de mennyivel lett gyorsabb a Billingo?

Hát nem akarjuk elszólni, és mindenkinél másképp fog jelentkezni a sebesség növekedés, de a mi egyik teszt fiókunkban (ami direkt burn-in tesztre van kihegyezve) a 22-30 másodperces betöltést sikerült leszorítanunk egy tized (!!) másodperc alá.

Csak az ElasticSearch-nek köszönhetően?

Nem. Rengeteget dolgoztunk további cache megoldásokon, de azért ennek a javulásnak az oroszlán részét az ElasticSearch bevezetésének köszönhetjük. :)

Szuper! Hogyan tovább?

Már most sokkal jobb a keresőnk, mint eddig bármikor, és a célunk az, hogy még tovább fejlesszük ezt a részét is a programnak, hogy még kényelmesebb legyen a Billingo használata azok számára is, akik sok-sok ezer számlával használják. Már most lehet keresni partnerre, email címre, termék nevekre, megjegyzésekre és ezeket tovább szeretnénk bővíteni, valamint önmagában a kereső használatát is szeretnénk még egyszerűbbé tenni. Nem hiszed? Kattints ide és próbáld ki milyen gyors lett a Billingo »

Címkék

Blog cikk értesítő

Blog cikk értesítő

Iratkozz fel, ha szeretnél tudni a számlázással kapcsolatos legfrissebb hírekről és érdekelnek az akciók.

Back to Top
Tudástár fejlesztés vállalkozás online számlázás Törvény NAV hasznos tippek új funkció e-számla online számlaadat szolgáltatás webáruház nav-bekötés könyvelés adózás KATA adatszolgáltatás kéziszámla marketing bejelentési kötelezettség számlasablon biztonság felhő digitális archiválás kata 2020 e-kereskedelem számlatömb katás vállalkozás adatszolgáltatási kötelezettség tévhitek kata adózás ügyfélszolgálat kata adatszolgáltatás pénztárgép startup billingo áfa számlázó program váltás online számlázó nav online számla regisztráció fenntarthatóság e-számlázás támogatás Bonácz Zsolt katás vállalkozás adatszolgáltatása kata bejelentés online számla regisztráció online számla és billingo összekötés nav online számla fintech számla felelősségvállalás Webshippy webáruház logisztika díjak elismerés GDPR katás számlázás egyéni vállalkozás PSD2 nyílt bankolás számlainformációs szolgáltatás kata megszűnése kata megszüntetése kata vállalkozás megszűnése banki összekötés összekötés Díjbekérő Proforma Számla kiállítása külföldre Külföldi számla kötelező tartalmi elemei Billingo előfizetés Ingyenes Billingo Online pénztárgép interjú e-számlák NAV bekötés ingyen hónapok Billingo ajánlói rendszer Billingo kupon Kedvezmény a számlán bevételi bizonylat online fizetés forbes flow opten minősítés szakértő fullfillment integráció erste PowerBill by Billingo cégjog Farkas Dezső Marketing Gyémánt Díj marketing diamond awards Az Év Honlapja előlegszámla előlegszámla készítése blog adó Instagram