Автоматизация
бизнес-процессов:
проектирование архитектуры
конкурентных решений
Павел Спесивцев
Ведущий разработчик
7 ноября 2012 года
I object to doing things that
computers can do.
Olin Shivers
2/15
Цели
 Разработать подход к проектированию
IT-решений для бизнеса
 Выявить критические абстракции
 Обозначить наиболее важные аспекты
цикла существования программного
продукта
 Разобраться, что такое «бизнес-логика»
и что о ней надо знать разработчику
3/15
Бизнес-«нелогика»
Идея!
4/15
Задачи IT через призму бизнеса
 Нет полного видения модели предметной
области в перспективе, даже если все
уверены в обратном
 Сервисные задачи не интересуют
«бизнес-логику»
 Сделать «это» очень просто!
 «Это» нужно вчера
5/15
Эра «стартапов»
 Поиск надежной бизнес-модели, НИОКР
в области интернет-рынков
 Быстрый рост на начальных инвестициях
 Быстрое падение
 «Патентный троллинг»
 Слияние и поглощение
6/15
Предел гибкости
 Переусложнение неизбежно?
 Что забыли учесть?
 Закон Завинского
 Что потеряет проект в ближайший месяц,
если не сможет читать почту завтра?
7/15
Every program attempts to expand until it can
read mail. Those programs which cannot so
expand are replaced by ones which can.
Предел сложности решений
 Насколько интенсивно будет меняться
продукт в ближайшее время?
 Какова квалификация вовлеченной группы
разработчиков?
 Сколько времени понадобится разработчику
с опытом от трех лет, чтобы погрузиться
в проект?
8/15
Предел масштабируемости
 Будем ли мы продавать услуги клиентам
из соседних галактик?
 Сделаем все многопоточным?
 Что тяжелее – вычисления или данные?
 RDBMS vs NoSQL
9/15
Инструмент для задачи,
а не задача для инструмента
(маркетинговые ловушки)
 Западня универсальных систем
(«миллионы мух не могут ошибаться»)
 Насколько готовое решение решает
задачи ближайших 6 месяцев?
 Какова стоимость результатов работы
ближайших 6 месяцев?
 Риски vs страховка
10/15
Без чего жить программировать
нельзя
 Логов много не бывает
 Простота интеграции и миграции –
не путать с легкостью переключения
на другие СУБД (насколько нужна
последняя?)
 Ввода/вывода мало не бывает
 Кэш и его инвалидация
 Насколько просто это тестировать?
11/15
Перманентный рефакторинг
рабочий
прототип
элегантное
решение
оптимизация
12/15
О чем можно забыть
и потом сильно пожалеть
 Отказоустойчивость и устойчивость к взлому
 Простота диагностики
 «Ломка» при смене ключевых разработчиков
(«Кто это писал?»)
 Эффективность одновременной работы
большого числа людей над общим проектом
 Степень надежности проноса новых версий
 Инкапсуляция (неинкапсулированные решения
влекут затратный и болезненный рефакторинг)
13/15
Эффективность кода
 DRY!
 Документация
 Эксплуатация общепризнанных паттернов
(только достоверно необходимых для конкретной
задачи абстракции)
 Экономия «на спичках»
 Единый согласованный стиль кода
и абстракций для всех участников команды
14/15
Спасибо!
Вопросы?
Павел Спесивцев
spesivtsev@custis.ru
15/15

Автоматизация бизнес-процессов: проектирование архитектуры конкурентных решений

  • 1.
  • 2.
    I object todoing things that computers can do. Olin Shivers 2/15
  • 3.
    Цели  Разработать подходк проектированию IT-решений для бизнеса  Выявить критические абстракции  Обозначить наиболее важные аспекты цикла существования программного продукта  Разобраться, что такое «бизнес-логика» и что о ней надо знать разработчику 3/15
  • 4.
  • 5.
    Задачи IT черезпризму бизнеса  Нет полного видения модели предметной области в перспективе, даже если все уверены в обратном  Сервисные задачи не интересуют «бизнес-логику»  Сделать «это» очень просто!  «Это» нужно вчера 5/15
  • 6.
    Эра «стартапов»  Поискнадежной бизнес-модели, НИОКР в области интернет-рынков  Быстрый рост на начальных инвестициях  Быстрое падение  «Патентный троллинг»  Слияние и поглощение 6/15
  • 7.
    Предел гибкости  Переусложнениенеизбежно?  Что забыли учесть?  Закон Завинского  Что потеряет проект в ближайший месяц, если не сможет читать почту завтра? 7/15 Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.
  • 8.
    Предел сложности решений Насколько интенсивно будет меняться продукт в ближайшее время?  Какова квалификация вовлеченной группы разработчиков?  Сколько времени понадобится разработчику с опытом от трех лет, чтобы погрузиться в проект? 8/15
  • 9.
    Предел масштабируемости  Будемли мы продавать услуги клиентам из соседних галактик?  Сделаем все многопоточным?  Что тяжелее – вычисления или данные?  RDBMS vs NoSQL 9/15
  • 10.
    Инструмент для задачи, ане задача для инструмента (маркетинговые ловушки)  Западня универсальных систем («миллионы мух не могут ошибаться»)  Насколько готовое решение решает задачи ближайших 6 месяцев?  Какова стоимость результатов работы ближайших 6 месяцев?  Риски vs страховка 10/15
  • 11.
    Без чего житьпрограммировать нельзя  Логов много не бывает  Простота интеграции и миграции – не путать с легкостью переключения на другие СУБД (насколько нужна последняя?)  Ввода/вывода мало не бывает  Кэш и его инвалидация  Насколько просто это тестировать? 11/15
  • 12.
  • 13.
    О чем можнозабыть и потом сильно пожалеть  Отказоустойчивость и устойчивость к взлому  Простота диагностики  «Ломка» при смене ключевых разработчиков («Кто это писал?»)  Эффективность одновременной работы большого числа людей над общим проектом  Степень надежности проноса новых версий  Инкапсуляция (неинкапсулированные решения влекут затратный и болезненный рефакторинг) 13/15
  • 14.
    Эффективность кода  DRY! Документация  Эксплуатация общепризнанных паттернов (только достоверно необходимых для конкретной задачи абстракции)  Экономия «на спичках»  Единый согласованный стиль кода и абстракций для всех участников команды 14/15
  • 15.