• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Service-Oriented Architectures

2021/2022
Academic Year
ENG
Instruction in English
6
ECTS credits
Course type:
Elective course
When:
3 year, 3, 4 module

Instructor


Радченко Глеб Игоревич

Course Syllabus

Abstract

В рамках этого курса вы познакомитесь с ключевыми подходами к организации веб-сервисов, а также ключевыми подходами к формированию API. Также, мы рассмотрим, как развитие сервис-ориентированных систем на базе облачных решений привело к появлению микросервисного подхода.
Learning Objectives

Learning Objectives

  • Уметь проводить анализ и выявлять наиболее применимый формат сериализации в зависимости от требований, предъявляемых к системе.
  • Знать понятие сервис-ориентированной архитектуры (СОА). Типы СОА API.
  • Знать общие принципы организации СОА.
  • Знать основные технологии организации RPC API на примере JSON RPC, gRPC, SOAP XML Веб-сервисов.
  • Знать основные концепции и методы разработки веб-сервисов в соответствии с концепцией REST.
  • Знать особенности организации интерфейсов в соответствии с концепцией API Сообщений, ключевые паттерны работы с очередями сообщений.
  • Уметь организовывать взаимодействие между независимыми сервисами посредством очередей сообщений.
  • Уметь разрабатывать GraphQL веб-сервисы.
Expected Learning Outcomes

Expected Learning Outcomes

  • Знать ключевые паттерны организации микросервисной архитектуры: API Gateway, Service Mesh, Message Queue, Event Sourcing.
  • Знать концепцию стека протоколов передачи данных на примере стека OSI и TCP/IP.
  • Знать основы работы с технологией контейнеризации Docker.
  • Знать особенности обеспечение безопасности СОА: технологии OAuth, JSON Web Token.
  • Знать особенности организации связи на основе протоколов TCP и UDP.
  • Знать особенности организация сервисных интерфейсов на основе Графового API на примере GraphQL.
  • Уметь создавать и распространять Docker-контейнеры серверных приложений.
  • Иметь представление об организации связи в РВС.
  • Уметь разрабатывать клиент-серверные приложения на основе технологии Berkley Sockets.
Course Contents

Course Contents

  • Введение в сервис-ориентированные архитектуры. Основы Docker
  • Связь и обмен данными в глобальных сетях.
  • Ключевые паттерны СОА. RPC Веб-сервисы.
  • SOAP XML Веб-сервисы. Message API. Очереди сообщений.
  • REST API. Спецификация интерфейса посредством OpenAPI
  • Графовый API. GraphQL
  • Безопасность в веб-сервисах.
  • Ключевые паттерны микросервисной архитектуры
Assessment Elements

