SOA – следващата революция в програмирането


Източник: geekandpoke

За SOA, или Service Oriented Architecture, може да се каже същото, както във вица че обектно ориентираното програмиране е като тинейджърски секс – всички говорят за него и никой не го прави правилно и безопасно. SOA е най-новата мания и с основание – тя обещава да промени начина, по който се създават софтуерни системи и комуникацията вътре в бизнеса, както и с клиентите.

SOA не е поредната дума, около която се шуми много, но нищо не се прави. На Business Innovation Forum в Darmstadt на 2-ри Септември това беше една от основните теми. Дори в дискусията между съдебната министърка и шефовете на някой от основните софтуерни компании, SOA прозираше във всяка идея и довод. Целта е всички услуги, които досега се предоставят от персонал на различни нива, да се дублират виртуално, за да е възможен не само бърз достъп до данни, но и автоматизация на много задачи. Във въпросната дискусия ставаше дума за електронното правителство, за което ще говоря друг път, но тази концепция вече навлиза много активно в частния сектор. Повечето големи интернет портали са пуснали api-та (точки и стандарти за свързване с други сайтове), като някой използват стандарти приети за SOA като SOAP и WSDL. Такива сайтове са Ebay, Amazon и Flickr.

Обаче една птичка пролет не прави и, както ви подсказва горния комикс, същото се отнася до SOA и интернет услугите. Какво точно са интернет услугите или WS накратко (от web services)? При тях се публикуват няколко технически документа, които описват какво прави въпросната услуга, къде може да бъде намерена, как трябва да бъде извикана и дали има нужда от заплащане и предварителен договор. Ако ви се струва трудоемко – не е – въпросните „технически документи“ не са бумащина за очилати лелки, а XML файлове с информация, която може автоматично да се обработи от компютър. Така може да му кажете да търси услуга, която безплатно дава информация за времето във Варна и да я го оставите сам да я намери, да я извика и да ви покаже резултатите.

SOA не означава просто да имате една или две услуги предоставени на обществеността. SOA означава всички програми и информационни източници в компанията да са експортирани като WS и да комуникират помежду си чрез SOAP съобщения. Това не е самоцелно – имайки всички тези WS налице, реално създателите на една компютърна система – било тя на болница, министерство или корпорация – имат на разположение универсални блокчета от Лего и могат да сглобят каквато си искат структура бързо и удобно, в зависимост от настоящите нужди на институцията. Това е страшно важно във все по-динамичния бизнес днес.

За да разберем защо това е толкова нужно, нека погледнем през очите на обикновения потребител. Това много често е служител във фирма, който се опитва да събере информация за някой проект или статистика за работата на фирмата си. Горе съм илюстрирал какво правим сега – минаваме през десетки вътрешни сайтове с неудачен дизайн, търсим в Google и в чужди блогове, пишем на колеги с надеждата, че ще знаят нещо. Информацията съществува някъде, но е много разпръсната и разнородна. Дори да я намерим на едно място, шансовете, че няма да е представена добре и изчерпателно са големи. За да се справим с този проблем имаме нужда от чисти хомогенни данни, които да моделираме по свой начин, за да ги разберем.

Затова ни е полезна SOA. Тук както виждате става малко по-разноцветно. Червените сфери са местата, където има информация – това може да са бази данни, сензори, борсови индекси или информационни агенции. Преди те сами оформяха информацията като интернет страници и трябваше да я четем и разбираме сами. Сега те експортват всичко на WS-и (червено и лилаво). Някои от тези услуги ще пращат автоматични запитвания към колегите ни. Ние можем да вземем тези WS, да комбинираме функционалността им и да създадем по-мощна услуга (светло синьо). После може да се изгради сайт, който взима тези услуги (тъмно синьо) и оформя информацията така, както на нас ни е удобно.

Най-хубавата част от целия процес е, че за почти всички задачи има вече програми. С тях може визуално да подредите услугите и да ги свържете една с друга. Същото се отнася и до интернет страниците, които показват информацията. Като илюстрация на това мога да ви представя проектът, който направих с няколко приятели за Software AG. Там направихме всички неща, за които писах по-горе. Тук е официалната страница с видео на работния процес. Тук пък има описание как работихме.

Всъщност една от програмите там – Information Integrator – е и целта на моята бакалавърска работа, която ще започна през Октомври. Целта на II е да се вземе някакъв информационен източник, като база данни, XML документ или интернет услуга, да се създаде онтология, да се трансформира тази онтология в удобен вид, да се направят запитвания върху нея, и резултатите да се експортират като нова WS. Моята цел ще е да пренапиша програмата, като използвам вече достъпни инструменти с отворен код, както и новите интернет стандарти.

