Скачиваний:
0
Добавлен:
26.01.2026
Размер:
154.51 Кб
Скачать

13-lekciya. Programmalıq támiynat arxitekturası.

Jobası:

1.Programmalıq támiynat arxitekturası túsinigi hám onıń áhmiyeti.

2.Arxitekturalıq stiller hám úlgiler: Monolit, Mikroservisler, Qatlamlı.

3.Arxitekturalıq proektlestiriw principleri: Baylanısıw (Coupling) hám Birlik (Cohesion).

4.Arxitekturalıq hújjetlestiriw hám qarar qabıllaw (ADR).

Arxitektura túsinigi hám onıń roli

Programmalıq támiynat arxitekturası (Software Architecture) – bul programmalıq sistemanıń tiykarǵı strukturası bolıp, ol sistemanıń elementlerin (komponentlerin), olardıń sırtqı kórinis qásiyetlerin hám olar arasındaǵı baylanıslardı anıqlaydı. Basqasha aytqanda, arxitektura – bul sistema haqqındaǵı eń joqarı dárejeli hám eń áhmiyetli sheshimlerdiń jıynaǵı. Eger programmanı imaratqa teńesek, arxitektura – bul onıń fundamenti, tirekleri hám ulıwma jobası. Kod (dizayn) bolsa – bul ishki bezew jumısları. Arxitektura sistemanıń sapasın, isenimliligin, ónimliligin hám keleshektegi rawajlanıwın belgileydi.

Arxitekturanıń tiykarǵı wazıypası – "Sapa atributların" (Quality Attributes) yamasa "Funkcional emes talaplardı" (Non-functional requirements) támiyinlew. Funkcional talaplar (sistema ne isleydi?) kod arqalı sheshilse, funkcional emes talaplar (sistema qanshelli tez, qawipsiz, turaqlı isleydi?) arxitektura arqalı sheshiledi. Mısalı, eger sistema sekundına 100 000 paydalanıwshıǵa xızmet kórsetiwi kerek bolsa, bul ápiwayı kod jazıw menen emes, al "Bólistirilgen" (Distributed) hám "Keshlewshi" (Caching) arxitekturanı qurıw arqalı ámelge asırıladı. Arxitekturalıq sheshimler – bul "ózgertiw qıyın bolǵan" sheshimler. Eger proekttiń basında qáte arxitektura tańlansa (mısalı, úlken júklemege shıdamlı emes baza tańlansa), keyin onı ózgertiw ushın pútin programmanı qayta jazıwǵa tuwrı keledi. Sol sebepli, arxitekturanı tájiriybeli qánigeler – "Programmalıq arxitektorlar" islep shıǵadı. Olar biznes talapların texnikalıq sheshimlerge aylandıradı hám proekttiń uzaq múddetli strategiyasın belgileydi.

Arxitektura tek texnikalıq struktura emes, ol "Kommunikaciya quralı". Ol proektke qatnasıwshı barlıq tárepler (Stakeholders) – buyırtpashılar, menedjerler, programmistler, testerler – arasındaǵı ulıwma tildi hám túsinikti

payda etedi. Arxitektura diagrammaları hám hújjetleri sistemanıń qalay isleytuǵının túsindiriwdiń eń jaqsı jolı. Jaqsı arxitektura quramalı sistemanı basqarıwǵa qolaylı kishi bóleklerge bólip, injenerlerdiń jumısın jeńillestiredi.

Arxitekturalıq stiller: Monolit hám Qatlamlı

