SlideShare a Scribd company logo
SOA
SOA или
Что нам стоит дом
построить?
Цыганов Станислав
@DevAlloy
2
Rambler Digital
Solutions
3
hr@rambler-co.ru
4
Архитектура
4
Архитектура
• VIPER
4
Архитектура
• VIPER
• SOA
5
Про что поговорим
5
Про что поговорим
• Что такое SOA?
5
Про что поговорим
• Что такое SOA?
• Роль сервисного слоя
5
Про что поговорим
• Что такое SOA?
• Роль сервисного слоя
• Пример SOA для простого приложения
5
Про что поговорим
• Что такое SOA?
• Роль сервисного слоя
• Пример SOA для простого приложения
• Сложности
5
Про что поговорим
• Что такое SOA?
• Роль сервисного слоя
• Пример SOA для простого приложения
• Сложности
• Преимущества SOA
0. Предисловие
7
Слоистая архитектура
7
Слоистая архитектура
7
Слоистая архитектура
7
Слоистая архитектура
Interface
7
Слоистая архитектура
Interface
7
Слоистая архитектура
Interface
7
Слоистая архитектура
Interface
8
Service Oriented Architecture
8
Presentation
Service Oriented Architecture
8
Presentation
Service
Service Oriented Architecture
8
Presentation
Service
Core
Service Oriented Architecture
1. Эволюция
10
10
VC
10
VC
10
VC
10
VC
DataSource
10
VC NetworkClient
DataSource
10
VC NetworkClient
Mapper
DataSource
10
VC NetworkClient
Mapper
Storage
DataSource
10
VC NetworkClient
Mapper
Storage
DataSource
...
10
VC NetworkClient
Mapper
Storage
DataSource
...
10
VC NetworkClient
Mapper
Storage
DataSource
...
10
VC NetworkClient
Mapper
Storage
DataSource
...
VC
11
11
Любую проблему можно решить путём введения
дополнительного уровня абстракции
11
Любую проблему можно решить путём введения
дополнительного уровня абстракции
кроме проблемы слишком большого количества уровней
абстракции
,
11
–Johnny Appleseed
Любую проблему можно решить путём введения
дополнительного уровня абстракции
кроме проблемы слишком большого количества уровней
абстракции
,
12
12
VC
12
VC
12
VC VC
12
VC VC
12
VC VC
2. Сервис
14
Сервис
14
Сервис
• Единственная ответственность
14
Сервис
• Единственная ответственность
• Абстрагируется от UI
14
Сервис
• Единственная ответственность
• Абстрагируется от UI
• Реализация скрыта протоколом
14
Сервис
• Единственная ответственность
• Абстрагируется от UI
• Реализация скрыта протоколом
• Нет зависимости сервисов от сервисов
14
Сервис
• Единственная ответственность
• Абстрагируется от UI
• Реализация скрыта протоколом
• Нет зависимости сервисов от сервисов
• Отсутствие состояния
15
15
15
15
15
15
15
15
VC
15
VC
16
VC
16
VC
16
VC
16
VC
16
VC
16
VC
17
17
• Протокол сервиса
17
VC
• Протокол сервиса
• VC
17
• Протокол сервиса
• VC
17
• Протокол сервиса
• VC
• Сервис
17
• Протокол сервиса
• VC
• Сервис
17
• Протокол сервиса
• VC
• Сервис
17
• Протокол сервиса
• VC
• Сервис
VC
3. Часть со звездочкой
19
DI
19
DI
19
DI
19
DI
19
DI
19
DI
19
DI
20
Фабрики
20
Фабрики
ModuleAssembly ModuleAssembly ModuleAssembly
20
Фабрики
ModuleAssembly
ServiceAssembly ExtensionServiceAssembly
ModuleAssembly ModuleAssembly
20
Фабрики
ModuleAssembly
ServiceAssembly
CoreComponentsAssembly UtilitiesAssembly
ExtensionServiceAssembly
ModuleAssembly ModuleAssembly
20
Фабрики
ModuleAssembly
ServiceAssembly
CoreComponentsAssembly UtilitiesAssembly
ExtensionServiceAssembly
ModuleAssembly ModuleAssembly
21
21
VC
21
VC
AuthService ArticleService
21
VC
AuthService ArticleService
21
VC
AuthService ArticleService
?
22
22
Facade
22
Facade
• Решает задачи уровня
приложения
22
Facade
• Решает задачи уровня
приложения
• Держит сервисы
22
Facade
• Решает задачи уровня
приложения
• Держит сервисы
• Без состояния
22
Facade
• Решает задачи уровня
приложения
• Держит сервисы
• Без состояния
Interactor
22
Facade
• Решает задачи уровня
приложения
• Держит сервисы
• Без состояния
• Решает задачи модуля
Interactor
22
Facade
• Решает задачи уровня
приложения
• Держит сервисы
• Без состояния
• Решает задачи модуля
• Держит сервисы или
фасады
Interactor
22
Facade
• Решает задачи уровня
приложения
• Держит сервисы
• Без состояния
• Решает задачи модуля
• Держит сервисы или
фасады
• Может держать
состояние
Interactor
4. Итоги
24
Преимущества
24
Преимущества
• Строгая архитектура
24
Преимущества
• Строгая архитектура
• MVC, MVVM, MVP, VIPER
24
Преимущества
• Строгая архитектура
• MVC, MVVM, MVP, VIPER
• Повторное использование
25
Подведем итоги
25
Подведем итоги
• SOA как архитектура
25
Подведем итоги
• SOA как архитектура
• Эволюция приложения
25
Подведем итоги
• SOA как архитектура
• Эволюция приложения
• Что такое сервис?
25
Подведем итоги
• SOA как архитектура
• Эволюция приложения
• Что такое сервис?
• Сложные случаи
25
Подведем итоги
• SOA как архитектура
• Эволюция приложения
• Что такое сервис?
• Сложные случаи
Цыганов Станислав
@DevAlloy

