Serverside symposium, toinen päivä

Loman pitäminen kaikkine hauskuuksineen on vienyt tämän toisen päivän tapahtumien kirjoittamista eteenpäin ja eteenpäin, mutta tässä nyt viimein muistiinpanoja ja ajatuksia toisen päivän esityksistä.

Enterprise Application Mashup: Architecting for the Future with
Eugene Ciurana

Pääosin content-free -esitys, jossa puffattiin tehokkaasti muutamaa mielenkiintoista teknologiaa Java-maailmasta. Sinällään slidejen pohjalta odotin enemmän, mutta mitään pahaa esityksestä ei sinällään voi sanoa sillä Hani Suleiman sanoi sen kaiken jo paremmin.

Mikäli asioista olisi kuullut ensimmäistä kertaa ja olisi aivan märkäkorva it-managementin kanssa, olisi esitys varmaan avannut silmiä ja ollut hyödyllinen.

Monitoring, Management and Troubleshooting in the Java SE 6 Platform with
Luis-Miguel Alventosa

Samaan aikaan Eugenen esityksen kanssa olisi mennyt perusesitys JVM:n monitoroinnista, eli puhetta JMX:stä. Slidejen perusteella päätin olla menemättä, mutta katsoa tarkemmin jossain vaiheessa miten Glassbox:ia voisi käyttää ongelmien selvittämisessä.

Glassbox on Springin AOP-ominaisuuksia hyödyntävä sovellus, jolla voidaan ilman koodimuutoksia tai ihmeellisiä konfiguraatioita monitoroida ja tarkkailla sovelluksia sovelluspalvelimessa. En ole sovellusta itse vielä kokeillut, mutta kiinnostuin siitä katsottuani Google-videon siitä.

Java Performance Myths: What Lurks Deep Inside a JVM? with
Cliff Click

Valitettavasti tämän esityksen slidejä en saanut etukäteen, sillä esityksen sisältö näin jälkikäteen vaikuttaa hyvältä. Muutamia pointteja:

  • Javan JIT alkaa olla jo hemmetin hyvä
  • kääntäjän kannalta kannattaa kirjoittaa normaalia / tyypillistä koodia, eikä kikkailla nopeusoptimointeja
  • garbage collection on nykyään nopeaa, hitautta syntyy kun heapin koko kasvaa (100M heap 0.1s, 1+Gbyte HEAP 100 s)
  • objektipoolit kannattavia vain isoille objekteille tai objekteille joiden initialisointi on raskasta ( esim. tietokanta-yhteydet )
  • useimmiten kannattaa luottaa että JVM, JIT ja GC toimii oikein


Case Study: Voca: High Volume Processing Using Spring Framework with Meeraj Kunnumpurath and William Soo

Seuraavaksi ohjelmassa oli kaksi mielenkiintoista esitystä, joista päädyin ensimmäiseksi seuraamaan Voca-case studya sillä sekä case study että Gregor Hohpen esitys käsittelivät enemmän tai vähemmän event based arkkitehtuureita.

Voca on englantilainen yhtiö, joka tarjoaa maksujen käsittelypalveluita organisaatioille briteissä ja myöhemmin myös koko Euroopassa. Bisnes asettaa arkkitehtuurille suuret vaatimukset tehokkuuden ja datan käsittelyn oikeellisuuden suhteen – puhumattakaan järjestelmän skaalautuvuudesta vastaamaan ruuhkahuippuihin.

Peruskomponentit joita Vocassa käytetään ovat Spring, Hibernate, Oracle RAC ja BEA WebLogic. Viestijärjestelmänä he käyttävät Oracle AQ Message Fabricia, joka mahdollistaa viestien käsittelyn saman JDBC-transaktion sisällä kuin muut tietokantaoperaatiot.

Pääperiaatteet heidän järjestelmän suunnittelussaan:

  • minimoida datan liikuttaminen
  • tehtävien ajaminen rinnakkain
  • datan fyysinen partitiointi
  • volatile datan lukemisen ja kirjoittamisen optimointi
  • usein käytetyn datan cachettaminen
  • monimutkaisen bisneslogiikan suorittaminen Javalla
  • minimoida eri prosessien kamppailu (contention )
  • transaktioiden rajaaminen tiukasti, lokaalit transaktiot

