24
Magento Сервис-Ориентированная Архитектура Путь от потребностей к возможностям Макеев Александр [email protected] Senior PHP developer, PaaS team, X.Commerce, an eBay Corp.

Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Embed Size (px)

Citation preview

Page 1: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

-СервисОриентированнаяАрхитектураПуть от потребностей к возможностям

Макеев Александр[email protected]

Senior PHP developer, PaaS team, X.Commerce, an eBay Corp.

Page 2: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

?Очёмбудемговорить Архитектура – это не панацея Принципы и парадигмы SOA Сравнение с другими архитектурными стилями Недостатки и ограничения SOA Экосистема SOA Технические детали: стандарты и протоколы Безопасность сервисов Подходы к проектированию сервисов Примеры

Page 3: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

– Архитектура этонепанацея Разработка и моделирование на разных уровнях абстракции Построение гибких систем Проверка на соответствие бизнес-требованиям Анализ объема изменений при появлении новых требований Проверка на соответствие правилам

Page 4: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Принципыипарадигмы SOA Архитектура не привязывается к определённым технологиям,

платформам и языкам разработки приложений Использование сервисов, независимых от конкретных

приложений, с единообразными интерфейсами доступа к ним Повторное использование кода сервиса, реализующего

определённую бизнес-функцию Низкая связанность между сервисами Крупнозернистая структура сервисов Основная парадигма SOA: организация и использование

распределённых возможностей для обеспечения потребностей бизнес-процессов потребителей

Page 5: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Концепция SOA втрёхсловах Видимость• Осведомлённость• Готовность• Доступность

Взаимодействие• Информационная модель• Поведенческая модель

Эффект• Модификация общей информации

Page 6: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

?Эволюцияилиреволюция

Page 7: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Недостаткииограничения SOA Падение производительности системы Громадный трафик Невозможно построить Real-Time систему Неявный и негарантированный выбор поставщика сервиса Сложности в обеспечении безопасности данных Сложности в поддержке инфраструктуры Сложность в проектировании систем Новый взгляд на проектирование и поддержку интерфейсов Отсутствие инструментальных средств Отсутствие чётких стандартов

Page 8: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

-Общаясхемаработывеб сервиса

Page 9: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Экосистема SOA

Page 10: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Работасервиса

Page 11: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Видимостьсервиса

Page 12: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Взаимодействие ссервисом

Page 13: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Эффектвреальноммире

Page 14: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Описаниесервиса

Page 15: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Дескрипторсервиса

Page 16: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Контрактиполис

Page 17: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Контекствыполнениясервиса

Page 18: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

: Техническиедетали стандартыипротоколы

Коммуникации (XML, SOAP, WSDL, и UDDI) Передача сообщений (SOAP, WS-Addressing) Надежная передача сообщений (WS-Reliable Messaging) Управление рабочим процессом (WS-Management) Управление транзакциями (WS-Coordination, WS-

AtomicTransaction, WS-Business-Activity) Распределение ресурсов (WS-RF) События, запускающие бизнес-процессы (WS-Notification)

Page 19: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

SOAP-сообщение<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> <m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference> <m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <n:name>Еke Jуgvan Шyvind</n:name> </n:passenger> </env:Header> <env:Body> <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:departure> <p:departing>New York</p:departing> <p:arriving>Los Angeles</p:arriving> <p:departureDate>2001-12-14</p:departureDate> <p:departureTime>late afternoon</p:departureTime> <p:seatPreference>aisle</p:seatPreference> </p:departure> <p:return> <p:departing>Los Angeles</p:departing> <p:arriving>New York</p:arriving> <p:departureDate>2001-12-20</p:departureDate> <p:departureTime>mid-morning</p:departureTime> <p:seatPreference/> </p:return> </p:itinerary> <q:lodging xmlns:q="http://travelcompany.example.org/reservation/hotels"> <q:preference>none</q:preference> </q:lodging> </env:Body> </env:Envelope>

Page 20: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

WSDL-дескпритор<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:svc="http://johanpeeters.com/webservices" xmlns:types="http://johanpeeters.com/types">

<types> <schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://johanpeeters.com/types"> <complexType name="tException" abstract="true"> <sequence> <element name="message" type="string"/> </sequence> </complexType> <complexType name="OutOfMemoryException"> <complexContent> <extension base="types:tException"> <sequence> <element name="heapSize" type="int"/> <element name="used" type="int"/> </sequence> </extension> </complexContent> </complexType> <complexType name="NullPointerException"> <complexContent> <extension base="types:tException"> <sequence> <element name="stackFrame" type="string"/> </sequence> </extension> </complexContent> </complexType> </schema> </types> <message name="testRequest"> <part name="toRun" type="xsd:base64Binary"/> </message> <message name="testResponse"/> <message name="error">

<part name="exception" type="types:tException"/> </message> <portType name="testItf"> <operation name="test" parameterOrder="toRun"> <input message="svc:testRequest"/> <output message="svc:testResponse"/> <fault name="fault" message="svc:error"/> </operation> </portType> <binding name="testPortSoapBinding" type="svc:testItf"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="test"> <soap:operation soapAction=""/> <input> <soap:body use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://johanpeeters.com/msg"/>

</input> <output> <soap:body use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://johanpeeters.com/msg"/>

</output> <fault name="fault"> <soap:fault use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://johanpeeters.com/msg"/>

</fault> </operation> </binding> <service name="testSvc"> <port binding="svc:testPortSoapBinding" name="testPort"> <soap:address location="http://127.0.0.1:8080/testPort"/> </port> </service></definitions>

Page 21: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Безопасностьсервисов

Page 22: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

Стандартыбезопасности SOA Базовые стандарты (SOAP Foundation) – включают в себя

спецификации XML Signature и XML Encryption WS-Security – определяет базовые механизмы и форматы

использования security-token WS-Policy – определяет шаблоны и правила описания

политики бeзопасности WS-Trust – описывает правила организации доверенных

отношений между участниками Web-взаимодействия WS-SecureConversation регламентирует правила безопасного

обмена сообщениями WS-Authorization описывает форматы описания правил

разграничения доступа к Web-сервисам

Page 23: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

РаботасWeb- сервисамина PHP SOAP & XML-RPC PHP extensions• Сервер, клиент (Soap 1.1, 1.2, WSDL 1.1)• Обработка исключений

Zend_Soap & Zend_Rest• Сервер, клиент (Soap 1.1, 1.2, WSDL 1.1, отдельный клиент WS-I)• Автогенерация WSDL• Обработка исключений

WSO2 Web Service PHP Framework• Binary extension• Сервер, клиент (Soap 1.1, 1.2, WSDL 1.1, 2.0)• Автогенерация WSDL (XML Schema)• Обработка исключений• Поддержка WS-Security, WS-Addressing

Page 24: Сервис-Ориентированная Архитектура: путь от потребностей к возможностям

Magento

-СервисОриентированнаяАрхитектураПуть от потребностей к возможностям

Макеев Александр[email protected]

Спасибо за внимание!