Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
MMVIII oktooberMMVIII oktoober
Ivo Mägi
ivo ät webmedia dot ee
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?� Mis üldse on ärirakendused?
� Tellimisprotsess
� Arenduskeskkond
Infrastruktuur� Infrastruktuur
� Süsteemi arhitektuur
� Infoarhitektuur
Ä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 � Ei me ei ole väike ettevõte, meil on kaks excelit ja üks accessi baas!Ei me ei ole väike ettevõte, meil on kaks excelit ja üks accessi baas!
� Väikeste ettevõtete probleemid on väikesed� Keda me vaatleme
� Finantssektor (pangad, kindlustus)� Telekomisektor� Valitsussektor� Tootmine� Logistika
� Miks just neid?
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
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 ise suudab 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 operatsioone� ...
� 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
� Aranea MVC
� 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
� Vastujõtja ei pea teadma midagi saatja(te)st� Vastujõ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+Craiglist
� Näide: Google Maps+Flickr� Näide: Google Maps+Flickr
� Näide: maa-ameti korteritehingute statistika + city24
� Peamine erinevus portalist: portalis 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
� Aega 2 minutit� Aega 2 minutit
Rühmad moodustatud
Task 1You are a newly hired CIO of the Sparks AS. You have an IT-department of 15 persons who currently have maintained all the systems described
Management board claims that there are following problems with the system:
� Making a change to a process is expensive and error-prone. Wishlist for different implementation requests is always at least three months long.different implementation requests is always at least three months long.
� When external systems (insurances, resellers) are facing a service outage, your systems also fail to operate
� IT department is using their position to blackmail better salaries and bonuses because nobody else can manage the systems
� The amount of money paid per year for support for different products used is too high.
What are your first steps for resolving the problems?
Task 2� Put together a draft of the architecture, containing
� Infrastructure, using a block diagram
� System architecture, using text
� Information architecture, using text and/or block� Information architecture, using text and/or blockdiagram
� Describe the steps for moving towards the desired architecture
� If done, please bring the results to me