Зачем начинающим разработчикам стоит для своих проектов выбирать виртуальные, а не физические сервера
Еще когда я писал дипломную работу (которую я успешно защитил 18.06.21), я как и любой другой дипломник, в работе ссылался на другие источники имеющие научную ценность. К сожалению, за все это время, я убедился для себя, что в академической среде в настоящее время выпускается огромное количество учебников и справочников с сильно устаревшей информацией. В дальнейшем я для себя обратил внимание, что в свежих научных статьях, публикуемых в серьезных источниках, огромное количество бредовых статей, основанных на устаревших данных. Конечно иногда это весело читать, но с другой стороны грустно, т.к. публикуются эти статьи не в сатиристических журналах, а в научных. Самое грустное, что среди коллег, которые входят в профессии ИТ-сферы, немало людей, доверяющих этим статьям и потом осознающих на практике печальную картину бреда.
Одним из таких моментов является непонимание (или незнание) преимуществ использования аренды виртуальных серверов, по сравнению с физическими серверами. И даже после изучения этой области у некоторых есть уверенность, что экономическая эффективность старого б.у. сервера будет выше, чем арендованная виртуальная машина за пару баксов в месяц при сравнимых характеристиках.
Зачем нужны базовые знания *nix-систем?
Интересно, что нередко корнем проблемы является отсутствие опыта работы в *nix-системах (в особенности Linux !) ибо большинство недорогих арендуемых виртуальных машин работают именно на linux-системах. У таких людей работа в консоли вызывает ужас. Соответственно человек, работающий только под Windows и захотевший ознакомиться с арендой виртуальных серверов на этой системе, столкнется с достаточно высокой ценой, которая может отбить желание знакомиться с этим. А если еще и строится распределенная сервис-ориентированная архитектура, состоящая из множества серверов, то в итоге ценник может получиться огромным (ибо некоторые облачные технологий обещают облачную надежность по заоблачным ценам).
Кстати, вышеописанный пример является отличным ответом на вопрос, зачем IT-специалистам нужно знакомиться с Linux (WSL в Windows не в счет).
Преимущества VDS по сравнению с физическими машинами.
Но вернусь к теме и попробую своими словами обьяснить очевидные преимущества аренды виртуальной машины по сравнению с физической:
- Отсутствие затрат на амортизацию оборудования, т.е. не требуется закладывать деньги на будущее обновление дорогих серверов и ломать голову, куда девать старое оборудование.
- Возможность аренды на короткий промежуток времени - существует немало провайдеров, которые предоставляют аренду на почасовой основе. В таких случаях, вы вполне можете выключать неиспользуемые машины и оплата в таком случае будет только за занятое место. Если вы работаете с сервером только днем, зачем вам платить за него ночью?
- Возможность динамически менять мощность виртуального сервера - грубо говоря, если вам на пару часов понадобилось увеличить мощность сервера в несколько раз, то облачные провайдеры обычно дают эту возможность в течение пары минут (но и оплата повышается). С учетом почасовой оплаты - это позволяет за пару сотен рублей арендовать за совсем небольшие деньги очень мощную машину, за которую в реальности вы бы заплатили огромные деньги.
- При аренде VDS, за работоспособность самой виртуальной машины (не операционной системы !), отвечает провайдер. Нет необходимости выделять место под сервер, подводить к нему питание. Да и физический сервер - это электрооборудование, которое не рекомендуется оставлять на ночь без наблюдения согласно правилам пожаробезопасности.
- Мобильность серверов - т.к. сервера виртуальны, вы можете перенести образ всей системы к другому провайдеру. Там есть определенные нюансы, но они несущественны, по сравнению с перетаскиванием физического сервера.
Вообще, когда проект проектируется - сложно сказать, какие у него будут требования к железу. Нужно будет 4 сервера с 64Гб ОЗУ каждый или вполне хватит 2 серверов с 24 Гб? В случае с использованием VDS с почасовой оплатой можно арендовать на короткий срок слабую конфигурацию и проверить нагрузочным тестированием, соответствует ли подобная конфигурация требованиям или нет.
К сожалению, при выборе провайдеров, предоставляющих облачные ресурсы, можно столкнуться с проблемой overselling - при которой провайдер перепродает одни и те же физические мощности сервера по несколько раз, по причине того, что многие клиенты не используют (во всяком случае постоянно) выделенные мощности на все 100%. Обычно на очень дешёвых хостинг-провайдерах, этот overselling достаточно хорошо ощущается.
Какой совет в итоге?
В итоге новичкам я хочу посоветовать одно - при проектировании какого-то серверного ПО вспомните про принцип KISS, выберите какого-нибудь провайдера и просто арендуйте у него нужную вам виртуальную машину и занимайтесь своим проектом. Пусть обслуживание физических серверов останется уделом профессионалов в этой области.