Направление корпоративных ИТ-систем.Инвестировать в A или B?

StackOverflow https://stackoverflow.com/questions/2052101

  •  20-09-2019
  •  | 
  •  

Вопрос

Это скорее общий вопрос о том, какое направление было бы лучшей инвестицией для компании.

Основное бизнес-приложение нашей компании написано на Visual FoxPro, и ему более 9 лет.База данных огромна, более 15 гигабайт, логика ядра сложна, и, что еще хуже, модель данных ужасна.Двум парням, которые построили его и обслуживали все эти годы, по меньшей мере за 50, так что излишне говорить, что выход на пенсию или, возможно, смерть могут наступить в течение следующего десятилетия или около того.

Это приложение VFP управляет всеми нашими основными бизнес-функциями, и для доступа к нему из внешнего мира требуются службы терминалов и citrix.Нашим веб-приложениям приходится взаимодействовать с ним через ODBC, и у нас постоянно возникают проблемы с производительностью.Серверы, на которых работает эта система, также очень старые, как Win 2000 server, и разваливаются на части.

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

Ценник будет находиться в диапазоне от 55 до 65 тысяч долларов.Итак, как веб-разработчик, я считаю, что это огромная трата денег!Моим решением было бы вложить эти деньги в переписывание базовой системы для запуска на веб-платформе .Net.Это устранило бы необходимость в лицензировании сервера терминалов и Citrix, а также в дорогостоящем оборудовании и управлении конфигурацией для его запуска.Я не вижу смысла вкладывать такие деньги в устаревшую систему, которая в любом случае должна быть на выходе.

Я хочу получить несколько убедительных аргументов относительно того, почему это пустая трата денег.Надеюсь, здесь есть кто-то, кто сталкивался с подобными ситуациями раньше, кто может высказать мне несколько точек зрения.Обновление оборудования кажется самым простым путем, потому что к ним просто придет консультант и все это сделает.Проект по разработке программного обеспечения занял бы больше времени, потребовал бы больше ресурсов и, возможно, стоил бы немного больше денег.

Это было полезно?

Решение

Каждый проект нуждается в анализе затрат и выгод.Если единовременная инвестиция в размере 60 000 долларов решит все проблемы на ближайшие 10 лет, то это (вероятно) гораздо экономичнее, чем нанимать команду разработчиков даже на один год для создания новой, более совершенной системы.

С другой стороны, если обслуживание уже обходится в 50 000 долларов в год, и эти капитальные затраты предназначены только для поддержания работоспособности системы, а через несколько лет вам нужно будет потратить еще 60 тысяч долларов, то это требует серьезного рассмотрения в отношении перепроектирования.

Или вы могли бы пойти по среднему пути и начать оборачивать это во что-то непрозрачное, например веб-сервис, затем постепенно заменяя компоненты лучшими (более эффективными, более ремонтопригодными и т.д.) Внутренними компонентами.Многие компании идут по этому пути, потому что это позволяет отложить первоначальные затраты на переписывание;при необходимости вы можете отложить ИТ-ресурсы в другом месте.

Однако С. Лотт прав - вполне вероятно, что вы не сможете конкурировать только по стоимости.Вы должны попытаться количественно оценить риски, связанные с этими древними системами - например, во сколько компании обойдется поиск и обучение квалифицированных разработчиков FoxPro, если первоначальные программисты решат уволиться (или, выражаясь языком стольких менеджеров, с которыми я встречался, "попасть под автобус")...


Просто для того, чтобы добавить к этому еще немного перспективы:До появления .NET (и в течение нескольких лет после) Я выполнял большинство своих проектов исключительно на Delphi.В то время это действительно был отличный выбор для развития предприятия.На самом деле я был человеком, который не хотел "повышаться". Однако через некоторое время и мне, и моему начальству стало очевидно, что это пугает людей за пределами компании.

Инвесторам, аудиторам, всем - им не понравилась идея, что наш основной ИТ-актив был выполнен на каком-то "непонятном" языке.Конечно, Delphi на самом деле не был / остается таким уж непонятным;здесь, в SO, есть тег "delphi" с числом 3340.Но давайте воспользуемся SO в качестве нашего примера - вот текущие подсчеты:

  • c# - 57293
  • .net - 30577
  • asp.net - 26600
  • java - 31023
  • vb.net - 5996
  • delphi - 3340
  • foxpro - 69
  • vfp - 27

