Arhitektūras šablons

Pēc klasikas jebkura sistēmai var izdalīt vismaz trīs slāņus. However vairāk vai mazāk ir iespējams izdalīt sekojošus apgabalus jeb slāņus:

  1. Prezentācijas slānis.
  2. Biznesa loģikas slānis.
  3. Datu piekļuves slānis.
  4. Platforma jeb Cross-Cutting.

 

Īpaši ar mākslinieciskām dotībām neesmu apveltīts, bet šāda bilde man pastāvīgi redzama pie sienas :)

 

image

 

Prezentācijas slānī parasti atrodas:

  1. Web interfeiss. Lietotāja interfeisa tīmekļa aplikācijas izskatā. Šis punkts protams ļoti atkarīgs no sistēmas un produkta, bet jebkurā gadījumā vairums modernajām sistēmām ir vismaz viens lietotāja interfeiss balstīts uz tīmekļa tehnoloģijām.
  2. Desktop interfeiss. Iespējams, ka eksistē arī kāds lietotāja interfeiss, kas ir balstīts uz Windows Formām vai WPF.
  3. Publiskie servisi (web servisi). Pārsvarā eksistē sistēmā arī kaut kādi servisi, kas tiek izmantoti no ārpuses. Piemēram, dažāda veida servisu piegāde ārējām sistēmām jeb ārējiem biznesa loģikas patērētājiem.
  4. Background (fona) servisi. Fonā parasti notiek arī kaut kādas aktivitātes, kur nav nepieciešams cilvēka pirksta pieskāriens. Ir dažāda veida servisi jeb procesi, kas notiek vai nu regulāri vai arī reaktīvi reaģējot uz kādu no notikumiem, kas notiek sistēmā. Notikumi parasti notiek biznesa objekta modelī (piemēram, apdrošināšanas polise beidzas – fona process ir atbildīgs par atbilstošā statusa uzstādīšanu).
  5. Administrācijas vide. Caur kaut kādu UI sistēmas administratoriem jādod iespēju arī administrēt to biznesa sistēma un pārējos dažādos artefaktus, kas figurē sistēmā (piemēram, lietotājus vai klasifikatorus, etc.).
  6. Kaut kas vēl custom specifisks konkrētajai sistēmai vai produktam. Dažāda veida tooļi, scripti vai kādi helper apgabali, kas bagātina un papildina kopējo sistēmas funkcionalitāti.

 

Par biznesa loģiku nav daudz ko stāstīt. Tur parasti atrodas biznesa loģika, dažādi “manageri” (kaut dzīvē bieži esmu redzējis, ka cilvēki ražo biznesa slānī tieši menedžerus, kas prot daudz ko un atbild par daudz ko, tomēr man uzskats ir ka, ka kopsummā ir sistēma jākonstruē tā, ka ir strikti nodalītas atbildības, katra klase atbild par kādu konkrētu biznesa procesa daļu, operāciju, funkcionalitāti vai atbildību), pārvaldnieki, biznesa procesu draiveri, servisu fasādes un kas vēl ne cits.

Savukārt ar datu piekļuves slāni parasti ir interesantas diskusijas. Un diskusijas parasti ir par to, vai speciāli ir nepieciešams izdalīt datu piekļuves slāni kā atsevišķu bibliotēku vai assembliju. Cik no pieredzes es varu spriest, izdalīt atsevišķu datu piekļuves slāni ir izdevīgi un nepieciešams gadījumos, kad sistēmai vai produktam ir jāatbalsta vairākas datu bāzes vadības sistēmas. Un izdevīgi to ir veidot tā, ka pārējā sistēmas daļa ir neatkarīga no datu bāzes vadības sistēmas izvēles un viss notiek noteiktā abstrakcijas līmenī.
Parasti, pielietojot modernās datu piekļuves tehnoloģijas ērti un organiski sanāk nedaudz sapludināt biznesa slāni ar datu piekļuves slāni un kontraktiem no platformas jeb cross-cutting slāņa, tādā veidā izdalot jaunu slāni – Data Contracts, kurš tāpat kā Cross-Cutting ir pieejams visiem slāņiem un komponentēm. Vienības no Data Contracts slāņa parasti kalpo kā saziņas līdzeklis un interfeiss komunikācijās starp dažādiem slāņiem un sistēmas komponentēm.

