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
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