Seuraava versio heidän teknologia-stackistaan tulee sisältämään todennäköisesti seuraavia komponentteja:

  • Spring 2.0 ( JPA, AspectJ, Java 5 )
  • Java 5 / JEE 5.0
  • JPA / Hibernate 3.2
  • ESB ( Mule )
  • SCA ( Fabric 3 )
  • Jboss SEAM ( JPA integraatio, poistaa turhaa konfiguraatiota )

Esitys oli mielenkiintoista seurattavaa, ottaen huomioon että kovin montaa kertaa ei pääse näkemään miten yli 80 miljoonaa transaktiota päivässä käsittelevää järjestelmää on suunniteltu ja miten samat teknologiat ja patternit, joilla myös vaatimattomampia järjestelmiä suunnitellaan, ovat komponentteina myös erittäin suurissa järjestelmissä.

Voca-casestudyn jälkeen ehdin nähdä vielä lopun Gregor Hohpen esityksestä:

Programming without a Call Stack – Event-driven Architectures with Gregor Hohpe

Hohpe on mies erinomaisen Enterprise Integration patterns-kirjan takana, ja esityksen sisältö oli hyvin pitkälle samaa asiaa kuin kirjassa, käsiteltynä kuitenkin käytännönläheisemmin myös konkreettisen esimerkin kautta, sisältäen samalla pohdintaa eri vaihtoehdoista.

Vaikka ehdin nähdä esityksestä vain lopun case studyn, ehdin silti kokea pienen valaistumisen. Sen lisäksi että Hohpe on hyvä kirjoittaja, onnistuu hän myös puhujana erinomaisesti.

Mikäli ette jo ole lukeneet, kannattaa lukea Hohpen kirja – rauhallisesti – kannesta kanteen.

POJO Scalability and Large Workloads with Open Terracotta with Jonas Bonér

Ennen lounasta oli vuorossa mielenkiintoinen esitys JVM-klusteroinnista Terracottalla. Ennen esitystä olin hieman skeptinen Terracotan suhteen, sillä hyvä kolleegani oli aikoinaan pelästynyt Terracottan käyttämistä ja sen sijaan puhunut enemmän kokoajan Tangosolin – nykyään Oraclen – Coherence-cachesta. Lueskellessani Terracottan dokumentaatiota ja katsoessani esitystä yllätyinkin positiivisesti, sillä loppujen lopuksi Terracotta voisi ollakin aivan loistava vaihtoehto klusteroitavien Java-sovelluksien tekemiseen JVM:n klusteroinnilla.

Terracotta toimii AOP:n avulla käyttäen aivan normaaleja POJO-objekteja, joten sen käyttöönottaminen on suhteellisen helppoa. Terracottan konfiguraatiossa määritellään root-objektit, jotka klusteroidaan eri VM:n kesken ja objektityypit, joita nämä root-objektit voivat sisältää. Toisinsanoen on suhteellisen helppoa tehdä Master/Worker-patternin mukainen sovellus.

Pakko lisätä omalle todo-listalle tehdä kokeiluja Terracottan kanssa.

Spring 2.1 Update with Adrian Colyer

Samaan aikaan Bonerin esityksen kanssa olisi ollut myös esitys Spring Frameworkin uuden version ominaisuuksista. Päättelin slidejen perusteella että samat asiat pystyy lukemaan itsekin verkosta – ja että Interface 21 tulee joka tapauksessa panostamaan paljon siihen että käyttäjät ottavat uuden version Springistä käyttöönsä, joten pintaraapaisusta uusiin ominaisuuksiin ei välttämättä ole niin paljon hyötyä.

