exam13 6 [2021] - stankin/design-part-1 GitHub Wiki

Понятия сервиса, веб-сервиса, сервиc-ориентированной и микросервисной архитектуры. Поддерживающие протоколы прикладного уровня.

Реферат к лекции 13(6). Научные методы в проектировании

Выполнил: Саркисьянц Григорий, группа ИДБ-18-06

Проверила: Кузнецова Кристина, группа ИДБ-18-06


Основные понятия

Сервис

В сфере предпринимательства или обслуживание понятие "сервис" (англ. service, услуга) - функция маркетинга, обеспечивающая реализацию услуг, связанных со сбытом, эксплуатацией продукции. Качество сервисного обслуживания повышает спрос, влияет на конкурентоспособность продукции.

Понятие "сервис" информационных технологиях имеет совершенно другое определение. Кроме того, само понятие может отличаться и в зависимости от сферы IT, в котором оно применено.

В программировании это понятие определяется как дискретный программный компонент, предоставляющий определенную функциональность и используемый в составе многих приложений. Например, это службы в Windows, выполнение которых направлено на обслуживание всей системы в целом для предотвращения или устранения сбоев в работе.

Веб-сервис

При развитии сферы, направленной на разработку сайтов и, в частности, веб-приложений, появилось понятие веб-сервиса. Веб-сервис (англ. web-service) — идентифицируемая уникальным веб-адресом программная система со стандартизированными интерфейсами. Веб-сервисы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах и соглашениях, простыми словам - веб-стандартах.

Веб-стандарты - рекомендации и требования для разработчиков программного обеспечения и веб-мастеров. Веб-стандарты необходимы для того, чтобы, с одной стороны, пользователи ПО без проблем и неудобств могли пользоваться сетью интернет, а с другой стороны, для того, чтобы разработчики программного обеспечения или веб-мастера были уверены в работоспособности своих продуктов.

Основным компонентом веб-сервисов в интернете являются данные, которые передаются между клиентом и сервером. Веб-сервис – это система, доступная в интернет-пространстве и работающая на основе специальной программы, идентификация которой выполняется с помощью URL-строки. Поиск осуществляется другими ресурсами, основной задачей является взаимодействие программных систем на разных платформах, для чего используются открытые протоколы. К веб-сервисам относят поисковики, хостинги, электронную почту, облачные хранилища, календари и прочие сервисы. Ключевая особенность системы – отсутствие зависимости от характеристик и состояния какого-либо конкретного компьютера, браузера или провайдера, поэтому доступ к таким сервисам поддерживается в любом государстве. Единственное условие для пользования системой – наличие подключения к интернету.

В веб-сервисах всегда есть клиент и сервер. Сервер – это и есть веб-сервис и иногда его называют endpoint (конечная точка, куда доходят сообщения от клиента). Примером веб-сервиса может стать компания Amazon. Организация имеет сеть онлайн-магазинов и систем доставок. Она предоставляет веб-сервис, который запрашивает цены на продукты, продаваемые онлайн через Amazon.

Архитектура системы – принципиальная организация системы, воплощенная в её элементах, их взаимоотношения друг с другом и средой, а также принципов, направляющих проектирование архитектуры, её создание и эволюцию.

Сервис-ориентированная архитектура

Сервис-ориентированная архитектура (англ. Service Oriented Architecture, SOA) - архитектурный стиль, который поддерживает ориентированность на службы и является парадигмой для бизнеса и ИТ. Предназначен для разработки систем с точки зрения служб, доступных через интерфейс, и результатов действий этих служб. Служба - логическое представление ряда действий, который имеет определенные результаты, является автономным, может быть составлен из других служб и является "черным ящиком" для потребителей службы. Использование архитектурного стиля SOA может помочь ИС гибко и быстро реагировать на постоянно меняющиеся потребности бизнеса.

Пример. Представим классический интернет-магазин. Стандартные модули: UI, бизнес-логика и дата-слой. Возможны способы взаимодействия с сервисом: API REST и веб-интерфейс. При построении монолита все эти вещи будут управляться внутри одного и того же модуля.

Микросервисная архитектура

