Владимир Никонов "Вызовы при разработке enterprise...

48
Вызовы при разработке enterprise продукта Никонов Владимир Terrasoft

Upload: fwdays

Post on 05-Apr-2017

70 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Владимир Никонов "Вызовы при разработке enterprise продукта"

Вызовы при разработке enterprise продуктаНиконов ВладимирTerrasoft

Page 2: Владимир Никонов "Вызовы при разработке enterprise продукта"

Особенности enterprise

• Продукт = основа бизнеса• Размер• Поддержка пользователей и жизненный цикл продукта

Page 3: Владимир Никонов "Вызовы при разработке enterprise продукта"

Основа бизнеса

• Скорость• Стоимость• Стабильность

Page 4: Владимир Никонов "Вызовы при разработке enterprise продукта"

SCRUM

Page 5: Владимир Никонов "Вызовы при разработке enterprise продукта"

SCRUM & ENTERPRISE (SAFe)

Page 6: Владимир Никонов "Вызовы при разработке enterprise продукта"

Поддержка

Page 7: Владимир Никонов "Вызовы при разработке enterprise продукта"

Развитие технологий

• Постоянно• Лавинообразно• Имеет конкурентную природу

Page 8: Владимир Никонов "Вызовы при разработке enterprise продукта"

Релизы

• 16 релизов за 6 лет• частота обновления 2011 - 2015 – 3 раза в год (200+

клиентов)• частота обновления 2016 - 2017 – 1 раз в месяц (600+

клиентов)

Page 9: Владимир Никонов "Вызовы при разработке enterprise продукта"

Software engineer

• Programmer• Tester• System Administrator• DevOps• Software engineer

Page 10: Владимир Никонов "Вызовы при разработке enterprise продукта"

Задачи платформы

• В приложении существует возможность создать бизнес-процессы • Приложение позволяет быстро создавать UI и новые сущности• Реализовать базовая бизнес-функциональность• Реализовать возможность изменять/расширять функциональность

Page 11: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 1: Начало

Page 12: Владимир Никонов "Вызовы при разработке enterprise продукта"

Фундамент

• C# - основной язык разработки• Реализация собственного UI• Silverlight для реализации сложных компонент• Дизайнеры системы• Реализация возможностей “на вырост”• Solution = 50+ проектов• Собственный ORM• Динамическая генерация кода для настроек пользователя

Page 13: Владимир Никонов "Вызовы при разработке enterprise продукта"

ASP.Net WebForm

Page 14: Владимир Никонов "Вызовы при разработке enterprise продукта"

Компоненты

Page 15: Владимир Никонов "Вызовы при разработке enterprise продукта"

KISS

• Init• Load• Complete• <Event>

Page 16: Владимир Никонов "Вызовы при разработке enterprise продукта"

Бизнес логика

Page 17: Владимир Никонов "Вызовы при разработке enterprise продукта"

ASP.Net WebForm

+•Привычный UX•Возможность доработок

-•Объём работ•Асинхронность событий•Время отклика

Page 18: Владимир Никонов "Вызовы при разработке enterprise продукта"

Дизайнер страниц

Page 19: Владимир Никонов "Вызовы при разработке enterprise продукта"

Дизайнер объектов

Page 20: Владимир Никонов "Вызовы при разработке enterprise продукта"

Дизайнер бизнес процессов

Page 21: Владимир Никонов "Вызовы при разработке enterprise продукта"

Схемы

• Разделение метаданных и кода• Дизайнеры работают с метаданными• Генераторы преобразовывают метаданные в код который

используется в runtime • Генераторы опираются на атрибуты а не конкретные

классы

Page 22: Владимир Никонов "Вызовы при разработке enterprise продукта"

Дизайнеры

+•Простота понимания•Скорость разработки•Фундамент для расширяемости

-•Сложность дизайнера•Возможность расширения•Поддержка бизнес кода

Page 23: Владимир Никонов "Вызовы при разработке enterprise продукта"

YAGNI

• Наследование 1 - 1• Поддержка enum• Механизм вычисляемых колонок• Списки изображений• Локализированные изображения• Системы резервного восстановления

Page 24: Владимир Никонов "Вызовы при разработке enterprise продукта"

50 проектов

