SOA (Service Oriented Architecture) – xizmatga asoslangan dasturlash
Ba’zilarning fikricha xizmatlardan faqat web dasturlar va Java yoki .NET da ishlatiladi deb o’ylaydi. Bu noto’g’ri fikr. To’g’ri, Java bilan .NET da xizmatlarni oson tarzda dasturlash uchun ishlatishga tayyor bo’lgan ko’pgina klasslar mavjud. Ammo bu narsa xizmatlarni boshqa dasturlash muhitida tuzib bo’lmaydi degan narsa emas. Xizmatni tuzish uchun TCP/IP bilan ishlashni biladigan har qanday dasturlash tilidan foydalanish mumkin. Xizmat bilan aloqa qilish protokoli sifatida HTTP so’rovlari ishlatiladi, ammo bu narsa xizmatlardan foydalanish faqatgina web brauzerlar bilan chegaralangan degan hulosa kelib chiqmasilig kerak. Bravzerda HTTP va XML bilan ishlash uchun kerak bo’luvchi barcha funksiyalar tuzib bo’lingan, ammo xuddi shu funksiyalarni o’zingizni korporativ dasturingizda ham ishlatishda va SOA ning afzalliklaridan foydalanishda hech qanday to’siq yo’q. Oxirgi vaqtda IT soxasidagi intilish WEB tomoniga qarab intilmoqda, bu yerda esa SOA ning afzalliklari yaqqol namoyon bo’ladi.
Xizmat nima degani?
SOA arxitekturasi nima degani (service oriented architecture, xizmatga asoslangan arxitektura)? Nomidan bilib olish mumkinki, uning asosida – xizmatlar yotadi. Xizmatni esa, tashqi so’rovga qarab biron bir ish bajaruvchi va kerak bo’lsa o’sha so’rovga javob qaytaruvchi dastur deb tushunish mumkin.
Ba’zi manbalarda xizmat bu – CORBA dan kattaroq bo’lgan narsa deyilsa, boshqalarida xizmat o’zi kichkina, ammo ularni majmui stekga bog’lanishi mumkin degan talqinlarni uchratish mumkin. Ta’riflarni xilma-xilligidan ham noaniqlik kelib chiqadi. Meni shaxsiy fikrimcha esa, xizmat har qanday hajmda bo’lishi mumkin. Uning CORBA obyektidan katta kichikligi esa ahamiyatga ega emas. Asosiysi, u o’z vazifasini bajaruvchi tayyor obyekt bo’lib, iste’molchidan o’z ichki ishlarini berkitishi kerak. Men bekorga «obyekt» degan atamani ishlatmadim, chunki bu texnologiya bilan bo’lgan o’xshashlik haqiqatdan ham mavjud.
Xizmatni tarmoqdagi kompyuterda (yoki lokal kompyuterda) joylashgan biron bir funksiya deb faraz qilish mumkin. Bu xizmat qandaydur ishlarni amalga oshiradi, unga kiruvchi parametrlar va natija esa tarmoq orqali yuboriladi. Tashqi dastur (korporativ dastur, web brauzer yoki xatto cho’ntak kompyuteridagi kichik dasturcha ham) shu xizmatdan ma’lumotlar olish va ularni boshqaruvchi uchun foydalanadi. Tashqi dasturlar xizmat bilan aloqa qila olishlari uchun, standart hisoblanuvchi SOAP (Simple Object Access Protocol, obyektlar bilan ishlash uchun mo’ljallangan oddiy protokol) mavjud. Bu protokol HTTP so’rovlariga asoslangan. Xizmatni ishlashi quyidagicha: Serverga HTTP orqali so’rovlar (masalan POST) yuboriladi. Bu so’rovlarni ichida esa XML-sxemasida tuzilgan SOAP so’rovi bo’ladi. Ishni natijasini ham xizmat HTTP protokoli bo’yicha qaytaradi. Natija ham XML-sxemasi ko’rinishidagi SOAP javobi bo’ladi.
SOA bilan ishlash uchun faqatgina SOAP dan emas, balki CORBA dan yoki o’zingiz tuzgan dasturdan ham foydalanish mumkin. Bundan ma’no o’zgarmaydi. Ammo bizni fikrimizcha, SOAP eng yaxshi qaror hisoblanadi, shuning uchun bu maqolada biz SOA bilan SOAP birikmasini ko’rib chiqamiz.Kengaytiriluvchi arxitekturaning qudratini tushunishlik uchun, keling hoziroq kichik misol ko’rib chiqamiz. Yaqqol misolga aynan Web bo’ladi, chunki shu yerda xizmatlar eng ko’p tarqalgan va ularni deyarli barchasida SOA ifodalari hamda WEB xizmatlar birlashtirilgan.
SOA ga misol
Faraz qilaylik, siz kitoblar bilan savdo qiluvchi web do’konini tuzmoqdasiz. Bunda oddiygina kitoblar katalogini tuzib, maxsulotni omborlarda mavjudligini hamda maxsulotni mijozga yetkazilishini yo’lga qo’ymaslik ham mumkin. Ammo bunday holatdan do’koningiz mijozlari xursand bo’lmasligi aniq. Mijozingiz do’koningiz katalogida turgan ammo 5 yildan beri nashr etilmaydigan kitobga buyurtma berib, unga pul to’lab ham qo’ysa bu juda xunuk bo’ladi. Siz buyurtmani bajara olmasligingiz uchun noqulay holatga tushasiz, mijoz esa keyingi safar maxsulotni boshqa internet-do’kondan harid qiladi. Mahsulotni yetkazib berilishini ta’minlashlik uchun, siz kitoblar sotib olinuvchi ulgurji korxonaning web-xizmatiga so’rov berishingiz mumkin. So’rov sizga ulgurji omborda mavjud bo’lgan kitoblar sonini, va agarda maxsulot omborda yo’q bo’lsa, uni omborga kelish sanasini va yetkazilish muddati haqidagi ma’lumotlarni mumkin.
Shu ma’lumotdan foydalanib, siz mijozga agarda kitob omborda yo’q bo’lsa, u o’sha kitobni qachon olishi mumkinligi haqida aniqroq ma’lumot berishingiz mumkin.
Boshqa tarafdan qaralganda, ulgurji do’konning web xizmati, iste’molchilarining so’rovlarini qondirish uchun, o’z bazasidan tekshiradi xamda kitoblarni chiqaruvchi nashriyotning web xizmatiga so’rov berishi mumkin. Undan u quyidagi ma’lumotlarni so’rashi mumkin:
- kitob nashriyotda mavjudligini
- yo’q bo’lsa, qachon qayta nashr etilishini
- nashriyot ulgurji korxonaga qachon kitoblarni yetkaza olishi mumkinligi va qaysi ombordan yetkazilishi (nashtiyotlarni har xil shaxarlarda bir nechtadan omborlari bo’lishi mumkin).
Internet do’konning ulgurji korxonaning xizmatiga so’rov berishi va keyin nashriyotning web xizmatiga so’rov berilishi, b2b (business to business) deb ataladi. Bunday so’zlashuv, do’konga o’z mijozlariga eng to’liq va haqiqatga yaqin bo’lgan ma’lumotni berishga, ulgurji korxonaga esa maxsulotni omborda saqlanishini takomillashtirishga imkon beradi. Masalan, agarda nashriyotning web-xizmati, bunday kitob 10 kun davomida yetkazib berilishi haqida ma’lumot bersa, statistik ma’lumotlarga binoan korxona skladda uzog’i bilan 9 kunga yetarli kitoblar qolganini ko’rsa, ta’minot bo’limiga qo’shimcha maxsulotga buyurtma berish uchun talabnoma tayyorlashga taklif berilishi mumkin. Bu narsa sizni mahsulotni yetkazib berilishida kelib chiqishi mumkin bo’lgan ortiqcha uzilib qolishdan xolos etadi hamda maxsulotni saqlanish harajatlarini kamaytirishga imkon beradi.
Agarda xizmatlar omborning holati bilan birga narxlarning o’zgarishini ham bera olsachi? Kitoblarni narxi ham o’zgarishi mumkin (inflyatsiyani xali xech kim bekor qilgani yo’q) va agarda do’kon tegishli chora ko’rmasa, o’z zarariga savdo qilib qo’yishi mumkin. Agarda narx web xizmatlar orqali boshqarib turilmasa, nashriyot tomonidan kitobninng narxi ko’tarilgan yoki yetkazilish narxi oshgan holatlarda, internet do’kon web xizmatlar yordamida darxol chora ko’rishi mumkin. Boring bundan ham takomilroq bo’lishi mumkin – do’kon avtomatik tarzda o’z narxlarini quyidagi formulaga asoslanib belgilashi mumkin:
ulgurji korxonani narxi + yetkazilish narxi + N% do’kon foydasi
Shunday holatda do’kon xech qachon zararga ishlamaydigan bo’ladi.
Xozirgi vaqtda korxonalar uchun web – yuqorida ta’riflab o’tilgan, real vaqtda ishlovchi xizmatlarni o’z mijozlarga taqdim etishni yo’lga qo’yilishi eng samarali vosita xisoblanadi.
Tildan erkinlik
SOA texnologiyasi bizga ulkan mustaqillikni taqdim etadi, eng asosiysi – dasturlash tili va OTga bo’lgan qaramlikdan. Dasturlash tillari jadallik bilan rivojlanmoqda. 10 yil avval C++ qoidalari va uning tutgan o’rni juda mustaxkam deb qaralar edi, ammo bir necha yil avval yuksaklikni Java va .Net egallab oldi.
Shu vaqtda dasturchilar o’ylashni boshlashadi – kim yutadi va qaysi dasturlash tilidan foydalanish lozim? Barchamiz faqat tavakkal qilishimiz mumkin, va kimdur to’g’ri topishi ham mumkin, ammmo aniq ayta olmaymiz. Xizmatlardan foydalanilganda, qaysi dasturlash tili birinchilikni qo’lga kiritishini sizga farqi yo’q. Bir xizmat Java da yozilishi mumkin, ikkinchisi C#, boshqasi esa C++ da. Va ularni barchasi bir biri bilan hamohanglikda, korxona foydasi uchun juda zo’r ishlab beradi.
Ma’lumot almashinuvi uchun ishlatiluvchi SOAP protokoli, XML va HTTP ochiq standartlariga asoslangan. XML va HTTP platformadan mustaqil bo’lgani uchun, ular asosidagi xizmatlar xam TCP/IP bilan ishlay oladigan xar qanday platformada ishlay oladi. Bu protokol xozirgi kundagi barcha qurilma va OTlarda ishlatish mumkin, demakki biz ko’rib chiqayatgan arxitektura uchun chegara deyarli yo’q. Sizni Windows dasturingiz Linux da ishlab turgan xizmat bilan bemalol ishlashi mumkin va teskarisi. Bravzer yordamida esa xizmat bilan xatto mobil telefondan xam ishlash mumkin.
Ko’pgina yangi texnologiyalarda kodni maksimal darajada samarali ishlatilishini inobatga olishga harakat qilinadi. Agarda yangi joyda avval bitirilgan vazifani bajarish imkoni paydo bo’lsa, kod qaytadan yozilmasligi kerak. Xizmatlar bu muammoni a’lo darajada hal qiladi.
SOA arxitekturasi faqatgina web dasturi uchun emas balki korporativ tizimni har xil modullari uchun ma’lumotlar ta’minlovchisi sifatida ishlashi mumkin. Juda ko’p holatlarda har xil modullar bir xil ma’lumotlar ishlashi kerak bo’ladi. Bunda faqatgina ularni har xil tarzda ko’rsatib berishi kerak bo’ladi. Masalan, ombordagi qoldiqlar haqidagi ma’lumot ta’minlash bo’limiga, marketologlarga, taxlilichilarga va hokazolarga kerak bo’lishi mumkin. Har bir modulda ma’lumotlarni kerakli tarzda ko’rsatib berilishini bajaruvchi funksiyalarni tuzish juda qimmatga tushishi va bunda isrofgarchilikga yo’l qo’yilishi mumkin. Bunday xolatda, XML sxemasida so’ralan maxsulotni qoldiqlarini qaytarib beruvchi yagona xizmatni tuzib qo’yishni o’zi kifoya qiladi, mijoz dasturida esa faqatgina shu sxemadagi ma’lumotlarni foydalanuvchiga qulay tarzda ko’rsatib berilishi qoladi. XML esa XSL va DTD lar bilan birgalikda formatlashga doir keng imkoniyatlarni taqdim etsa.
Faraz qilaylik, siz vaqt bilan hamohang bo’lmoqchisiz va korxonangizda barcha zamonaviy tizimlardan foydalanmoqdasiz. Bunda Sarf-harajatlarni boshqarish, mijozlar bilan va ta’minlovchilar bilan ishlash kabi tizimlardan foydalanasiz. Hozirgi kunda ERP, CRM va boshqa tizimlarni har xil korxonalar tarafidan tuzilgan xilma xil turlarini uchratish mumkin. Ammo ularni barchasini birgalikda ishlashlarini qanday qilib ta’minlash mumkin. Barcha tizimlar va modullarni birgalikda ishlashlari va ma’lumot almashinuvini ta’minlash uchun biron bir mexanizm kerak bo’ladi. Ma’lumot almashinuvchida XML standart bo’lib bormoqda. Chunki u oddiy, qulay, quvvatli va platformadan mustaqil. SOA ham ma’lumotlarni XML ko’rinishida qaytarganligi uchun, har xil modullar va dasturlar ma’lumotlarni xizmatlardan so’rab olishlarini ta’minlash mantiqga to’g’ri keladi.
Maqolani yozishda ushbu maqoladan foydalanildi.
Farhod Dadajonov tarjimasi.
30 Sentyabr, 2012.
Manba:
API
SOA (Service Oriented Architecture) – xizmatga asoslangan dasturlash