SlideShare a Scribd company logo
1 of 55
Эволюция корпоративных
приложений
Андрей Молотков
Обо мне
Spectrum ZX
8+ лет профессионально
Архитектор в веб-отделе​
большой компании
C# и ООП
Люблю post-rock
2
О докладе
●Кода не будет
●Не зависит от платформы
●Термины на русском
●Собственный опыт
3
Опрос
●Кто работает в ИТ-отделах средних или крупных
предприятий?​
●Кому нравится текущее состояние систем?​
●У кого есть понимание, в каком направлении вы
движетесь?
4
Мегатонна!
5
Предприятие (enterprise)
6
● Много унаследованного (legacy) кода
● ИТ-персонал разделен на отделы согласно используемым
технология (SAP, Web, Oracle)
● Решаются задачи обработки информации
Эволюция
7
● Все выкинуть и
переписать!
● Работает - не трогай
● Возьми кусок кода вон
из того проекта
Что у нас есть сначала?
8
Система 1 Система 3Система 2? ?
Проблемы
9
● Код
● Данные
● Взаимодействие
Дорого поддерживать
Возможности / Каркас (framework)
10
Ядро Каркас
Каркас / Скорость
11
Каркас / Узкий или сложный?
12
?
Каркас / Выводы
13
+ Код используется повторно
+ Легко начать
- Велосипед
- Слишком много
отвественности
- Дорого поддерживать
Модули
14
Модули / Повторное использование
15
Модули / Один процесс
16
Монолит / Масштабирование
17
Модули / Данные
18
Модули / Выводы
19
+ Код используется повторно
+ Тестируемость
+ Производительность
- Дублирование данных
- Ограниченное
масштабирование
Сервисы
20
Сервисы / Масштабирование
21
Сервисы / Удаленные вызовы
22
Сервисы / Связи
23
Сервисы / Выводы
24
+ Код и данные
используются повторно
+ Тестируемость
+ Хорошая
масштабируемость
- Снижена скорость
обращения
- Нужно следить за
потребителями
Микросервисы
25
Микросервисы / Выкинуть и переписать!
26
Микросервисы / Связи
27
Микросервисы / Инструменты
28
Микросервисы / Разбиение монолита
29
Микросервисы / Команда
30
"We've seen plenty of cases of less skillful teams
building messy monolithic architectures, but it takes
time to see what happens when this kind of mess
occurs with microservices. A poor team will always
create a poor system - it's very hard to tell if
microservices reduce the mess in this case or make it
worse."​
Микросервисы / Выводы
31
+ Решения используются
повторно
+ Использование лучших
платформ
+ Тестируемость
+ Отличная
масштабируемость
- Сильная команда
- Инструменты
автоматизации
- Зоопарк технологий
Много фигурок и стрелочек, скучно?
32
Закладывается фундамент для дальнейшего развития
Уменьшается стоимость поддержки
Приложение ведет себя более предсказуемо
Дом Винчестеров
33
Дом Винчестеров
34
Дом Винчестеров
35
Что выбрали мы?
36
Нет универсального решения
Единый стек технологий (кадры)
Легкий переход от модуля к сервису или обратно
Простые сервисы
Создание модулей-клиентов
Подключение к сервисам устаревших приложений
Как это выглядит?
37
Пользователи
38
Пользователи / Регистрация
39
password ad hr
Пользователи / Вход
40
?
Пользователи / Вход в домен (AD)
41
A
D
Пользователи / Единый вход (SSO)
42
S
S
O
Пользователи / Идентификация
43
password ad hr
? ?
Пользователи / Управление учетными
записями (IM)
44
IM
Пользователи / Управление правами (UM)
45
IM
S
S
O
UM
Пользователи / Больше не проблема
46
IM
S
S
O
UM
Данные / Справочники (D)
47
Английский
Английский
язык
Англ.
англиискии
...
D Английский
язык
Справочники / Стурктура компании (CS)
48
Головная
организация
● Директор
● Секретарь
● Советник
Дочерняя
организация
Отдел кадров
Отдел продаж
● Руководитель
● Менеджер
CS CS
Данные / Файлы (F)
49
F
Данные / Фотографии (P)
50
P
Инстурменты / Логи (L), мониторинг (M)
51
L
M
52
L
M
IM
S
S
O
UM
P F D CS
Заключение
53
Почти все сервисы уже реализованы и работают
Используется REST + OData (простая инфраструктура)
Предусмотрены версии
Автоматическая документация
Сервисы используются другими отделами
Полезные материалы
54
http://martinfowler.com/articles/microservices.html
https://www.opengroup.org/soa/source-book/intro/index.htm
http://eax.me/microservices-vs-monolithic/
http://www.infoq.com/news/2014/10/ddd-onion-architecture
http://www.youtube.com/watch?v=f0UGDHT7ZwY
Спасибо!
55
Вопросы?