Arxitekturalıq stil (Architectural Style) – bul sistemalardı qurıwdıń tekserilgen hám ulıwmalasqan úlgisi. Eń áyyemgi hám eń ápiwayı stil – bul "Monolit arxitektura" (Monolithic Architecture). Monolit sistemada barlıq funkcional (interfeys, biznes-logika, maǵlıwmatlar bazası menen islesiw) bir pútin orınlanıwshı fayl (yamasa bir proekt) ishinde jaylasadı. Monolitti islep shıǵıw, testlew hám ornatıw (deploy) ańsat, sebebi ol bir ǵana birlikten turadı. Kishi hám orta proektler ushın monolit eń optimal sheshim bolıp esaplanadı. Degen menen, monolit úlkeygen sayın "qosqısh"qa (big ball of mud) aylanıwı múmkin. Kodtıń bir jerin ózgertiw basqa jerlerine kútilmegen tásir etiwi múmkin. Pútin sistemanı qayta jıynaw hám ornatıw kóp waqıt aladı. Monolitte texnologiyanı ózgertiw qıyın (mısalı, Java-dan Python-ǵa ótiw ushın hámmesin qayta jazıw kerek). Sol sebepli, úlken sistemalar basqa stillerge ótedi.

Eń keń tarqalǵan stillerdiń biri – "Qatlamlı arxitektura" (Layered Architecture / N-Tier). Bunda sistema gorizontal qatlamlarǵa bólinedi: 1) Presentation Layer (Interfeys), 2) Business Logic Layer (Logika), 3) Data

Access Layer (Maǵlıwmatlarǵa kiriw), 4) Database (Baza). Hár bir qatlam tek ózinen tómengi qatlam menen baylanısadı. Bul "Separation of Concerns" (Juwapkershilikti bóliw) principin ámelge asıradı. Biz interfeysti ózgertkende, biznes-logikaǵa tiymeymiz. Bul stildiń kemshiligi – "Sinkhole" mashqalası (geybir sorawlar barlıq qatlamlardan heshqanday paydalı jumıs islemesten ótip ketedi) hám ónimliliktiń tómenlewi.

Jáne bir stil – "Event-Driven Architecture" (Waqıyaǵa tiykarlanǵan). Bunda komponentler bir-biri menen tikkeley emes, al "Waqıyalar" (Events) arqalı baylanısadı. Bir komponent waqıya jiberedi (mısalı, "Buyırtpa keldi"), al basqa komponentler oǵan jazılıp (subscribe), reakciya bildiredi. Bul sistema júdá iykemli hám asinxron boladı, biraq onı testlew hám aǵımdı qadaǵalaw qıyın.

Mikroservisler arxitekturası

Búgingi kúnde iri internet-kompaniyalar (Netflix, Amazon, Google) tárepinen keń qollanılatuǵın stil – bul "Mikroservisler arxitekturası" (Microservices). Mikroservislerde sistema bir pútin monolit emes, al onlaǵan yamasa júzlegen kishi, ǵárezsiz "servisler" jıynaǵı retinde qurıladı. Hárbir servis

óziniń kishi wazıypasın orınlaydı (mısalı, "Tólem servisi", "Paydalanıwshı servisi"), óziniń jeke maǵlıwmatlar bazasına iye hám basqalar menen API (HTTP/REST) arqalı baylanısadı.

Mikroservislerdiń eń úlken artıqmashılıǵı – "Ǵárezsizlik" hám "Keńeytiwsheńlik". Bir servisti Java-da, ekinshisin Python-da jazıwǵa boladı. Bir komanda "Tólem" servisin jańalap atırǵanda, basqa komanda "Izlew" servisin buzbay isley beredi. Eger júkleme artsa, biz tek kerekli servistiń nusqaların kóbeytemiz (scaling), pútin sistemanı emes. Bul úlken hám quramalı sistemalar ushın ideal sheshim. Biraq mikroservislerdiń "tólemi" de bar – bul "Bólistirilgen sistemanıń quramalılıǵı". Júzlegen servisti basqarıw, olar arasındaǵı baylanıstı qadaǵalaw, maǵlıwmatlardıń sáykesligin (consistency) támiyinlew júdá qıyın. DevOps, konteynerizaciya (Docker, Kubernetes) hám monitoring qurallarısız mikroservislerdi basqarıw múmkin emes. Kishi proektler ushın mikroservisler "artıqsha júk" (overhead) bolıp, proektti ásteletiwi múmkin.