Позвольте этим цифрам на некоторое время осмыслиться.Delphi, мой любимый инструмент в то время, теперь имеет менее 10% представления C #, и это заставляло нетехнологов нервничать.Foxpro / VFP не достиг даже 1%.Я даже не могу вспомнить, сколько раз мне приходилось отвечать на такие вопросы, как:

  • Что произойдет, если ведущий разработчик (я) уволится или попадет под автобус?
  • Насколько сложно / затратно будет нанять программистов в этой области?
  • Что, если поставщик прекратит его поддержку?(Это почти произошло)
  • Что, если мы захотим обратиться за помощью извне?Консультанты?Аудит безопасности?
  • Насколько легко будет заставить его работать с внешними продуктами?

Бла-бла-бла, беспокойство, тревога - вот что я чувствовал в то время, и это был продукт, который на самом деле не был это непонятный.В вашем случае мы говорим о FoxPro вот.FoxPro стал почти таким же, как COBOL;конечно, это все еще существует, есть люди, которые знают об этом, но кто сегодня запускает новый проект в FoxPro?Это скучно, это откровенно гетто.VB6 начинает превращаться в гетто, и VB / Access эффективно заменил FoxPro много лет назад.

Очевидно, я здесь немного мелодраматичен, но на вашем месте я бы выбрал именно этот ракурс.Забудьте о краткосрочной экономике, забудьте о возрасте и сосредоточьтесь на неизвестность продукта.Как они думают, сколько искренних, квалифицированных откликов они получат, если разместят объявление о поиске разработчика FoxPro?Какую зарплату они могли бы предложить за подобную должность?Какой была бы текучесть кадров?Все это может показаться незначительным, если эти два разработчика работают здесь 20 с лишним лет, но когда вы управляете многомиллионным бизнесом, вы должны это знать никогда не стоит ставить на карту свое выживание одного или двух сотрудников - по крайней мере, если вы можете этого избежать.

Другие советы

Краткосрочное переписывание vs.Спор о переоборудовании выиграть невозможно.Оборудование и лицензии всегда дешевле, чем перезапись.И аппаратное обеспечение плюс лицензия, похоже, не предполагают никакого риска.

Вы не можете выиграть в споре о рентабельности инвестиций.Если система не тривиальна, а вы не гений, переписать приложение, которое на самом деле будет стоить 100 тысяч долларов или больше. делает что-нибудь.Подумайте о нескольких человеко-летах.

Возможно, вы выиграете спор о «техническом долге».Изменения становятся все более сложными, рискованными и дорогостоящими.Чем дольше сохраняется этот кодекс, тем больше накапливается рисков и затрат.

Настоящий вопрос: «Начните исправить сейчас?» или «Подожди, пока он не сломается и страдает позже?» И это не имеет определенного ответа $.

Вы не можете конкурировать за деньги, поэтому вам приходится конкурировать за риск, возможности, рост, ремонтопригодность, адаптируемость, соответствие стандартам, безопасность, создание уникальной ценности для каждого клиента и т. д. и т. п.


«Сейчас мы ищем большую базу клиентов и больше данных».Это спор, который вы можете выиграть.

(Мне за 50, я не планирую умирать в ближайшее время.Этот аргумент не завоевывает сердца и умы.Если им не за 80, вы не можете использовать возраст, кроме как для того, чтобы игнорировать ваши аргументы.)

Сосредоточьтесь на стоимости (и риске) внесения изменений.

Докажите, что у вас есть веб-решение, которое делает изменения менее затратными и менее рискованными.

Далее покопайтесь в том, что там есть, и найдите части, которые можно заменить веб-фреймворком.Код, который вы не пишете, дешевле поддерживать код, который вы пишете.

В общем, дополнять плохую систему такими тоннами оборудования — плохой план, я бы, наверное, сказал, что лучше переписать, но сложно сказать, не зная деталей.

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

Чтобы понять, стоит ли это делать, помимо затрат на перезапись необходимо посчитать:

  1. Документирование всего, что система делает в данный момент, и реверс-инжиниринг требований.

  2. Написание модульных и интеграционных тестов для всего, что существует на данный момент.Вероятно, этого еще не существует, но должно быть.

  3. Стоимость обслуживания новой системы.Новая система не устранит затраты на техническое обслуживание, а лишь сократит их.Сколько вы сэкономите?

  4. Стоимость оборудования для новой системы.Новая система должна будет на чем-то работать.

  5. Стоимость лицензирования любого программного обеспечения и т. д.которые необходимы для новой системы.Все будет с открытым исходным кодом?Или вам понадобится несколько тестовых выпусков Visual Studio для ваших разработчиков и тестировщиков?

  6. Стоимость найма нового персонала для разработки.Помимо прямых расходов на заработную плату, существуют офисные расходы.Общая сумма может составить 300 000 долларов, скажем, для 3 разработчиков, включая зарплату, офисные помещения, оборудование, лицензии и льготы на медицинское обслуживание.

  7. Временной горизонт экономии.Экономия произойдет не сразу.Это произойдет в будущем.Тем временем им все еще приходится платить за лицензирование существующей системы, потому что что-то должно выполнять свою работу до тех пор, пока новая система не будет внедрена.

  8. Проблемы с денежным потоком.Из-за вышесказанного в краткосрочной перспективе им понадобится больше денег для финансирования развития.Фактические затраты выше, потому что им, по сути, придется получить кредит, привлечь акционерный капитал или иметь альтернативные издержки (им придется отказаться от некоторых других инвестиционных возможностей, чтобы продолжить переписывание).

  9. Деловой риск.Может возникнуть опасность, что переписывание может стоить дороже, работать хуже,

