Тъй като технологията напредва с безпрецедентна скорост, тя поставя предизвикателства пред бизнеса в ИТ домейна да се справи с бързо променящата се тенденция. И с нарастващото търсене на силно мащабируеми приложения, конвенционалната монолитна архитектура става остаряла и вече не е полезна. След определен момент монолитните приложения могат да бъдат трудни за мащабиране, защото са твърде големи и сложни, за да правят промените бързо и правилно. За да се преодолеят ограниченията на монолитната архитектура, влязоха в сила архитектурата на микросервизите и ориентираната към услуги архитектура. Те скоро придобиха популярност като основа за изграждане на разпределени системи.

Както микросервизите, така и SOA архитектурата са донякъде свързани; и двете се базират на разпределени системи, насочени към разделяне на приложения в услуги. И двата подхода имат общ модул на приложение и са независими от конкретната технология. Терминът „Микросервизи“ е сравнително нов, но концепцията зад него съществува отдавна, дори през ранния ден, когато SOA беше популярна. Микросервизите са концепция за модулация, базирана на разделяне на големи системи на по-малки модули, за да се улесни внедряването и развитието на софтуера. SOA е още една архитектура, базирана на модулация на софтуера и споделя повече или по-малко подобен набор от функции. И двамата обаче имат справедлив дял от различията.

Какво е микросервиз?

Микросервизите са софтуерен архитектурен модел, който структурира приложение като съвкупност от малки, независими процеси, които да се използват за специфични бизнес възможности. Микросервизите са подход за модулиране на софтуер, създаден за справяне с конкретни фини бизнес функции. Той използва модули, които работят като различни процеси, което означава, че насърчава изграждането на софтуерно приложение като набор от независими услуги. Казано по-просто, архитектурата на Microservices е свързана с потапяне на приложение или система в по-малки, независими части, базирани на принципа на единната отговорност. Единична отговорност означава, че всяка микросервиз има набор от добре дефинирани функции и трябва да работи в отделен процес като услуга.

Архитектура, ориентирана към обслужване

Service-ориентирана архитектура (SOA) е софтуерна схема за проектиране или подход за изграждане на архитектура на приложения на базата на услуги. Подобно на микросервизите, приложенията в SOA са изградени на базата на услуги. Това е софтуерна архитектурна концепция, която определя използването на слабо свързани услуги за поддържане на изискванията на потребителите на софтуер. Всяка услуга има уникален набор от функционалности при проектирането на конкретна софтуерна архитектура. Фокусът на ориентирана към услуги архитектура е върху функционалната инфраструктура и нейните бизнес услуги, а не върху техническата инфраструктура и нейните услуги. SOA е много подходящ за работа със сложни разпределени системи. Тя позволява на субектите, които биха изисквали определени разпределени възможности, да намерят и използват тези възможности. Идеята е да се разпредели цялата ИТ инфраструктура на компанията в отделни услуги.

Разлика между микросервизи и SOA

архитектура

- Докато и двата архитектурни стила са базирани на разпределени системи и имат за цел да разделят приложенията на услуги, всяка услуга носи различна отговорност и в двата архитектурни модела. Микросервизната архитектура се изразява в разработването на едно приложение като набор от малки и независими услуги, които се разработват и разгръщат независимо. SOA, от друга страна, е по-широко понятие, така че обхватът на проблемите с този стил е по-голям. За разлика от микросервизите, SOA включва слабо свързани приложни услуги, които комуникират чрез общ комуникационен механизъм.

Хранилище за данни

 - Микросервизите имат независимо съхранение на данни, което означава, че всяка микросервиза ще бъде независима услуга и не споделя никакво общо съхранение на данни помежду си. Съхранението на данни носи собствен набор от плюсове и минуси. Комуникацията между микросервизите трябва да се осъществява само чрез общ набор от протоколи, като HTTP. В SOA модела услугите споделят същия слой за съхранение на данни в приложението. Услугите са слабо свързани в SOA и са самостоятелни. Потребителите са загрижени само за сервизния интерфейс и не се интересуват от неговото внедряване.

гъвкавост

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

Толерантност на грешки

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

Микросервизи срещу SOA: Сравнителна диаграма

Обобщение на микросервизите срещу SOA

С две думи, микросервизите се фокусират върху изолацията, което означава, че услугите са независими една от друга и промените, необходими за нови функции, са ограничени до отделни микросервизи. Накратко, микросервизите представляват архитектура за отделна система. SOA, от друга страна, определя как множество системи взаимодействат в рамките на ИТ на предприятието. За разлика от микросервизите, фокусът на ориентирана към услуги архитектура е върху функционалната инфраструктура и нейните бизнес услуги, а не върху техническата инфраструктура и нейните услуги.

Препратки

  • Уолф, Еберхард. Микросервизи: гъвкава софтуерна архитектура. Бостън, Масачузетс: Адисън-Уесли, 2016. Печат
  • Индрасири, Касун и Прабат Сиривардена. Микросервизи за предприятието: Проектиране, разработване и внедряване. Ню Йорк: Apress, 2018. Печат
  • Митра, Рони и др. Микросервизна архитектура: Привеждане в съответствие с принципите, практиките и културата. Себастопол, Калифорния: O'Reilly Media, 2016. Печат
  • Josuttis, Николай М. SOA в практиката: Изкуството на дизайна на разпределени системи. Себастопол, Калифорния: O'Reilly Media, 2007. Печат
  • Кредитна снимка: https://commons.wikimedia.org/wiki/File:SOA_Detailed_Diagram.png
  • Кредит за изображение: https://commons.wikimedia.org/wiki/File:JLupin_wiki_fig3.png