2009 oktoober ivo mägi ivoätwebmediadotee · praktiline töö moodustage 3-liikmelised grupid iga...
TRANSCRIPT
2009 oktoober2009 oktoober
Ivo Mägi
ivo ät webmedia dot ee
Kes ma selline olen� Kümme aastat tarkvaratööstuses
� Erinevad rollid, hetkel AS Webmedia tarkvara arendusjuht
� Kuus aastat Java SE/EE arendust� Kuus aastat Java SE/EE arendust
� Osalenud kokku 13 erineva ärirakenduse meisterdamisel
� Osakoormusega lektor TÜ-s aastast 2002
Selle loengu eripära� Senised loengud on käsitlenud tarkvara tootmist ühe
konkreetse projekti kontekstis� Käsitletud on ühte konkreetset distsipliini (testimine,
projektijuhtimine, etc)projektijuhtimine, etc)� Antud vaade on peamiselt teostajakeskne
� Nüüd teeme kõike tagurpidi� Räägime kõikidest projektidest korraga� Vaatame probleeme interdistsiplinaarselt� Vaade on pigem tellijakeskne
Millest räägime?� Miks see teid üldse huvitama peaks?
� Mis üldse on ärirakendused?
� Tellimisprotsess
Arenduskeskkond� Arenduskeskkond
� Infrastruktuur
� Süsteemi arhitektuur
� Infoarhitektuur
“Enteprise architecture”
Tundub midagi suurt ja võimast?võimast?
Tundub et selle eest peaks palju raha maksma?
Enteprise applications� Enterprise ei ole midagi muud kui sünonüüm
Company – le.
� Ehk siis tõlgime: enterprise applications – rakendused mis on loodud ettevõtetele nende äri toetamiseksmis on loodud ettevõtetele nende äri toetamiseks
� Loodetavasti enamik maagiast kadus ...
Näited� On ärirakendused
� Elektrooniline haiguslugu
� Ettevõtte palgamaksesüsteem
� Elektrooniline tuludeklaratsioon� Elektrooniline tuludeklaratsioon
� Ei ole ärirakendused� Tekstieditor
� Arvutimäng
� Operatsioonisüsteem
� Kompilaator
Lisame natuke maagiat tagasi� Tarkvaratootjad lisavad oma tootele tihti “Enterprise
Edition” prefiksi või sufiksi rõhutamaks et just see tooteversioon sisaldab kõiki võimalikke featuure� Kontrolli järele kas sul ikka on kõiki neid vidinaid � Kontrolli järele kas sul ikka on kõiki neid vidinaid
tegelikult vaja?
� Ettevõtted kes toodavad tarkvara näiteks pankadele, või telekomidele kutsuvad tihti oma tooteid “Enterprise something”� Nad teevad seda rõhutamaks et see mis valmib on SUUR
Suured rahad suured süsteemid*� Eestis on ca 50 000 ettevõtet
� 90% neist saavad hakkama lihtsa Exceliga
� 9% vajavad ERPi ning CRMi ning ehk midagi ärispetsiifilist mida saab lihtsalt skriptidaärispetsiifilist mida saab lihtsalt skriptida
� Ülejäänud (1%) vajaksid ärispetsiifilisi lahendusi, kuid 90% neist ei saa seda kas endale lubada või ei ole nad piisavalt innovatiivsed
� Ja olemegi jõudnud 0,1% ettevõteteni (50 ettevõtet!) kes moodustavad Eestis “enterprise” klassi turu tellides regulaarselt erinevaid lahendusi
Erinevaid lahendusi ja regulaarselt?� Tarkvaraarendusega seotud osa eelarvest on vähemalt
2 000 000 krooni
� Kes need ettevõtted siis on?� Pangad: Swedbank, SEB, Sampo, ...� Pangad: Swedbank, SEB, Sampo, ...
� Kindlustused: ERGO, IF, Salva, ...
� Telekomid: EMT, Elion, Tele 2, Elisa
� Riik: ministeeriumid ja ametid
� Tervishoid: TÜ kliinikum, PERH, ...
� Ülejäänud: Eesti Energia, Tallink, ...
Kuidas nad neid lahendusi teevad?� Teevad ise?
� Tellivad osaliselt selleks spetsialiseerunud ettevõtetelt?
� Tellivad täielikult sellele spetsialiseerunud ettevõtetelt?ettevõtetelt?
Ja kes need spetsialiseerunud ettevõtted on?� Webmedia,
� Helmes,
� Tietoenator,
Logica, � Logica,
� Proekspert,
� Mebius,
� Fujitsu,
� ...
Mis siis üldse üle jääb?� Tootearendused
� Skype, Playtech
� ... aga ka Raintree, Medisoft, ...
� Ülikoolide töörühmad� Ülikoolide töörühmad
� Startupid� ASI kapital
� Business angels
Ehk siis kokkuvõtteks:� Teil on väga suur tõenäosus sattuda töötama
ärirakendustega
� Kui te juba ärirakendustega töötama satute siis tõenäoliselt on (vähemalt finantsiliselt) huvitavam tõenäoliselt on (vähemalt finantsiliselt) huvitavam töötada suurte rakendustega� Eelarve 500 000kr versus 5 000 000 kr.
Äriarhitektuur� Käsitleme ühe ettevõtte erinevaid infosüsteeme ja
nende probleeme
� Vaatleme probleeme suurettevõtete kontekstis� Väikestel ettevõtetel on vähe süsteeme � Väikestel ettevõtetel on vähe süsteeme
� Väikeste ettevõtete probleemid on väikesed
Vaade tootmisettevõtte ärile tarkvara seisukohast:
Tarnijad Ladu TootmineFTP RMI
Raamatupidamine
Tellijad
Müük ODBCAruandlus / andmeanalüüs
Ja tegelikult:Tarnija 1
Ladu Tootmine
Tarnija 2
Raamatupidamine
Tellija 1
Müük
Tarnija 2
Tarnija 3
Tellija 2
Ärirakenduste spetsiifika� On palju andmeid
� Andmeid säilitatakse “igavesti”
� Operatsioone sooritatakse samaaegselt
Eksisteerib palju kasutajaliidese ekraane� Eksisteerib palju kasutajaliidese ekraane
� On integreeritud teiste ärirakendustega
Andmed� Tänapäeval praktiliselt igas ärirakenduses
opereeritakse andmetega� Klient, Arve, Aadress, Tellimus, Makse, ...
� Andmeid võib säilitada erinevates asukohtades� Andmeid võib säilitada erinevates asukohtades� LDAP, O-O baas, RDMBS, failisüsteem, ...
� 99+ % äriandmestikust hoitakse tänasel päeval relatsioonilises andmebaasis� Aga kas peaks? Alternatiivid?
Suuremad tootjad� Oracle
� IBM
� Microsoft
Sybase� Sybase
� MySQL
� Postgres
Baas ja arhitektuur� Ära käsitle baasi ainult andmehoidlana
� Eksisteerib arhitekte kelle jaoks on oluline disainida lahendus nii et see oleks andmebaasist sõltumatu
� Mida sellega võidetakse ja mida kaotatakse?
� Kasuta konkreetse tootja poolt pakutavaid võimalusi� Kasuta konkreetse tootja poolt pakutavaid võimalusi� Stored procedures
� Triggers
� Indexes
� Materialized views
� ...
� ... Aga loomulikult ainult siis kui sulle seda vaja on.
Milliseid operatsioone teha baasitasandil?� Operatsioonid andmehulkadega
� Mida suurem päring seda kindlamini on tegu baasioperatsiooniga
� Mida keerulisem päring seda kindlamini on tegu � Mida keerulisem päring seda kindlamini on tegu baasioperatsiooniga
� Äriloogika?
� Mida mitte teha baasis?� Kasutajaliidese loome
� Süsteemiintegratsioon
� Äriloogika?
Ärirakenduste spetsiifika� On palju andmeid
� Andmeid säilitatakse “igavesti”
� Operatsioone sooritatakse samaaegselt
Eksisteerib palju kasutajaliidese ekraane� Eksisteerib palju kasutajaliidese ekraane
� On integreeritud teiste ärirakendustega
Andmete säilitamine� Andmete “igavesti” säilitamine annab suurepärased
võimalused andmeanalüüsiks
� Miks andmeanalüüsi äris vaja on?
� Milliseid vaateid äri andmetele soovib� Milliseid vaateid äri andmetele soovib� Kas need vaated on dünaamilised või staatilised?
� Kui palju äri esindajad ise suudavad andmetega opereerida?
Andmete säilitamine� Kas säilitada operatiivbaasis või ladustada eraldi?
� Kas ladustamisel andmeid töödeldakse?
� Kes andmeid laost kasutama hakkab? Kas üldse kasutatakse või tõstetakse ainult jalust ära?kasutatakse või tõstetakse ainult jalust ära?
Ärirakenduste spetsiifika� On palju andmeid
� Andmeid säilitatakse “igavesti”
� Operatsioone teostatakse samaaegselt
Eksisteerib palju kasutajaliidese ekraane� Eksisteerib palju kasutajaliidese ekraane
� On integreeritud teiste ärirakendustega
Concurrency:good� Lõimede sünkroniseerimine on keeruline
� Õnneks on ärirakenduste arendajate elu lihtsam� Rakenduse töötamisel mitmes lõimes saab usaldada
rakendusserverite ja virtuaalmasinate lõimede haldustrakendusserverite ja virtuaalmasinate lõimede haldust
� Andmete samaaegsel muutmisel saab usaldada transaktsioone
Concurrency: bad� Offline concurrency
� Business transactions versus system transactions
� Locking
� Optimistic� Optimistic
� Pessimistic
� Deadlocks
Ärirakenduste spetsiifika� On palju andmeid
� Andmeid säilitatakse “igavesti”
� Operatsioone teostatakse samaaegselt
Eksisteerib palju kasutajaliidese ekraane� Eksisteerib palju kasutajaliidese ekraane
� On integreeritud teiste ärirakendustega
Kasutajaliidesed� Täna on popp teha ärirakenduste kasutajaliidesed
veebipõhistena� Loomulikult eksisteerib ja ka täna tehakse rich client
rakendusirakendusi
� Ärirakendustega aga soovitakse teha asju milleks veeb algselt mõeldud pole
� Tulemuseks on DHTML, AJAX ja muu maagiaga kokku kleebitud rakendused
Kasutajaliidesed: eesmärk� Teenuste pakkumine� Informatsiooni kuvamine� Lõppkasutaja suhtluse töötlus� Ehk siis, me kasutajaliideses EI
Suhtle andmekihiga� Suhtle andmekihiga� Vii läbi süsteemiintegratsiooni� Algata transaktsioone� Autoriseeri operatsioonidele ligipääse� ...
� VAID� Pakume infot ning töötleme serveeritud info põhjal kasutajalt
saadetud sündmusi.
Veebipõhised kasutajaliidesed: Java maailm� MVC
� AJAX
� Web 2.0
Struts
� JSF
� JSP
� XSL(T)
Velocity� Struts
� Spring MVC
� DOJO
� Scipt.aculo.us
� Stripes
� Wicket
� Velocity
� Tapestry
� Javascript
� XHTML
� DOM
� JSON
Ärirakenduste spetsiifika� On palju andmeid
� Andmeid säilitatakse “igavesti”
� Operatsioone teostatakse samaaegselt
Eksisteerib palju kasutajaliidese ekraane� Eksisteerib palju kasutajaliidese ekraane
� On integreeritud teiste ärirakendustega
Milleks ärirakendusi üldse integreerida?
Integratsiooni tüübid� Jagatud andmed.
� Remote procedure calls
� Messaging
Mashups� Mashups
Jagatud andmed� Andmemudeli kasutus mitme rakenduse poolt
� +� Relatsioonilised andmebaasid on väga levinud
Joine ja filtreid saab rakendada otse andmebaasis kus see � Joine ja filtreid saab rakendada otse andmebaasis kus see on kõige efektiivsem
� Lihtne
� -� Erinev arusaam andmestruktuuridest erinevates
rakendustes
� Probleemid lukustusega
Jagatud andmed: millal kasutada� Eesti andmemahtude puhul saab pea kõigi ettevõtete
majasisese integratsiooni teostada jagatud andmetega� Erandid juhul kui allstruktuurid (müük, ladu,
tootmine) defineeerivad samu mõisteid väga erinevalt.tootmine) defineeerivad samu mõisteid väga erinevalt.
� Ettevõtetevahelisel integratsioonil ebasoovitav
RPC� Ärioperatsioonide kasutus mitme rakenduse poolt
� Maksa arve� Leia klient� Peata isiku volitus� Peata isiku volitus
� Märkate erinevust – ei kasutata andmeid vaid mingit tüüpi ärioperatsiooni
� Teenusorienteeritud arhitektuuri alustala
� Kas stored procedure kasutus on RPC üle JDBC/ODBC/... on RPC või jagatud andmed?
RPC: Millal kasutada?� Ettevõttesiseks integratsiooniks juhul kui
� Andmemudelid on erinevad
� Andmestruktuurid/andmestik on väga suur
� Ei ole majanduslikult põhjendatud samale � Ei ole majanduslikult põhjendatud samale andmestruktuurile kolimine� Ettevõtete ühinemine, ülevõtmine
� Ettevõtetevaheliseks integratsiooniks� Kui messaging ei sobi
RPC: tehnoloogia� CORBA
� RMI
� RMI-IIOP
Web Services� Web Services
� DCOM
Messaging� Asünkroonne teadete edastus: vahendaja abil
eraldatakse teineteisest saatja ja vastuvõtja. � Saatja ei pea teadma midagi vastuvõtja(te)st
� Vastuvõtja ei pea teadma midagi saatja(te)st� Vastuvõtja ei pea teadma midagi saatja(te)st
� Saatja ja vastuvõtja ei pea olema samal ajahetkel operatiivsed
Messaging� Kaks põhimõtteliselt lahenduse tüüpi
� Queue: point-to-point
� Topic: publish-subscribe
Messaging: tehnoloogia� Java: JMS implementatsioonid
� MS: MSMQ
� EAI: BEA Aqualogic products, IBM MQ, ...
Integratsioon: mashups� Rakendus mis kombineerib andmed eri allikatest
kokku view kihis� Näide: Google Maps+Craigslist
� Näide: Google Maps+Flickr� Näide: Google Maps+Flickr
� Näide: maa-ameti korteritehingute statistika + city24
� Peamine erinevus portaalist: portaalis kombineeritakse andmed serveris
Mashups: millal kasutada� Kui view on disainitud taastasutavate widgetite abil
� Kui äriväärtus seisneb just vaate tasemel kombineerimises
Integratsioon: x-tee� Kes teavad mis on x-tee ja mis sellest kasu on?
� X-tee teenuste näiteid� Ettevõtte andmete küsimine registrikoodi järgi
Kontroll kas isik on ettevõtte volitatud esindaja� Kontroll kas isik on ettevõtte volitatud esindaja
� Isikule kuuluvate sõidukite päring
� Isiku elukoha päring
� Kontroll kas isikul on kehtiv kindlustus haigekassast
� ...
Integratsioon: näited� Võlamenetlusprotsess
� Jõustruktuuride infokasutus
� Kindlustuskompanii poliiside koostamine
Tellimine: kes neid süsteeme loob ja haldab?� Majasisene IT?
� Tänapäeval järjest rohkem outsource mudel� Miks?
� Mis mahus teenust väljast osta?� Mis mahus teenust väljast osta?� Kõik?� Arendus?� Hooldus?
� Millist teadmist kindlasti ei tohi oma ettevõttest ära lasta:� Ärikompetents� Kontroll infrastruktuuri üle� Integratsioon süsteemide vahel
Mida võib väljast tellida?*� Arendusteenust
� Süsteemianalüüsi
� Projektijuhtimist (osaliselt)
Testimist (osaliselt)� Testimist (osaliselt)
Mida väljast tellides tuleb fikseerida?� Arenduskeskkond
� Infrastruktuur
� Süsteemi arhitektuur
Infoarhitektuur� Infoarhitektuur
� Ehk siis – meie tänase loengu sisu
Arenduskeskkond� Versioonihaldus
� Tööülesannete haldus
� Ehitamine
Dokumentide haldusvahendid� Dokumentide haldusvahendid
� Integratsioonivahendid
� Protsess ja selle haldusvahendid
� Tarnete teostamise kord
Infrastruktuur� Andmebaas(-baasid)� Programmeerimiskeel(-keeled)� Rakendusserver (-serverid)� Kliendikeskkond (OS, brauser)� Kliendikeskkond (OS, brauser)� Paketeeritud rakendused (ERP, CRM, CMS, BPM, ESB)� Andmeteenused (autentimine, audit, kliendiinfo)� Integratsiooniprotokollid� Muu: Fail-over + load-balancing, SSL tugi, ID-kaardi
infrastruktuur, pangalingid, M-ID, x-tee tugi, puhverdamine, monitooring, ...
Süsteemiarhitektuur� Ärirakendustes võime eristada nelja eri liiki
rakenduste arhitektuuri:� Desktop-rakenduse arhitektuur
� Veebirakenduse arhitektuur� Veebirakenduse arhitektuur
� Sõnumiedastuse arhitektuur
� Batching protsesside arhitektuur
Süsteemiarhitektuur: veebirakendus� Tugevalt mõjutatud infrastruktuurist. Näide baseerub
Eestis levinud Java EE platvormil*
Mille alusel valikuid teha?� Tehniline
� Efektiivsed toodangukeskkonnas
� Produktiivsed arenduses
� Õpikõver� Õpikõver
� Äriline� Tööjõu saadavus ja hind
� Time – to – market
� TCO
Infoarhitektuur� Kust milliseid andmeid kasutada?
� Milliste reeglite alusel kasutada?
� NäitedKasutaja ja organisatsiooni info: LDAP/AD� Kasutaja ja organisatsiooni info: LDAP/AD
� Isikud: party patterni järgi realiseeritud baas.Kasutatakse üle ODBC/JDBC päringute
� Arved/Maksed: MS Dynamics AX/SAP/Oracle EBS. Kasutus üle stored procedure
� Tooted: omaloodud lahendus, kasutus üle RMI
Miks sellele tähelepanu pöörata?� Tüüpjuhtumid:
� Ettevõttel on igas rakenduses oma tabel “KASUTAJA”Miks see halb on?� Miks see halb on?
� Erinevad rakendused defineerivad erinevalt mõiste “TOODE”� Miks see halb on?
Arhitektuur kui protsess� Väga lihtne on äriarhitektil toota 500lk dokumente ja
käskida selle järgi toimida� Paraku see ei tööta, sest inimesed:
� ei loe seda materjali läbi� ei saa loetust aru� ei saa loetu eesmärkidest aru� kardavad muutusi� on mingi valdkonna / tehnoloogia idealistid� ...
� Kõik eelkirjeldatu toob kaasa selle et inimesed kas teadmatult või teadlikult töötavad arhitektuurile vastu
Arhitektuur kui protsess� Arhitekt ei saa olla “valgete kinnastega”
� Või õigemini saab küll – maailmas on päris palju “arhitekte” kelle relvastuses on ainult Powerpoindislaidid ja Wordi dokumendid
� Nemad on esimesed kes praeguses majandussituatsioonis lahti lastakse
� Tuleb omada kontakti reaalsusega� Töövahenditeks on ikkagi ka IDE, andmebaasiklient,
shelli skriptid, etc.� Tuleb pidevalt jälgida mida arendusest tulemina
tarnitakse ning kontrollida selle sobivust suurde pilti
Arhitektuur kui protsess� Peaaegu alati on lähtepositsioonis midagi mis
“ideaalsesse” arhitektuuri ei sobi� Väga harva saab alustada tühjalt lehelt – tüüpiliselt on
teil olemas juba kümneid rakendusiteil olemas juba kümneid rakendusi
� Pole kasu ainult ideaalse maailma kirjeldamisest, tuleb kirjeldada ka viis sinna jõudmiseks
Arhitektuuri seos äriga� Arhitekt peab ärist aru saama
� Arhitekt peab suutma ärile põhjendada mingi muudatuse kasulikkust äri seisukohast
� Kujutage end ise ette CEO/VC/kantsleri seisukohast � Kujutage end ise ette CEO/VC/kantsleri seisukohast kui teile öeldakse:
“Migreerime kõik OC4J 9 JDK 1.4 instantsid WLS 10 JDK 6.0 peale ning juurutame paralleelselt SSO teenuse.
Maksma läheb see umbes 5-10MEEK ning valmis saab loodetavasti 2010 lõpuks”
Kokkuvõte� Kui te olete äriarhitektuuri eest vastutav*, siis seadke
raamid mille piires on lubatud süsteemidel valikuid teha, sh:� Tellimisprotsess ja arendusvahendid� Tellimisprotsess ja arendusvahendid
� Infrastruktuur
� Süsteemiarhitektuur
� Infoarhitektuur
� Tehke plaan kuidas olemasolev pilt nendesse raamidesse sobituda
� Ja hakake tegema, samm sammu haaval ...
Praktiline töö� Moodustage 3-liikmelised grupid
� Iga grupp võtab eest laualt kaks lehte paberit ja kirjutab igale lehele meeskonnaliikmete nimed
� Samalt laualt saate ka lähteülesande kirjelduse� Samalt laualt saate ka lähteülesande kirjelduse
� Aega 2 minutit
Rühmad moodustatud
Ülesanne� Oled värskelt palgatud CIO Sparks AS –
nimelises ettevõttes. Sulle allub 15 spetsialisti, kes seniseid süsteeme hallanud on.
� Juhatus on sulle esimesel koosolekul � Juhatus on sulle esimesel koosolekul kirjeldanud erinevaid probleeme. Sinu ülesanne on pakkuda lahendused.
� Lisaks oodatakse sult ka tegevuskava mustandit ning eelarvet.