Микроуслугите са една от най-важните тенденции в софтуерната архитектура за 2020 г. Днес ще обсъдим топ 5 технологии, които ще изведат вашите микроуслуги на следващото ниво.

Микроуслугите са една от най-важните тенденции в софтуерната архитектура за 2020 г. В архитектурата на микроуслугите приложението е подредено като колекция от свободно свързани услуги. Всяка микроуслуга е самостоятелна част от бизнес функционалност с ясен интерфейс. С компоненти за независими разработчици микроуслугите правят приложението по-лесно за поддръжка.

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

За да подпомогна развитието на вашите микроуслуги, съставих списък с топ 5 технологии за изграждане на архитектура на микроуслуги.

Днес ще разгледаме:

  • Какво да имате предвид, преди да приемете архитектура на микроуслуги
  • Docker и Kubernetes
  • ПОЧИВКА
  • Redis
  • Прометей
  • консул
  • Какво да научите след това

Станете професионалист по микроуслуги по лесния начин.

Научете дребните подробности за внедряването на микроуслуга в реалния свят. Всичко от Consul до Docker до Cloud Foundry и други.

„Архитектура на микросервизи: практическо внедряване“

Какво да имате предвид, преди да приемете архитектура на микроуслуги

Архитектурата на микроуслугите формира основата за продукти, изграждани в компании като Amazon, Netflix, Spotify и Uber. В сравнение с традиционно монолитно приложение, микроуслугите предлагат следните предимства:

  • Модулен: Чрез разделянето на приложение на по-малки компоненти става по-лесно разбирането, разработването и тестването на приложението.
  • Мащабируеми: Тъй като микроуслугите се внедряват и разгръщат независимо, те могат да бъдат наблюдавани и мащабирани независимо.
  • Устойчивост: Когато има изтичане на памет в микроуслуга, само тази микроуслуга е засегната. Другите микроуслуги продължават да работят.
  • Сигурност: Тъй като микроуслугите са изолирани, цялата система не е засегната от атаки към една микроуслуга.

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

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

В следващия раздел ще разгледаме прост дизайн на архитектура на микроуслуги и най-добрите технологии, които могат да се използват за разработване на всеки компонент в дизайна.

Docker и Kubernetes

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

Kubernetes действа като допълнение към Docker, особено в мащаб. Обикновено се използва за справяне с някои от оперативните сложности при преминаване към мащабиране на множество контейнери, разположени на множество сървъри.

Docker и Kubernetes могат да се използват заедно, за да действат като гъвкава основа за вашата система, базирана на микроуслуги, като лесно се увеличава с нарастване на натоварването или обратното.

Предимства на Docker за микроуслуги

Docker е лека опция за изграждане на архитектура на микроуслуги. Всички компоненти на микроуслуга могат да бъдат пакетирани в Docker изображение и да останат изолирани от други микроуслуги.

Docker улеснява внедряването на вашия софтуер, тъй като трябва само да разпространявате Docker изображения с помощта на Dockerfiles.

С Docker Compose множество контейнери могат да бъдат координирани за изграждане на цяла система от микроуслуги с контейнери. Можем също да използваме Docker Machine за инсталиране на Docker среди на сървър.

Забележка: Docker изисква преосмисляне на работата. Така че в някои случаи може да се нуждаете от алтернативни технологии. Например, когато разполагате няколко Java уеб приложения на един Java уеб сървър.

ПОЧИВКА

Микроуслугите трябва да комуникират с други микроуслуги. Един комуникационен протокол, който може да се използва, е REST API (Representational State Transfer). REST е модел на архитектурен дизайн за API, наречен REST API или RESTful API.

Този протокол за уеб комуникация позволява на услугите да комуникират директно чрез HTTP. Заявките и отговорите се обработват в стандартни формати като XML, HTML или JSON.

REST е естествен избор за повечето микроуслуги, тъй като много от тях са уеб приложения. Възможно е да се надстрои до HTTP/2.0, когато е необходимо, намалявайки нуждата от други протоколи като gRPC, който се основава на ProtocolBuffer и HTTP/2.0.

Предимства на REST за микроуслуги

Микроуслугата е синхронна, ако прави заявка към други микроуслуги, докато обработва заявки и чака резултата.

Протоколът за синхронна комуникация означава, че заявката връща резултат. REST позволява протоколи за синхронна комуникация, което означава, че заявката връща резултат.

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

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

