Владимир Никонов "Вызовы при разработке enterprise...
TRANSCRIPT
![Page 1: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/1.jpg)
Вызовы при разработке enterprise продуктаНиконов ВладимирTerrasoft
![Page 2: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/2.jpg)
Особенности enterprise
• Продукт = основа бизнеса• Размер• Поддержка пользователей и жизненный цикл продукта
![Page 3: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/3.jpg)
Основа бизнеса
• Скорость• Стоимость• Стабильность
![Page 4: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/4.jpg)
SCRUM
![Page 5: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/5.jpg)
SCRUM & ENTERPRISE (SAFe)
![Page 6: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/6.jpg)
Поддержка
![Page 7: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/7.jpg)
Развитие технологий
• Постоянно• Лавинообразно• Имеет конкурентную природу
![Page 8: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/8.jpg)
Релизы
• 16 релизов за 6 лет• частота обновления 2011 - 2015 – 3 раза в год (200+
клиентов)• частота обновления 2016 - 2017 – 1 раз в месяц (600+
клиентов)
![Page 9: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/9.jpg)
Software engineer
• Programmer• Tester• System Administrator• DevOps• Software engineer
![Page 10: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/10.jpg)
Задачи платформы
• В приложении существует возможность создать бизнес-процессы • Приложение позволяет быстро создавать UI и новые сущности• Реализовать базовая бизнес-функциональность• Реализовать возможность изменять/расширять функциональность
![Page 11: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/11.jpg)
Часть 1: Начало
![Page 12: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/12.jpg)
Фундамент
• C# - основной язык разработки• Реализация собственного UI• Silverlight для реализации сложных компонент• Дизайнеры системы• Реализация возможностей “на вырост”• Solution = 50+ проектов• Собственный ORM• Динамическая генерация кода для настроек пользователя
![Page 13: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/13.jpg)
ASP.Net WebForm
![Page 14: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/14.jpg)
Компоненты
![Page 15: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/15.jpg)
KISS
• Init• Load• Complete• <Event>
![Page 16: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/16.jpg)
Бизнес логика
![Page 17: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/17.jpg)
ASP.Net WebForm
+•Привычный UX•Возможность доработок
-•Объём работ•Асинхронность событий•Время отклика
![Page 18: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/18.jpg)
Дизайнер страниц
![Page 19: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/19.jpg)
Дизайнер объектов
![Page 20: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/20.jpg)
Дизайнер бизнес процессов
![Page 21: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/21.jpg)
Схемы
• Разделение метаданных и кода• Дизайнеры работают с метаданными• Генераторы преобразовывают метаданные в код который
используется в runtime • Генераторы опираются на атрибуты а не конкретные
классы
![Page 22: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/22.jpg)
Дизайнеры
+•Простота понимания•Скорость разработки•Фундамент для расширяемости
-•Сложность дизайнера•Возможность расширения•Поддержка бизнес кода
![Page 23: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/23.jpg)
YAGNI
• Наследование 1 - 1• Поддержка enum• Механизм вычисляемых колонок• Списки изображений• Локализированные изображения• Системы резервного восстановления
![Page 24: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/24.jpg)
50 проектов
• 5 крупных архитектурных изменений за 6 лет• 70% механизмов, созданных на старте работают• Собственный ORM не является проблемой
![Page 25: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/25.jpg)
Динамическая компиляция
• Все доработки клиентов попадают в сборку в момент применения изменений
• Сервис динамической компиляции отчётов
![Page 26: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/26.jpg)
Обновление клиентов
• Трансформация БД• Трансформация метаданных
![Page 27: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/27.jpg)
Выводы
• KISS & YAGNI• Риски тех.долга• Храните намерения а не результаты
![Page 28: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/28.jpg)
Часть 2: Рост
![Page 29: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/29.jpg)
Проблемы• Невозможность выгрузки assembly из памяти• Конфликты разных версий библиотек• Превышение максимального количества строк в одной
assembly• Невозможность использование стандартных конструкций
языка
![Page 30: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/30.jpg)
Решения
• Разделение рабочих пространств на отдельные приложения
• Использование сервера хранения сессий (redis)• Переработка генераторов• Создание нового типа схемы – SourceCode (чистый C#)• Использование фабрики с возможностью управлять
маппингом через атрибуты
![Page 31: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/31.jpg)
Часть 3: SPA + Пакеты
![Page 32: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/32.jpg)
Задачи
• UX• Скорость отклика интерфейса• Обновление клиентов• Длительное время компиляции• Сложная иерархическая структура рабочих пространств
![Page 33: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/33.jpg)
Решение
• Полное разделение frontend-a и backend-a (AMD + MVVM + JS)
• Реализация возможности создания собственных web сервисов
• ROS сервисы• Физическое разделение кода по пакетам• Компиляция через .net модули с автоматической
разбивкой классов• Все рабочие пространства системы реализованы
отдельными приложениями и равноправны
![Page 34: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/34.jpg)
Часть 4: SPA v2
![Page 35: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/35.jpg)
Шахматка
![Page 36: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/36.jpg)
DIFF & APPLY
• Любой объект может быть получен из пустого путем конечного количества изменений (insert, set, merge, delete) применённых последовательно
• Изменения представляют собой элементарные операции• Изменения хранятся в виде плоского массива• Механизм применения изменений учитывает не только
порядок изменений в массиве но тип операций
![Page 37: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/37.jpg)
Часть 5: Облачные сервисы
![Page 38: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/38.jpg)
Email рассылки
• Реализация независимого headless приложения• Percona• RabbitMQ• Двухсторонняя интеграция c CRM
• Внедрение систем сборки и тестирования для разработки• Интеграция с системой ведения релизов• Реализация механизмов и регламентов поставки
изменений в облако
![Page 39: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/39.jpg)
Часть 6: Continuous Integration
![Page 40: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/40.jpg)
Автоматизация• Тестирования• Контроля
![Page 41: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/41.jpg)
Тесты
![Page 42: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/42.jpg)
Контроль
![Page 43: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/43.jpg)
Контроль
• SonarQube• PVS• FxCop• StyleCop
![Page 44: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/44.jpg)
Часть 7: Ускорение
![Page 45: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/45.jpg)
Development & Runtime
• Стандартный стек инструментов для каждого типа задач• C#• JavaScript
• SOA как инструмент горизонтального роста• Разделение данных и метаданных
![Page 46: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/46.jpg)
Часть 8: Завтра
![Page 47: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/47.jpg)
Часть 8: Завтра• MPP• Big Data• AI• Оркестрация
![Page 48: Владимир Никонов "Вызовы при разработке enterprise продукта"](https://reader036.vdocuments.net/reader036/viewer/2022062503/58e4a5bd1a28abf5428b6ef9/html5/thumbnails/48.jpg)
Заключение
• Изменения требований и ошибки реализации – процессы которые не кончаются
• Скорость разработки и доставки изменений не должны зависеть от размера приложения
• Идеи в которые вы инвестировали сегодня, завтра станут вашим фундаментом