Сәулет стилін таңдау (2 бөлім)

Сәлем, Хабр. Бүгін мен курстың жаңа ағынын бастау үшін арнайы жазған басылымдар сериясын жалғастырамын. «Бағдарламалық қамтамасыз ету сәулетшісі».

Кіріспе

Архитектуралық стильді таңдау ақпараттық жүйені құру кезінде негізгі техникалық шешімдердің бірі болып табылады. Осы мақалалар сериясында мен қосымшаларды салуға арналған ең танымал архитектуралық стильдерді талдауды және қай сәулет стилі ең қолайлы деген сұраққа жауап беруді ұсынамын. Презентация процесінде мен монолиттерден микросервистерге дейінгі архитектуралық стильдердің дамуын түсіндіретін логикалық тізбекті сызуға тырысамын.

В алдыңғы кезде біз монолитпен айналыстық және монолиттің бірқатар проблемалары бар деген қорытындыға келдік: өлшем, қосылу, орналастыру, масштабтау, сенімділік және қаттылық.

Бұл жолы мен жүйені модульдер/кітапханалар (компоненттерге бағытталған архитектура) немесе сервистер (қызметке бағытталған архитектура) жиынтығы ретінде ұйымдастыру мүмкіндіктері туралы айтуды ұсынамын.

Құрамдасқа бағытталған архитектура

Компоненттерге бағытталған архитектура жүйені ағымдағы және болашақ жобаларда пайдалануға болатын компоненттер жиынтығы ретінде орындауды қамтиды. Жүйені құрамдас бөліктерге бөлу кезінде мыналар ескеріледі: олардың қайта пайдалануға жарамдылығы, олардың ауыстырылуы, контексттік тәуелсіздігі, кеңеюі, инкапсуляциясы және тәуелсіздігі.

Құрамдас бөліктерді дұрыс пайдалану кезінде «үлкен кір шарының» мәселесі шешіледі (үлкен өлшем + жоғары муфта) және құрамдас бөліктердің өзі құрастыру бірліктері (модульдер, кітапханалар) және орналастыру бөлімдері (қызметтері) болуы мүмкін. Орналастыру бірліктері әрқашан іске қосылған процеспен салыстырылмайды: мысалы, веб-бағдарлама мен дерекқор бірге орналастырылады.

Көбінесе монолиттер модульдер жиынтығы ретінде әзірленеді. Бұл тәсіл тәуелсіз дамуға әкеледі, бірақ тәуелсіз масштабтау және орналастыру, ақауларға төзімділік және жалпы технологиялық стектен тәуелсіздік проблемалары қалады. Сондықтан модуль ішінара тәуелсіз компонент болып табылады.

Мұндай монолиттің ең үлкен мәселесі - модульдерге бөлу таза логикалық және оны әзірлеушілер оңай бұзуы мүмкін. Негізгі модуль пайда болуы мүмкін, ол бірте-бірте қоқыс үйіндісіне айналады, модульдер арасындағы тәуелділік графигі өсуі мүмкін және т.б. Мұндай проблемаларды болдырмау үшін әзірлеуді өте жетілген команда немесе толық уақытты кодты қараумен айналысатын және логикалық құрылымды бұзатын әзірлеушілердің қолын ұратын «сәулетшінің» басшылығымен жүзеге асыру керек.

«Идеал» монолит - бұл әрқайсысы өз дерекқорына қарайтын логикалық бөлінген модульдер жиынтығы.

Қызмет көрсетуге бағытталған архитектура

Егер жүйе қызметтер жиынтығы түрінде ұйымдастырылуы керек болса, онда біз сервиске бағытталған архитектура туралы айтып отырмыз. Оның қағидаттары пайдаланушыға бағытталған қолданбаның өзара әрекеттесу мүмкіндігі, бизнес қызметін қайта пайдалану, технология стекінің тәуелсіздігі және автономия (тәуелсіз эволюция, масштабтау және орналастыру).

Қызметке бағытталған архитектура (SOA = қызметке бағытталған архитектура) монолиттің барлық анықталған мәселелерін шешеді: өзгеріс орын алған кезде тек бір қызмет әсер етеді және жақсы анықталған API компоненттердің жақсы инкапсуляциясын қолдайды.

Бірақ бәрі соншалықты тегіс емес: SOA жаңа проблемаларды тудырады. Қашықтан қоңырау шалу жергілікті қоңырауларға қарағанда қымбатырақ, ал құрамдас бөліктер арасындағы жауапкершілікті қайта бөлу айтарлықтай қымбаттады.

Айтпақшы, тәуелсіз орналастыру мүмкіндігі қызметтің өте маңызды ерекшелігі болып табылады. Егер қызметтерді бірге немесе оның үстіне белгілі бір ретпен орналастыру қажет болса, онда жүйені қызмет көрсетуге бағытталған деп санауға болмайды. Бұл жағдайда олар таратылған монолит туралы айтады (тек SOA тұрғысынан ғана емес, сонымен қатар микросервис архитектурасы тұрғысынан да анти-үлгі болып саналады).

Қызмет көрсетуге бағытталған архитектураны сәулет қауымдастығы мен сатушылар жақсы қолдайды. Бұл көптеген курстар мен сертификаттардың, жақсы дамыған үлгілердің болуын білдіреді. Соңғысына, мысалы, белгілі кәсіпорынның сервистік шинасы (ESB = Enterprise Service Bus) кіреді. Сонымен қатар, ESB - бұл жеткізушілердің жүктері; оны SOA-да пайдалану міндетті емес.

Қызмет көрсетуге бағытталған архитектураның танымалдылығы 2008 жылы шарықтау шегіне жетті, содан кейін ол төмендей бастады, ол микросервистердің пайда болуынан кейін айтарлықтай күрт түсті (~2015).

қорытынды

Қызметтер мен модульдер түріндегі ақпараттық жүйелерді ұйымдастыру мүмкіндіктерін талқылаған соң, ең соңында микросервис архитектурасының принциптеріне көшуді және келесі бөлімде микросервис архитектурасы мен сервистік-бағдарланған архитектураның айырмашылығына ерекше назар аударуды ұсынамын.

Сәулет стилін таңдау (2 бөлім)

Ақпарат көзі: www.habr.com

пікір қалдыру