Микросервисная архитектура (англ. Micro Service Architecture, MSA) – принципиальная организация системы на основе микросервисов и их взаимодействия друг с другом и со средой по сети. Микросервисы — шаблон сервис-ориентированной архитектуры, в котором приложения создаются как совокупность различных наименьших независимых сервисных единиц. Это программный подход, который фокусируется на разложении приложения на однофункциональные модули с четко определенными интерфейсами. Эти модули могут быть независимо развернуты и эксплуатироваться небольшими группами, владеющими всем жизненным циклом службы. Одно из важнейших свойств микросервиса — его независимость от других компонентов приложения. Суть микросервиса по отношению к большому приложению (монолиту) изображена на рисунке ниже.

none

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

  1. Улучшает изоляцию сбоя компонентов: большие приложения могут продолжить эффективно работать, даже при неисправности какого-то отдельного модуля.
  2. Устраняет приверженность приложения к одному технологическому стеку: если хочешь попробовать новый технологический стек на каком-то сервисе - пожалуйста. Зависимости будут гораздо легче, чем при монолитном, к тому же будет намного проще откатить все вспять. Чем меньше кода в одном приложении, тем легче работать.
  3. Упрощает понимание функционального сервиса для новых сотрудников.

Пример. Представим тот же классический интернет-магазин. Здесь отличие от монолита в том, что у каждого модуля (UI, бизнес-логика и дата-слой) есть свой сервис и своя БД. Они слабо связаны и могут взаимодействовать с различными протоколами (например, REST) через свои границы.

Сравнение архитектур.

Поддерживающие протоколы прикладного уровня

Прикладной уровень (англ. Application level). Необходим для взаимодействия между собой сетевых приложений, таких как web, e-mail и тд. Задачей данного уровня является обеспечение доступа к сетевым службам.

Функции прикладного уровня:

  • Обеспечение взаимодействия сети и пользователя.
  • Разрешение приложениям пользователя иметь доступ к сетевым службам;
  • Передача служебной информации;
  • Запросы на соединение с иными прикладными процессами;
  • Предоставление приложениям информацию об ошибках.

Протокол - набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами.

В качестве транспорта для сообщений используется протокол HTTP. Описание веб-сервисов и их API могут быть найдены средствами UDDI. Концептуальная схема технологии приведена на рисунке ниже.

none

  • SOAP (англ. Simple Object Access Protocol) — протокол обмена сообщениями между потребителем и поставщиком веб-сервиса в распределенной вычислительной среде. Также предоставляет стандарт структуры упаковки данных для транспортировки XML документов с помощью различных интернет-технологий, как: SMTP, HTTP, FTP;
  • WSDL (англ. Web Services Description Language) — язык описания внешних интерфейсов веб-службы. Другими словами, это XML технология, которая описывает интерфейс веб-сервиса в стандартизированном виде. WSDL указывает стандарт — как веб-сервис должен представлять входные и выходные параметры при вызове извне, как должна выглядеть структура функции, природа вызова и как осуществлять связывание протокола сервера, что позволяет различным клиентам автоматически распознавать, как взаимодействовать с веб сервисом.
  • UDDI (Universal Discovery, Description and Integration) — универсальный интерфейс распознавания, описания и интеграции, используемый для формирования каталога веб-сервисов и доступа к нему. Предоставляет всемирный реестр веб сервисов для рекламы, поиска и хранения м структуру для представления деловых отношений, веб сервисов, технических метаданных, а также точек доступа к веб сервисам.

Связь между протоколами приведена на рисунке ниже.

none

Все спецификации, используемые в технологии, основаны на XML и, соответственно, наследуют его преимущества (структурированность, гибкость и т.д.) и недостатки (громоздкость, медлительность).

Приложение играет роль веб сервисов, которые нужны клиенту для доступа к другому приложению или бизнес логике, расположенной где-то в сети. Клиент делает запрос в UDDI реестр для нахождения сервиса по имени, категории, идентификатору или какой-то другой спецификации. Как только сервис найден, клиент получает информацию о местонахождении WSDL документа из UDDI реестра. WSDL документ содержит информацию о том, как обратиться к веб сервису, и формат запросов в XML схему. Клиент создает SOAP сообщение в соответствии с XML схемой, взятой из WSDL, и посылает запрос хосту (где находится веб сервис).

HTTP (HyperText Transfer Protocol) - протокол уровня приложения, используемый в основном в World Wide Web. HTTP использует клиент-серверную модель, где браузер является клиентом и общается с веб-сервером, который хостит веб-сайт.

