Спрятать панель проектов Показать панель проектов
Donation Пожертвование  |  Дневник  |  Без рекламы  |  О сайте  |  Реклама  |  .mobile     Прислать Гости: 5    Участники: 0  Авторизация   Регистрация 
Метод Научного Тыка
Поиск  
iMag | интернет-журнал

Разделы

Реклама
Начало » Разработка ПО » Что дешевле: новое железо или труд разработчиков?

Что дешевле: новое железо или труд разработчиков?

 

Добавлено: Пн 26.03.2018 (Sergeant)
Источник: http://habrahabr.ru/post/232209/

Представьте себе такой диалог:

Админ: Господа, разработчики, ваш код на сервере стал поедать много оперативки. Сервер уже свопиться начинает. Сами понимаете, все может встать колом!
Представитель разработчиков (например, тимлид): Блин, беда. Сейчас займемся проблемой.
Эй, команда, нас тут админы стыдят за неоптимальный код. Нужно срочно все бросить и оптимизировать старый код.
Менеджер проекта: Эй, вы куда? Какая оптимизация? Пусть админы докупят памяти в сервера и проблемы нет. А у вас вон кучу нового функционала нужно разработать. Никакой оптимизации! Сосредоточьтесь на новом функционале. Нам нужно опередить конкурентов с новыми фичами. Потом как-нибудь оптимизируете свой код.

И кто кто из прав? Что нужно сделать? Сделать апгрейд железа или заняться оптимизацией? Давайте не будем считать, что проблема исключительно в оперативной памяти. Вопрос на самом деле более общий: куда тратить деньги? Да да, все именно в них самых. Т.е. деньги можно потратить на новое оборудование либо на человеко-часы (зарплату) которые уйдут на оптимизацию кода. Мне сложно побывать на месте всех четырех участников, которые могут быть вовлечены в обсуждение данного вопроса. Но постараюсь изложить, что думает каждый из них.

Мысли Админов

Эти разработчики вообще ничего программировать не умеют. Их код все более прожорливый. Постоянно докупаем оборудование. Оно кушает электричество. Да еще и ломается и устаревает. Одни проблемы. Пусть научатся программировать и их творение будет работать на одном сервере. Вот будет счастье!

Мысли разработчиков

Замучали уже с этим новым функционалом. Когда же дадут время на рефакторинг? Вон, админы уже смотрят на нас косо. Код должен быть оптимальным. Легко читаемым. Быстрым и потреблять мало памяти. Мы же можем так программировать. Нам всего лишь для этого нужно на 30-50% больше времени.

Мысли менеджера проекта

Проект уже запущен и приносит прибыль. И вот список нового функционала, который нужно доработать. И сделать нужно это как можно быстрее, чтобы опередить конкурентов. Допустим, я одного разработчика выделю на оптимизацию старого кода, который стал потреблять много памяти. Итого я потрачу N рублей на зарплату за этот месяц на оптимизацию. Плюс потеряем в темпе, т.к. этот разработчик не будет участвовать в создании нового функционала.
С другой стороны за (N * 2) рублей я докуплю горку памяти в сервера.
А если через месяц еще повылезают скрипты (возможно вновь написанные), которые будут пожирать память, то скорее всего это не будет так критично, если в серверах памяти станет больше. И темп в разработке не упадет, т.к. все будут заниматься своим делом: админы апгрейдить сервера, а разработчики создавать новый функционал.
А что вообще нужно сделать чтобы программисты писали более оптимальный код? Они же не со зла так пишут: им либо не хватает знаний, либо времени на оптимизацию.

Как повысить знания? Потратить время на обучение. Или уволить этих и нанять более толковых, но на зарплату на 50% (а может и 100%) больше. Т.е. если команда сейчас не занимается вредительством, то добиться на выходе более оптимального кода — это дополнительные затраты либо по деньгам, либо по времени разработки. Чую, что проще докупить памяти в сервера.

Мысли владельца бизнеса (в игру вступает четвертый персонаж)

Так, менеджер проекта попросил выбрать:

  • Потратить дополнительные деньги на разработку (тут возможны варианты: смена команды разработчиков на более дорогую; увеличение времени разработки текущей командой, т.к. она будет больше уделять времени на оптимизацию кода)
  • Потратить дополнительные деньги на оборудование (проапгрейдить существующее железо, докупить новые ноды и т.п.)