Две важные цифры:

  • Количество вакансий FoxPro, перечисленных в Craigslist Сан-Франциско на данный момент:2.
  • Количество вакансий «.NET», перечисленных в Craigslist Сан-Франциско на данный момент:252.

Многие другие моменты, которые были упомянуты, верны.Тем не менее, вы можете потратить на оборудование столько, сколько захотите, но факт в том, что если что-то сломается и вам понадобится помощь, вам придется потратить немало времени на поиск новых людей, которые могли бы помочь.

Похоже, самое время начать говорить о переходе¹ на новые, лучше поддерживаемые технологии.(И через 10 лет, когда .NET устареет, вы сможете сделать все заново :)

[1] И развивайте систему, а не переписывайте ее.Я предполагаю, что ваша нынешняя система выросла очень органично в зависимости от потребностей того времени.Полностью заменить все это невозможно (по крайней мере, без пары лет и нескольких миллионов долларов).

Как исторический разработчик VFP (более 20 лет работаю с Foxpro/VFP, и ВСЕ ЕЩЕ есть люди, которые просят меня написать/обновить их системы с помощью VFP по разным причинам), он по-прежнему очень мощный.Однако, исследуя и используя большую часть своего опыта ООП и разработки, а также работая с .Net, я нахожу некоторые вещи в .Net намного проще, особенно строгое приведение типов.Однако для создания базового отчета ТРЕБУЕТСЯ строгое приведение типов к таблицам/структурам/объектам базы данных, а во многих случаях до сих пор - PITA.

Цена переписывания всегда имеет большое значение, но не менее важен и крах ЛЮБОЙ системы...независимо от VFP, VB, Access или другого.Я настоятельно рекомендую привлечь консалтинговую компанию для помощи в ремоделировании вашей системы и, возможно, выступить в качестве менеджера проекта/наставника для вашего штатного штата программистов, которые смогут предложить свои таланты, даже если это может потребовать некоторых усилий. обучение в новой среде разработки.Таким образом, вы можете получить хорошую основу для сильных талантов в языке, но при этом сократить некоторые расходы, используя свой собственный персонал по программированию - хотя вам, возможно, придется нанять дополнительный персонал по программированию.Кривая обучения от VFP к .Net уже существует, и она все еще может быть головокружительной.

Существует множество компаний, которые были специалистами по VFP, которые впоследствии перенесли свои услуги в мир .Net и могут идеально подойти вашей организации, обладая историческими знаниями и профессиональным опытом в ОБЕИХ мирах.Я знаю, что они тоже могут выступать в качестве наставников для развития такой работы.

Сказать, что это пустая трата денег, можно только после того, как вы проанализировали рентабельность инвестиций — она будет сильно зависеть от того, сколько будет стоить переписать систему.

Классическая ошибка JOS — «система бардак, давайте ее перепишем».

Это все равно, что смотреть на это старое здание, видеть зубочистку и задаваться вопросом, почему она здесь.Вы считаете, что он не нужен, и вытаскиваете его.

Внезапно здание обрушивается у вас над головой :)

Возможно, было бы лучше

  1. Рассмотрите возможность переписывания частей системы для улучшения удобства обслуживания.

  2. Оптимизация системы для повышения производительности.

  3. Абстрагирование конкретных частей Foxpro, чтобы их можно было легко преобразовать в какую-либо другую технологию.

Такой поэтапный подход позволит снизить риск и обеспечить некоторые краткосрочные улучшения.

Для компании здесь нет волшебного средства.Единственный способ быть уверенным — это использовать новый сервер, чтобы получить преимущества в стабильности и скорости, которые дает существующее критически важное для бизнеса программное обеспечение.Затем, как только это будет отложено на несколько лет, начните перепроектировать эту вещь на другой платформе, например .NET, если вы этого хотите.Имея в виду, что в какой-то момент вам придется перенести данные VFP в новую структуру базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top