Billingo.hu A Billingo online számlázó blogja. Gyors és élvezetes elektronikus számlázás.
Blog / Egyéb / Másodpercek harca…
Egyéb - 2014.04.17. - 3 p. olvasás

Másodpercek harca

Néhány nappal ezelőtt néhány drága felhasználónk felhívta a figyelmünket, hogy az elektronikus számla letöltésének az ideje "meghosszabbodott", volt olyan akinek fél percet is kellett várnia mire letöltött a számla. Az nagyon messze van az általunk ideálisnak tekintett "pár másodperc"-től.

Másodpercek harca

Figyelem: Fejfádítóan technikai cikk következik! :)

Mi lehet a gond?

Az egész folyamatot elemezve, a következő történik:

  • A szerver generál egy PDF fájlt a számla adatai alapján - ez nem lehetett lassú, mivel kizárólag az elektronikus számlákat érinti a lassulás, a hagyományos nyomtatott számlákat nem
  • A PDF fájlt átadjuk egy Java processnek, ami egyrészt végig ellenőrizi a PDF fájl struktúráját, hogy megfelelő-e.
  • A PDF fájlból készítünk egy hash, amit aláírunk a tanúsítványainkkal
  • Az aláírást továbbküldjük a TSA-nek (timestamping authority), ők rábiggyesztik a hivatalos időbélyeget, és visszaküldik nekünk
  • Ezt az egészet összegyúrjuk CAdES aláírássá, és újraírjuk a PDF fájlt az aláírással
  • A kész PDF fájlt visszaküldjük a felhasználót kiszolgáló folyamatnak

A teljes folyamatot profiloztuk, és sikerült néhány bottlenecket találnunk benne. Az első, hogy néhány tanúsítványt nem cacheltünk, és mivel a szerverek ahonnan összegyűjtöttük őket nagyon lassan válaszoltak rá, ezzel jelentősen lelassították a mi folyamatunkat.

A mostani verzió

A jelenleg futó verzióban több folyamat részbe tettünk memória cacheeket, valamint a teljes folyamatot tovább gyorsítottuk egy kis optimalizálós fekete mágiával. Már ezzel sikerült 5 másodperc alá szorítanunk a generálás sebességét (ez már így is közel 300% -os sebesség növekedés).

További másodpercek harca

Sajnos az egyik leglassabb rész a használt PDF könyvtár sebességéből adódik. Nincs megfelelően optimalizálva a mentés sebessége, mivel digitális aláíráshoz egy úgynevezett inkrementális mentést kell használni, és a PDF összes részét végig ellenőrizni. Ráadásul mindezt nem tudjuk memóriában csinálni, hanem kénytelen vagyunk lemezen ideiglenes fájlokba a mentést megcsinálni. Attól függetlenül, hogy kizárólag SSD merevlemezeket használunk, sajnos ez még mindig egy lassú folyamat.

Azon kívül, hogy elkezdtünk beletúrni a nyílt forráskódú PDFBox könyvtárba (természetesen ha sikerült megoldást találnunk, azt átadjuk a PDFBoxnak, valószínűleg nem csak nekünk van szükségünk gyorsabb könyvtárra), még további optimalizálsokat csináltunk a rendszerben, így a mostani fejlesztés alatt lévő aláíró szerver már 1-2 másodperc alatt képes egy aláírást létrehozni, de ezt még tovább szeretnénk gyorsítani akár a mágikus másodperces határ alá szorítani.

Mennyiben befolyásol ez engem?

Tulajdonképpen csak annyiban, hogy kicsit többet kell most várni egy elektornikus számlára mint azt szeretnénk. Ettől függetlenül a mostani 4-5 másodperces várakozás (és a következő verzió 1-2 másodperces ideje) szerintünk az elfogadható határon bőven belül van, csak szeretnénk ha tudnátok, hogy mindent megteszünk annak érdekében, hogy ez még sokkal-de-sokkal gyorsabb legyen! Így is a 2 másodperces elkészítés több mint 100% gyorsulás a mostanihoz képest, szóval most már abban a kategóriában mozgunk ahol egy-egy komolyabb fejlesztés is minimális érezhető sebesség növekedést okoz.

Miért ilyen nehéz ez?

Mert a mostani 4 másodperces generálási sebességhez képest a 2 másodperc 100%-os növekedés, és egy-egy jól megírt algoritmus optimalizálása is kb. 10-20% -os növekedést eredményez jobb esetben. Ezért mások nem szoktak foglalkozni ezekkel, mivel az érezhető sebesség nem változik (nagyon kevesen fognak észrevenni különbséget 2.5 másodperc és 2 másodperc között). Ettől függetlenül mi tovább harcolunk minden egyes tizedmásodpercért. :))

Mondtam én, tiszta Forma 1!

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
online számlázás Tudástár vállalkozás fejlesztés NAV Törvény KATA hasznos tippek új funkció e-számla adózás webáruház online számlaadat szolgáltatás kata 2020 nav-bekötés könyvelés kéziszámla adatszolgáltatás katás vállalkozás kata adózás marketing bejelentési kötelezettség számlasablon koronavírus biztonság felhő digitális archiválás e-kereskedelem adatszolgáltatási kötelezettség online számlázó nav online számla számlatömb online számla és billingo összekötés tévhitek kata adatszolgáltatás nav online számla regisztráció online adatszolgáltatási kötelezettség ügyfélszolgálat áfa e-számlázás katás számlázás pénztárgép billingo NAV bekötés számlázó program váltás katás vállalkozás bejelentése online számla regisztráció kata szüneteltetése nav adatszolgáltatás startup fintech számla adó katás vállalkozás adatszolgáltatása egyéni vállalkozás kata megszűnése kata megszüntetése kata vállalkozás megszűnése szakértői cikk online számla koronvírus nav online számla összekötés fenntarthatóság Billingo előfizetés Ingyenes Billingo társadalmi felelősségvállalás támogatás Bonácz Zsolt Webshippy webáruház logisztika integráció előlegszámla előlegszámla készítése GDPR kata bejelentés kata keret könyveléstámogatás egyéni vállalkozás indítása API könyvelői fiók egyéni vállalkozás szüneteltetése 2020 könyvelői összekötés koronajárvány nav online adatszolgáltatás Díjbekérő Proforma e-számlák díjak elismerés adatvédelmi tájékoztató adatvédelem egyéni vállalkozás szüneteltetése számlázó program választás PSD2 nyílt bankolás számlainformációs szolgáltatás számlaadatok jogszabályváltozás banki összekötés összekötés