Upload
ontico
View
89
Download
6
Embed Size (px)
Citation preview
Кластер или конгломерат
Как поддерживать и развивать пачку "похожих" проектов.
Стас МихальскийMail.Ru (технический директор медиапроектов)
Новости Mail.Ru, Леди Mail.Ru, Авто Mail.Ru, Здоровье Mail.Ru, Дети Mail.Ru, Hi-Tech Mail.Ru
Rambler (руководитель группы разработки)news.rambler.ru, sport.rambler.ru
РБК (perl-программист)news.rbc.ru, utro.ru
Контентные/информационные сайты
Почти одно и то же• Страница списка новостей• Страница новости• Блок «читайте также» • Блок «топ-новости»• Комментарии• Дополнительные информационные разделы• Сервис консультаций• Интерфейс управления содержанием сайта (админка)
Почти одно и то же
блоки, блоки…
материалы
листингиблоки, блоки…
материалы
листинги
блоки, блоки…
материалы
листинги
Почему не так?
блоки, блоки…
материалы
листинги
Цель доклада• Обсудить перспективы тотальной унификации• Рассмотреть альтернативный сценарий
Правильное решение очевидно• Унифицировать• Перевести на одну платформу• Развивать и поддерживать единое техническое решение
Перспективы завораживают• «семерых одним ударом»• best practices: сразу на всех• «служба единого окна» • быстрая сборка • «свободная консоль!»
Кл стера́ (англ. cluster — скопление, кисть, рой) — объединение нескольких однородных элементов, которое может рассматриваться как самостоятельная единица, обладающая определёнными свойствами
Сейчас быстро перепишем методы!
Попытка #раз: было не совсем просто• Один результат – разные процессы • Одинаковая функциональность – разная реализация• Одно отображение – разная логика • Унификации логики – решение менеджмента• Сколько менеджеров – столько мнений
Первые выводы• Наскоком не вышло – работы много!• Нужны руки – надо вовлекать разработчиков• Нужны согласования – надо вовлекать менеджмент• Надо делать отдельное решение
Соберем требования и подумаем…
Попытка #2: стало сложнее• Везде всё «немного по-разному» • Приходится отвлекаться на основную работу (блин)• Когда возвращаешься к «нетленке», она уже почти истлела
Новые выводы• Писать в стол бессмысленно• Работа без результата демотивирует• Нужно физическое свидетельство правильности пути• Стоит умерить амбиции и начать с чего-то попроще
Тренируемся на кошках
Концепт «муравейник»• Одна инкарнация framework’а на всех• Диспетчер для определения шаблонов• Диспетчер для доступа к БД• Уровень абстракции plug-in
Попытка #3: «победа сферического коня»• На упрощенной аналогии идея реализуема!• Основные предположения подтвердились • По крайней мере, в начале…
Больше мудрости для бога мудрости• В отрыве от продуктовых задач работать не получается• Ждем повода начать делать «Как надо!»
Вместе с редизайном строим framework
Попытка #X• Сроки сжимаются и внутрь попадает «мусор»• система разрастается из-за альтернативных решений• Не хватает времени «делать правильно»
Иллюзия унификации
Промежуточные итоги
Промежуточные итоги• Общее решение требует постоянной доработки и актуализации • Главный вызов - не проектирование, а организация• Больше изменений – больше работы по актуализации• Зависимость нелинейна!
мы просто недостаточно быстро бежим
То, что нас не убивает, делает нас сильнее. Бежим дальше!
Ошибка в определении причины неуспеха
Ошибочные предположения• Высокое сходство – залог архитектурной унификации
Ошибка похожести• Один результат – разные процессы • Одинаковая функциональность – разная реализация• Одно отображение – разная логика
Ошибочные предположения• Высокое сходство – залог архитектурной унификации• Продукт не меняется
Это не форсмажор!
Это реальность!
Механика: Продукт и изменения
Механика: Продукт как слоеный пирог• Дизайн• Данные (результаты выборок, сортировки, группировки и т.п.)• Методы (код)• Framework• Базовое ПО (БД, web-сервер и т.д.)• OS, FS …
Механика: реактивные изменения• Масштаб• Вероятность возникновения
Механика: проактивные изменения• Масштаб• Вероятность реализации
Проактивные vs Реактивные
Проактивные vs Реактивные• Масштаб реактивного изменения – степень угрозы• Масштаб проактивного изменения – размер потерь
Поможем «нашим»?• Диктатура технарей• Синдром горничной С. Лукьяненко• Продукт или идеальная система?
Принять и смириться
Чем опасен недостроенный кластер?
Теория разбитых окон
Поэтому принять и смириться!
Конгломерат (лат. conglomeratus — скученный, уплотнённый) — соединение чего-либо разнородного, беспорядочная смесь, ассорти
«Я не строю кластер, значит у меня уже конгломерат?»
Осознать и действовать
Все не так плохо ;)• Появилось время• Появилась возможность проверять• Появилась возможность сравнивать• Появилась возможность выбирать• Появилась возможность наблюдать
Эволюционное развитие
А что же с изменениями?
Играем там, где можно выиграть
УровеньВероятность появления реактивного изменения
Вероятность реализации проактивного изменения
Играем там, где можно выиграть
УровеньВероятность появления реактивного изменения
Вероятность реализации проактивного изменения
Данные Очень высокая Очень низкая
Играем там, где можно выиграть
УровеньВероятность появления реактивного изменения
Вероятность реализации проактивного изменения
Данные Очень высокая Очень низкаяMетоды Высокая Низкая
Играем там, где можно выиграть
УровеньВероятность появления реактивного изменения
Вероятность реализации проактивного изменения
Данные Очень высокая Очень низкаяMетоды Высокая НизкаяFramework Средняя Средняя
Играем там, где можно выиграть
УровеньВероятность появления реактивного изменения
Вероятность реализации проактивного изменения
Данные Очень высокая Очень низкаяMетоды Высокая НизкаяFramework Средняя СредняяБазовое ПО Низкая Высокая
Играем там, где можно выиграть
УровеньВероятность появления реактивного изменения
Вероятность реализации проактивного изменения
Данные Очень высокая Очень низкаяMетоды Высокая НизкаяFramework Средняя СредняяБазовое ПО Низкая ВысокаяOS, FS Очень низкая Очень высокая
Проактивные глубинные изменения
Оседлать волну реактивных изменений
«Экспериментально-эпидемическое» внедрение изменений• Первый раз – это интересно• Охват <50% – это модно и актуально• Охват >50% – по-другому неприлично• А если не распространяется? Откажитесь или мужайтесь)
Унификация возможна• На уровне стека технологий• На уровне функциональности продукта
Итоги и выводы
Реальность кластера• Высокая чувствительность к изменениям• Шаткость достигаемой унификации• Обветшание активов• Демотивация из-за отсутствия видимых успехов
Перспективы конгломерата• Эволюционный выбор• Унификация функциональности через лучшие практики• Высокий уровень качества как ключевая цель
Что делать?• Развивать стек технологий• Унифицировать стек технологий• Поддерживать уровень качества
Как делать?• Выбирать и оставлять лучшее• Глобальные свершения на нижних уровнях• Точечные изменения на верхних уровнях• Глобальные свершения на верхних уровнях («под шумок»)
Спасибо за внимание!Стаc Михальский