Platformā cilvēki parasti saliek visu pārējo, kas ir palicis pāri nesadalīts starp iepriekšējiem slāņiem. Tas gan ir stipri atkarīgs no sistēmas vai produkta, bet vairums situācijās jebkurā no sistēmām var izdalīt sekojošas sadaļas jeb komponentes, kas atrodas platformas slānī:

  1. Logging. Žurnalizēšana un viss ar to saistītais (gan tehniskais žurnāls, gan arī biznesa), API, etc.
  2. Caching. Kešatmiņas tehnoloģijas un pieejas izvēle arī brīžiem var radīt nelielas galvas sāpēs arhitektiem un inženieriem.
  3. Configuration. Noteikti sistēmās ir kāda sadaļa, kurā uzglabājas dažāda veida konfigurācijas parametri un uzstādījumi. Brīžiem arī interesants jautājums, kā to visu saglabāt un padarīt pieejamu dažādiem slāņiem un komponentēm, kā rīkoties situācijās, kad mainās konfigurācijas uzstādījuma vērtība, vai vienmēr pārlasīt vērtību pie katras tās pieprasīšanas vai tomēr izvēlēties kādu no kešatmiņas risinājumiem? Arī šie jautājumi mēdz nomākt arhitektus.
  4. Error Handling. Reti kura sistēma ir uzrakstīta bez nevienas kļūdas. Pareizi tā noķert un apstrādāt ir šī apakšmoduļa uzdevums.
  5. Authentication un Authorization. Noteikti sistēmā būs nepieciešama dažāda veida drošības risinājumi. Diezgan bieži jaunieši jauc vietām šīs divas smalkās lietas.
  6. Monitoring. Šī apakšmoduļa uzdevums ir sekot sistēmas veselības stāvoklim, aplūkojot un ziņojot par dažādiem problēmapgabaliem vai situācijām. Parasti šīs lietas tiek atstātas novārtā, bet patiesībā, ja jums iznāk strādāt pie kāda produkta, mēģiniet sev iestāstīt, ka jebkurai sistēmai ir jānodrošina kaut kāda veida diagnostikas iespējas un jālaiž ražošanā ar iestrādātiem speciāliem diagnostikas portiem vai interfeisiem, atvērtām iespējām noskaidrot, kas notiek sistēmā un vai nevajadzētu pievērst kāda sistēmadministratora uzmanību.
  7. Localization. Parasti mūsdienās attālumam vairs nav nozīmes un nereti ir situācijas, kad indieši raksta kodu amerikāņiem, vai norvēģi ievieš savu sistēmu Zviedrijā, etc. Tā kā ar vien biežāk nākas domāt par lokalizāciju un sistēmas daudzvalodību. Šīs problēmas risināšanai tiek veidoti moduļi, kas ietilpst šajā komponentē.
  8. Validation. Datu kontraktu satura pareizīguma pārbaude un verifikācija notiek parasti šajā komponentē. Tas, protams, ir stipri atkarīgs no sistēmas un produkta, bet parasti vairums sistēmas eksistē kāda veida datu validācija pirms tie nokļūst datu glabātuvē (parasti datu bāzē).

 

Šīs ir lietas un aspekti, kurus esmu saskatījis vairākās sistēmās, kurās man bijis tas gods piedalīties un palīdzēt cilvēkiem tikt galā ar uzdevumiem (parasti tos sauc par challanges :)).

Ja nu kādam sanāk darboties pie kādas sistēmas vai arī, ja kāds palūdz jums uzzīmēt kādu smuku bildi, kurai pēc biznesa īpašnieku domām būtu jāapraksta un uzskatāmi jārunā par kādas konkrētas sistēmas arhitektūru, tad iespējams, ka varētu noderēt šī layer diagramma, kas tika veidota pārzīmējot diagrammu, kas redzama nedaudz augstāk.

 

image

 

Kā jau mēs zinām, slāņu diagrammu var arī validēt un pārbaudīt pret reālo situāciju, kas ir risinājumā. Tā kā atliek tikai salikt pareizos projektus pareizajos slāņos un viens solis tuvāk nefiltrētajai gaišajai nākotnei ir sperts! :)

Nākamreiz mēģināsim ieskicēt, kāds ir modernais tehnoloģiju stack, kuras var pielietot šādas arhitektūras sistēmās.

 

 

Cerams, ka noderēs!

Published Saturday, December 04, 2010 11:01 PM by valdis.iljuconoks

Comments

# re: Arhitektūras šablons

>Par biznesa loģiku nav daudz ko stāstīt.

Šim gan nepiekrītu. Par biznesa loģiku un to kā to aprakstīt ir ļoti daudz ko stāstīt. Biznesa loģika ir aplikācijas kodols, viss pārējais ir tikai perifērija.

Tuesday, July 05, 2011 10:01 AM by Arnis Lapsa

# re: Arhitektūras šablons

> Šim gan nepiekrītu.

jā es pilnībā atbalstu, ka biznesa loģika ir programmatūras gaļiņa un arī tur ir savi patterni un dizaina šabloni, kā pareizāk, saprotamāk un pārvaldāmāk, etc etc veidot šo slāni.. bet, ideja tomēr rakstam bija uzskicēt kopējo sistēmas bildi no arhitektūras un slāņošanās viedokļa :)

Wednesday, July 06, 2011 1:05 AM by valdis.iljuconoks

# Interesting, thanks

This web site is certainly instead helpful because I’m in the minute developing an online floral web site - even though I'm only commencing out as a result it is actually rather little, nothing at all such as this internet site. Can hyperlink to some in the posts right here because they are really. Many thanks considerably. Zoey Olsen

Wednesday, November 16, 2011 8:51 PM by Anthony Garsia

# re: Arhitektūras šablons

,  It's so great to see you, did you get my letetr last year?  and she just shrugged her shoulders and said,  Yeah, I got it. Thanks.  So what I learned from this was   I guess teaching really is just a job.#3 You are the only the second person of Filipino descent that I've known. The first was a man who was in the bed next to my brother in Bethesda Naval Hospital. I don't know the year, it was during the Viet Nam War, and I was a little kid. But the man couldn't speak English, and he was there because he'd had both of his feet blown off. But he was the sweetest guy, always smiled when I was around. For the entire month my brother was there I brought his Filipino roommate candy every day and one time I brought him a Spiro Agnew watch from the gift shop, which really made him laugh. Wish I had that watch now.#6 I am in awe of your card counting abilities, but I have odd skill also. I am borderline retarded, as you already know from your recent IQ test post, but I can make change really excellently! I've never known why. I'm a change-making savant, probably. But I can't multiply past the  five tables.  Go figure.

Friday, March 02, 2012 3:36 AM by Vanderson

# uIelEEHaABXtfWRy

Hvbom5 Very informative blog post. Fantastic.

Thursday, March 22, 2012 3:04 PM by google+ circles

Leave a Comment

(obligāts) 
(obligāts) 
(brīvizvēles)
(obligāts)