More Related Content

What's hot

Применение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проектеПрименение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проектеIgor Lubenets
 
рентабельный код
рентабельный кодрентабельный код
рентабельный кодMax Arshinov
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise developmentPavel Tiunov
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETAndrew Gubskiy
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Ontico
 
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...it-people
 
vi stories: миграция на .NET Core
vi stories: миграция на .NET Corevi stories: миграция на .NET Core
vi stories: миграция на .NET CoreAndrew Gubskiy
 
Микросервисы на практике
Микросервисы на практикеМикросервисы на практике
Микросервисы на практикеVitebsk DSC
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleAleksandr Tarasov
 
Хипстеры в энтерпрайзе
Хипстеры в энтерпрайзеХипстеры в энтерпрайзе
Хипстеры в энтерпрайзеAleksandr Tarasov
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Приватный клауд на базе OpenStack
Приватный клауд на базе OpenStackПриватный клауд на базе OpenStack
Приватный клауд на базе OpenStackIlya Alekseyev
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterAleksandr Tarasov
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS Pavel Tsukanov
 
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Сбертех | SberTech
 
ITkey: примеры использования OpenStack
 ITkey: примеры использования OpenStack ITkey: примеры использования OpenStack
ITkey: примеры использования OpenStackMirantis IT Russia
 

What's hot (20)

Coding like a sex
Coding like a sexCoding like a sex
Coding like a sex
 
Применение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проектеПрименение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проекте
 
рентабельный код
рентабельный кодрентабельный код
рентабельный код
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise development
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NET
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
 
vi stories: миграция на .NET Core
vi stories: миграция на .NET Corevi stories: миграция на .NET Core
vi stories: миграция на .NET Core
 
Микросервисы на практике
Микросервисы на практикеМикросервисы на практике
Микросервисы на практике
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
 
Хипстеры в энтерпрайзе
Хипстеры в энтерпрайзеХипстеры в энтерпрайзе
Хипстеры в энтерпрайзе
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Приватный клауд на базе OpenStack
Приватный клауд на базе OpenStackПриватный клауд на базе OpenStack
Приватный клауд на базе OpenStack
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
 
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
 
ITkey: примеры использования OpenStack
 ITkey: примеры использования OpenStack ITkey: примеры использования OpenStack
ITkey: примеры использования OpenStack
 

Viewers also liked

Power & Privilege From Another Perspective
Power & Privilege From Another PerspectivePower & Privilege From Another Perspective
Power & Privilege From Another PerspectiveEric Price II
 
Urīnizvadsistemas trauma J.Gololobova
Urīnizvadsistemas trauma J.GololobovaUrīnizvadsistemas trauma J.Gololobova
Urīnizvadsistemas trauma J.GololobovaInga Nalivaiko
 
Aalifa's sura.1 4.mini.series.html.doc
Aalifa's sura.1 4.mini.series.html.docAalifa's sura.1 4.mini.series.html.doc
Aalifa's sura.1 4.mini.series.html.dockhristianj
 