More Related Content

PDF
Rambler.iOS #8: Сервис-ориентированная архитектура
PDF
Евгений Ртищев "Мобильная платформа на ReactNative"
PDF
Филипп Кекс "Как научить роботов играть в игры?"
PDF
Rambler.iOS #1: Nimbus Kit Models
PDF
Rambler.iOS #5: TDD и VIPER
PDF
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
PDF
Сергей Сергеев - Системы контроля версий
PDF
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
Rambler.iOS #8: Сервис-ориентированная архитектура
Евгений Ртищев "Мобильная платформа на ReactNative"
Филипп Кекс "Как научить роботов играть в игры?"
Rambler.iOS #1: Nimbus Kit Models
Rambler.iOS #5: TDD и VIPER
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
Сергей Сергеев - Системы контроля версий
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...

What's hot (9)

PPTX
Интеграция TeamCity и сервера символов | Алексей Соловьев
PDF
AntonSaburov (Gemini-Systems) @ CodeCamp2011
PDF
Performance in JavaScript
PDF
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
PDF
Сергей Крапивенский
PPTX
knockout.js
PPTX
Dependency Injection. Как сказать всё, не говоря ничего. Кожевников Дмитрий. ...
PDF
React + Redux. Опыт использования
PPTX
Sergey Gavruk - WebMatrix
Интеграция TeamCity и сервера символов | Алексей Соловьев
AntonSaburov (Gemini-Systems) @ CodeCamp2011
Performance in JavaScript
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Сергей Крапивенский
knockout.js
Dependency Injection. Как сказать всё, не говоря ничего. Кожевников Дмитрий. ...
React + Redux. Опыт использования
Sergey Gavruk - WebMatrix
Ad

Similar to Станислав Цыганов "SOA в iOS разработке" (20)

PDF
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
PDF
Inversion of Control в .NET
PDF
Микросервисный фронтенд
PDF
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
PPT
Что вас ждет на пути реализации Soa (Битрикс отступает)
PDF
Интеграция информационных систем с использованием OpenSource ESB
PPTX
внедрение программно аппаратных комплексов Vblock - опыт компании инком; алек...
PPTX
Внедрение программно аппаратных комплексов Vblock - опыт компании инком; алек...
PDF
redux: the best for isomorphic apps
PDF
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
PDF
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
PPT
Backendless BaaS. Dinosaurus for Jeeconf 2013
PDF
Архитектуры ios приложений
PDF
Vblock от VCE: опыт первого внедрения в Украине.
PPTX
RESTful API: Best practices, versioning, design documentation
PPT
Системы мониторинга элементов системы безопасности распределённых объектов
 
PDF
Елизавета Голенок Переходим на mono или как это было
PDF
Технологические сервисы Cisco: Технологии Мобильного Интернета
PDF
Решения сообщества для SharePoint
PDF
Виктор Розаев - Как не сломать обратную совместимость в Public API
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Inversion of Control в .NET
Микросервисный фронтенд
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Что вас ждет на пути реализации Soa (Битрикс отступает)
Интеграция информационных систем с использованием OpenSource ESB
внедрение программно аппаратных комплексов Vblock - опыт компании инком; алек...
Внедрение программно аппаратных комплексов Vblock - опыт компании инком; алек...
redux: the best for isomorphic apps
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Backendless BaaS. Dinosaurus for Jeeconf 2013
Архитектуры ios приложений
Vblock от VCE: опыт первого внедрения в Украине.
RESTful API: Best practices, versioning, design documentation
Системы мониторинга элементов системы безопасности распределённых объектов
 
Елизавета Голенок Переходим на mono или как это было
Технологические сервисы Cisco: Технологии Мобильного Интернета
Решения сообщества для SharePoint
Виктор Розаев - Как не сломать обратную совместимость в Public API
Ad

More from IT Event (20)

PDF
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
PDF
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
PDF
Max Voloshin - "Organization of frontend development for products with micros...
PDF
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
PDF
Konstantin Krivlenia - "Continuous integration for frontend"
PPTX
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
PDF
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
PDF
Vladimir Grinenko - "Dependencies in component web done right"
PDF
Dmitry Bartalevich - "How to train your WebVR"
PDF
Aleksey Bogachuk - "Offline Second"
PDF
James Allardice - "Building a better login with the credential management API"
PDF
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
PPTX
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
PPTX
Алексей Рагозин "Java и linux борьба за микросекунды"
PPTX
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
PDF
Наш ответ Uber’у
PDF
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
PDF
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
PDF
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
PDF
Mete Atamel "Resilient microservices with kubernetes"
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Max Voloshin - "Organization of frontend development for products with micros...
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Konstantin Krivlenia - "Continuous integration for frontend"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Vladimir Grinenko - "Dependencies in component web done right"
Dmitry Bartalevich - "How to train your WebVR"
Aleksey Bogachuk - "Offline Second"
James Allardice - "Building a better login with the credential management API"
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Алексей Рагозин "Java и linux борьба за микросекунды"
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Наш ответ Uber’у
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Mete Atamel "Resilient microservices with kubernetes"

Станислав Цыганов "SOA в iOS разработке"