Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
2. Sadržaj
što smo imali, što smo htjeli dobiti i što smo dobili
kako sve to funkcionira
pogled izbliza
NoSQL baza
MongoDB prednosti i nedostaciMongoDB prednosti i nedostaci
što dalje
linkovi
2
3. Što smo imali i kako je sve počelo
web logovi
aplikacijski logovi, system logovi
zapisi u relacijskim bazama
CA APM
alati za nadzor aplikacijskih serveraalati za nadzor aplikacijskih servera
digitalni potpis transakcija
helpdesk
kako sve to povezati?
3
4. Što smo htjeli dobiti
nadzor korisničkih aktivnosti u aplikaciji, tko je radio,
kada, u ime koga i što je točno radio
omogućiti ponovljivost transakcije, korak po korak
ponoviti cjelokupan proces zadavanja, potpisivanja i
izvršavanja naloga
pomoć u otkrivanju pogrešaka u aplikaciji kada sepomoć u otkrivanju pogrešaka u aplikaciji kada se
greška dogodila, za kojeg korisnika i klijenta se
dogodila, sa kojim podacima se greška dogodila, te na
koji način je to povezano sa ostalim sustavima za
nadzor
4
5. Što smo dobili
sve sa prethodnog slajda
dobilo smo jedinstven zapis koji nam omogućuje da na
jednom mjestu objedinimo i analiziramo sve podatke
mogućnosti mjerenja performansi prezentacijskog i
servisnog sloja unutar aplikacije
pomoć pri otkrivanju i istraživanju potencijalnih
prijevara te pokušaja prijevara
statističke informacije o korisnicima i načinu na koji
korisnici koriste aplikaciju
5
6. Kako to sve funkcionira
Java dio sustava unutar web aplikacije skuplja, filtrira i
obrađuje podatke te ih priprema za zapis u bazu
podataka
podaci se skupljaju na razini HTTP request/response
ciklusa, svaki request predstavlja jednu akciju
korisnika u aplikaciji te jedan zapis u bazi podatakakorisnika u aplikaciji te jedan zapis u bazi podataka
podaci se spremaju u NoSql bazu kao niz međusobno
povezanih dokumenata na razini jednog korisnika koji
radi u ime jednog klijenta
jedan click (jedna akcija), jedan zapis, jedan NoSql
dokument
6
7. Java servlet filter
početna i završna točka request/response ciklusa
prikupljanje podataka na razini request-a
zapisivanje podataka na kraju ciklusa u NoSql bazu
7
8. ThreadLocal varijable
variable na razini pojedinog thread-a u aplikaciji
sadrže podatke za vrijeme trajanja request-a
podaci se nadopunjuju za vrijeme request-a
varijable su dostupne iz bilo kojeg dijela web
aplikacijeaplikacije
inicijalizacija prilikom ulaska u filter
clean up prilikom izlaska iz filtera
thread safe
weak reference na vrijednosti
8
9. Interceptori
mapiranje metoda servisnog i dao sloja
zapisivanje podataka o ulaznim parametrima
zapisivanje rezultata izvršavanja mapirane metode
zapisivanje exception na razini metode
9
10. Asinhroni zapis
WS work manager
thread pool aplikacijskog servera dostupan web
aplikaciji
podaci se zapisuju u thread-u neovisnom o servlet
container thread-u
10
11. NoSql baze podataka
nerelacijske baze podataka
drugačiji format podataka u bazi
motivirano različitim potrebama modernih aplikacija
(horizontalno skaliranje, jednostavniji dizajn, brži
dohvat podataka)
zapis i dohvat podataka su prilagođeni formatu
podataka u bazi
dijele se prema modelu podataka na key/value
(Riak,Redis), dokument (MongoDB), graf (Neo4J)
baze itd.
11
12. Zašto NoSql
trebali smo jednostavan i fleksibilan način zapisa
zbog modela podataka nismo trebali relacije između
podataka i transakcije prilikom zapisa podataka u
bazu
htjeli smo rasteretiti Oracle instancu te svu
raspoloživu procesorsku snagu ostaviti za poslovneraspoloživu procesorsku snagu ostaviti za poslovne
potrebe
postigli smo veću brzinu zapisa
bilo nam je zanimljivo
12
13. MongoDB
dokument model podataka
kolekcije/dokumenti – tablice/retci
JavaScript query language
JSON/BSON format podataka
nema unaprijed definirane sheme podatakanema unaprijed definirane sheme podataka
horizontalna skalabilnost
Map/Reduce
Replikacija, Sharding
fire and forget
13
14. MongoDB prednosti i nedostaci
prednosti:
– jednostavan za administriranje
– dobra dokumentacija
– pouzdan
– JavaScript kao query jezik
– indeksiranje
nedostaci
– database administratori ne postoje
– korisnici moraju učiti novi query jezik
– potrebno je promijeniti mentalni model na nerelacijski, nije
pogodno za svaki poslovni slučaj
14
17. Što dalje
podaci:
– 35000 korisnika
– 400000 dokumenata dnevno, 20Kb dokument
– 3TB podataka godišnje
podaci se mogu dodano skupljati prema potrebi
analiza podataka da bi se iz njih izvukle vrijedneanaliza podataka da bi se iz njih izvukle vrijedne
informacije o korisnicima i njihovim navikama te
načinu na koji koriste aplikaciju
17