Тем не менее понимание того, что начальные инвестиции в технологию или продукт (фактически затраты на покупку) не отражают всех затрат на продукт и скорее являются меньшей частью всех затрат, уже стало базовым в крупных компаниях и организациях, но с трудом приживается в средних и мелких компаниях. Причин этого несколько, и они перечислены выше. Наиболее вероятно, что ключевыми являются неуверенность в стабильности бизнеса и отсутствие опыта управления сложными проектами в этом сегменте рынка. Вряд ли эта книга убедит таких потребителей, что они не правы, но, может быть, она станет той соломинкой, которая ломает спину верблюду. Весь мой опыт и опыт множества моих знакомых и друзей говорит, что бизнес вообще и информационные технологии в частности следует рассматривать как долгосрочный проект, в котором решения, принятые сегодня, могут сработать через много лет, либо вознеся компанию на вершину успеха, либо уничтожив вполне успешное внешне предприятие.
Было бы некорректным говорить, что эти принципы являются уникальными и подходят только для компьютерных технологий в бизнесе — они достаточно универсальны и хорошо описывают базовые ценности в любом нормальном бизнесе. Просто так сложилось, что информационные технологии являются наиболее открытыми и динамически развивающимися и быстро воспринимают наиболее передовые методы ведения бизнеса. Кроме того, область ИТ достаточно открыта для посторонних наблюдателей — именно поэтому здесь так хорошо видны результаты правильных и неправильных действий.
Если же говорить о более специфичных для ИТ принципах принятия решений, то они тоже существуют, и за годы работы в западных корпорациях я столько раз рассказывал о них, что, наверно, разбуди меня ночью и спроси о них, я без запинки смогу перечислить их:
• Масштабируемость
• Надежность
• Управляемость
• Опора на стандарты
У разных компаний этот список может варьироваться и включать дополнительные пункты, но эти базовые принципы присутствуют в любом варианте списка. Рассмотрим их внимательнее.
Масштабируемость подразумевает возможность увеличить необходимую производительность системы как по количеству операций, так и по числу пользователей. Может сложиться впечатление, что обеспечить масштабируемость достаточно просто: необходимо просто купить более мощное и производительное оборудование, и проблема решена. Это верно лишь отчасти — масштабирование наращиванием мощности работает только до определенного уровня или, точнее, до момента «разрыва непрерывности». Например, в свое время ко мне с просьбой помочь им обратилась одна компания, которая использовала некую прикладную программу, написанную в незапамятные времена «на коленке» несколькими программистами. Причем написана она была так, что принципиально не понимала распараллеливания или многопроцессорности, упрямо игнорируя их.
Найти следы этих программистов было уже невозможно, код программы недоступен, а на ней держится работа всей небольшой торговой компании. Обратившийся ко мне директор поинтересовался — что же ему теперь делать? К сожалению, типичный путь — увеличивать число процессоров до двух, а потом и до четырех, — в силу «особенностей мышления» программистов был для него закрыт. Фактически он мог только рассчитывать на увеличение тактовой частоты и производительности одного процессора. А тем, кто знаком с ценовой политикой производителей процессоров х86, хорошо известно, что самые быстрые процессоры последних моделей обычно стоят непропорционально своей производительности дорого. Кроме того, прирост производительности составляет не более нескольких десятков процентов в год, что явно не успевало за темпами роста этой компании.
И что же оставалось делать? Мне пришлось дать совет выбросить эту программу и купить масштабируемую систему — т.е. систему, написанную с учетом будущей потребности в увеличении производительности и нагрузки, использующую в своей основе масштабируемые технологии.