Isoja juttuja Spring 2.1:n kohdalla on selkeämpi JavaEE 5 ja Java 6 ominaisuuksien hyödyntäminen, mukaanlukien entistä helpompi konfiguroitavuus annotaatioiden avulla. Spring Frameworkin tekijät ovat selkeästi ottaneet opiksi saamastaan kritiikistä pelkän XML:n käytön suhteen ja tarjoavat nyt hyvin mahdollisuudet ohjelmoijille rakentaa ja konfiguroida sovelluksensa joko XML:n tai annotaatioiden avulla, tai niiden sopivalla yhdistelmällä.

http://blog.interface21.com/main/2007/05/14/annotation-driven-dependency-injection-in-spring-21/

http://blog.interface21.com/main/2007/05/29/customizing-annotation-configuration-and-component-detection-in-spring-21/

http://blog.interface21.com/main/2006/11/28/a-java-configuration-option-for-spring/

Annotaatioiden käyttö ja entistä parempi AOP-tuki tekevät Spring 2.1:stä vielä entistä monipuolisemman työkalun, mutta samalla myös saattavat sekottaa ja hämmentää niitä, jotka tulevat uutena Springin maailmaan – puhumattakaan niistä jotka ovat jo aikaisemmin tottuneet tekemään isoja XML-konfiguraatioita. Joudun pureskelemaan vielä hetken ja kokeilemaan jossain testiprojektissa niitä kunnolla, ennenkuin uskallan muodostaa kunnolla oman mielipiteeni – saati olla varauksettomasti positiivisesti niiden suhteen.

Mutta mikäli ymmärsin slidejen sisällön oikein, Spring 2.1:ssä pitäisi AspectJ loadtime-weavingin olla entistä helpompaa – ja mahdollista ilman erillisiä aop.xml konfiguraatioita. Mikäli näin todellakin on, tekee se AOP:n käyttämisestä todella helppoa – ja mahdollistaa domainobjektien konfiguroinnin todella vaivattomasti.

@Configurable
public class MyDomainObject {

@Autowired
private MyService myService;
}
MyDomainObject obj = new MyDomainObject();

Konfigurointi olisi mahdollista tehdä joko prototyypillä tai ylläolevan esimerkin mukaan hyödyntäen autowire-ominaisuutta. How cool is that?

http://static.springframework.org/spring/docs/2.1.x/reference/aop.html

Jotkut ovat innoissaan OSGi-moduulituesta, mutta en ole itse vielä ehtinyt muodostaa kunnollista mielipidettä siitä kun en ole OSGi:n tapaista järjestelyä kaivannut tai tarvinnut.

Note to self: Testaa Spring AOP:n eri mahdollisuuksia kunnolla käytännössä.

Luonnollisesti esityksen tärkeä osa oli myös mainostaa mitä työkalujen rintamalla tapahtuu ja miten projektit Spring Portfoliossa kehittyvät. Spring IDE on todellakin kätevä lisäys Eclipseen jo pelkästään Spring bean-työkalujen takia. Mahdollisuus etsiä Eclipsen työkaluilla beaneja samalla tavalla kuin luokkia tai metodeja, on erittäin kätevää. Spring IDE on myös erittäin kätevä työkalu WebFlown käyttäjille, tarjoten mahdollisuuden tarkastella flowta visuaalisesti. Visuaalinen esitysmuoto flowlle tekee virheet paremmin näkyviksi ja tekee sitä kautta ohjelmoinnista jälleen kerran hieman mukavampaa.

Spring Ide Blog: http://springide.org/blog/

Portfoliossa on hautumassa ja kehittymässä muutama mielenkiintoinen projekti, joista osa on jo tuttuja ja osa odottaa käytännöntestaamista.

WebFlowta olen ehtinyt jo yhdessä testiprojektissa kokeilla ja huomata varsin käteväski työkaluksi. En ole ehtinyt vielä kokeilemaan riittävästi Jboss Seamia että osaisin verrata näitä kahta keskenään, mutta ennepitkää teen senkin. Ainoa asia joka toistaiseksi harmittaa minua Webflowssa on että flown eri stateille ei ole mahdollista määrittää omaa urlia.

