INF HAQIDA RMATIC LEKIN
Yondashuvlar uchun me'moriy dizayn veb- ilovalar
Bogdanenko Denis Aleksandrovich, bakalavriat
Moskva texnik universitet ulanishlar Va informatika
Kalit so'zlar : veb, Ilova, arxitektura, veb- ilova.
Т
matn izohlar: ichida ramka berilgan maqolalar ichida qisqa shakl hisobga olinadi uch yondashuv uchun arxitektura _ dizayn veb-ilovalar, lekin, ushbu maqola aks ettiradi pozitsiya eng muallif Va balki emas mos keladi -
berish dan umumiy qabul qilingan fikr.
IN erta uning hikoyalar hammasi dasturlari qurilgan hech qanday holda me'moriy tamoyillari dastur edi dan to'plamlar Keyingi do'st orqasida do'st satrlar: hech qanday sinfga bog'liqlik, meros va boshqa zamonaviy imkoniyatlar tillar dasturlash. Lekin, ta'qib qilish uchun soddalashtirish rivojlanish, lekin uchun ham tizimlashtirish Qanday kod, Shunday qilib Va Jami ilovalar mumkin bo'l asos uchun ko'rinish shunday tushunchalar Qanday
"arxitektura ON".
IN ramka berilgan maqolalar hisobga olinadi uch veb-ilovalarning arxitektura dizayniga yondashuv:
Monolit yondashuv
Modulli yondashuv
SOA 1 yoki Xizmatga yo'naltirilgan Monolitga yaqinlashish yondashuv hisoblanadi eng eski model
dasturiy ta'minot dizayni, chunki u bilan barcha dasturiy ta'minotni ishlab chiqish boshlandi. Ushbu yondashuv doirasida veb-ilovaning murakkab tuzilishi kabi shunday balki emas bolmoq: server do'konlar hammasi biznes mantig'i lekin asos ma'lumotlar — ma'lumotlar zarur server uchun ish .
Qanday qoida o'xshash ilovalar emas murakkab ichida rivojlanmoqda Va uni katta xarajat dastlabki bosqichlarda, zarur funktsiyalar ro'yxati bo'lmaganda boshqacha katta miqdori chiziqlar, lekin noto'g'ri harakatlar dastlabki bosqichlarda juda oddiy tuzatiladi. Yangi funksionallik qo'shildi osongina Va tez . Biroq, vaqt o'tishi bilan yoki chiqish sanasiga shoshilish bilan , xato qilish xavfi ortadi, bu esa aylantirildi ichida "texnik burch", qaysi emas-
mahsulot chiqarilgandan keyin tuzatish kerak bo'ladi. Lekin dan harakat vaqt da monolit yondashuv, shunday
"xatolar" juda ko'p to'planishi va shu bilan uzoq muddatda monolit tizimni saqlab qolishi mumkin. nuqtai nazar juda qiyin Va qimmat, Shunday qilib Qanday jamoalar ishlab chiquvchilar o'zgarishi mumkin va buni qilish osonroq ekanligi ayon bo'ladi "yamoq" Qanday hal qilish Qanday ishlaydi bu yoki ilovaning boshqa qismi.
Muammolar dan qo'llab-quvvatlash monolit ilovalar mumkin tushuntiring Va mavzular nima erta yoki kech kichik ro'yxat funksionallik ichida tizimi to‘ldiriladi yangi o'zgarishlarni talab qiladigan talablar va g'oyalar ichida allaqachon mavjud kod, nima allaqachon aks ettirilgan ichida oldingi bandning oxirgi jumlasi. Bundan tashqari, veb-ilova ichida "monolit" ning muammolaridan biri masshtablilik. Hamma narsa tarkibiy qismlar tizimlari joylashgan ichida bitta nuqta, lekin chunki kuch eng ballar serverni qo'llab-quvvatlash uchun mos bo'lishi kerak Va asoslar ma'lumotlar ichida ishlaydi holat.
Misol monolit arxitektura mumkin topmoq har qanday ilovada, hatto turli xil sinflar. Xarajatlar Mark, nima ichida bu moment bu vaqtda dastur modulli bo'lib tuyulishi mumkin, lekin hammasi umuman emas shunday. monolit qo'llash Ta'rif haqli ravishda modullarni o'z ichiga olishi mumkin, ammo ular to'liq yoki qisman bir-biriga bog'liq.
Ustida raqam bitta olib keldi misol tuzilmalar oddiy veb-ilova iborat dan server, asoslar ma'lumotlar, shuningdek, xavfsizlik devori, odatda xosting himoya qilish uchun javobgardir, lekin agar yaratmoq nimadur Shaxsiy, keyin Va o'zingizni himoya qilishingiz kerak bo'ladi .
Keyinchalik olib keldi misol kod oddiy ga qarab ma'lum bir sahifani ko'rsatadigan serverda joylashgan monolit arxitekturaga ega ilovalar dan kim keldi ustida server iltimos.
1 Xizmat Yo'naltirilgan arxitektura (inglizcha) — Xizmatga yo'naltirilgan arxitektura
Guruch. bitta. Tuzilishi oddiy veb- ilovalar
monolit arxitektura bo'ladi kabi ko'rinish Ko'proq tuzilishi -
require_once("./utils/get_server_params.php");
$uri = get_server_params("REQUEST_URI"); switch($uri){
case "/items": require_once("items_page.php"); sindirish;
sukut bo'yicha: require_once("welcome_page.php");
};
?>
Ushbu dastur PHP tilida yozilgan. kirish nuqtasi ichida Ilova xizmat qiladi fayl index.php, qaysi va tutqichlar hammasi kiruvchi so'rovlar. Da davomida PHP veb-ilovasida utils papkasida joylashgan bir xil nomdagi fayldan get_server_params usuli mavjud va undan kiruvchi faylning "REQUEST_URI" xususiyatidagi qiymatni olish uchun foydalanadi. birga dan iltimos ustida server.
Yuqoridagi ariza faqat ko'rsatkichdir. IN haqiqat, ilovalar hatto ichida hol
soddalashtirilgan va izchil, shuningdek, ko'proq o'ylangan marshrut tizimiga ega bo'lish uchun ushbu maqolada buning uchun odatiy switch-holati javobgardir . Shunga o'xshash dasturni ishlab chiqing balki har, lekin qo'llab-quvvatlash uning uzoq muddatga Va yoqing _ ichida uni hammasi yangi funktsional dan aniq lahza _ vaqt bo'ladi qiyinroq, agar faqat emas refaktoringga murojaat qilish 2 dastur, ammo, bu momentning boshlanishi qisman ishlab chiquvchining professionalligiga bog'liq .
Modulli arxitektura, monolitdan farqli o'laroq , dasturning butun funksionalligini alohida qismlarga bo'lishni nazarda tutadi. modullar, har dan qaysi javoblar orqasida dastur funksionalligining ma'lum bir qismi shunday tarzda modulli arxitektura mumkin tasvirlab bering Qanday bitta dastur doirasidagi ko'plab monolit modullar to'plami pozitsiyalar.
Har modul ilovalar hisoblanadi funktsional jihatdan mustaqil dan boshqa lekin chunki uning ilovalar ichida har xil uchastkalar kod emas bo'ladi qo'ng'iroq qiling muvaffaqiyatsizliklar ichida ishlash , mohiyatiga ko'ra, u qayta ishlash qulayligini ta'minlaydi Va transfer chegaralar modul.
2 Jarayon o'zgarishlar ichki tuzilmalar dasturlari, emas ta'sir uni tashqi xulq-atvor Va ega maqsad yengillatmoq tushunish uni ishlar (https://ru.wikipedia.org/wiki/Refactoring)
Xarajatlar Mark, nima da o'zgartirish bitta modullar va boshqalar modullar ta'sirlangan emas iroda, lekin chunki disk raskadrovka vazifasi soddalashtirilgan 3 . Buning uchun qolganlarini sozlash kifoya modullar, foydalanish funktsional yangi xususiyatlar va so'nggi talablar uchun o'zgartirilgan modul uni agar o'zgarishlar ichida uni mumkin qo'rg'oshin uchun muvaffaqiyatsiz ichida ilova .
Bundan tashqari, barcha modullar bir-biri bilan o'zaro ta'sir qiladi ichida sinxron xop, kabi bor ustida bitta apparat qismlar, lekin da kerak uchun modul alohida ma'lumotlar bazasini yoki ma'lumotlar qismini tanlashingiz mumkin, bu modul ishlaydi.
Misol mumkin chiqib ketish zamonaviy PHP veb-ilovalarni jadal rivojlantirish uchun ishlatiladigan ramkalar . Ushbu ramkalarda har bir modul sinfi yaratilgan ega funksionallik xos ustida-
dasturning u mo'ljallanmagan qismi bilan bevosita o'zaro ta'sir qilmaydi .
Ilovada qayta ishlanadigan marshrutlarni aniqlash uchun foydalaniladigan Router sinfi modulga misol bo'ladi . Hech qanday yo'nalish belgilanmagan olib keldi bo'lardi foydalanuvchi ustida 404 xato kodi bilan sahifa.
Shuni ta'kidlash kerakki, modulli dasturlarni ishlab chiqish arxitektura ustida birinchi bosqichlar allaqachon biroz balandroq yoqilgan xarajat, Qanday rivojlanish o'xshash monolitik dastur, chunki yangi funksionallikni joriy qilishda har doim kerak o'rindan turish savol haqida hajmi, qaysi maxsus modul bu funksiyani amalga oshiradi. lekin o'sish xarajat mazmuni o'xshash ilovalar unchalik keskin emas, bu esa ushbu ilovalarni uzoq vaqt saqlash imkonini beradi.
Guruch. 2. Modulli ilovalar iborat dan mijoz (Foydalanuvchi interfeysi) Va server xonasi (Orqaga) qismlar
Yuqoridagi rasmda modulning tuzilishiga misol ko'rsatilgan ilovalar, qaysi, deylik shuningdek joylashgan ustida server dan chizish bitta, Va qaysi o'z ichiga oladi dan ikkita modul: mijoz qismlar Va server xonasi qismlar. Har bir qism asboblar meniki funktsional: mijoz qismi javob - choy orqasida chiqish odatiy interfeys, lekin server xonasi
qismi orqasida hammasi qolgan biznes mantig'i ilovalar, server tomonida barcha talab qilinadigan hisob-kitoblarni bajarish , ichida hajmi shu jumladan ish dan asos ma'lumotlar.
Mijoz tomoni, rasmda ko'rsatilganidek, server tomonidan qabul qilingan chiqish uchun React kutubxonasidan foydalanadi ma'lumotlar. Oxirgi ichida mening burilish foydalanadi PHP
3 Nosozliklarni tuzatish (inglizcha) — disk raskadrovka, odatda nazarda tutadi disk raskadrovka ilovalar ichida hol xatolar yoki ishga tushirish ilovalar ichida rejimi qaysi imkon beradi tutmoq har xil mehribon xatolar
ichida sifat til dasturlash Va qaytarib beradi ma'lumotlar iltimosiga binoan dan mijoz qismlar, lekin shuningdek o'z ichiga oladi ichida o'zim dasturning barcha asosiy biznes mantig'i, chunki mijoz natijada olingan fayl hajmi bo'yicha iloji boricha engil bo'lib qolishi kerak .
tomonidan haqiqat emas hisoblanadi tanqidiy nima maxsus mijoz va server tomonida ishlatiladi . Mijoz Vue.js, Angular va "sof" JS bo'lishi mumkin va server qismi Java, NET, C #, C ++ va boshqa tillarda yozilishi mumkin.
Modulli yondashuv juda ko'p turli xil bo'lgan murakkabroq ilovalarni ishlab chiqishga imkon berdi modullar. Ushbu yondashuvning rivojlanishi bunga olib keldi qaysi modullar boshlandi chiqaradi ustida alohida apparat qismlar, shuning uchun butunlikni keltirib chiqaradi individual xizmatlar, lekin mos ravishda xizmat ko'rsatishga yo'naltirilgan hammomga yondashuv.
Xizmatlar hozir o'zingiz alohida o'z jihozlari bilan to'liq o'zini o'zi ta'minlaydigan modullar asos, lekin aynan joylashgan ustida alohida server. Bundan tashqari, ular o'zlarining ma'lumotlar bazasiga ega bo'lishi mumkin, lekin kabi ular joylashgan ustida individual apparat qurilmalari, agar u virtual bo'lsa ham, xizmatlar o'rtasidagi o'zaro ta'sir asinxron tarzda amalga oshiriladi, nima balki ta'minlash Qanday aniq Foyda,
Shunday qilib Va biroz cheklovlar. Lekin, bitta dan SOA ning asosiy afzalligi shundaki, u komponentlarga mustaqil ravishda masshtablash imkonini beradi o'sish imkoniyatlar faqat Bormoq boshqalarning apparatiga ta'sir qilmasdan uni talab qiladigan xizmat .
ning yaxlit qo'llanilishini ishlab chiqish qobiliyati ko'rinishga qaratilgan yondashuv, imkoniyat yaratadi rivojlanish xizmatlar ustida boshqacha tillar dasturlash . Oddiy misol: xizmat yetkazib berish xabarlar mumkin bolmoq yozilgan ustida Nodejs, qayerda til dasturlash _ ishlatilgan javascript, ichida keyin vaqt Qanday Ushbu xizmatdan foydalanadigan asosiy dastur mijoz tomonida React va server tomonida PHP dan iborat bo'lishi mumkin. Uchun o'zaro ta'sirlar bular ikki qismlar faqat xizmat dasturlash interfeysidan to'g'ri foydalanish kerak ichida Asosiy qismlar ilovalar.
Xizmatlar bir-biridan alohida ishlab chiqilgan , lekin chunki o'zgarishlar ichida kod bitta xizmat ta'sir qiladi faqat ustida uni agar faqat emas o'zgardi xizmatning dastur interfeysida ma'lumotlarni chiqarish , nima sodir bo'ladi nihoyatda kamdan-kam, kabi dan format chiqish xizmatlarni rivojlantirishning birinchi bosqichlari hali aniqlanmagan.
Rasmda xizmatga yo'naltirilgan tarmoq topologiyasi ko'rsatilgan veb-ilovalar turi "ring".
Guruch. 3. Xizmatga yo'naltirilgan arxitektura ilovalar
IN ramka berilgan ilovalar foydalanuvchi har doim 192.168.0.30 IP manzilli dastur serveriga uriladi va umumiy foydalanuvchi interfeysini taqdim etadi. Aytaylik, veb-ilova pochta va bildirishnomalarni yuboradi va shunga ko'ra, bu funksiya dastur serverida amalga oshirilishi kerak, ya'ni modulli yondashuv, yoki ta'kidlash unga alohida xizmat sifatida alohida server, ya'ni yuqoridagi rasmda buzilgan.
Server yuborish pochta Va bildirishnomalar beradi ra- IP manzilida joylashgan xuddi shu nomdagi xizmatning boti 192.168.0.31 va uning asosiy vazifasi pochta jo'natishdir Va har xil turi bildirishnomalar. Xizmat shuningdek oldindan u bilan o'zaro aloqada bo'ladigan boshqa xizmatlar uchun interfeysni taqdim etadi Va, shunday yo'l server ilovalar, da bir yoki bir nechta foydalanuvchilarga bildirishnoma yuborish zarurati , bo'ladi yubormoq so'rov ustida to'g'ri xizmat ko'rsatish va shu bilan ishingizni osonlashtiradi.
kamayadi yuqorida misol hisoblanadi eng oddiy, allaqachon hozir ustida ochiq joylar "dunyo o'rgimchak to'ri" topish mumkin yetarli raqam xizmatlar uchun pochta jo'natish , SMS xabarlar Va ko'p boshqa Va bu hammasi mumkin ko'plab veb-ilovalar tomonidan ishlatilishi mumkin bo'lgan davlat xizmatlarini ko'rib chiqing .
Xizmat yuborish pochta Va bildirishnomalar balki bolmoq ustida- yozilgan ustida har qanday til dasturlash, tashqarida qaysi dasturlash tilidan foydalanilganiga qarab uchun yaratish Asosiy veb-sahifalar ustida dastur serveri. Da kerak yangilanishlar, hammasi dasturiy ta'minot yoki apparat vositalari bilan manipulyatsiyalarni amalga oshirdi xizmat yo'q yo'l emas ta'sirlangan ish dastur serveri .
lekin rivojlanish ilovalar xizmatga yo'naltirilgan yondashuv juda oddiy emas. Gap shundaki, bu zarur qat'iy Va aniq kontur chegaralar ning funksionalligi yoki boshqa xizmat. bundan mustasno Bormoq, kabi har bir xizmat ishlab chiqilmoqda ustida alohida apparat keyin qismlar tekshirish kompilyator Bormoq yoki boshqa xizmat uzatilgan _ ma'lumotlar dan boshqa qismlar ilovalar bo'ladi imkonsiz, chunki xizmatlar o'rtasidagi o'zaro ta'sir sxemalari ilovalar ichida aniq shakl emas mavjud Va xizmati biladi faqat haqida o'zi o'zingiz. Biling haqida boshqalar xizmatlar u faqat o'zimiz ko'rsatgan narsani qila oladi va shuning uchun xatolarni hal qiladi — bu shuningdek qo'shimcha muammo, Xizmatga yo'naltirilgan yondashuv bilan ilovalarni ishlab chiqishda e'tiborga olish kerak .
"Kuch qanchalik katta bo'lsa, mas'uliyat ham shunchalik katta bo'ladi." Ushbu ibora xizmatga yo'naltirilgan ilovalar uchun juda mos keladi, chunki bu me'moriy yondashuv emas kechiradi xatolar Va har qanday nuqson balki jiddiy _ yo'l ta'sir qilish ustida hammasi tizimning ishlashi.
Uchun tasdiqlash Bormoq, nima uchun Xizmatga yo'naltirilgan yondashuvga juda ehtiyotkorlik bilan yondashish kerak.Quyidagi misol. Bitta moliyaviy muassasa noto'g'ri ishlab chiqilgan xizmat to'lov. Mijoz to'lash-
vaet kurslar, xizmat, qaysi beradi bular kurslar, on- moliyaviy institutdan "pul o'tkazildi" xabarini oladi va mijozga kirishni ta'minlaydi kurslarga, ammo, bosqichlaridan birida, xizmatlardan biri, deb pul o'tkazmasini amalga oshiruvchi noma'lum sababga ko'ra bajarilmadi, bu esa tranzaktsiyalarning qaytarilishiga olib keldi va pul qaytarildi . ustida tekshirish dasturchi nima LED uchun bunga bu mijoz oldi kirish uchun kurslar, da bu xizmat, ularni mijozga taqdim etgan, buning uchun pul olmagan.
IN ramka xizmat ko'rsatishga yo'naltirilgan yondashuv " orkestratsiya" atamasi nazarda tutadi avtomatik turar joy, muvofiqlashtirish _ Va boshqaruv murakkab kompyuter tizimlar va xizmatlar. Orkestratsiya turli xizmatlarning bir-biri bilan o'zaro ta'sirini tavsiflaydi. do'stingiz bilan xabar almashish, shu jumladan biznes mantig'i va ish jarayoni.
Bir dan mayor diqqatga sazovor joylar ichida tanlash me'moriy yondashuv qo'llash qachon qo'llab-quvvatlash qiymati hajmi yoki aks holda yondashuv. Ustida asos Jami Yuqoridagilardan biz quyidagi grafikni tuzishimiz mumkin (4-rasmga qarang ), bu xizmat narxining o'sish nisbatini aks ettiradi. uchun o'sish funksionallik ichida ariza, har bir me'moriy yondashuv ustiga qurilgan.
Qanday to'g'ri Bu bo'lgandi dedi ichida erta maqolalar Va Qanday rasmda ko'rsatilgan , monolitik yondashuv qo'shimcha beradi juda tez boshlash va eng kam xarajat talab qiladi, lekin ishlab chiqilgan ilovalarni saqlash narxini nako ustida asos berilgan yondashuv o'sadi yetarli tez. Mo- tumshuq yondashuv talab qiladi aniq xarajatlar ustida boshlash, bir- nako o'sish xarajat xizmat emas shunday kesish, nima ruxsat beradi _ qo'llab-quvvatlash ma'lumotlar tizimlari ko'p uzoqroq. Nihoyat, SOA yondashuvi boshida jiddiy xarajatlarni talab qiladi, nima o'z ichiga oladi ichida o'zim yetarli keng qamrovli tizim qanday rivojlanishini rejalashtirish .
har bir me'moriy yondashuvning o'ziga xos afzalliklari va kamchiliklari borligini aytishimiz mumkin . Monolitik yondashuv yaxshi boshlanishni beradi, bu sizga rivojlanish narxining pastki qismidan boshlash imkonini beradi, va shuningdek, dastlabki bosqichlarida xatolarni kechiradi: hamma narsani tezda o'zgartirish va tuzatish mumkin. Biroq, bu ilovalar qo'llab-quvvatlash xarajatlarini boshqa me'moriy yondashuvlar yordamida ishlab chiqilgan hamkasblariga qaraganda tezroq o'sadi . Shu bilan birga, orasidagi chegara bir qarashda monolit va modulli dastur har doim ko'rinadigan lekin u intuitiv ravishda tushunarli: dan bir tomoni modulli Ilova yozilgan modullar dan o'zim _ boshlash, har modul Unda bor qat'iy tavsiflangan funksionallik dan berilgan chegaralar Va uning mumkin turli vaziyatlarda qo'llash , boshqa tomondan, monolit dastur turli sinflardan iborat bo'lishi mumkin Va komponentlar, qaysi bo'ladi bog'liq do'st dan do'st Va dan boshqa modullarda qo'shimcha ravishda ma'lumotlarga ega bo'lgan ma'lumotlar Komponentlar bo'ladi qisman amalga oshirish ilovaning boshqa qismida allaqachon mavjud bo'lgan, ammo boshqa sxema bo'yicha funksionallik .
Guruch. 4. Turli arxitektura yondashuvlarini qo'llashda texnik xizmat ko'rsatish xarajatlarining o'sishining dastur funksionalligining o'sishiga nisbati diagrammasi.
Xizmatga yo'naltirilgan yondashuv yetarli aziz _ birinchi bosqichlar, lekin da to'g'ri yondashuv ruxsat beradi _ saqlang ulkan moliyaviy investitsiyalar keyingi bo'yicha bosqichlar. lekin bu yo'l xarajatlar tanlamoq
katta kompaniyalar, qaysi egalik qilish aniq hisob-kitoblarni amalga oshirish va ularning rivojlanishi kelajakda qanday rivojlanishini rejalashtirish uchun etarli resurslar.
Adabiyot:
Mikroservislar yoki monolit: ichida qidirish oltin o'rtada // Korporativ blog kompaniyalar Gramant. URL: http://blog.gramant.ru/2017/05/17/microservices-vs-monolith-compromise/ (kirish sanasi: 1.03.2018).
Qachon foydalanish monolitlar, lekin qachon mikroservislar // Eslatmalar dasturchi. URL: https://eax.me/microservices-vs-monolithic/ (kirish 03/01/2018).
Do'stlaringiz bilan baham: |