Magento
Сервис-Ориентированная
Архитектура
Путь от потребностей к возможностям
Макеев Александр
amakeev@ebay.com
Senior PHP developer, PaaS team, X.Commerce, an eBay Corp.
Magento
О чём будемговорить?
 Архитектура – это не панацея
 Принципы и парадигмы SOA
 Сравнение с другими архитектурными стилями
 Недостатки и ограничения SOA
 Экосистема SOA
 Технические детали: стандарты и протоколы
 Безопасность сервисов
 Подходы к проектированию сервисов
 Примеры
Magento
Архитектура– этоне панацея
 Разработка и моделирование на разных уровнях абстракции
 Построение гибких систем
 Проверка на соответствие бизнес-требованиям
 Анализ объема изменений при появлении новых требований
 Проверка на соответствие правилам
Magento
Принципыи парадигмыSOA
 Архитектура не привязывается к определённым технологиям,
платформам и языкам разработки приложений
 Использование сервисов, независимых от конкретных
приложений, с единообразными интерфейсами доступа к ним
 Повторное использование кода сервиса, реализующего
определённую бизнес-функцию
 Низкая связанность между сервисами
 Крупнозернистая структура сервисов
 Основная парадигма SOA: организация и использование
распределённых возможностей для обеспечения потребностей
бизнес-процессов потребителей
Magento
КонцепцияSOAв трёх словах
 Видимость
• Осведомлённость
• Готовность
• Доступность
 Взаимодействие
• Информационная модель
• Поведенческая модель
 Эффект
• Модификация общей информации
Magento
Эволюцияилиреволюция?
Magento
Недостаткии ограниченияSOA
 Падение производительности системы
 Громадный трафик
 Невозможно построить Real-Time систему
 Неявный и негарантированный выбор поставщика сервиса
 Сложности в обеспечении безопасности данных
 Сложности в поддержке инфраструктуры
 Сложность в проектировании систем
 Новый взгляд на проектирование и поддержку интерфейсов
 Отсутствие инструментальных средств
 Отсутствие чётких стандартов
Magento
Общаясхема работывеб-сервиса
Magento
ЭкосистемаSOA
Magento
Работасервиса
Magento
Видимостьсервиса
Magento
Взаимодействие с сервисом
Magento
Эффектв реальноммире
Magento
Описаниесервиса
Magento
Дескрипторсервиса
Magento
Контракти полис
Magento
Контекствыполнениясервиса
Magento
Техническиедетали:стандартыи протоколы
 Коммуникации (XML, SOAP, WSDL, и UDDI)
 Передача сообщений (SOAP, WS-Addressing)
 Надежная передача сообщений (WS-Reliable Messaging)
 Управление рабочим процессом (WS-Management)
 Управление транзакциями (WS-Coordination, WS-
AtomicTransaction, WS-Business-Activity)
 Распределение ресурсов (WS-RF)
 События, запускающие бизнес-процессы (WS-Notification)
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>
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>
Magento
Безопасностьсервисов
Magento
СтандартыбезопасностиSOA
 Базовые стандарты (SOAP Foundation) – включают в себя
спецификации XML Signature и XML Encryption
 WS-Security – определяет базовые механизмы и форматы
использования security-token
 WS-Policy – определяет шаблоны и правила описания
политики бeзопасности
 WS-Trust – описывает правила организации доверенных
отношений между участниками Web-взаимодействия
 WS-SecureConversation регламентирует правила безопасного
обмена сообщениями
 WS-Authorization описывает форматы описания правил
разграничения доступа к Web-сервисам
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
Magento
Сервис-Ориентированная
Архитектура
Путь от потребностей к возможностям
Макеев Александр
amakeev@ebay.com
Спасибо за внимание!

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

  • 1.
    Magento Сервис-Ориентированная Архитектура Путь от потребностейк возможностям Макеев Александр amakeev@ebay.com Senior PHP developer, PaaS team, X.Commerce, an eBay Corp.
  • 2.
    Magento О чём будемговорить? Архитектура – это не панацея  Принципы и парадигмы SOA  Сравнение с другими архитектурными стилями  Недостатки и ограничения SOA  Экосистема SOA  Технические детали: стандарты и протоколы  Безопасность сервисов  Подходы к проектированию сервисов  Примеры
  • 3.
    Magento Архитектура– этоне панацея Разработка и моделирование на разных уровнях абстракции  Построение гибких систем  Проверка на соответствие бизнес-требованиям  Анализ объема изменений при появлении новых требований  Проверка на соответствие правилам
  • 4.
    Magento Принципыи парадигмыSOA  Архитектуране привязывается к определённым технологиям, платформам и языкам разработки приложений  Использование сервисов, независимых от конкретных приложений, с единообразными интерфейсами доступа к ним  Повторное использование кода сервиса, реализующего определённую бизнес-функцию  Низкая связанность между сервисами  Крупнозернистая структура сервисов  Основная парадигма SOA: организация и использование распределённых возможностей для обеспечения потребностей бизнес-процессов потребителей
  • 5.
    Magento КонцепцияSOAв трёх словах Видимость • Осведомлённость • Готовность • Доступность  Взаимодействие • Информационная модель • Поведенческая модель  Эффект • Модификация общей информации
  • 6.
  • 7.
    Magento Недостаткии ограниченияSOA  Падениепроизводительности системы  Громадный трафик  Невозможно построить Real-Time систему  Неявный и негарантированный выбор поставщика сервиса  Сложности в обеспечении безопасности данных  Сложности в поддержке инфраструктуры  Сложность в проектировании систем  Новый взгляд на проектирование и поддержку интерфейсов  Отсутствие инструментальных средств  Отсутствие чётких стандартов
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 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)
  • 19.
    Magento SOAP-сообщение <?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> <m:reservationxmlns: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>
  • 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"> <complexTypename="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>
  • 21.
  • 22.
    Magento СтандартыбезопасностиSOA  Базовые стандарты(SOAP Foundation) – включают в себя спецификации XML Signature и XML Encryption  WS-Security – определяет базовые механизмы и форматы использования security-token  WS-Policy – определяет шаблоны и правила описания политики бeзопасности  WS-Trust – описывает правила организации доверенных отношений между участниками Web-взаимодействия  WS-SecureConversation регламентирует правила безопасного обмена сообщениями  WS-Authorization описывает форматы описания правил разграничения доступа к Web-сервисам
  • 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
  • 24.
    Magento Сервис-Ориентированная Архитектура Путь от потребностейк возможностям Макеев Александр amakeev@ebay.com Спасибо за внимание!