REST (REpresentational State Transfer) - это стиль архитектуры программного обеспечения для распределенных систем, использующий веб протоколы и веб технологии. REST архитектура включает в себя клиентское и серверное взаимодействие, построенное вокруг передачи ресурсов.

  • Самая большая реализация REST - World Wide Web, которая, как правило, используется для построения веб-служб.
  • Системы, которые построены согласно REST принципам, называются RESTful.
  • REST может быть использован для сбора данных вебсайта через XML файлы веб страницы.
  • Пользователи могут обращаться к веб страницам через URL сайта, взаимодействовать с XML файлами через браузер и использовать данные как угодно.

Самый верхний уровень в иерархии протоколов Интернет занимают следующие протоколы прикладного уровня:

  • DNS (англ. Domain Name System) - распределенная система доменных имен, которая по запросу, содержащему доменное имя хоста сообщает IP адрес.
  • DHCP (англ. Dynamic Host Configuration Protocol) - протокол динамического конфигурирования узлов.
  • HTTP (англ. HyperText Transfer Protocol) - протокол передачи гипертекста в Интернет.
  • HTTPS (англ. HyperText Transfer Protocol Secure) - расширение протокола HTTP, поддерживающее шифрование.
  • FTP (англ. File Transfer Protocol) - протокол, предназначенный для передачи файлов в компьютерных сетях.
  • Telnet (англ. TELetype NETwork) - сетевой протокол для реализации текстового интерфейса по сети.
  • SSH (англ. Secure Shell) - протокол прикладного уровня, позволяющий производить удаленное управление операционной системой и передачу файлов. В отличие от Telnet шифрует весь трафик.
  • POP3 (англ. Post Office Protocol 3) – протокол почтового клиента, который используется почтовым клиентом для получения сообщений электронной почты с сервера.
  • IMAP (англ. Internet Message Access Protocol) - протокол доступа к электронной почте в Интернет.
  • SMTP (англ. Simple Mail Transfer Protocol) – протокол, который используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю.
  • LDAP (англ. Lightweight Directory Access Protocol) - протокол для доступа к службе каталогов X.500, является широко используемым стандартом доступа к службам каталогов.
  • XMPP (англ. eXtensible Messaging and Presence Protocol) - основанный на XML расширяемый протокол для мгновенного обмена сообщениями в почти реальном времени.
  • SNMP (англ. Simple Network Management Protocol) - базовый протокол управления сети Internet.

Вывод

Сервис-ориентированная архитектура — это стиль проектирования ПО. Архитектура делится на две части: функциональные аспекты и аспекты качества обслуживания. Микросервисная архитектура - стиль разработки, который позволяет создавать приложения в виде набора небольших автономных сервисов, разработанных для бизнес-сферы. Микросервисы в значительной степени получили свое название из-за того, что сервисы здесь меньше, чем в монолитной среде. Тем не менее, микро –о бизнес-возможностях, а не о размере.

Разница между двумя системами: первая представляет собой единый большой блок - монолит. Вторая же - набор небольших специфических сервисов (служб), при этом у каждой службы своя роль.

Многое зависит от собственной организационной структуры. Есть 6 команд, которые будут работать над продуктом? Микросервисная архитектура может подойти. У вас команды из 3-х разработчиков? Вероятно, они будут хорошо строить и поддерживать монолит. Другими факторами являются скорость изменения и сложность. Высокие темпы изменений и высокая сложность могут быть факторами, заставляющими выбрать архитектуру микросервиса.

Протоколы прикладного уровня определяют правила обмена данными между узлом-источником информации и узлом назначения. Каждый вид приложений и сервиса использует свои протоколы, которые определяют стандарты и форматы передаваемых данных. Протоколы и службы прикладного уровня обычно представлены соответствующими серверами. Однако сервер, как отдельное устройство, может объединять функции нескольких служб сервиса; или наоборот, служба одного вида услуг может быть представлена многими серверами.

Список использованной литературы:

  1. Служба Windows
  2. Веб-стандарты
  3. ГОСТ Р ИСО/МЭК 18384-1-2017 Информационные технологии (ИТ). Эталонная архитектура для сервис-ориентированной архитектуры (SOA RA)
  4. Веб-сервисы как средство интеграции приложений в WWW