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

Разделы

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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


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


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


Комментарии (0)
Нет ни одного комментария.
Поделиться ссылкой:
Новое
«Праздник, который всегда с тобой!»: немного о фляжках для алкоголяПт 22.02.2019 – «Праздник, который всегда с тобой!»: немного о фляжках для алкоголя
Пт 22.02.2019 – Ужас
Что происходило с SSD в 2018 годуСр 20.02.2019 – Что происходило с SSD в 2018 году
Entity Framework Tutorial, Second EditionВт 19.02.2019 – Entity Framework Tutorial, Second Edition
Год: 2015
Эротический массаж мужчинамВс 17.02.2019 – Эротический массаж мужчинам
Как сэкономить на покупке кабелей. Несколько вредных советовСр 13.02.2019 – Как сэкономить на покупке кабелей. Несколько вредных советов
Code-First Development with Entity FrameworkВт 12.02.2019 – Code-First Development with Entity Framework
Год: 2015
Массаж при заболеваниях женской половой сферыВс 10.02.2019 – Массаж при заболеваниях женской половой сферы
Тест B&W 603 S3: Богато и недорого. Слушаем напольные колонки B&W 603 S3 и сравниваем с B&W 683 S2Ср 06.02.2019 – Тест B&W 603 S3: Богато и недорого. Слушаем напольные колонки B&W 603 S3 и сравниваем с B&W 683 S2
Modern API Design with ASP.NET Core 2Вт 05.02.2019 – Modern API Design with ASP.NET Core 2
Год: 2018
Массаж при заболеваниях мужской половой сферыВс 03.02.2019 – Массаж при заболеваниях мужской половой сферы
Пт 01.02.2019 – Сбой системы
QLED-технологии в телевизорах: обзор плюсов и минусовСр 30.01.2019 – QLED-технологии в телевизорах: обзор плюсов и минусов
ASP.NET Core in ActionВт 29.01.2019 – ASP.NET Core in Action
Год: 2018
Топ-5 альтернатив jQuery UIПн 28.01.2019 – Топ-5 альтернатив jQuery UI
Разработано на основе BlackNight CMS
Release v.2019-02-21
© 2000–2019 Blackball
Дизайн & программирование:
Sergeant Центр Связи с Админом Skeleton
О сайтеРеклама
Яндекс.Метрика
Web-site performed by Sergey Drozdov