При этом менеджер дал понять, не факт, что время, потраченное на оптимизацию приведет к цели. А вот дополнительное оборудование точно решит проблему на ближайшие пару лет.
Так же менеджер пояснил, что вложение в команду разработчиков — это скорее долгосрочное инвестирование. Отличный, оптимальный код будет в будущем “приносить дивиденды”.
А вложение в оборудование даст отдачу незамедлительно.
Так же оборудование — это имущество компании. Под него в перспективе, например, можно взять кредит. Или (не дай бог) продать, пусть и дешевле, если вдруг дела пойдут плохо и придется сворачивать бизнес.
(Дальше каждый сам додумывает, что выбрал Босс).


При обсуждении этого вопроса можно отталкиваться от следующих предпосылок:

Текущие разработчики имеют средний уровень. Т.е. они работают с тем качеством, которое могут выдать при том темпе разработки, которое от них требуется. Они могут повысить качество кода за счет дополнительно потраченного времени.
Затраты на оборудование, например, в 2 раза больше, чем затраты на зарплату (или, например, премию за внеурочную работу) разработчику, который решит проблему с текущим высоким потреблением серверных ресурсов. Причем разработчики решат проблему только в текущем коде и раз уж они накодили “пожирателей” памяти, то скорее всего они продолжат в этом духе. И при текущем тренде роста потребления ресурсов, затраты на оборудование закроют данный вопрос на ближайшие 2 года.
Речь не идет о баге из-за которого подскочило потребление памяти на 100%. Такое нужно фиксить незамедлительно. Речь идет о том, что увеличением функционала растет потребление ресурсов серверов.


Данные предпосылки — это ситуация, когда огрехи необходимость рефакторинга по сути дешевле “заткнуть” новым железом. А нужно ли это делать?
Нужно ли оптимизировать код и вылизывать его или проще разработать архитектуру, поддерживающую горизонтальное масштабирование и просто докупать оборудование или поднимать новые инстансы в облаке?

Я не стал делать вариант “докупим немного оборудования и дадим время на оптимизацию”, т.к. по сути — это все равно первый вариант.


 
Мне нравится
?
Мне не нравится


Писать комментарии могут только авторизованные пользователи.


Комментарии (0)
Нет ни одного комментария.
Поделиться ссылкой:
Новое
Почему электромобили не так экологичны, как это принято считатьвчера, 09:07Почему электромобили не так экологичны, как это принято считать
Mastering Entity Framework Core 2.0Вт 13.11.2018 – Mastering Entity Framework Core 2.0
Год: 2017
Правила группового секса в свинг-отеляхВс 11.11.2018 – Правила группового секса в свинг-отелях
Десять лучших домашних закусок к пивуСб 10.11.2018 – Десять лучших домашних закусок к пиву
Почему электромобили – это утопияСр 07.11.2018 – Почему электромобили – это утопия
Автомобиль Hennessey Venom GTВт 06.11.2018 – Автомобиль Hennessey Venom GT
Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQLВт 06.11.2018 – Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL
Год: 2013
Пн 05.11.2018 – Найм программистов. Советы от программиста
Среди свингеровВс 04.11.2018 – Среди свингеров
Три удачных рецепта домашних апельсиновых наливокСб 03.11.2018 – Три удачных рецепта домашних апельсиновых наливок
Амарула (Amarula) – южноафриканский конкурент БейлисаПт 02.11.2018 – Амарула (Amarula) – южноафриканский конкурент Бейлиса
Лосось в духовке - лучшие рецепты запечённого в духовке лососяПт 02.11.2018 – Лосось в духовке - лучшие рецепты запечённого в духовке лосося
Пт 02.11.2018 – Про одинаковых людей
Что такое 8K и телевизоры с таким разрешениемЧт 01.11.2018 – Что такое 8K и телевизоры с таким разрешением
Как пить водкуЧт 01.11.2018 – Как пить водку

Реклама
Разработано на основе BlackNight CMS
Release v.2018-11-01
© 2000–2018 Blackball
Дизайн & программирование:
Sergeant Центр Связи с Админом Skeleton
О сайтеРеклама
Яндекс.Метрика
Web-site performed by Sergey Drozdov