Забележка: Pact е страхотна рамка за писане на тестове на REST интерфейс на език за програмиране. Това води до JSON файл, съдържащ REST заявките и очакваните отговори.

Redis

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

Redis обикновено се използва като основна база данни за вашето приложение, използвайки Redis в постоянен режим. В този модел обектите се съхраняват с хеш операции. Redis обикновено се изгражда върху рамките на Spring Cloud или Spring Boot.

Предимства на Redis за микроуслуги

Както знаем, микроуслугите трябва да поддържат собственото си състояние, използвайки база данни. Данните за услугата трябва да бъдат изолирани от други слоеве данни, за да се даде възможност за несвързано мащабиране. Redis отговаря на много от тези изисквания, включително краен отговор с ниска латентност.

Redis може да се използва от вашето приложение по много различни начини. Redis се използва широко в архитектурата на микроуслугите, защото може да служи като кеш или като основна база данни на услугата. В зависимост от вашите изисквания, Redis може също да действа като брокер на съобщения или кеш.

Redis Streams позволява също асинхронен модел и двупосочна комуникация. Наред с Spring Cloud Config, можете да изградите модел на разпределена конфигурация за вашите микроуслуги.

Прометей

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

Prometheus използва прост език за заявки, който формира основата на мониторинга на задачите. Това включва функции за визуализация за промени и статистика.

Предимства на Prometheus за Microservices

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

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

Забележка: Prometheus е по-малко пакет за случаи, които изискват точно копиране на данни секунда по секунда.

консул

Consul е технология за откриване на услуги, която гарантира, че микроуслугите могат да комуникират помежду си. Той има някои функции, които го отличават от други решения за откриване на услуги, включително:

  • Има HTTP REST API и поддръжка за DNS
  • Автоматично генериране на конфигурационни файлове с помощта на Consul Template
  • Той може да извършва проверки на състоянието и да изключва услуги от откриването на услуги, когато проверката на състоянието е неуспешна.

Консулът е много гъвкав. Благодарение на DNS интерфейса и Consul Template може да се използва с много технологии. Това е особено важно в контекста на микроуслугите. Докато една система може да не се нуждае от използване на различни технологии от самото начало, в дългосрочен план е изгодно да можете да интегрирате нови технологии.

Предимства на Consul за Microservices

Настройването на система за микроуслуги с Consul е чудесен вариант за синхронна система, тъй като нейната инфраструктура отговаря на типичните предизвикателства на синхронните микроуслуги:

  • Откриване на услуга: Тази функция се покрива от Consul и е полезна за интегриране на нови технологии към вашите микроуслуги.
  • Повишена прозрачност: Consul е напълно прозрачен и може да се използва без никакви зависимости на кода.
  • Конфигурация: Consul може да се използва за конфигуриране на микроуслугите. Могат да бъдат приложени както откриването, така и конфигурирането на услугата.
  • Балансиране на натоварването: С Consul DNS, Consul прилага прозрачно балансиране на натоварването с DNS сървъра.

За всяка микроуслуга Apache HTTPD трябва да има запис в своя конфигурационен файл. За целта може да се използва Consul Template. Consul Template гарантира, че дадена микроуслуга може да бъде достигната отвън, веднага след като се регистрира в Consul.

Забележка: Consul се изписва на Go. Наблюдението и внедряването се различават от микроуслугите на Java.

Какво да научите след това

Поздравления! Вече научихте топ 5 технологии за изграждане на архитектура на микроуслуги. Използването на тези инструменти ще направи вашия процес на разработка и внедряване много по-лесен и те дават възможност на силно мащабируеми приложения.

Има още много да научите и в зависимост от вашите изисквания други топ технологии може да са от полза. Трябва да разгледате:

  • Асинхронна комуникация с Atom
  • Съобщения и Кафка
  • Еруека за откриване на услуги
  • Hystrix за устойчивост
  • PaaS с Cloud Foundry
  • и още

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

Или, ако искате да се запознаете по-добре с микроуслугите като цяло, Въведение в принципите и концепциите на микроуслугите е страхотна отправна точка. Ще научите в дълбочина микроуслуги, стратегии за мигриране на стари системи и технологии за внедряване на микроуслуги.

Приятно учене!

Продължете да четете за микроуслуги и архитектури