ИМХО о выступлении Грефа на Гайдаровском форуме и об опасности революций

в 7:29, , рубрики: agile, artificial intelligence, cloud-based, deep machine learning, История ИТ, научная фантастика, Научно-популярное, Финансы в IT-индустрии

ИМХО о выступлении Грефа на Гайдаровском форуме и об опасности революций - 1 Выступление Германа Оскаровича Грефа не осталась незамеченным не только среди политического и экономического истеблишмента, но и получило резонанс в ИТ-сообществе. Еще бы. «Agile, cloud-based, deep machine learning, artificial intelligence», – и все эти базворды не из уст айти-гика, а слова государственного деятеля, президента и председателя правления Сбербанка России. Думаю, что Герман Оскарович, конечно, не сам писал тезисы айтишной части своего выступления, а, как обычно, помогали эму в этом айти-советники.

Далее в посте цитаты из выступления по посту на Geektimes, вопросы, которые они у меня вызвали, мои ответы и гипотезы о том, что айти-советники хотели сказать и, наконец, брюзжание на тему об опасности революций.

Цитата: «В прошлом году мы сделали 27 000 изменений платформы. Для сравнения — 5 лет назад мы делали 600-800 изменений. В этом году мы сделаем 41 000 изменений. Если посмотреть на банки – мы в шоколаде, все в порядке. Если посмотреть на вот этих ребят всех – Amazon, Google и так далее, то Amazon делает 10 000 изменений своей платформы в день. 10 000 в день и 40 000 в год это несопоставимые вещи. Time to market – часы, и time to market – месяцы, это неконкурентоспособная история».

Вопрос: О чем свидетельствует число изменений платформы в единицу времени?

Ответ: Ни о чем, кроме производительности программистов.

Гипотеза: Численность сотрудников компании Amazon, примерно 100000 человек. Поскольку бизнес компании — продажа товаров и услуги через Интернет, а не производство ПО, то айтишники в ней — обслуга, и, полагаю, что они составляют не более 5% от общей численности. Итого, где-то, 5000 человек. Из них программистов, примерно, четверть, то есть, 1250 человек. Остальные менеджеры, аналитики, тестировщики и прочие админы. Считаем производительность.

Среднее количество изменений, переданных программистом в тестирование за рабочий день, = 10000 измен в день / 1250 программистов = 8 изменений в день.

И это очень крутой конкурентный результат.

Асхат в своем блоге, ссылаясь на выступление на конференции, одного из директоров Амазона в 2011 году, говорит, что речь идет не об изменениях, а о деплоях в продакшн, то есть сколько раз за промежуток времени изменения попадают на сервера и становится доступным для конечных пользователей.

Не верю. Не Асхату, конечно, а директору. Даже, если мои оценки производительности программистов не завышены, то в продакшн каждые 10 секунд должны уходить в среднем не более чем по одному изменению. А смысл? А если изменений больше то, кто их кроме программистов делает.

Вопрос: Как связаны количество изменений и Time to market?

Ответ: Совсем никак. Потому, что Time to market определяется архитектурой системы и производственной технологией. Чем больше размазана бизнес-логика, чем больше связанность между модулями, тем больше времени потребуется на анализ, проектирование, разработку и тестирование. И в первую очередь — регрессионное. Чем более критичен и ответственен бизнес, тем тяжеловеснее технологические процессы и жестче регламенты. Иначе — «Фобос в грунт» и никакой agile от этого не спасет.

Цитата: «И мы для себя принимаем решение, что мы уходим в прорыв вообще, мы меняем целиком нашу платформу. Мы покупаем маленький пакет акций в российско-американской компании, которая выиграла тендер, который мы проводили, выиграла тендер у Oracle, IBM и так далее – у всех. Ее платформа (C_B: ошибка в источнике) Производительность ее платформы (C_B: цитата по видеозаписи) оказалась на порядок выше, ровно на порядок выше, чем у этих компаний. Шестьдесят программистов ее делают».

Вопрос: Почему новое решение названо платформой (как явствует из интернета, это In-Memory Data Fabric, от GridGain Systems, которая специализируется на In-Memory Computing)?

Ответ: Это не платформа, а in-memory база данных. В ней нет движка бизнес-процессов, решения класса ESB с автоматической диспетчеризацией и гарантированной доставкой, аналитической и отчетной платформы и многого чего еще.

Вопрос: А что конкретно сравнивали по производительности In-Memory Data Fabric с Oracle RDBMS и IBM DB2 или, все-таки, с сопоставимыми решениями Oracle TimesTen и SolidDB, приобретенной IBM.

Гипотеза: Очень надеюсь, что второе, а также, что не забыли еще одного из лидеров среди продуктов этого класса SAP HANA.

