Перегрузка, перекладка, переплата
С ростом количества и сложности услуг, предоставляемых всё возрастающему числу пользователей, в какой-то момент энергетика стала важным если не решающим фактором предпринимательской деятельности, связанной с компьютерными системами. Счета за электроэнергию, питающую их, и за их охлаждение из незначительной доли бюджетов стали пожалуй основными, вторыми после разработки и поддержки. Несмотря на утоньшение техпроцессов и колоссальный рост плотности операций в секунду на кубический метр центров обработки данных, количество требуемых системами киловатт растёт едва ли не экспоненциально. Разумеется, возникает соблазн не только переложить их оплату на потребителей в виде цены товаров или услуг, но и буквально переложить энергоснабжение на потребителя в виде исполнения кода на его устройстве вместо сервера в ЦОД. Как? Просто!
Недаром в начале 2000х годов начался разгон и проталкивание языка программирования JavaScript. Это поистине уродское поделие, не имеющее ничего общего с настоящим языком Java, а угнавшее это имя ради репутации, но всемогущее коллективное «общественное мнение» в Интернет начало пропихивать его везде, всюду, в каждую дыру, выдавая за венец творения. Как уже упоминалось ранее в цикле, сначала он обслуживал лишь косметические элементы страниц: изменение цвета или других атрибутов при наведении мышки, бегущие строки, выпадающие списки и меню по щелчку мыши, валидацию ввода и другие подобные функции. Потом пошло, поехало, и появились целые системы программирования т.н. одностраничных приложений целиком на JavaScript: React, Angular, Vue и им подобные. Многие из них основаны на библиотеке JQuery, которая возникла и стала популярной исключительно благодаря случайному стечению обстоятельств, чьему-то недосмотру или намеренной диверсии, а именно ключевому слову «document», обозначающему текущую страницу в браузере.
Программист, как упоминалось ранее в цикле, ленив. Он хочет печатать как можно меньше кода. Впечатывать каждый раз слово «document», чтобы сослаться на страницу и найти какое-то её элемент, используя методы объекта «document», ему влом. JQuery же, который свёл его к односимвольному имени $, обозначающему то же самое, пришёлся этим ленивым программистам по вкусу и на некоторое время стал стандартом. Дальше всё стало ещё хуже. Не реши изначально воистину гениальные разработчики объектной модели интернет-документа назвать коренной объект «document», а его методы доступа к элементам вроде ElementById, ElementByName и т.д., а сделай они их короче и проще, типа doc.byId(), может быть JQuery и не понадобился бы вовсе, но гениальность как всегда восторжествовала, и потребовалась целая библиотека на замену JavaScript DOM как таковому. Поверх неё накинули других, и так оно и продолжало наслаиваться и продолжает по сей день: неуёмные улучшатели продолжают пилить надстройки и костыли, гробящие производительность и потакающие лени, но всех устраивает. Почему?
Ответ прост: JavaScript исполняется в браузере на клиентском устройстве, а не на сервере. Счёт за электроэнергию оплачивает покупатель товара или потребитель услуги, а не продавец или поставщик. Не подумайте, что автор заботится о каких-то копейках! Они складываются в мегаватты, которые стоят мегаденег. Ради жадности, ради экономии мировая экономика молча, цинично угробила производительность ПО многократно, а то и в десятки или сотни раз или даже хуже, и размазала этот эффект, замаскировав его зарядками ваших смартфонов и блоками питания ваших ПК. Население планеты коллективно платит в десятки, сотни, а то и тысячи раз больше за электроэнергию глобально ради того, чтобы производители, поставщики, продавцы товаров и услуг платили меньше. А потом на нас орёт правительство, чтобы мы сократили потребление электроэнергии. Они в доле.
С той же целью политика в области кадров теперь перекошена в сторону универсальных программистов, которые должны знать все слои ПО: базы данных, серверный код и клиентский код. Без этого скрыть использование чужих средств было бы затруднительно, ведь кто-то мог начать бить тревогу, обнаружив диспропорциональное увеличение количества вакансий разработчиков исключительно клиентского кода, а так всё скомкано в один комок, и концы в воду.
Разумеется, автор не предлагает брать топоры и идти бить и спасать. Упаси Боже! Вешать или обезглавливать на площадях разработчиков на JavaScript, конечно, не выход, особенно в силу вышеупомянутого слияния специализаций. Но что-то делать-то надо! Что?
Человечество, не имея специальной подготовки в области разработки ПО и обслуживания аппаратного обеспечения, совершенно упустило из виду это глобальное мошенничество. Пока одни в поте лица трудились, добывая нефть, уголь, уран и полупроводниковые элементы, другие вырабатывали с помощью всего этого энергию, а третьи строили остальную экономику, кое-кто втихаря строил козни, чтобы всё это тайно разбазарить, а государственные органы некоторых стран истошно орали, что нужно экономить, но только в целях отвлечения. Нездоровая ситуация складывается.
Отказ от производительных серверных решений в пользу медленных клиентских отчасти объясняется паникой. Кто-то в бухгалтериях подбил баланс и выяснил, что платить за электроэнергию придётся больше, а талантливые управленцы сразу предложили приемлемое решение. Дальше за него держались и ничего не делали, чтобы решить исходную проблему, порождённую отсутствием эффективных решений для быстрой разработки серверных интернет-приложений. Так сначала с технологии CGI, использовавшей быстрый C++, соскочили на медленные Java и .NET, а потом уже на тормозной JavaScript.
А ведь достаточно было приложить небольшие усилия и разработать безопасные и гибкие библиотеки для C++, позволяющие делать то же самое, и мы бы сейчас наблюдали, не как для каждого ЦОД строят свою электростанцию, а как со всем тем же самым справляется одна серверная стойка или даже один сервер.
А ведь автор даже не начал обсуждение повышенной сложности ПО, требующего высокий уровень распределения по множественным серверам!
А ведь есть ещё один аспект происходящего: сокрытие откровенно преступной деятельности среди легитимных виртуальных машин и контейнеров в ЦОД. Об этом автор тоже ранее писал в статьях цикла. Будь этих серверов единицы, скрыть среди них машины злоумышленников было бы не так просто, но сейчас их требуются миллионы, и в этом море интернет-магазинов, соцсетей, гос-органов и т.п. тонут и оказываются незаметными сервера хакеров, ворующие данные или занимающиеся вымогательством. И платим за всё это мы, молчащие ягнята.
15 000 раз — это вам не шутка. Это колоссальный рост производительности железа, который с трудом справился с одновременной адской просадкой производительности ПО. Все технические достижения в области построения процессоров, оперативной памяти, шин передачи данных, накопителей и других компонентов вычислительных машин оказались перечёркнуты хитрыми финансистами и их рабами в командах разработчиков. Наверное, кто-то должен понести ответственность за всё это? Но они и тут соломки подстелили и размазали её (ответственность) по планете Земля, вычленив разработку самых важных компонентов и передав её анонимным распределённым командам под видом «бесплатного ПО с открытым кодом». Теперь невозможно найти ни организаторов, ни сообщников, ведь связи между ними скрыты за бессмысленными псевдонимами в публичных системах контроля версий, а финансовые потоки и вовсе невидимые.
Может быть это прозвучит наивно, но раз общество смотрит с осуждением на физическую расправу, то следует заняться информированием, обучением, пропагандой здорового образа жизни среди разработчиков ПО и лиц, принимающих решения в сфере информационных технологий? Увы, студенты оканчивают специализированные ВУЗы, получая лишь знания по специальности, и никто на данный момент не объясняет им, к чему приводят подобные решения, когда они выходят на работу. Мало кто вообще отдаёт себе отчёт, сколько стоит функционирование информационных систем, и кто за это платит. Ещё меньше понимают, какие экономические, политические и социальные последствия наступают в результате, например мировые войны. Может быть, как бы наивно это ни звучало, если бы разработчики ПО понимали, что из-за их лени и предпочтений в части языков программирования плывут авианосцы и летят ракеты, то они бы добровольно согласились использовать более производительные решения? Ведь большинство из них по крайней мере на словах являются сторонниками экономии ресурсов, охраны природы и других красивых инициатив и принципов.
В ИТ, как и во многих других отраслях, достаточно не бросать людей на произвол судьбы, а приложить небольшие усилия, чтобы направить их мысли и действия в правильное русло, и жизнь внезапно изменится к лучшему. Неужели мы не можем или не хотим этого?
Свидетельство о публикации №226060101832