Acegi Security, josta tulee nyt Spring Security, on samaisesta testiprojektista tuttu tuttavuus ja erittäin vakuuttava kokonaisuus. Sen hankaluus on lähinnä ollut konfiguroitavuudessa, joka on kiltisti sanottuna ollut työlästä. Puhuin konferenssin aikana Spring Security-projektin vetäjän, Ben Alexin, kanssa ja ilmeisesti kesän aikana olisi tarkoituksena julkaista uusi versio, joka sisältää huomattavia helpotuksia ja parannuksia konfiguraatioihin, mukaanlukien objektien suojaamisen helpommin annotaatioiden avulla. Odottelen innolla.

Spring Webservices ja Spring Batch ovat puolestaan tuttuja projekteja vain blogipostauksien ja dokumentaation perusteella. En ole ehtinyt vielä käyttää niitä missään, tai suunnitella kunnolla niiden käyttöä.

From Tomcat to GlassFish: An Update on OpenSource Server-Side Java at Sun with Simon Ritter, Java Technology Evangelist, and Eduardo Pelegri-Llopart, Distinguished Engineer

Sunin keynote oli edellisen päivän Oraclen keynoteen verrattuna hämmästyttävän hyvä, käsitellen lähinnä J2EE5:sta ja Glassfishiä. Esiintyminen oli hyvin hillittyä ja puheessa oli developereita kohtaan jopa nöyryyttä, joka osoitti että Sun haluaa selkeästi olla erilainen pelaaja kuin Oracle tai muut suljetun stackin tarjoajat Java-maailmassa.

Esityksen sisältö käsittele tarkemmin Glassfishin filosofiaa ja historiaa, sekä Sunin lähestymistä ko. projektiin ja open sourceen yleisemmin. Mukana oli tietysti puhetta featureista ja eilaisista benchmarkeista, jota osoittavat miten hyvä Glassfish jo nyt on – ja miten siitä tulee vielä entistä parempi. Tärkeä viesti koko esityksessä oli, että Sun on tosissaan open sourcen kanssa ja tekee töitä sen eteen että teknologioita otettaisiin enemmän käyttöön, ja että myös partnereilla olisi hyvät mahdollisuudet tehdä bisnestä samassa ekosysteemissä.

http://blogs.sun.com/TheAquarium

Kysyin konferenssin jälkeen sähköpostilla mitä suunnitelmia Sunilla on mm. JavaCapsin suhteen Glassfishin ja OpenESB:n päällä, mutta mitään konkreettista sanottavaa hänellä ei vielä ollut. Pyysi ottamaan yhteyttä uudestaan kuukauden vaihteessa.

Aivan esityksen lopuksi oli gadget-demoja Sunspots-laitteilla. Sunspotsit ovat tulossa kohtapuoliin myyntiin myös Euroopassa, mutta tarkaa päivää ei ollut vielä tiedossa – eikä hintaa. Arvio oli jotain viidensadan euron tietämillä per paketti, jossa on kai kolme laitetta.

http://www.sunspotworld.com/

Large-scale EAI, SOA ESB and Grid in Java with John Davies

John Daviesin esitys oli raikas tuulahdus ja sisälsi käytännön kokemusta juoksuhaudoista. Esityksessään hän kävi läpi integraatioiden historiaa ja sitä miten SOA-strategioissa esitettävät asiat omalta osaltaan muistuttavat samoja ideoita kuin CORBA:n aikoina, ja että uusien asioiden tekeminen ei saisi tarkoittaa perusasioiden unohtamista – yksinkertaisuutta ja järjestelmien througputtia.

Davies kertoi konkreettisia kauhutarinoita ja kädetyksiä maailmalta, alkaen siitä että miten järjestelmien suorityskyky on onnistuttu rampauttamaan tekemällä prosessien hallinta BPEL:nä, kärsien turhaan webserviceiden aiheuttama overhead prosessissa joka olisi lokaalina mennyt läpi hetkessä. Esitys toisti siis hyvin samanlaista teemaa kuin muutkin casestudyt konferenssissa:

  • yksinkertaisuus on valttia
  • monimutkaiset standardit, menetelmät ja patternit voivat selkeyttämisen sijaan olla haitaksi järjestelmän ymmärrettävyydelle ja suorituskyvylle
  • vaatii todellista ammattaitaitoa tunnistaa ne tilanteet ja tähdätä yksinkertaisuuteen ja tehokkuuteen