Avk zatvor
Avk zatvorAvk zatvor
Avk zatvorpolytec
 
Avk 06/30 privod
Avk 06/30 privodAvk 06/30 privod
Avk 06/30 privodpolytec
 
Uncertainty Reduction Theory
Uncertainty Reduction TheoryUncertainty Reduction Theory
Uncertainty Reduction TheoryMNYGARD96
 
Makalah gaya pada tubuh dan didalam tubuh manusia
Makalah gaya pada tubuh dan didalam tubuh manusiaMakalah gaya pada tubuh dan didalam tubuh manusia
Makalah gaya pada tubuh dan didalam tubuh manusiaOperator Warnet Vast Raha
 
Internet Governance: Overview
Internet Governance: Overview Internet Governance: Overview
Internet Governance: Overview Glenn McKnight
 
Logpickr Customer Journey Analytics
Logpickr Customer Journey AnalyticsLogpickr Customer Journey Analytics
Logpickr Customer Journey AnalyticsFabrice Baranski
 
Psihologie cognitiva
Psihologie cognitivaPsihologie cognitiva
Psihologie cognitivairis28011982
 
Informática 1 competencias disciplinares
Informática 1 competencias disciplinaresInformática 1 competencias disciplinares
Informática 1 competencias disciplinaresJuan Olivares García
 
Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...
Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...
Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...UNACH
 
Master en asesoria de empresas
Master en asesoria de empresasMaster en asesoria de empresas
Master en asesoria de empresasCenproexFormacion
 

Viewers also liked (14)

Saludo de fin de año
Saludo de fin de añoSaludo de fin de año
Saludo de fin de año
 
Power & Privilege From Another Perspective
Power & Privilege From Another PerspectivePower & Privilege From Another Perspective
Power & Privilege From Another Perspective
 
Urīnizvadsistemas trauma J.Gololobova
Urīnizvadsistemas trauma J.GololobovaUrīnizvadsistemas trauma J.Gololobova
Urīnizvadsistemas trauma J.Gololobova
 
Aalifa's sura.1 4.mini.series.html.doc
Aalifa's sura.1 4.mini.series.html.docAalifa's sura.1 4.mini.series.html.doc
Aalifa's sura.1 4.mini.series.html.doc
 
Avk zatvor
Avk zatvorAvk zatvor
Avk zatvor
 
Avk 06/30 privod
Avk 06/30 privodAvk 06/30 privod
Avk 06/30 privod
 
Uncertainty Reduction Theory
Uncertainty Reduction TheoryUncertainty Reduction Theory
Uncertainty Reduction Theory
 
Makalah gaya pada tubuh dan didalam tubuh manusia
Makalah gaya pada tubuh dan didalam tubuh manusiaMakalah gaya pada tubuh dan didalam tubuh manusia
Makalah gaya pada tubuh dan didalam tubuh manusia
 
Internet Governance: Overview
Internet Governance: Overview Internet Governance: Overview
Internet Governance: Overview
 
Logpickr Customer Journey Analytics
Logpickr Customer Journey AnalyticsLogpickr Customer Journey Analytics
Logpickr Customer Journey Analytics
 
Psihologie cognitiva
Psihologie cognitivaPsihologie cognitiva
Psihologie cognitiva
 
Informática 1 competencias disciplinares
Informática 1 competencias disciplinaresInformática 1 competencias disciplinares
Informática 1 competencias disciplinares
 
Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...
Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...
Instrumentos de evaluación, por solución de problemas reactivos de verdadero ...
 
Master en asesoria de empresas
Master en asesoria de empresasMaster en asesoria de empresas
Master en asesoria de empresas
 

Similar to Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET

Антон Петров "ЦОД во "времена перемен"
Антон Петров "ЦОД во "времена перемен"Антон Петров "ЦОД во "времена перемен"
Антон Петров "ЦОД во "времена перемен"Anton Petrov
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровьМаксим Сячин
 