Martin Fauler aytqanınday: "Mikroservislerdi qollanıwdıń birinshi qaǵıydası – mikroservislerdi qollanbań (eger haqıyqıy zárúrlik bolmasa)". Kóbinese proektti monolit penen baslap, keyin zárúrlik payda bolǵanda onı mikroservislerge bóliw (Strangler Fig pattern) eń durıs strategiya esaplanadı.

Arxitekturalıq principler hám hújjetlestiriw

Arxitekturanıń sapasın bahalaw ushın eki tiykarǵı metrika qollanıladı: "Baylanısıw" (Coupling) hám "Birlik" (Cohesion). Jaqsı arxitektura "Tómen baylanısıw" (Low Coupling) hám "Joqarı birlik" (High Cohesion) qásiyetlerine iye bolıwı kerek. Low Coupling – bul modullerdiń bir-birine qanshelli az ǵárezli ekeni. Eger bir moduldi ózgertkende basqaların da ózgertiw kerek bolsa, bul "Kúshli baylanısıw" (High Coupling) hám bul jaman. Biz modullerdiń ǵárezsiz bolıwına umtılıwımız kerek. High Cohesion – bul bir moduldiń ishindegi elementlerdiń bir-biri menen qanshelli tıǵız baylanısqanlıǵı. Bir moduldiń ishinde tek bir maqsetke xızmet etetuǵın kodlar jıynalıwı kerek. Eger modul "hár nárseden bir bólek" bolsa (Low Cohesion), onı túsiniw hám ońlaw qıyın.

Arxitekturalıq sheshimlerdi qabıllaw procesi hújjetlestiriliwi shárt. Bunıń ushın "ADR" (Architecture Decision Records) qollanıladı. ADR – bul qısqa hújjet bolıp, onda qabıl etilgen sheshim, onıń sebepleri, alternativ variantlar hám aqıbetleri (pros/cons) jazıladı. Mısalı: "Biz MySQL ornına MongoDB tańladıq, sebebi maǵlıwmatlar strukturası tez ózgeriwsheń". Bul hújjetler keleshekte jańa kelgen programmistlerge "ne ushın bulay islengenin" túsindirip beredi.

Arxitekturanı vizuallastırıw ushın "C4 modeli" (Context, Containers, Components, Code) keń qollanıladı. Bul model arxitekturanı túrli masshtabta kórsetedi: Context diagramması – sistemanıń sırtqı dúnya menen baylanısı, Container diagramması – tiykarǵı qosımshalar hám bazalar, Component diagramması – ishki moduller. Bul UML-ge qaraǵanda ápiwayıraq hám zamanagóy arxitekturaǵa beyimlesken usıl.

Juwmaqlap aytqanda, programmalıq támiynat arxitekturası – bul strategiyalıq proektlestiriw. Ol texnikalıq bilimlerdi, biznes talapların hám keleshekti boljaw qábiletin talap etedi. Jaqsı arxitektura kórinbeydi – sistema turaqlı isleydi hám ańsat rawajlanadı. Jaman arxitektura bolsa hár qádemde óz "tárepelerin" kórsetip, proektti toqtatıp qoyadı.

BAQLAW SORAWLARÍ:

1.Programmalıq arxitektura menen programmalıq dizayn (design) arasındaǵı tiykarǵı ayırmashılıq nede?

2.Monolit arxitekturanıń artıqmashılıqları hám kemshilikleri qanday?

3.Mikroservisler arxitekturası qanday mashqalalardı sheshedi hám qanday jańa mashqalalar tuwdıradı?

4."Low Coupling" (Tómen baylanısıw) hám "High Cohesion" (Joqarı birlik) principleriniń mánisi ne?

5.ADR (Architecture Decision Records) hújjetleriniń arxitekturalıq tariyxtı saqlawdaǵı áhmiyeti qanday?

Соседние файлы в папке Programmalıq támiynat qurılması hám evolyuciyası