Getting Started with JSR-208: Java Business Integration (JBI) with
Eric Lu

Eric Lu:n esitys käsitteli Java Business Integration-speksiä, eli JSR-208:aa. Esitys sinällään ei tuonut mitään uutta ymmärrystä speksiin mutta osana esitystä pidetty demo ChainBuilder ESB-työkalusta antoi esimakua siitä miten markkinat JBI:n ympärillä voivat kehittyä.

JBI on standardina lähinnä siis merkittävä ESB-toimittajille ja vendoreille, jotka haluavat rakentaa markkinoille esimerkiksi valmiita komponentteja jotka toimisivat useamman eri valmistajan ESB:ssä. Käyttäjille siitä on todella vasta iloa kun työkalut oikeasti kehittyvät vielä eteenpäin, komponentteja tulee valmiiksi ja vapaasti käytettäväksi – ja JBI-yhteensopivat tuotteet kehittyvät niin käytettäviksi että niiden käyttäminen on helpompaa ja tehokkaampaa kuin jonkin yksittäisen vendor lock-inin sisältävän ratkaisun käyttäminen.

Tähän asti kun olen katsellut mm. Service Mixiä ja Sunin OpenESB:tä, niin ainakin tällä hetkellä tuntuu siltä että hyvin tuotteistettu ja markkinoilla paikkansa ansainnut Mule on helpompi ja monipuolisempi ratkaisu kuin kumpikaan vaihtoehto. Sekä ServiceMix että OpenESB ovat todennäköisesti kumpikin myös erittäin hyviä tuotteita ja ratkaisuja, mutta niiden käytettävyys on dokumentaation ja esimerkkien puuttumisen takia surkea.

Käytännössä siis päälimmäiseksi jää JBI:stä mieleen että standardi aiheuttaa tällä hetkellä enemmän päänvaivaa ja overheadia kuin varsinaista hyötyä. Tunne on siis samanlainen kuin JSF:n kanssa ennenkuin tuli frameworkkeja ja työkaluja, jotka tekivät JSF:n käyttämisestä helpompaa ja toisaalta realisoivat joitain niistä potentiaalisista hyödyistä. En vieläkään pidä JSF:stä, mutta seuraan miten työkalut ja markkinat kehittyvät sen ja JBI:n ympärillä.

http://www.chainforge.net/index.html

Loppupäivä koostui BOF ( Birds of a feather ) -sessioista, joissa siis tavoitteena oli koota asioista kiinnostuneita ihmisiä yhteen keskustelemaan kyseisestä aiheesta hieman vapaamuotoisemmin.

BOF: Spring: User’s Perspective with Eberhard Wolff and Adrian Colyer

Spring-BOF toi yleisön eteen tentattavaksi Interface 21:n Eberhard Wolffin, CTO Adrian Colyerin ja mm. Spring Securitystä tutun Ben Alexin.

Kysymykset vaihtelivat laidasta laitaan, nostaen esiin huomioita siitä mikä on Springin tulevaisuuden fokus ja kuinka projektissa tullaan pitämään huolta siitä, että kompleksisuus ei tule lisääntymään turhaan, vaan että Spring olisi jatkossakin se helpompi ja tehokkaampi tapa tehdä J2EE-sovelluksia.

Viesti oli kuitenkin yhteisölle selkeä että näistä asioista kannetaan huolta, ja että Adrian Colyerin huolenaiheena on katsella kokonaisuutta – sitä mihin Springin core ja eri sivuprojektit kehittyvät, ja kuinka ne vastaavat käyttäjien tarpeeseen markkinoilla. Tähän tuntui myös liittyvän selkeästi Interface 21:n päätös ottaa sijoittajia mukaan toimintaan, jotta heillä olisi mahdollisuutta tehdä kehitystyötä myös eteenpäin – eikä ainoastaan parantaa frameworkkia projektityön osana. Se että he voivat investoida esimerkiksi työkalujen ( IDE ) kehittämiseen frameworkin ympärillä, merkitsee paljon yhteisölle ja teknologioiden käytettävyydelle – ja sitä kautta myös koko frameworkin leviämiselle.