Обеспечение и контроль качества услуг
Обеспечение и контроль качества услугОбеспечение и контроль качества услуг
Обеспечение и контроль качества услугCisco Russia
 
гк хост цод без катастроф V.2
гк хост цод без катастроф V.2гк хост цод без катастроф V.2
гк хост цод без катастроф V.2Expolink
 
раубичи ронд
раубичи рондраубичи ронд
раубичи рондzolik
 
Dsml for business.full version
Dsml for business.full versionDsml for business.full version
Dsml for business.full versionDmitry Guzenko
 
Сквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальшеСквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальшеCisco Russia
 
«Microservices. Как правильно делать и когда применять?»
«Microservices. Как правильно делать и когда применять?»«Microservices. Как правильно делать и когда применять?»
«Microservices. Как правильно делать и когда применять?»DataArt
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Ontico
 
А.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом активаА.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом активаAnatoly Levenchuk
 
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииБорьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииAleksey Lukatskiy
 
Машинное обучение в кибербезопасности
Машинное обучение в кибербезопасностиМашинное обучение в кибербезопасности
Машинное обучение в кибербезопасностиAleksey Lukatskiy
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Ontico
 
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...SECON
 
MBSE Sorokin Michael Vostok Egineering
MBSE Sorokin Michael Vostok EgineeringMBSE Sorokin Michael Vostok Egineering
MBSE Sorokin Michael Vostok EgineeringAPPAU_Ukraine
 
Нюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOCНюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOCAleksey Lukatskiy
 
Опыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММКОпыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММКVsevolod Shabad
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Fwdays
 
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...Ontico
 

Similar to Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET (20)

Антон Петров "ЦОД во "времена перемен"
Антон Петров "ЦОД во "времена перемен"Антон Петров "ЦОД во "времена перемен"
Антон Петров "ЦОД во "времена перемен"
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
 
Обеспечение и контроль качества услуг
Обеспечение и контроль качества услугОбеспечение и контроль качества услуг
Обеспечение и контроль качества услуг
 
гк хост цод без катастроф V.2
гк хост цод без катастроф V.2гк хост цод без катастроф V.2
гк хост цод без катастроф V.2
 
раубичи ронд
раубичи рондраубичи ронд
раубичи ронд
 
Dsml for business.full version
Dsml for business.full versionDsml for business.full version
Dsml for business.full version
 
Сквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальшеСквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальше
 
«Microservices. Как правильно делать и когда применять?»
«Microservices. Как правильно делать и когда применять?»«Microservices. Как правильно делать и когда применять?»
«Microservices. Как правильно делать и когда применять?»
 
СУП
СУПСУП
СУП
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
 
А.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом активаА.Левенчук -- управление жизненным циклом актива
А.Левенчук -- управление жизненным циклом актива
 
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегииБорьба с вредоносным кодом: от базовых мер к целостной стратегии
Борьба с вредоносным кодом: от базовых мер к целостной стратегии
 
Машинное обучение в кибербезопасности
Машинное обучение в кибербезопасностиМашинное обучение в кибербезопасности
Машинное обучение в кибербезопасности
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
 
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
 
MBSE Sorokin Michael Vostok Egineering
MBSE Sorokin Michael Vostok EgineeringMBSE Sorokin Michael Vostok Egineering
MBSE Sorokin Michael Vostok Egineering
 
Нюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOCНюансы функционирования и эксплуатации Cisco SOC
Нюансы функционирования и эксплуатации Cisco SOC
 
Опыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММКОпыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММК
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"
 
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
 

More from Dev2Dev

D2D Чипец 2 Николай Иванов - Data Informed Design
D2D Чипец 2 Николай Иванов - Data Informed DesignD2D Чипец 2 Николай Иванов - Data Informed Design
D2D Чипец 2 Николай Иванов - Data Informed DesignDev2Dev
 
D2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проект
D2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проектD2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проект
D2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проектDev2Dev
 
