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

2016-03-10 - Hírek

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

2016-03-10 - Hírek

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. TL;DR: A Billingo gyorsabb lesz. Sokkal-sokkal gyorsabb!

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. De hogy jön mindehhez az ElasticSearch?

A Billingo és az ElasticSearch

Az ElasticSearch az Apache Lucene nyílt forráskodú 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 »

Mire vársz?
A Billingóval csak nyerhetsz!
Regisztrálj és próbáld ki teljesen INGYEN!

Billingo

Szólj hozzá Te is

További bejegyzések

9+1 kreatív és vicces számla a nagyvilágból
9+1 kreatív és vicces számla a nagyvilágból

2017-05-18

A számlázóprogramok megjelenése óta a számlázás többé már nem egy unalmas és időrabló feladat. Sőt, mára sok vállalkozás úgy gondolja, hogy ideje feldobni a kiállított számlák arculatát, és ezzel együtt az ügyfél hangulatát is. Nézd meg ezt a 9+1 kreatív megoldást, ami után te is vidámabban számlázol majd.…

Elolvasom
5 új funkció, amivel gyorsabb lesz a számlázás
5 új funkció, amivel gyorsabb lesz a számlázás

2017-05-11

A Billingónál folyamatos fejlesztéseket végzünk annak érdekében, hogy gyorsan és gördülékenyen számlázhass, és több időd maradjon vállalkozásod igazán izgalmas feladataira. Nézd meg, hogy az elmúlt hónapokban, hogyan lett még gyorsabb a számlázás a Billingóval.…

Elolvasom
A Billingo április fejlesztései

2017-05-05

Április hónapban is több fejlesztéssel és javítással frissítettük a Billingót, nézd is meg gyorsan a leghasznosabb újdonságokat.…

Elolvasom
A számlázás történelme az ókortól napjainkig
A számlázás történelme az ókortól napjainkig

2017-04-27

Ma már teljesen természetes, hogy minden egyes ügyfélnek és megrendelőnek kötelesek vagyunk számlát kiállítani. De vajon hogyan jutottunk el idáig? Mikor állították ki az első számlákat? Ismerd meg a számlázás meglepően színes és hosszú történelmét összefoglalónkból.…

Elolvasom
Megérkezett a Billingo fejlesztési naplója
Megérkezett a Billingo fejlesztési naplója

2017-04-19

A Billingónál folyamatos fejlesztéseket végzünk a gördülékeny és gyors számlázásért. Ezért elindítottuk fejlesztési naplónkat, hogy első kézből értesülhess a legújabb funkciókról és a leghasznosabb fejlesztésekről. Ismerd meg fejlesztési naplónkat.…

Elolvasom
Még gyorsabb lett a számlázás - mutatjuk a trükköt
Még gyorsabb lett a számlázás - mutatjuk a trükköt

2017-04-13

Egy számla kiállítása a Billingóval még soha nem volt ennyire kényelmes és gyors. Legújabb fejlesztéseinknek és az Opten adatbázisának köszönhetően ugyanis nem kell többé egyesével rögzítened a partneradatokat, elég csupán néhány karaktert begépelned és már készen is vagy. Nézd meg, hogyan könnyíti meg az Opten adatbázis a számlázást.…

Elolvasom
Összes bejegyzés
Hírlevél

Szeretnél mindig naprakész lenni?

Ha tudni szeretnél a számlázással kapcsolatos legfrissebb hírekről és érdekelnek az akciók, add meg a neved és az email címed.

Billingo nav

A Billingo megfelel a legfrissebb magyar jogszabályoknak