2010 veebruar Ivo Mägi ivoätwebmediadotee
Kes ma selline olen Kümme aastat tarkvaratööstuses Erinevad rollid, hetkel AS Webmedia tarkvara arendusjuht Kuus aastat Java SE/EE arendust Osalenud kokku 13 erineva ärirakenduse meisterdamisel, kõik sisaldasid ka integratsiooni Osakoormusega lektor TÜ-s aastast 2002
Millest räägime? Mis on integratsioon? Miks see teid üldse huvitama peaks? Miks (rakendusi) üldse integreeritakse? Milliseid võimalusi selleks olemas on? Millised on erineva võimaluse head ja vead? Erinevad aspektid* millega integratsioonil tuleb arvestada
System integration Tundub midagi suurt ja võimast? Tundub et selle eest peaks palju raha maksma?
Süsteemiintegratsioon System integration is the bringing together of the component subsystems into one system and ensuring that the subsystems function together as a system.in information technology, systems integration is the process of linking together different computing systems and software applications physically or functionally Wikipedia
Proovime seda segadust vähendada Füüsilise isiku tuludeklaratsioon Eluasemelaenu intressid Õppelaenu intressid Palgalt tasutud sotsiaalmaks Väärtpaberitehingud Koolituskulud Dial110 Helistaja positsioneerimine Helistaja info Sõiduki info Hoone info
Milleks integreerida: hallatavus Hallatavuse parendamine Inimene suudab hoomata ca 50 rida koodi 15 minutiga Aru saada seostest ca 100 000 rea koodi juures Proovime nüüd ette kujutada ühe panga infosüsteemide mahtu 10 000 000 LOC? 100 000 000 LOC? Veel hullem?
Milleks integreerida: keerukus Mitu seost on pildil? Aga siin?
Milleks integreerida: dubleeritus
Milleks integreerida: skaleeruvus
Milleks integreerida: kulud
Miks see mind peaks huvitama? Integratsioon on reeglina üks riskantsemaid lahendusi osi Integreeritav süsteem ei pruugi olla sinu kontrolli all Sul ei pruugi olla kogu infot integreeritava süsteemi kohta Integreeritav tehnoloogia võib olla sulle tundmatu / vananenud
Eiei miks see mind huvitama peaks? Integreerides väliseid osapooli lisad sa oma lahendusele / ärile väärtust: odavamalt, kiiremini ja kvaliteetsemalt... kui kõike seda ise realiseerides
Ja ikkagi miks see mind huvitama peaks? [Keeruline] OR [Palju väärtust] -> [Palju raha!]
Integratsiooni tüübid Failide transport Jagatud andmed. Remote procedure calls Messaging Mashups
Failide transport
Failide transport: + Lihtne Lihtne Lihtne
Failide transport: - Formaatide ebaühtlus Probleemid lukkudega Terviklikkuse tagamine
Failide transport: kus kasutada? Prototüüpimine Lihtsad süsteemid
Jagatud andmed
Jagatud andmed: + (Relatsioonilised) andmebaasid on väga levinud Joine ja filtreidsaab rakendada otse andmebaasis kus see on väga efektiivne Lihtne
Jagatud andmed: - Erinev arusaam andmestruktuuridest erinevates rakendustes Probleemid lukustusega
Jagatud andmed: millal kasutada Lugemisoperatsioonide teostamiseks ettevõttesisesel integratsioonil Eesti mahtude korral töötab väga edukalt Erandid juhul kui allstruktuurid (müük, ladu, tootmine) defineeerivad samu mõisteid väga erinevalt. Ettevõtetevahelisel integratsioonil (väga) ebasoovitav
Jagatud andmed: tehnoloogia JDBC ODBC DBI ja muidugi... SQL...
RemoteProcedureCall
RPC: pseudokoodi näide pseudosample(list parameters) { RemoteObject o = findremoteobjectfromsomewhere( address ); Result r = o.executemethod(parameters); dosomething(r); }
RPC: + Võimaldab arendada kasutades sarnaseid kontseptsioone tavalisele programmeerimisele Objektid Funktsioonide väljakutsed Vigade töötlus Ühe tehnoloogia piires (Java,.NET) suhteliselt hästi standardiseeritud
RPC: - Sõltuvused süsteemide vahel propageerivad tõrkeid üle süsteemi piiride Peidetud keerukus on ohuks jõudlusele
RPC: Millal kasutada? Ettevõttesiseks integratsiooniks seisundit muutvate operatsioonide korral Lugemisoperatsioonide jaoks juhul kui ei ole põhjendatud samale andmestruktuurile kolimine Andmestruktuurid/andmestik on väga suur Ettevõtete ühinemine, ülevõtmine Ettevõtetevaheliseks integratsiooniks Kui messaging ei sobi
RPC: tehnoloogia CORBA DCOM RMI XML-RPC
Messaging Asünkroonne teadete edastus: saatja ja vastuvõtja eraldatakse teineteisest vahendaja abil. Saatja ei pea teadma midagi vastuvõtja(te)st Vastuvõtja ei pea teadma midagi saatja(te)st Saatja ja vastuvõtja ei pea olema samal ajahetkel operatiivsed
Messaging: näide processorder(order o) { checkbalance(o.getproduct()) checkcredithistory(o.getcustomer() calculateprice( o.getproduct(), o.getcustomer()) composedelivery(o.getaddress()) } BalanceChecker() { check(product p) { if(checkbalance(p)) notifybalanceok(p) else cancelorder(p.getorderid()) } } CreditChecker() { check(customer c) { if(score(c) > 500) notifycreditok(c) else { cancelorder(c.getorderid()) } }...
Messaging: kaks versiooni Queue: point-to-point Topic: publish-subscribe
Messaging: + Nõrgemalt seotud süsteemid Süsteemide selgemalt jaotunud modulaarsus
Messaging: - Keerulisem realiseerida kui alternatiivid Keerulisem probleeme lahendada Infrastruktuur võib olla kallis
Messaging: millal kasutada Kui suhtlus saab olla asünkroonne Kui süsteemid on ebausaldusväärsed Ettevõttevahelise integratsiooni korral
Messaging: tehnoloogia Java: JMS implementatsioonid MS: MSMQ EAI: Oracle Aqualogic products, IBM MQ,... Event Oriented solutions
Mashups Rakendus mis kombineerib andmed eri allikatest kokku view kihis Peamine erinevus portaalist: portaalis kombineeritakse andmed serveris
Mashups: www.housingmaps.com Google Maps + Craigslist
Mashups: www.earthalbum.com Google Maps+ Flickr
Mashups: ChromedBird Twitter + Google Chrome Extensions
Mashups: millal kasutada Kui vaated on disainitud taastasutavate widgetite abil Kui äriväärtus seisneb just vaate tasemel kombineerimises
Mashups: tehnoloogiad Presenteerimine: XHTML + CSS Andmed: DOM Andmevahetus: AJAX Andmete kogumiseks Screen scraping RSS ja ATOM Semantiline veeb
Järgmises loengus: Erinevad aspektid integratsioonil Jõudlus Turvalisus Läbipaistvus Terviklikkus Hallatavus Vigade töötlus Sõnumite konversioon
Viited http://www.eaipatterns.com