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!.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages25 Page
-
File Size-