D2D Чипец 2 Виталий Мазуревич - Engeneering design
D2D Чипец 2 Виталий Мазуревич - Engeneering designD2D Чипец 2 Виталий Мазуревич - Engeneering design
D2D Чипец 2 Виталий Мазуревич - Engeneering designDev2Dev
 
D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...
D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...
D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...Dev2Dev
 
D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"
D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"
D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"Dev2Dev
 
D2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скуки
D2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скукиD2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скуки
D2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скукиDev2Dev
 
D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...
D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...
D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...Dev2Dev
 
D2D Pizza JS Роман Сальников "Redux: one state to rule them all"
D2D Pizza JS Роман Сальников "Redux: one state to rule them all"D2D Pizza JS Роман Сальников "Redux: one state to rule them all"
D2D Pizza JS Роман Сальников "Redux: one state to rule them all"Dev2Dev
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
D2D Pizza JS Игорь Ковган "Koa поможет"
D2D Pizza JS Игорь Ковган "Koa поможет"D2D Pizza JS Игорь Ковган "Koa поможет"
D2D Pizza JS Игорь Ковган "Koa поможет"Dev2Dev
 
D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"
D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"
D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"Dev2Dev
 
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"Dev2Dev
 
Всё будет в Ажуре. Завершинский Денис D2D Just.NET
Всё будет в Ажуре. Завершинский Денис D2D Just.NETВсё будет в Ажуре. Завершинский Денис D2D Just.NET
Всё будет в Ажуре. Завершинский Денис D2D Just.NETDev2Dev
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETDev2Dev
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETDev2Dev
 
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETMicro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETDev2Dev
 
Nemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NET
Nemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NETNemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NET
Nemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NETDev2Dev
 
Трудности повторного использования
Трудности повторного использованияТрудности повторного использования
Трудности повторного использованияDev2Dev
 
RxJava + Retrofit
RxJava + RetrofitRxJava + Retrofit
RxJava + RetrofitDev2Dev
 

More from Dev2Dev (20)

D2D Чипец 2 Николай Иванов - Data Informed Design
D2D Чипец 2 Николай Иванов - Data Informed DesignD2D Чипец 2 Николай Иванов - Data Informed Design
D2D Чипец 2 Николай Иванов - Data Informed Design
 
D2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проект
D2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проектD2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проект
D2D Чипец 2 Сергей Ашмаров - Как из ничего сделать крутой фестивальный проект
 
D2D Чипец 2 Виталий Мазуревич - Engeneering design
D2D Чипец 2 Виталий Мазуревич - Engeneering designD2D Чипец 2 Виталий Мазуревич - Engeneering design
D2D Чипец 2 Виталий Мазуревич - Engeneering design
 
D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...
D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...
D2D Чипец 2 Николай Страх - Как студии параллельно с основной деятельностью з...
 
D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"
D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"
D2D Чипец 2 Алексей Резванов - "Особенности работы на международных рынках"
 
D2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скуки
D2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скукиD2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скуки
D2D Чипец 2 Максим Кулдошин - Как работать в Красноярске и не умереть со скуки
 
D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...
D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...
D2D Чипец 2 Алексей Раменский - Видение рынка дизайна и проектирования от экс...
 
D2D Pizza JS Роман Сальников "Redux: one state to rule them all"
D2D Pizza JS Роман Сальников "Redux: one state to rule them all"D2D Pizza JS Роман Сальников "Redux: one state to rule them all"
D2D Pizza JS Роман Сальников "Redux: one state to rule them all"
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
D2D Pizza JS Игорь Ковган "Koa поможет"
D2D Pizza JS Игорь Ковган "Koa поможет"D2D Pizza JS Игорь Ковган "Koa поможет"
D2D Pizza JS Игорь Ковган "Koa поможет"
 
D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"
D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"
D2D Pizza JS Владимир Кожин "Jii - фреймворк, который Вы уже знаете"
 
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
 