Assessment Elements

  • non-blocking Домашнее задание 1
    Формирование и управление контейнерами Docker. Цель: изучить принципы работы платформы Docker, методы создания контейнеров и развертывания контейнеров в публичных облаках. Домашнее задание выдается в начале курса.
  • non-blocking Домашнее задание 2
    Исследование методов сериализации данных. Цель: на языке высокого уровня (Java, C#, Python и др. – на выбор обучающегося) реализовать приложение для тестирования эффективности работы с различными форматами сериализации данных. В процессе тестирования форматов сериализации необходимо учитывать следующие характеристики: • Размер сериализованной структуры данных; • Время сериализации/десериализации. В сериализуемой структуре желательно представить несколько различных видов данных, включая: • строковые данные, • массивы данных, • словари, • целочисленные данные, • данные с плавающей запятой. Для отчета необходимо представить: • Отдельное приложение для тестирования форматов сериализации; • Отчет в формате таблицы Excel о форматах сериализации данных. Домашнее задание выдается в начале курса.
  • non-blocking Домашнее задание 3
    Клиент-серверный голосовой чат на основе сокетов. Цель: на языке высокого уровня (Java, C#, Python и др. – на выбор обучающегося) реализовать сетевое клиент-серверное приложение – голосовой чат (в виде консольного либо диалогового приложения) на основе технологии сокетов. Клиентская программа предоставляет пользователю интерфейс ввода имени пользователя и подключения к серверу, обеспечивает отправку аудио-сигнала серверу и получает от сервера аудио-сигнал от остальных пользователей. Для зачета задания необходимо представить ответ, в котором содержатся все следующие элементы: ссылка на публичный репозиторий либо загруженный архив, содержащий исходный текст приложения. Приложение должно включать в себя как серверную, так и клиентскую часть и инструкции для запуска клиентской части. ссылка на Docker-образ, размещенный на Docker Hub или любом другом публичном Docker Registry, содержащий серверную часть вашего приложения. Домашнее задание выдается в начале курса.
  • non-blocking Домашнее задание 4
    Разработка приложения на основе gRPC. Цель: на языке высокого уровня (Java, C#, Python и др. – на выбор обучающегося) реализовать gRPC веб-сервис и клиент для него, обеспечивающий работу движка игры «SOA-мафия». Игра должна представлять из себя сетевой вариант игры Мафия. Взаимодействие между клиентом и сервером обеспечивается на технологии gRPC. Когда достаточное количество клиентов подключается к серверу, сервер принимает решение о ролях участников и уведомляет участников о них. Логика распределения ролей определяется разработчиком, в минимальном варианте - игра на 4 игрока должна иметь одного игрока с ролью “мафия” и одного игрока с ролью “комиссар”. Домашнее задание выдается в начале курса.
  • non-blocking Домашнее задание 5
    Разработка REST веб-сервиса. Цель: на языке высокого уровня (Java, C#, Python и др. – на выбор обучающегося) реализовать REST веб-сервис и клиент для него, обеспечивающий сбор и предоставление клиентам возможностей работы с ресурсами игры «SOA-мафия». Реализовать REST-сервис, который предоставляет возможность добавления, просмотра, редактирования и удаления информации по профилю игрока. Должна быть обеспечена возможность получения профиля как отдельного игрока, так и перечня игроков. Реализовать сбор и представление посредством REST-сервиса статистики по игрокам и проведенным сессиям игр. Статистика по игроку должна генерироваться в виде PDF-документа по асинхронному запросу, возвращающему URL, по которому в дальнейшем будет доступен PDF-документ со сгенерированной статистикой. Генерация статистики должна быть реализована на основе паттерна «Очередь заданий». Домашнее задание выдается в начале курса.
  • non-blocking Домашнее задание 6
    Разработка GraphQL веб-сервиса. Цель:на языке высокого уровня (Java, C#, Python и др. – на выбор студента) реализовать GraphQL веб-сервис и клиент для него, обеспечивающий сбор и предоставление клиентам возможностей работы с ресурсами игры «SOA-мафия». Реализовать GraphQL-сервис, который предоставляет возможность просмотра списка текущих и прошлых игр, просмотр Scoreboard конкретной игры, а также добавление комментариев к играм. Реализовать клиента к GraphQL сервису. Домашнее задание выдается в начале курса.
  • non-blocking Тестирвоание
    Промежуточное тестирование в начале каждой лекции на основе материалов предыдущих занятий. Выдается в начале каждого лекционного занятия на 10-15 минут.
Interim Assessment

Interim Assessment

  • 2021/2022 4th module
    0.117 * Домашнее задание 2 + 0.3 * Тестирвоание + 0.115 * Домашнее задание 6 + 0.117 * Домашнее задание 1 + 0.117 * Домашнее задание 5 + 0.117 * Домашнее задание 3 + 0.117 * Домашнее задание 4
Bibliography

Bibliography

Recommended Core Bibliography

  • Tanenbaum, A. S., & Steen, M. van. (2014). Distributed Systems: Pearson New International Edition : Principles and Paradigms (Vol. 2nd ed). Harlow, Essex: Pearson. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1418515
  • Хорсдал К. Микросервисы на платформе .NET / К. Хорсдал. - Санкт-Петербург : Питер, 2018. - 352 с. - ISBN 978-5-496-03221-6. - URL: https://ibooks.ru/bookshelf/356961/reading (дата обращения: 12.10.2020). - Текст: электронный.

Recommended Additional Bibliography

  • Daigneau, R. (2012). Service Design Patterns : Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services. Addison-Wesley Professional.