В больших компаниях обычно существует пропасть между людьми, которые делают, и людьми, которые сопровождают сделанное. Разные компетенции, разные области знаний, разная ответственность за функционирование продукта не позволяют компании эффективно разрабатывать и внедрять уникальные решения, вовремя менять часть технологического стека или весь стек целиком. Людям становится не интересно и сложно разбираться со старыми наработками, а внедрение новых сопровождается закостенелостью стандартов и инертностью компании. В рамках доклада будут рассмотрены следующие вопросы:
- что сегодня помогает закладывать нужные оси вариативности в архитектуру?
- как отделить и подружить разработку, внедрение и сопровождение?
- как замотивировать людей быть эффективными, использовать удобные инструменты?
- как дать людям свободу в их выборе и разделять ответственность за полученный результат?
а также в программе:
- Docker
- микросервисы
- закон трёх букв
Иван Дубровин. Почему государство должно быть Agile?
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со временем
1. Хипстеры в энтерпрайзе
Хи́пстер, хипстеры — появившийся в США в 40-х годах
термин, образованный от жаргонного “to be hip”, что
переводится приблизительно как “быть в теме”
27. Пример №2: инструменты не для всех
Spec by Example
Word/PDF
Код + тесты
IDE
Тест-кейсы
HP ALM
Developer
QA
BA
27
28. Пример №3: всё не так
v.2014-12-31.1.0.1.1 v.2015-01-10.1.0.1.2
Настройки в установку.2015-01-10.v2
28
29. Инженерный подход (Dev)
Мой код работает на моей
машине
Я написал инструкцию
админам
Я что-то сделал, пусть
тестировщик тестирует
Мой код работает у
клиента
Я написал скрипт
развёртывания ПО
Я должен написать тесты
29
30. Инженерный подход (Ops)
Мне дали инструкцию как
выкладывать продукт
У вас ошибка в инструкции
У меня есть документ как
настраивать сервера
Я написал скрипт
выкладки продукта
У нас баг в скрипте
У меня есть скрипт,
который настраивает
сервера
30
37. Trade-Off: Принцип LSD
- L языков программирования
- S в среднем фреймворков на язык
- D типов источников данных
complexity = L * S * D
37
38. Простой такой пример
- три языка программирования
- два в среднем фреймворка на язык
- семь типов источников данных
- legacy WS, mongo db
- хранимые процедуры, JDBC-templates
- elasticsearch, neo4j
- мишкина база
complexity = 3 * 2 * 7 = 42 (!) 38
54. Профит
Упрощение архитектуры: единый интерфейс для
управления ресурсами
Автоматизация: никто не любит быть разбуженным
посреди ночи - придаем свойство самовосстановления
своим системам
Эффективность: динамическое распределение
ресурсов с гарантированной изоляцией
API самообслуживания: прямой доступ к ресурсам для
команды разработки
54
60. Выводы
Многие компании сделали ставку на инженеров
и не прогадали
Мы можем бояться дальше, а можем дать им ресурсы
и возможность творить
Но не дать сотворить “чудо” конечно же :)
60
71. Как это сделать? На что обращать внимание
Архитектура это и про:
Итеративность изменений
Тестируемость
Конфигурируемость
Возможность автоматизации
71
72. Людям нужна свобода действий
Но:
Слишком много свободы - плохо
Не бывает свободы без ответственности
Люди должны быть к этому готовы
Свобода выбора - это очень тяжело
72
73. Проблемы сопровождения программного обеспечения
legacy-приложения
гетерогенные закрытые платформы
work-on-my-machine софт
постоянная борьба с пожарами
консервативные и перегруженные процессы
73
Hinweis der Redaktion
Надо что-то добавить про безопасность. Ограничения по безопасности.
Короче тут мы рассказываем про боли энтерпрайза и что многие считают, что в энтерпрайзе скучно. Мы не такие и пытаемся найти смысл жизни внутри корпоративной культуры.
что забывают при внедрении Agile?
инженерны …
примеры
Что можно сделать со всем этим
как делаем
резалтс
Команда, какждый профессионал
Делаем среднестатистический проект
за удовлетворительное время
с удовлетворительным качеством
ограниченным количеством ресурсов
узкая специализация
вместе с диверсификацией по сперциализации происходит диверсификация по административному признаку.
Тут надо несколько зарисовок.
Люди одной специализации заперты внутри колодца,
есть границы непонимания друг друга
очерченные документами и процессами
Трубопровод аналогия
счетчик говорит кто факапит и мониторит
вентиль регулириует пропускную способность от и до
Закон конвея - процесс доставки продукта до потрбителя напрямую зависит от административного устройства вашей компании.
Департамент версионирования
проблема - все проблемы решаются процессными рычагами
Версионируй правильно, будь как Петя
Версионируй так то, стандарт такой. SLA такой
Надо визуализировать (доски, бумажки, джира и т.д.)
Надо ограничить скоуп
Надо разделить и властвовать
бьём на небольшие фичи/задачи
делаем небольшие команды полного цикла
Что-то там про инженерные практики
Mike Beedle
Тут надо несколько зарисовок.
те процессы, которые были зарегламентированы больше всего, трансформируется позже всех
внедряем agile, бумажки лезут изо всех щелей, но продукт не летит
Тут надо несколько зарисовок.
Пример взаимодействия с Ops.
Девять кругов ада доставки ПО
Может быть сюда нужно вставить фотку Фомы
Тут надо несколько зарисовок.
Если здание не выдерживает 2(очень толчки, ощущаемые людьми находящимися в покое) баллов по шкале Рихтера, то вам в любом случае пиздец - архитектуры
Складывающие кровати для бомбежки - инструменты
В то же время кровати для бомбежки не нужны если здание - ок. - инженерный подход
Подумать про другую аналогию.
Часто все три области в деградированном состоянии
Вставить график зависимости архитектуры от инструментов
Тут расскажем про unit тесты на неподходящих для этого технологиях
Судя код
Судя код
Судя код
Тут расскажем что будет, если взять не те инструменты
нет синергии между иснтрументы
каждый может пользоваться только своим
подстраиваем систему CD под каждую систему
Синхронизируем MindSet людей
А здесь про инженерный подход
такой подход скейлится за счет людей
Пример с Doc->Ansible/Chef
Надо взять распечатку и я тебе её отдам во время выступления :)
Ситуация такая - потому что у людей нет свободы
Дай свободу, награди ответственностью
Инженерный подход нужно применять
Микросервисная архитектура
DDD
Легковесные контракты и коммуникации
Децентрализация
люди
технологии
Если дать слишком много свободы
S -Skeleton
можно сделать сделать 42 уникальный микросервисы с разными технологиями
минимизируем complexity
диверсифицируем количество источников данных
минимизируем complexity
диверсифицируем количество источников данных
Что для разработчика возможности - для саппорта опасности.
каждый новый API в вашем стеке - новая возможность
будь то Dockerfile syntax или docker cli
Или даже Ansible playbook DSL
Многие компании сделали ставку на инженеров и не прогадалиМы можем бояться дальше, а можем дать им ресурсы и возможность творитьНо не дать сотворить “чудо” конечно же :)Память крестьянам, CPU рабочим, IO админам
Ещё раз график
Таймлайн на кого делали ставку при развитии бизнеса в разное время
(Раньше - купим у вендоры и все чики пуки)
(сейчас - в тренде полагаться на Software Engineer) - ничто не дает такой гибкости, как замотивированная команда, которая понимает ограничения вашей компании