Сообщение администратору
Имя:
Почта:
Сообщение:
Вход на сайт
Логин:
Пароль:

Поддержка  •  Дневник  •  О сайте  •  Реклама  •  Поставить баннер  •  Прислать  •  Хроника  •  Translate  •  Рекомендованное  •  Написать администратору Гости: 21    Участники: 0 Авторизация Авторизация   Регистрация 
Метод Научного Тыка
RULVEN
Поиск  
Blackball iMag | интернет-журнал
RSS-лента
Поделиться ссылкой:
Каталог


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

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


Добавлено: Пн 26.03.2018 • Sergeant
Источник: источник
Просмотров: 205
Комментарии: 0


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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



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



Комментарии

Чтобы добавить видео с YouTube, нужно написать [@youtube=xxxxx] , где xxxxx – ID видео.


Комментарии: 0
Нет ни одного комментария.

Новое
Зал короля Артура оказался неолитическим загоном для скота 3 дня назад, 09:05
Зал короля Артура оказался неолитическим загоном для скота
15 действительно вкусных салатов с крабовыми палочками Сб 16.11.2024
15 действительно вкусных салатов с крабовыми палочками
Почему W-образные моторы уходят в прошлое, если они были лучше V-образных Ср 13.11.2024
Почему W-образные моторы уходят в прошлое, если они были лучше V-образных
Когда устал от алгоритмов: Ревью кода на собеседовании Вт 12.11.2024
Когда устал от алгоритмов: Ревью кода на собеседовании
Вирусы на Android: подробное руководство по обеспечению безопасности Пн 11.11.2024
Вирусы на Android: подробное руководство по обеспечению безопасности
Пн 11.11.2024
10 не самых очевидных причин, чтобы уволиться
Искусственный мозг против квантового компьютера: кто возьмет верх? Вс 10.11.2024
Искусственный мозг против квантового компьютера: кто возьмет верх?
10 лучших салатов с кукурузой Сб 09.11.2024
10 лучших салатов с кукурузой
10 вкусных салатов с фасолью, которые хочется готовить снова и снова Сб 02.11.2024
10 вкусных салатов с фасолью, которые хочется готовить снова и снова
Пишем одностраничное приложение с помощью htmx Вт 29.10.2024
Пишем одностраничное приложение с помощью htmx
Книги
Blazor in Action Вт 04.06.2024
Blazor in Action
Год: 2022
Security for Containers and Kubernetes Вт 28.05.2024
Security for Containers and Kubernetes
Год: 2023
Designing Data-Intensive Applications Вт 14.05.2024
Designing Data-Intensive Applications
Год: 2017
Fundamentals of Software Architecture Вт 07.05.2024
Fundamentals of Software Architecture
Год: 2020
Разработано на основе BlackNight CMS
Release v.2024-11-16
© 2000–2024 Blackball
Дизайн & программирование:
О сайтеРеклама
Visitors
Web-site performed by Sergey Drozdov
BlackballРекламаСтатистикаПоддержка
МузыкаПлейлистыКиноВидеоИгрыАудиоПрограммыСтатьиКартинкиЮморФорумДневник сайтаПрислать контентРекомендованное