akka, play&scala u praksi - international java conference ... · akka, play&scala stjepan...
TRANSCRIPT
Akka, Play & ScalaSTJEPAN BULJAT
ETNA D.O.O.
JavaCro ‘13 – 2nd International Java
1
Scala u praksi
2nd International Java Conference in Croatia
@sbuljat
O predavaču…
� Radim kao voditelj tima za razvoj i istraživanje u tvrtki Etna d.o.o.
� Završio FER (mag.ing.comp.) i EFZG (univ.spec.oec)
� Povijest programiranja: Pascal � C � Smalltalk �� Povijest programiranja: Pascal � C � Smalltalk �
� je privatna tvrtka iz Zagreba osnovana 1990. godine
� Zapošljava 30ak djelatnika
� 22 godine iskustva u bankarstvu i informatici
� Usluge razvoja i uvođenja informatičkih rješenja uz primjenu suvremenih informacijskih tehnologija
� Usluge prilagodbe i integracije postojećih informatičkih rješenja
� Usluge poslovne analize i poslovnih konzultacija
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Radim kao voditelj tima za razvoj i istraživanje u tvrtki Etna d.o.o.
)
� Java � Scala
2
� Java � Scala
je privatna tvrtka iz Zagreba osnovana 1990. godine
Usluge razvoja i uvođenja informatičkih rješenja uz primjenu suvremenih informacijskih tehnologija
Usluge prilagodbe i integracije postojećih informatičkih rješenja
16.6.2013. 21:33
Akka - Uvod
� Threads are bad? Ne nužno, ali apstrakcija može biti korisna… tu dolazi
� Akka je middleware koji omogućuje izgradnju visoko konkurentnih i distribuiranih su otporne na greške (eng. fault tolerant)
Komunikacijski model se bazira na asinkronoj razmjeni poruka između dijelova sustava� Komunikacijski model se bazira na asinkronoj razmjeni poruka između dijelova sustava
� Omogućuje konkurentnost bez dijeljenog promjenjivog stanja i zaključavanja resursa
� Osnovni gradivni element u Akka-i je ACTOR
� Location Transparent & Distributable by Design
� Actor Model je definirao Carl Hewitt 1973, ali zasluge za popularizaciju ipak pripadaju
� Actori omogućuju
� Jednostavnu apstrakciju konkurentnosti i paralelizma
� Asinkroni, ne blokirajući i jako učinkovit event-driven programski model
� Lightweight event-driven procese (cca 2.7M actora po GB
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Ne nužno, ali apstrakcija može biti korisna… tu dolazi Akka
koji omogućuje izgradnju visoko konkurentnih i distribuiranih event-driven aplikacija koje
Komunikacijski model se bazira na asinkronoj razmjeni poruka između dijelova sustava
3
Komunikacijski model se bazira na asinkronoj razmjeni poruka između dijelova sustava
Omogućuje konkurentnost bez dijeljenog promjenjivog stanja i zaključavanja resursa
je definirao Carl Hewitt 1973, ali zasluge za popularizaciju ipak pripadaju Erlangu
programski model
po GB Heap-a)
16.6.2013. 21:33
Akka – Actor
� Actor može biti alternativa za: Thread, Component, Listener
� Osnovne actor operacije
� DEFINE� DEFINE
� CREATE
� SEND
� BECOME
� SUPERVISE
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Listener, Service, Load balancer, EJB SB / MDB, …
4
16.6.2013. 21:33
Akka – Remoting / Routing
� Remoting
� Dvije vrste
� LOOKUP – Pristup actoru na udaljenom čvoru� LOOKUP – Pristup actoru na udaljenom čvoru
� CREATE – Kreiranje actora na udaljenom čvoru
� Load balancing (routers)
� Više implementacija: RoundRobinRouter, RandomRouter
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Routing5
RandomRouter, BroadcastRouter, …
16.6.2013. 21:33
Play Framework – Uvod1
� Play je… baziran na asinkronom modelu koji je izgrađen povrh
� Stateless
� Non-Blocking IO
� Play je… moderan web framework� Play je… moderan web framework
� RESTful by default
� Asset Compiler za CoffeeScript, LESS,…
� WebSockets, Comet, …
� JSON is a first class citizen
� Play je… developer friendly
� Promijeni kod i refresh-aj browser
� Integrirana konzola i build alati (powered by sbt)
� Type safety
� Ugrađeni testni alati
� Podrška za Eclipse i IntelliJ IDEA
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
baziran na asinkronom modelu koji je izgrađen povrh Akka Framework-a
6
16.6.2013. 21:33
Play Framework – Uvod2
� Play je… high-productivity Java Web Framework
� Inspiriran s Ruby on Rails, Django, …
� Play je… full-stack platforma
� Integriran compiler, embedded server, template engine
� Play nije… Java EE
� Nije baziran na Servlet API-ju
� Designed by Web Developers for Web Developers
� Play doesn’t fight the HTTP or the browser
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
7
engine, Akka, …
16.6.2013. 21:33
Play Framework – Hello World!
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
World!8
16.6.2013. 21:33
Scala – Uvod1
� Nastala 2003. na EPFL u Lausanni (Švicarska) – Martin Odersky
� Originalno zamišljena da se izvršava na JVM-u i CLR-u
� Hibrid objektno orijentiranog i funkcijskog jezika
If I were to pick a language to use on the JVM today, other than Java, it
would be Scala.
-- James Gosling, creator of Java
Hibrid objektno orijentiranog i funkcijskog jezika
� Statički jezik
� Bolji kôd zbog compile-time provjera
� Bolje performanse od dinamičkih jezika (Groovy, Ruby, …)
� Kompatibilan s Javom
� Kompajlira se u Java bytecode
� Konzican i elegantan kôd
� 2-3x manje kôda u odnosu na Javu
� „Bolja Java” ?
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Though my tip though for the long term replacement of javac is Scala. I'm very
impressed with it! I can honestly say if someone
Odersky
9
impressed with it! I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Vennersback in 2003 I'd probably have never created
Groovy.
-- James Strachan, creator of Groovy
, …)
16.6.2013. 21:33
Scala – Uvod2
� Scala popravlja brojne Java „greške”
� Sve je objekt
� Type inference
� val country = new Country(„HR”)� val country = new Country(„HR”)
� Primjena koncepata iz funkcijskih jezika
� Kompaktna
� Nema potrebe za getterima, setterima, equals(), hashCode
� Scala povećava produktivnost programera
� Manje linija kôda (LOC)
� Izgleda kao dinamički jezik, a istovremeno je 100% statički
� Omogućava upotrebu novih (efikasnijih) idioma i načina programiranja
� Bolja čitljivost (podložno polemikama)
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
10
hashCode(), …
Izgleda kao dinamički jezik, a istovremeno je 100% statički
Omogućava upotrebu novih (efikasnijih) idioma i načina programiranja
16.6.2013. 21:33
Enterprise Scala Adoption
� Books to read
� Scala for the Impatient, Programming in Scala, Beginning Scala
� Akka in Action, Akka Concurrency
� Play for Scala, Play for Java
� Twitter users to follow: @odersky, @viktorklang, @jboner@djspiewak, @milessabin, @typesafe, @hseeberger, @@etorreborre, @jroper, @honzam399, …
� Blogs to read
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Dio materijala preuzet s http://typesafe.com/blog/enterprise-scala-adoption-roadmap-55683
http://letitcrash.com/ http://www.cakesolutions.net/teamblogs
http://www.jamesward.com/ http://blog.evilmonkeylabs.com/
http://jsuereth.com/archive.html http://debasishg.blogspot.com/
http://typesafe.com/blog
Tips1
Scala, Atomic Scala
11
jboner, @_JamesWard, @jsuereth, @rit, @ScalaIDE, , @jamie_allen, @psnively, @StefanZeiger, @rolandkuhn,
16.6.2013. 21:33
http://www.cakesolutions.net/teamblogs
http://blog.evilmonkeylabs.com/
http://debasishg.blogspot.com/
Scala Frameworks
� REST
� Spray.io – http://spray.io
� Play2 Mini - https://github.com/typesafehub/play2-mini
� Socko – http://sockoweb.org/� Socko – http://sockoweb.org/
� Unfiltered – http://unfiltered.databinder.net/Unfiltered.html
� Data Access
� Slick – http://slick.typesafe.com
� Anorm – http://www.playframework.com/documentation/2.1.1/ScalaAnorm
� Web Framework
� Scalatra – http://www.scalatra.org
� Lift – http://liftweb.net/
� Remote Procedure Call � Finagle – http://twitter.github.io/finagle
� Build Tool � sbt – http://www.scala-sbt.org/
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
mini
12
http://unfiltered.databinder.net/Unfiltered.html
http://www.playframework.com/documentation/2.1.1/ScalaAnorm
http://twitter.github.io/finagle/
16.6.2013. 21:33
Što je BALP?
� Sustav z
� Omogućuje bolji pregled poslovnog procesa
� Na koji način se to ostvaruje?
� Prikupljanjem poslovnih događaja (eng.
Prikazom � Prikazom
� Izradom dinamičkih statističkih izvještaja
� Reakcijom na predefinirane poslovne događaje
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
tav za nadzor poslovnih procesa u informacijskom sustavu
Omogućuje bolji pregled poslovnog procesa
Na koji način se to ostvaruje?
Prikupljanjem poslovnih događaja (eng. event) u stvarnom vremenu
Prikazom podataka u stvarnom vremenu (eng. real-time)
13
Prikazom podataka u stvarnom vremenu (eng. real-time)
� Kontrolna ploča (eng. dashboard)
� KPI – Ključni pokazatelji uspješnosti (eng. key performance indicator)
Izradom dinamičkih statističkih izvještaja
� XLS
Reakcijom na predefinirane poslovne događaje
� Slanje dodatnih obavijesti
� Pokretanje dodatnih akcija
16.6.2013. 21:33
Zašto BALP?
� Povećanje profitabilnosti
� Real
� Povećanje zadovoljstva korisnika
� Proaktivne obavijesti na poslovne događaje� Proaktivne obavijesti na poslovne događaje
� Pristup relevantnim podacima za rješenje problema
� Povećanje produktivnosti
� Nadzor ukupne produktivnosti
� Nadzor produktivnosti pojedinog zaposlenika
� Prepoznavanje visoko produktivnih zaposlenika
� Kontrolna ploča
� Radije pogledajte
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Povećanje profitabilnosti
Real-time uvid u operativne poslove
� Poboljšanje operativne efikasnosti
� Dinamički odgovor na poslovne događaje
Povećanje zadovoljstva korisnika
Proaktivne obavijesti na poslovne događaje
14
Proaktivne obavijesti na poslovne događaje
Pristup relevantnim podacima za rješenje problema
Povećanje produktivnosti
Nadzor ukupne produktivnosti
Nadzor produktivnosti pojedinog zaposlenika
Prepoznavanje visoko produktivnih zaposlenika
Kontrolna ploča
Radije pogledajte ŠTO SE DOGAĐA nego pročitajte ŠTO SE DOGODILO
16.6.2013. 21:33
Arhitektura sustava1
HIBIS
event
vent generators (apps)
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Moneta
HYPOnet
event
event
event
event
event
dashboard(web browser)
push event
push event
15
storage
(web browser)
save event
pull event
BALP
external systems
16.6.2013. 21:33
Arhitektura2
push event
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Rule engine
Interface
event
Batch server
pull events
16
Dashboard
16.6.2013. 21:33
server
events
save event
Storage
Reporting engine
load data
Integracija s drugim sustavima
� Web servis
� REST/HTTP
� TCP/IP*
PROTOKOLI
� TCP/IP*
� File
� MQ
� AMQP – Advanced Message Queueing Protocol
� …
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Integracija s drugim sustavima17
16.6.2013. 21:33
Primjeri poruka
Activity(
UserActivity(Matija Capan,Provjera pečata i potpisa
Referent Naziv aktivnosti
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Activity(
EventHead(
192.168.200.10#1#4bff6492-f025-4aad-940e-91dd7ef53dae,
null,
Ana Anić,
Unos HUB1 naloga,
null
),
1364984874769,
34928,
null,
null,
null,
null,
null
)
18
i potpisa,1364984874695)
Vrijeme početka aktivnosti
16.6.2013. 21:33
91dd7ef53dae, Jedinstveni identifikator aktivnosti
Jedinstveni identifikator krovne aktivnosti [opcionalno
Referent
Naziv aktivnosti
Naziv krovne aktivnosti [opcionalno]
Vrijeme početka aktivnosti
Trajanje aktivnosti
Opis [opcionalno]
Organizacijska jedinica [opcionalno]
Šifra valute [opcionalno]
Iznos [opcionalno]
Šifra transakcije [opcionalno]
Životni ciklus poslovnog događaja
� Referent „Hrvoje Horvat” u aplikaciji otvara ekran za unos HUB3 naloga
� „Aplikacija” automatski šalje poruku UserActivity prema BALP serveru
PRIMJER
� UserActivity(Hrvoje Horvat, „Unos HUB3 naloga”, 1364984874695
� Ovaj podatak je unutar kratkog vremena vidljiv preko BALP
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
Životni ciklus poslovnog događaja1
Referent „Hrvoje Horvat” u aplikaciji otvara ekran za unos HUB3 naloga
prema BALP serveru
19
1364984874695)
preko BALP web aplikacije
16.6.2013. 21:33
Životni ciklus poslovnog događajaPRIMJER
� Referent „Hrvoje Horvat” nakon određenog vremena završi s unosom HUB3 naloga
� „Aplikacija” automatski šalje poruku Activity prema BALP serveru s vremenom koliko je referentu bilo potrebno za unos naloga
� Activity(Hrvoje Horvat, „Unos HUB3 naloga”, 1364984874695
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
� Activity(Hrvoje Horvat, „Unos HUB3 naloga”, 1364984874695
� Ovaj podatak utječe na podatke koji se prikazuju u statistici platnih naloga (HUB1, HUB3)
� Ovaj podatak utječe na grafikon „Raspodjela naloga”
Životni ciklus poslovnog događaja2
20
Referent „Hrvoje Horvat” nakon određenog vremena završi s unosom HUB3 naloga
prema BALP serveru s vremenom koliko je referentu
1364984874695, 34928) ***pojednostavljeni format
16.6.2013. 21:33
1364984874695, 34928) ***pojednostavljeni format
Ovaj podatak utječe na podatke koji se prikazuju u statistici platnih naloga (HUB1, HUB3)
Ovaj podatak utječe na grafikon „Raspodjela naloga”
DEMO
21
16.6.2
16.6.2
Powered by
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
23
16.6.2013. 21:33
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr
24
16.6.2013. 21:33
Hvala na pozornosti!
25
Hvala na pozornosti!