Всё будет в Ажуре. Завершинский Денис D2D Just.NET
Всё будет в Ажуре. Завершинский Денис D2D Just.NETВсё будет в Ажуре. Завершинский Денис D2D Just.NET
Всё будет в Ажуре. Завершинский Денис D2D Just.NET
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
 
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETMicro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
 
Nemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NET
Nemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NETNemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NET
Nemerle. метапрограммирование в .NET - Зимин Aлександр D2D Just.NET
 
Трудности повторного использования
Трудности повторного использованияТрудности повторного использования
Трудности повторного использования
 
RxJava + Retrofit
RxJava + RetrofitRxJava + Retrofit
RxJava + Retrofit
 

Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET

Editor's Notes

  1. Небольшое поселение из Fallout 3, образованное вокруг несдетонировавшей ядерной бомбы. Если ваш персонаж был злым и достаточно умным, то он мог её активировать.
  2. Вспомните, наверное у каждого при виде чужого проекта (а может быть и своего?) возникало желание все удалить и написать с нуля, руководители проектов совершенно справедливо не выделяют время, а предлагают скопировать работающий код из другого приложения. К эволюции это все не имеет никакого отношения.
  3. Несколько приложений - они обозначены большими прямоугольниками В них присутсвует сходная функциональность, обозначена пунктиром Возможно, эти приложения умеют обмениваться данными, с помощью древней enterprise-магии, вроде выгрузок excel-файлов в сетевую папку.
  4. Можно вынести функциональность, не являющуюся уникальной для приложения в каркас: Отправка уведомлений Работа со справочными данными Ведение логов Обработка ошибок и т. п.
  5. Может ускорить создание очень похожих и простых приложений, например визиток. Позволит повторно использовать имеющийся код
  6. Специфика приложений со временем изменяется и тогда каркас, подходивший для них, не сможет обеспечить всех потребностей. Сейчас уже предлагается широкий выбор базовых решений, поэтому изобретать свое может оказать слишком трудоемкой и дорогостоящей затеей. Такой подход мог годиться лет 10-15 назад, когда выбор был невелик.
  7. Позволяет начать использовать код повторно, основной проблемой является нарушение SRP.
  8. Основная проблема каркаса в том, что на нем лежит слишком много ответственности. Если выполняемые им функции вынести в независимые модули, то ситуация существенно улушчится. У каждого модуля должны быть зафиксированы входные и выходные контракты, что обеспечит слабую связанность и простоту модульного тестирования. Примечание: аналогичным образом можно поступить и с ядром, если оно сложное.
  9. При таком подходе можно создавать хорошие монолиты: Команде легко работать над одним таким проектом Код используется повторно Его легко разворачивать, т.к. он состоит из небольшого числа компонентов
  10. Вызовы функционала осуществляются внутри одного процесса, что положительно сказывается на производительности
  11. У таких приложений ограничены возможности масштабирования Возможно использовать за NLB, но дублируется вся функциональность, даже если проблема только в одном модуле. Увеличивается сложность администрирования и тестирования. У нас были случаи, когда на нодах оказывались различные версии.
  12. Хорошо, код используется повторно. А что с данными? При таком подходе могут дублировать справочные данные и осложнено централизованное управление приложениями.
  13. Недостатки этого подхода становятся более значимыми с увеличением количества приложений.
  14. Чтобы решить предыдущую проблему, можно взять модули и выделить их в самостоятельные сервисы. Они по-прежнему обладают четкой зоной ответственности, но позволяют использовать повторно не только функциональность, но и данные.
  15. Они значительно лучше масштабируются. При это развертывание по-отдельности достаточно простое.
  16. Взаимодействие осуществляется удаленно, что увеличивает время вызова (REST/MQ). Необходимо предусматривать возможность массовых операций, скрывающих данный недостаток. Мало того, что требуется больше времени, так нет и никаких гарантий, что ответ возвращен.
  17. Со временем возрастает количество связей между системами. Важно поддерживать актуальную информацию обо всех потребителях сервисов, это упрощает решение возникающих проблем или миграции на новые сервера.
  18. Недостатки этого подхода становятся более значимыми с увеличением количества приложений.
  19. Сейчас модны микросервисы. Я с ними не работал. Давайте посмотрим и на них, возможно, для ваших предприятий они окажутся лучшим решением. Можно разбить функциональность модулей и сервисов на микросервисы, каждый из которых будет выполнять только определенную функцию, при этом с использованием наиболее подходящей для этого технологии. Новые же приложения будут собираться из готовых блоков.
  20. Микросервисы очень простые, логика его работы должна укладываться в голове. Если они не справляются с задачей, то их можно переписать. При этом тесты позволят проверить, что ничего не сломалось. К тому же они отлично масштабируются.
  21. За простоту реализации микросервисов приходится расплачиваться большим количеством связей. И хорошо, если количество просто большое, а не огромное. Кроме того, зачастую вызовы будут асинхронными.
  22. Также микросервисы полагаются на инструменты, выполняющие сбор различных метрик, диагностику и автоматическое развертывание. Вместо навыков разработки ПО требуются навыки администрирования.
  23. Начать с микросервисов сложно. При неправильном разбиении рефакторинг будет обходиться дороже, т.к. может повлечь изменение контрактов, слияние или разбиение функциональности. Рекомендуется начинать с монолитов и по мере их роста отладки функциональности модулей выносить их в микросервисы.
  24. Martin Fowler, James Lewis ​ http://martinfowler.com/articles/microservices.html Мартин Фаулер и Джеймс Льюс в своей статье о микросервисах писали о том, что слабые команды всегда создают плохие решения, но сейчас совсем не понятно, в какую сторону изменится результат при использовании микросервисов.
  25. Недостатки этого подхода становятся более значимыми с увеличением количества приложений.
  26. Возможно, вы любите ковыряться в legacy-проектах, пытаясь найти нить здравого смысла? А может быть все таки без архитектуры?
  27. Строился в течение 38 лет с участием 147 рабочих по заказу Сары (вдовы Вилльяма) Винчертер Более 160 комнат. Не было сделано ни одного чертежа.
  28. Двери ведут на улицу или в глухие стены.
  29. Мансардные окна смотрят на верхние этажи. Возможно, кто-то узнает в таком поместье доставшиеся в наследство системы.
  30. Вернемся в наш отдел. Понятно, что занимаясь только поддержкой имеющихся приложений, ситуацию улучшить не получится. Более того, доработки будут становиться все более сложными и затратными. Мы начали постепенно реализовывать простые сервисы вместе с разрабатываемыми приложениями. Параллельно появлялись модули-клиенты.
  31. У нас используются как монолиты, так и сервисы. При этом доступ к сервисам обеспечивается модулями-клиентами. Далее я подробнее расскажу о выделенной в модули и сервисы функциональности
  32. Да, я знаю. Вы любите своих пользователей. Без них ваши системы будут бесполезны, давайте посмотрим, что можно улучшить.
  33. Допустим, у нас есть несколько систем (как они устроены сейчас не важно). В каждой из них регистрация пользователей происходила независимо. В первой пользователь придумал логин и пароль и пользовался ими. Во второй - регистрация осуществлялась по доменному логину. В третьей - использовалась информация из внешних кадровых систем.
  34. Начнем с того, что пользователь не понимает, как он входит в системы. Если он пользуется ими нерегулярно, то перед ним возникает проблема вспомнить учетные данные конкретной системы. Нередко системы ссылаются друг на друга, что приводит к необходимости выполнять следующую процедуру входа.
  35. В некоторых организациях проблему может решить повсеместное использование доменных учетных записей во всех внутренних приложениях. Но нужно учитывать, что логины со временем меняются, системы должны быть к этому готовы.
  36. В нашей организации многие сотрудники пользуются своими учетными записями настолько редко, что они успевают заблокироваться. Использование системы единого входа может решить и эту проблему. В каждую систему необходимо добавить модуль, реализующий протокол входа. При первом входе пользователь будет переадресовываться в сервис единого входа, где от него может потребоваться ввод учетных данных. Последующие же входы в приложения могут осуществляться автоматически.
  37. Вернемся к слайду с пользователям. При использовании различных методов входа появляется так же и другая проблема. Как узнать, что учетные записи принадлежат одному сотруднику? При этом проблема усложняется возможными дубликатами: 1. В первой системе пользователь забыл пароль и вместо того, чтобы его восстановить, зарегистрировался повтороно. 2. Во второй у пользователя могла поменяться фамилия, а значит и логин. 3. В третьей сотрудника перевели на другое предприятие и завели в системе повторно.
  38. Чтобы не сводить пользователей из различных систем постоянно, нужно сделать это один раз и исключить их бесконтрольное создание в дальнейшем. В этом нам поможет сервис управления учетными записями. Также этот сервис может обеспечить формирование событий жизненного цикла сотрудника: принят на работу, поменял имя, сменил место работы, уволен.
  39. Теперь, когда у нас есть IM + SSO, появляется возможность реализовать еще один сервис - управления правами. В одном месте служба поддержки может выдавать доступ к системам или отнимать его. Администраторы безопасности имеют возможность видеть полную картину по пользователю или системе в случае аудита.
  40. Как тогда будут выглядеть приложения? Пользователь входит через SSO, мы по нему запрашиваем данные из IM и его полномочия из UM. Выполнив эти шаги, система может позволить пользователю начать работу.
  41. Работу нескольких систем с собственными справочниками можно сравнить с работой одной системы без справочников вообще. Это приводит к дубликатам, ошибкам, сложностям в логике приложения и сбора сводной информации. Конечно, выносить каждый справочник в отдельный сервис не стоит, но все их можно объединить в один.
  42. Отдельно можно выделить структуру компании. В крупных компаниях она имеет иерархиечский вид (у нас вложенность достигает 10 уровней). Местоположение должности сотрудника в этой структуре важно не только для его идентификации, но и позволяет назначить ему полномочия на дочерние узлы. В отдельный модуль вынесена обработка иерархических данных, она требуется во многих приложениях.
  43. Если ваши системы позволяют пользователям прикладывать файлы, то большую часть БД будут занимать именно бинарные данные. Они усложняют поддержку приложения: перед каждым обновлением создаются полные бэкапы, например для одной из наших систем этот процесс занимает больше часа (~300 Gb). Здесь нам важно не столько повторное использование данных, сколько упрощение облуживания самих систем за счет вынесения работы с файлами в отдельный сервис.
  44. Фотографии тоже занимают много места. Кроме того, разные они не нужны. Для одного сотрудника вполне может быть достаточно одной фотографии в различных разрешениях. Сервис фотографий должен реализовывать возможность изменения разрешения и обеспечивать их хранение. Загрузка новых фотографий осуществляется в одном месте с обработкой в нужные разрешения и сжатием.
  45. Хорошо, когда приложения пишут логи. Это очень помогает при разборе проблем и анализе ошибок. Еще лучше, когда все логи структурированы, собраны в одном месте. Такие логи можно автоматически просматривать, выявлять проблемные системы еще до появления жалоб от пользователей. Советую посмотреть доклад Анатолия Кулакова
  46. Общая картина. Сервисы-интрументы своего рода аутисты, им никто не интересен. Зато ими пользуются все. Если они не работают, то остальные продолжат работу. Поставщики данных могут использоваться как приложениями, так и сервисами управления пользователями. Без них часть функций станет недоступной. Сервисы управления пользователям находятся интересны только приложениям. Их наличие критично для приложений, где вход является обязательным. Так же приложения могут общаться между собой.
  47. Первые версии сервисов появляются быстро