1
Akka, Play & Scala u praksi STJEPAN BULJAT ETNA D.O.O. [email protected]
@sbuljat JavaCro ‘13 – 2nd International Java Conference in Croatia 2 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 Java Scala
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 16.6.2013. 21:33 3 Akka - Uvod
Threads are bad? Ne nužno, ali apstrakcija može biti korisna… tu dolazi Akka Akka je middleware koji omogućuje izgradnju visoko konkurentnih i distribuiranih event-driven aplikacija koje su otporne na greške (eng. fault tolerant ) 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 Erlangu 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 Heap-a)
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 4 Akka – Actor
Actor može biti alternativa za: Thread, Component, Listener , Service, Load balancer , EJB SB / MDB, … Osnovne actor operacije DEFINE CREATE SEND BECOME SUPERVISE
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 5 Akka – Remoting / Routing
Remoting Dvije vrste
LOOKUP – Pristup actoru na udaljenom čvoru
CREATE – Kreiranje actora na udaljenom čvoru
Load balancing (routers) Više implementacija: RoundRobinRouter, RandomRouter , BroadcastRouter, …
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 6 Play Framework – Uvod 1
Play je… baziran na asinkronom modelu koji je izgrađen povrh Akka Framework-a Stateless Non-Blocking IO 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 16.6.2013. 21:33 7 Play Framework – Uvod 2
Play je… high-productivity Java Web Framework Inspiriran s Ruby on Rails, Django, … Play je… full-stack platforma Integriran compiler, embedded server, template engine , Akka, … 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 16.6.2013. 21:33 8 Play Framework – Hello World!
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 9 Scala – Uvod 1
Nastala 2003. na EPFL u Lausanni (Švicarska) – Martin Odersky Though my tip though for the long term Originalno zamišljena da se izvršava na JVM-u i CLR-u replacement of javac is Scala. I'm very Hibrid objektno orijentiranog i funkcijskog jezika impressed with it! I can honestly say if someone If I were Statički to pick jezik a language to use on had shown me the Programming in Scala book the JVM today, other than Java, it Bolji kôd zbog compile-time provjera by Martin Odersky, Lex Spoon & Bill Venners would be Scala. back in 2003 I'd probably have never created Bolje performanse od dinamičkih jezika (Groovy, Ruby , …) Groovy. -- JamesKompatibilan Gosling, creator s Javom of Java Kompajlira se u Java bytecode -- James Strachan, creator of Groovy 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 16.6.2013. 21:33 10 Scala – Uvod 2
Scala popravlja brojne Java „greške” Sve je objekt Type inference 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 16.6.2013. 21:33 11 Enterprise Scala Adoption Tips 1
Books to read Scala for the Impatient, Programming in Scala, Beginning Scala , Atomic Scala Akka in Action, Akka Concurrency Play for Scala, Play for Java Twitter users to follow: @odersky, @viktorklang, @jboner , @_JamesWard, @jsuereth, @rit, @ScalaIDE, @djspiewak, @milessabin, @typesafe, @hseeberger , @ jamie_allen, @psnively, @StefanZeiger, @rolandkuhn, @etorreborre, @jroper, @honzam399, …
Blogs to read 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
Dio materijala preuzet s http://typesafe.com/blog/enterprise -scala-adoption-roadmap-55683 All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 12 Scala Frameworks
REST Spray.io – http://spray.io Play2 Mini - https://github.com/typesafehub/play2-mini 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 16.6.2013. 21:33 13
Sustavtav zza nadzor poslovnih procesa u informacijskom sustavu Omogućuje bolji pregled poslovnog procesa
Što je BALP? Na koji način se to ostvaruje? Prikupljanjem poslovnih događaja (eng. event ) u stvarnom vremenu 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 PDF XLS Reakcijom na predefinirane poslovne događaje Slanje dodatnih obavijesti Pokretanje dodatnih akcija
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 14
Povećanje profitabilnosti Real -time uvid u operativne poslove Poboljšanje operativne efikasnosti Zašto BALP? Dinamički odgovor na poslovne događaje Povećanje zadovoljstva korisnika 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
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 15 Arhitektura sustava 1
push event
HIBIS push event
dashboard event event (web browser ) Moneta
event event pull event
event HYPOnet external systems save event storage
vent generators (apps) BALP
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 16 Arhitektura 2
Dashboard
push event
Interface Storage
event save event
Rule engine load data
Batch server Reporting engine
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr pull events 16.6.2013. 21:33 17 Integracija s drugim sustavima PROTOKOLI
Web servis REST/HTTP TCP/IP* File Email MQ Twitter AMQP – Advanced Message Queueing Protocol …
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 18 Primjeri poruka
Referent Naziv aktivnosti Vrijeme početka aktivnosti
UserActivity( Matija Capan,Provjera pe čata i potpisa ,1364984874695 )
Activity ( EventHead( 192.168.200.10#1#4bff6492-f025-4aad-940e-91dd7ef53dae, Jedinstveni identifikator aktivnosti null, Jedinstveni identifikator krovne aktivnosti [opcionalno Ana Ani ć, Referent Unos HUB1 naloga , Naziv aktivnosti null Naziv krovne aktivnosti [opcionalno] ), 1364984874769 , Vrijeme početka aktivnosti 34928 , Trajanje aktivnosti null, Opis [opcionalno] null, Organizacijska jedinica [opcionalno] null, Šifra valute [opcionalno] null, Iznos [opcionalno] null Šifra transakcije [opcionalno] ) All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 19 Životni ciklus poslovnog događaja 1 PRIMJER
Referent „Hrvoje Horvat” u aplikaciji otvara ekran za unos HUB3 naloga „Aplikacija” automatski šalje poruku UserActivity prema BALP serveru
UserActivity(Hrvoje Horvat, „Unos HUB3 naloga”, 1364984874695 ) Ovaj podatak je unutar kratkog vremena vidljiv preko BALP web aplikacije
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 20 Životni ciklus poslovnog događaja 2 PRIMJER
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 , 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”
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 21
DEMO
16.6.2 16.6.2 23 Powered by
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 24
All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 25
Hvala na pozornosti!