• 5 крупных архитектурных изменений за 6 лет• 70% механизмов, созданных на старте работают• Собственный ORM не является проблемой

Page 25: Владимир Никонов "Вызовы при разработке enterprise продукта"

Динамическая компиляция

• Все доработки клиентов попадают в сборку в момент применения изменений

• Сервис динамической компиляции отчётов

Page 26: Владимир Никонов "Вызовы при разработке enterprise продукта"

Обновление клиентов

• Трансформация БД• Трансформация метаданных

Page 27: Владимир Никонов "Вызовы при разработке enterprise продукта"

Выводы

• KISS & YAGNI• Риски тех.долга• Храните намерения а не результаты

Page 28: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 2: Рост

Page 29: Владимир Никонов "Вызовы при разработке enterprise продукта"

Проблемы• Невозможность выгрузки assembly из памяти• Конфликты разных версий библиотек• Превышение максимального количества строк в одной

assembly• Невозможность использование стандартных конструкций

языка

Page 30: Владимир Никонов "Вызовы при разработке enterprise продукта"

Решения

• Разделение рабочих пространств на отдельные приложения

• Использование сервера хранения сессий (redis)• Переработка генераторов• Создание нового типа схемы – SourceCode (чистый C#)• Использование фабрики с возможностью управлять

маппингом через атрибуты

Page 31: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 3: SPA + Пакеты

Page 32: Владимир Никонов "Вызовы при разработке enterprise продукта"

Задачи

• UX• Скорость отклика интерфейса• Обновление клиентов• Длительное время компиляции• Сложная иерархическая структура рабочих пространств

Page 33: Владимир Никонов "Вызовы при разработке enterprise продукта"

Решение

• Полное разделение frontend-a и backend-a (AMD + MVVM + JS)

• Реализация возможности создания собственных web сервисов

• ROS сервисы• Физическое разделение кода по пакетам• Компиляция через .net модули с автоматической

разбивкой классов• Все рабочие пространства системы реализованы

отдельными приложениями и равноправны

Page 34: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 4: SPA v2

Page 35: Владимир Никонов "Вызовы при разработке enterprise продукта"

Шахматка

Page 36: Владимир Никонов "Вызовы при разработке enterprise продукта"

DIFF & APPLY

• Любой объект может быть получен из пустого путем конечного количества изменений (insert, set, merge, delete) применённых последовательно

• Изменения представляют собой элементарные операции• Изменения хранятся в виде плоского массива• Механизм применения изменений учитывает не только

порядок изменений в массиве но тип операций

Page 37: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 5: Облачные сервисы

Page 38: Владимир Никонов "Вызовы при разработке enterprise продукта"

Email рассылки

• Реализация независимого headless приложения• Percona• RabbitMQ• Двухсторонняя интеграция c CRM

• Внедрение систем сборки и тестирования для разработки• Интеграция с системой ведения релизов• Реализация механизмов и регламентов поставки

изменений в облако

Page 39: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 6: Continuous Integration

Page 40: Владимир Никонов "Вызовы при разработке enterprise продукта"

Автоматизация• Тестирования• Контроля

Page 41: Владимир Никонов "Вызовы при разработке enterprise продукта"

Тесты

Page 42: Владимир Никонов "Вызовы при разработке enterprise продукта"

Контроль

Page 43: Владимир Никонов "Вызовы при разработке enterprise продукта"

Контроль

• SonarQube• PVS• FxCop• StyleCop

Page 44: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 7: Ускорение

Page 45: Владимир Никонов "Вызовы при разработке enterprise продукта"

Development & Runtime

• Стандартный стек инструментов для каждого типа задач• C#• JavaScript

• SOA как инструмент горизонтального роста• Разделение данных и метаданных

Page 46: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 8: Завтра

Page 47: Владимир Никонов "Вызовы при разработке enterprise продукта"

Часть 8: Завтра• MPP• Big Data• AI• Оркестрация

Page 48: Владимир Никонов "Вызовы при разработке enterprise продукта"

Заключение

• Изменения требований и ошибки реализации – процессы которые не кончаются

• Скорость разработки и доставки изменений не должны зависеть от размера приложения

• Идеи в которые вы инвестировали сегодня, завтра станут вашим фундаментом