Вопрос: А почему выбор был сделан именно по производительности?

Гипотеза: Думаю, что критерии выбора были много шире и включали и стоимость/доступность поддержки, и требования к информационной безопасности, и надежность, и наличие сообщества разработчиков, и много другое.

А теперь брюзжание.

Сбербанк затевает не одну, а сразу три революции: переписывание всей системы, переход на новые айти-технологии, повсеместное внедрение agile-процессов. То, что «это, конечно, колоссальный вызов» Греф, безусловно, прав. Но, с другой стороны, «проект без рисков – удел неудачников».

Не уверен, стоит ли сравнивать Сбербанк с Goolge, поскольку Google — это 2 миллиарда строчек кода. Думаю, если переписывать всю АИС Сбербанка, то это будет, где-то, 10 миллионов строчек исходного кода, включая автотесты. Но и это тоже серьезный вызов и наверное главная опасность, поскольку только 14% подобных масштабных разработок завершаются успешно, а 65% — успешно проваливаются (С. Макконнелл, «Сколько стоит программный проект», «Питер», 2007).

Средняя производительность хороших проектных команд при разработке ПО BSS — 40 протестированных и документированных SLOC в день на одного бойца, включая менеджеров, аналитиков, тестировщиков и прочих админов. Следовательно, суммарная трудоемкость разработки новой системы составит

10 000 000 SLOC/ (40 SLOC в день на человека * 21 день в месяц) = 12 000 чел.*мес.

И это оптимистичная оценка поскольку, среднеотраслевая производительность, согласно статистики COCOMO II, составляет всего 15 SLOC в день.

Не стоит рассчитывать, что 6 тысяч программистов Сбербанка, разработают эту систему за 2 месяца, поскольку, «девять беременных женщин не родят ребенка за месяц». Если оценить длительность проекта по формуле Барри Боэма, получим

Длительность [месяцы] = 2,5 * 12 000 ^ (1/3) = 60 месяцев = 5 лет

И это не один проект, а целая программа проектов.

Теперь про главные риски и про то, как им можно противодействовать.

1. Неточность и неполнота требований к существующей системе.
Закладывать на аналитику, примерно, в два раза больше трудозатрат, чем при создании системы с нуля, поскольку порой кроме декомпиляции исполнимого легаси-кода ничего не может помочь.

2. Получить еще более размазанную логику и более связанную модульность
Запланировать тщательное комплексное проектирование архитектуры, прототипирование и тестирование на соответствие нефункциональным требованиям. Причем, проектировать надо не ПО, а систему систем, в состав которой входит электротехническое оборудование, вычислительная инфраструктура и СХД, программное, телекоммуникационное и организационное обеспечение с учетом всех их разнообразных взаимосвязей и взаимозависимостей.

3.Нестабильность нового базового ПО.
Я с оптимизмом смотрю на новые технологии и верю в профессионализм программистов с российскими корнями, но знаю, что на разработку серьезного продукта, применимого в критическом бизнесе уходит десять лет. Я не нагуглил, какая по счету имеется в настоящее время стабильная версия ПО In-Memory Data Fabric, но хорошо помню, что первые десять лет, по словам самого Ларри Эллисона, клиенты требовали вернуть не деньги, но данные. А пригодная для критических применений версия базы данных была только 5.1. Поэтому стоит заложить дополнительное время и затраты на стабилизацию нового базового ПО.

4.Снижение производительности команды вследствие перехода на новое базовое ПО и производственные процессы.
По-старому нельзя, а по-новому еще не умеем. Следовательно необходимо учесть кривую обучения в планах.

5. «Ахиллес никогда не догонит черепаху».
Все известные мне попытки сразу заменить старую систему подобного масштаба на новую проваливались. Происходило это из-за неприемлемых затрат на параллельное внесение изменений в функциональные требования в старой и новой системе. Даже не советую про это думать. «Слона нельзя съесть целиком», поэтому его надо разрезать на подпроекты, которые можно реализовывать командой в 7-10 бойцов и в срок 6-10 месяцев. И по готовности заменять в промышленной эксплуатации старый функционал на новый. Кстати, возможность такого подход это тоже одно из важных требований к проектированию архитектуры. Такой подход, примерно, удвоит трудоемкость разработки системы, поскольку потребует дополнительных усилий на интеграцию старой и новой системы, для обеспечения их мирного сосуществования. Но не должно повлиять на сроки, поскольку разработку и интеграцию можно вести параллельно.

ЗЫ. Безусловно, в ИТ сделать можно все, что не противоречит законам природы. Это вопрос только политической воли, денег и сроков.

Успехов!

Автор: craft_brother

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js