Введение в сервис-ориентированную архитектуру

21
Введение в сервис-ориентированную архитектуру

Upload: elena-rumyantseva

Post on 14-Jul-2015

324 views

Category:

Engineering


4 download

TRANSCRIPT

Введение в сервис-ориентированную

архитектуру

Немного жизненного опыта :)

Проблемы некоторых крупных веб-проектов

• Один репозиторий, много когда, много разработчиков. Неудобно.

• Ответственность каждого конкретного разработчика размыта. Все отвечают за всё.

• Все компоненты в коде проекта тесно связаны между собой. Изменение одного компонента может вызвать баги в других.

• Проект завязан на один конкретный язык программирования.

3

Как не довести свой проект до жизни такой

• Определяем компоненты в коде так, чтобы они были максимально изолированы.

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

• По мере необходимости разносим эти компоненты в разные репозитории.

4

Profit

• Изменение отдельных модулей не вызывает ошибок в совершенно неожиданных местах проекта.

• В случае, когда был изменен один компонент, не нужно релизить весь проект целиком.

• Каждому разработчику можно назначить ответственность не за всё вместе, а только за отдельные вполне конкретные компоненты.

• Разные компоненты можно писать на разных языках программирования.

5

Как этого достичь?

Как этого достичь?

Используем SOA!

Теория

Enterprise

Сервис-ориентированная архитектура (Service-Oriented Architecture, SOA) — понятие из мира корпоративных приложений. Оно тесно связано с вопросами управления бизнес-процессами предприятия.

Бизнес-процесс — это набор задач, направленный на создание некоторых продукта или услуги.

9

Event-Driving Architecture

Понятие SOA тесно связано с понятием событийно-ориентированной архитектуры (EDA).

EDA основывается на способности создавать события и реагировать на них.

Событие — это ситуация, когда изменяется состояние некоторого объекта.

10

Service-Oriented Architecture

Сервис-ориентированная архитектура — это каркас для интеграции бизнес-процессов в виде сервисов. Все сервисы стандартизированы, могут переиспользоваться и комбинироваться для решения бизнес-задач.

11

Service-Oriented Architecture

Не только архитектура, но и методология!

12

Манифест SOA

http://www.soa-manifesto.org

• Значимость бизнеса перед технической стратегией. • Стратегические цели перед выгодами, специфичными для данного проекта.

• Свойственная способность к взаимодействию перед специально достигнутой интеграцией.

• Совместно используемые сервисы перед разработками с узкими, специальными целями.

• Гибкость перед оптимизацией.• Эволюционные усовершенствования перед попыткой достичь изначального совершенства.

13

Структура SOA

14

* Enterprise SOA: Service-Oriented Architecture Best Practices by Dirk Krafzig, 2004

Фронтенд приложения должен быть отделен от сервисов.

У каждого сервиса есть четко определенный интерфейс. Работа с этим интерфейсом может осуществляться через один или несколько фронтендов.

Структура SOA: Фронтенд приложения

15

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

Информация в репозитории должна быть представлена в виде, понятном и удобном для разработчиков и бизнес-аналитиков.

Структура SOA: Репозиторий

16

Понятие «сервисная шина» (ESB — Enterprise Service Bus)тесно связано с событиями.

Для оповещения о том, что произошло событие, некоторый сервис отправляет в шину сообщение. Другие сервисы, получив это сообщение, могут отреагировать на событие в соответствие с заданной бизнес-логикой.

Шина обеспечивает мгновенный обмен сообщениями и гарантирует, что все сообщения будут доставлены.

Структура SOA: Шина

17

Сервис — ключевое понятие SOA.

Сервисы служат для моделирования бизнес-процессов.

Традиционно под каждый бизнес-процесс организуется свой сервис.

Структура SOA: Сервис

18

Контракт задает поведение сервиса,т.е. тот набор действий, который можновыполнить, обратившись к сервису.

Интерфейсы для доступа к сервисам должны быть четко определены истандартизованы в рамках информационной системы.

Например, для доступа к сервисам может использоваться REST API, соответствующий корпоративному стандарту. Контрактом сервиса в этом случае будет набор REST-методов, реализованный для работы с этим сервисом.

Структура SOA: Сервис

19

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

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

Структура SOA: Сервис

20