Накрая искам да уточня нещо, което доста хора са ме питали – защо имаме нужда от интернет услуги за да получаваме информация, ако имаме вече RSS. RSS е много мощен протокол, който се използва широко днес. Общото при RSS и WS е, че и в двата случая трябва да си поискаме информацията, за да я получим. Разликата е, че при WS може да се подават параметри, по които да се прави примерно търсене или обработване на данните. Има и нещо много по-важно – WS са активни. Това означава, че като обадите на една интернет услуга и дадете нужната информация, тя инициира някакво действие. Това може да е търсене на самолет, купуване на билет, резервиране на кола и хотел при пристигането, че дори и маса в ресторант преди хотела и всичко това с няколко клика. Не са за пренебрегване и предимства като сигурността, автоматичността и леснотата за интеграция. Това е силата на SOA и вярвам, че в най-скоро време ще можем да се насладим на плодовете от нея.

23 коментара

  1. От контекста предполагам, че SOA ще да е „Service-Oriented Architecture“, иначе моята първа асоциация беше „Source Of Authority“ … Поне някъде, в началото примерно, спомени какво значи съкращението, възможните значения според търсачката са много :).

  2. Добра бележка. Ще го допълня. На мен вече ми идват инстинктивно значенията и това ми е един от недостатъците при писане на такива подробни статии – в даден момент възприемам, че нещо е ясно и няма нужда от пояснение. Друго е като се обяснява на презентация, защото там може (а и трябва) да се следят лицата на слушащите за т.н. „тъпи физиономии на объркване“. Ако видиш други неточности, ще се радвам ако ми ги покажеш.

  3. Интересно, да. За многото говорене си прав, счупват се googlatalks за такива неща да говоря. А за правенето също – това би било много полезно.

    Наскоро направих един брутален експеримент – една седмиса на софтуер диета: само браузър. Да ти кажа толкова доволен останах, че все още не съм се върнал към традиционните си навици за употреба на услуги. В този смисъл разширяването на типа услуги предоставяни по http на хората е според мен единствения логичен начин за развитие.

    Тук трябва да се вметне нещо и то е неприкосновеността на личните данни. Силно се надявам уважаемите колеги разработчици да се постараят максимално да подсигурят реализациите на идеите си. Родителите ми например все ще не вярват на онлайн банкирането и плащането на сметките през ePay (което примерно можем да спаднем към този тип сървиси, защото предлагат интерфейс за плащане към трети юридически лица (ЕОН,ВиК и тн)) – не можело то така да даваме данни на трети лица. Нещо такова. Примера е неподходящ, но показва отношение:)

    Offtopic, нищо не каза, опита ли chrome:)

  4. SOA не е нещо безкрайно ново, но описанието в поста е едновременно достъпно, интересно, професионално и красиво.

    За SOА единствената организация в България, която обяви, че я използва в основа на мениджмънта си е ДСК . Нямам нищо общо с ДСК – просто следя темата и ми се налага да работя с данни, от различни източници, базирани на различни машини, така,че идеите на SOA не са ми чужди.

    Успех в работата на проекта.

  5. @malwkgad – наистина все повече услуги са достъпни през елементарен browser. Всички социални мрежи, мейл системи, банкови сайтове и дори комуникация като интернет версията на ICQ. Също така могат да се намерят много plugin-и за browser-ите, които да работят с FTP, P2P, VoIP.

    Всичко това обаче е само външната черупка – комуникацията с потребителя. Основното за SOA (превода на български би бил Архитектура Основаваща се на Услуги) е, че системите, които ние не виждаме, като въпросните банкови и мейл системи, са свързани чрез WS. Това ще позволи на собствениците им да се адаптират много по-бързо към променящият се пазар и да ни предоставят по-добри услуги.

    А от гледна точка на потребителя – много по-лесно е да се изгради единен интерфейс, за достъп до тези данни и наистина това ще е най-вероятно browser-a. Все пак SOAP съобщенията, които са в основата на интернет услугите, се предават през HTTP и по специално с POST съобщения. За Chorme мислех да не пиша, защото всичко живо писа за него, още не съм събрал впечатления и не исках да посочвам очевидни неща. Като си поиграя с него може би ще пиша.

    Сигурността и защитата на личните данни е много важно нещо, но не е задължение на програмистите. Както съм отбелязвал многократно в блогът на Нели – задължение е на магистратите за изковат подходящи закони, въз основа на които ние да изграждаме системите за защита. В момента точно това се и прави, но законите не са достатъчно адекватни. От технологична гледна точка няма проблем, но трябва да знаем правилата преди да ги програмираме, а не можем да си ги измислим сами.

    От друга гледна точка доверието в интернет пазаруването и разплащанията зависи от три фактора (по мои наблюдения) – толерантността на банките, бързината на съдебната система и цените на доставките. Ако доставката ти излиза по-скъпо от стоката – никой няма да си купува през интернет. Ако съдебната система не е бърза и коректна за дребните случаи, магазините и банките ще правят каквото си искат. Ако банките осъзнаят, че може да си позволят малки парични загуби, като връщане на източени карти например, ще видят, че печелят много повече от доверието на хората. В България тези неща са налице в известна степен, но липсва един друг важен фактор за бизнеса – визия и замах. Нещата обаче са тръгнали в правилната посока и интернет услугите все повече печелят доверие. И в „Европата“ технофобията също е голям проблем.

    @nv – концепцията наистина е доста стара, но едва сега започва да се прилага на практика. Всъщност си спомням, че още преди 9 години се е приказвало, че OSGI е Service-Oriented Architecture, като базират това на факта, че комуникацията между bundle-ите става с нещо, което те са нарекли „услуги“, но реално са споделени java обекти. Да не говорим, че въпросните „услуги“ не са достъпни за обекти извън framework-а. Известно време си играх да направя server-side Eclipse и са ми се набили разни впечатления 🙂

    Благодаря за мнението ти за статията ми. Ако се интересуваш от SOA, може би ще ти е интересно да участваш в технологичен блог по темата на български език. Сега се опитвам да намеря хора, които имат желанието да пишат авторски статии, анализи и ръководства. Пиши ми ако имаш интерес.

  6. Не е нужно изкуствено да се слагат спирачки 😉 Когато мненията са пълноценни допълнения към статията, под която идват, нека ги има и нека бъдат дълги, щом имат какво да кажат.
    Интересно е. Продължавай 🙂

  7. Да, на мен често ми се случва – имам някаква идея и тръгвам да я обяснявам надълго и нашироко и се получава цяла статия. Основното обаче е да се говори по темата нещата, а в случая мисля, че е важно тези концепции и възможности да се предадат и разберат от възможно най-голяма част от бизнеса и публичния сектор. Така ще разполагат с по-голям избор от инструменти и нови идеи за развитие. Това е добре не само за тях, но и за хора като мен, защото търсенето на специалисти в тази и други свързани области ще се покачи неимоверно.

  8. Несъмнено уеб услугите са по-доброто решение не само заради по лесното предаване на параметри а и защото може да се прави цялостна оркестрация на бизнес процесите. Докато навлезнат широко ще полzуваме и Enterprise RSS. Молба напиши нещо за WOA или GlobalSOA. Какви са проблемите и как стой въпроса със сигурността.

  9. Доколкото разбирам, тези двете са по-скоро нивото между SOA и потребителите. Основната цел на SOA е да пренапише пътищата за комуникация и договаряне между бизнеса на машинно ниво. WOA или GlobalSOA имат за цел да създадат по-интерактивни web приложения. Нещо като mash-up на стероиди. Ще се разровя повече по темата и ще пиша. След 25-ти ще пусна още 3 статии от тази поредица – eGovernment, Application Modernization и Information Integration.

  10. точно това е целта на SOA но по-голямата цел е бизнеса да си комуникира и вътре във фирмата и с ъс своите партньори. Няма как да се мине без WOA в един тотално дигитален свят. Публикациите са интересни и много полезни. Разбира се че писането на програми ще се промени революционно. Всеки ще може да оркестрира процеси подобно на sidebar на блога си. А програмистите ще създават и описват достъпни услуги в регисрите.

  11. Ами да се надяваме. Целта на всички модерни софтуерни продукти е да позволи програмирането на бизнес логика чрез графични интерфейси и без нужда от знания по програмиране, процеси и сложни мрежови проблеми. Такъв е случая с шефовете на компаниите, които обикновено знаят какво трябва да се направи, но не знаят как. При програмистите е обратното. Различните системи за интеграция и моделиране ще затворят тази дупка.

  12. Pingback: Application Modernization - пластична хирургия за стария ви софтуер : IT Отдел
  13. Pingback: BPM - стегнете бизнеса си автоматично : IT Отдел
  14. Pingback: Немски форум за иновациите в бизнеса : IT Отдел
  15. Pingback: Business Innovation Forum ‘08 - видео и презентации : IT Отдел
  16. Pingback: Application Modernization - пластична хирургия за стария ви софтуер : Блогография
  17. Как по мне вопрос разложен по полочкам дальше некда, писатель сделал максимум, за что ему респект!

  18. На 13 март се проведе интересна БГ пресентация на Oracle SOA Fusion Suite. Имаше и решение. ако ти пратя PDF презентацията може ли да погледнеш и да кажеш какво се случва в Software AG.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван.

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.