Validina riskinä toki on että nämä nuoret ja fiksut urhoolliset ohjelmoijat irtautuvat arjen relaiteeteista ja ihastuvat liikaa eleganttien ja mielenkiintoisten ongelmien ratkaisemiseen, sellaisiin ongelmiin jotka eivät ole välttämättä oikeita ongelmia kovin monelle muulle. Ja toisaalta mahdollisuutena on, että heidän investointinsa kannattaa ja he tuovat mainstreamiin alaa eteenpäin vieviä tuotteistettuja innovaatioita, kuten esimerkiksi Spring AOP:n kanssa on käynyt. AOP ei ole koskaan Java-maailmassa breikannut kunnolla läpi, mutta SPring AOP on ainakin tehnyt AOP:n käyttämisestä helpompaa ja kivuttomampaa.

Positiivista oli huomata että loppupeleissä Inetrafec 21:n kaverit tuntuivat olevan suhteellisen jalat maassa asioiden suhteen – eivätkä todellisuudesta irtautuneita rock-star -wannabeläisiä. Suleimanin Penis Penis-heitot ja asioihin myös kriittisesti suhtautuva yhteisö onneksi puhkoo turhat kuplat kuolemattomuudesta ja erinomaisuudesta — asia jota toivoisi myös harrastettavaksi Ruby-yhteisössä.

ESB How To: From Software Selection to Mission-Critical Application Deployment with
Eugene Ciurana

Eugene Ciurana veti ESB-BOF:n suhteellisen hyvin, ja reilun viidenkymmenen ihmisen voimin käytiin läpi millaisia eri ratkaisuja eri organisaatiot ovat tehneet ja missä vaiheessa eri osallistujat ovat omissa hankkeissaan. BOF:n aikana käytiin läpi erilaisia mielipiteitä ja näkemyksiä siitä miten ESB eroaa tai muistuttaa ratkaisuna muita tapoja ratkaista samoja tarpeita, ja kuinka eri vendorit mielellään liimaavat yhteensopivuusmielessä ESB-kirjaimet minkä tahansa tuotteen kylkeen.

Ciurana markkinoi jälleen kerran voimakkaasti Mulea ja sinällään hyvänä antina tilaisuudelle esitteli jonkun kolmannen tahon tehneen arviointilomakkeen eri ESB-toimittajista. Lomake on ladattavana hänen sivuiltaan ja sisältää sinällään hyvän pohjaan omaa ESB-evaluointia varten.

http://eugeneciurana.com/site.php?page=musings

JCR in the Real World with Alexandru Popescu

Päivän viimeinen BOF käsitteli Java Content Repository -speksiä, eli JSR-170:ää. Sessiota tuli pitämään Alex Popescu, joka on tekninen hahmo InfoQ-palvelun takana ja osallistuja monissa open source-projekteissa, mukaanlukien myös Magnolia CMS, jonka päälle InfoQ on rakennettu. BOF:ssa käytiin läpi JSR-170 speksi lyhyesti läpi ja keskusteltiin eri implelemntaatioista, joita tällä hetkellä löytyy ja niiden kokemuksista.

InfoQ:n taustalla pyörii Apachen Jackrabbit, jonka tietokantana käytetään Berkley DB:tä – mutta muuten muilla osallistujilla oli enemmän mielenkiintoa ja kysymyksiä esimerkiksi siitä miten Alfresco-toimii ja tuleeko se muuttamaan jollain merkittävällä tavalla sisällönhallintamarkkinoita Java-maailmassa. Kontaktoin pari Rochen kaveria, joilla on Puolassa menossa parhaillaan projekti jossa Alfresco on taustamoottorina. Lupailivat laittaa kokemuksia syksymmällä.

BTW. Alfrescolla on tänään ja viikon päästä ( 23. päivä ) tunnin mittainen webinar tuotteestaan. Kannattanee katsoa.

http://www.alfresco.com/

This entry was posted in java, technology. Bookmark the permalink.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s