Книги: Антимозг

Антимозг
Манфред Шпитцер.
Антимозг. Цифровые технологии и мозг.
АСТ, Кладезь, 2013.
Давно прочёл эту книгу (да сразу, как вышла у нас), на три года пищи для размышлений подкинула.
Шпитцер атакует виртуализацию обучения детей. Вместо живого общения SMS и Facebook. Вместо игры в квадрат или салочки битвы в WoW. Вместо похода классом в лес экран с документальным фильмом о лесе. Сплошные вместо. Дети послушно залипают, родители спокойны.
Фигня в том, что в итоге такого выращивания получаются ущербные взрослые, которые на самом деле не умеют общаться, не умеют двигаться, без опыта тактильного познания мира, да и просто стрёмные (цифровое слабоумие в диагнозе). Фигня в том, что статистика и исследования это начинают подтверждать.
Суть многих аргументов Шпитцера в том, что человечество не только автоматизировало свою физическую работу, но упорно автоматизирует и работу мозга. Мы производим замечательные костыли. От поисковика Google (зачем что-либо знать, если это можно нагуглить?) до списка контактов (зачем помнить номер телефона, если он есть в мобиле?). Только вот мозг при этом вырубается целиком. Об этом и книга.
Если вы думаете иногда о цене прогресса, почитайте. Автор не журналист, но невролог, психиатр и директор психиатрической клиники в Ульме. Волну поднял знатную.

Почему Docker побеждает

Разработчик разрабатывает на ноуте X, выкатывает на тестирование на машинки ABC, потом катит в stable на машинки KLMN. Рядом база на Y, nginx на Z, плюс толпа сопутствующего на F и G.
Вот кадр, который я стырил из Introduction to Docker от автора Docker’а:
1-4GDJCD-5l11EH92ZEHHoSw
Адок раскатки
Если вам кажется, что всё проще и сервисы выглядят не так, значит, вы до этого нюхали не порох. Картинка выше — она даже легче, чем реальные крупные инфраструктуры.
И на практике мы получаем вечную головную боль. Три боли:
  1. Как обеспечить выкатки пакетов так, чтобы в stable катилось именно то, что тестировалось, а тестировалось именно то, что разрабатывалось? Вроде бы фигня, но у сервиса в зависимостях десятки пакетов, а комбинация из разных версий этих пакетов забавно стреляет раз в год, особенно когда идёт волна обновлений.
  2. Как обеспечить жизнь нескольких сервисов на одной машине без конфликтов? Сервису X нужна библиотека строго версии 1.0.2, а сервису Y библиотека строго версии 1.0.4.
  3. Как в целом уменьшить хаос? Фронт собирается так, бек собирается эдак, пакеты компонуются сяк, выкатываются через попу, перекатываются через левое плечо, базы живут в своём мире, логи пишутся в свой адовый мирок, Celery падает раз в сутки, всё по разным ДЦ, админы бывают в отпуске, какая, блин, честная нагрузка на эту машину?! и вообще мы все умрём.
    Если вам кажется, что это не проблема, повторюсь, вы нюхали не порох. Современная классика и реалии — сто сервисов, десять тысяч машин и N*M технологий. На всём этом танцует тысяча разработчиков и админов. Числа с потолка, но.

    Docker впервые опубликован в 2013 году. Альфа, фиговенькая, стрёмненькая. В 2016 году на Docker’е сидят Ebay, Яндекс, Badoo, Google, Spotify, Red Hat и другие монстры, у которых инфраструктура, мягко говоря, далеко ушла от пары машинок. Все крупные облачные сервисы сейчас поддерживают выкатку docker’ов.
    Почему? Потому, что никого не волнует инфраструктура гаражных конторок с “ДЦ” под мостом, но всех волнует сокращение издержек на N сотрудников и M машин при заметных N и M. ЦОД дорого строить и дорого эксплуатировать. Разработчики с админами стоят дорого. Использовать ЦОД и работников надо максимально эффективно.
    В каждой крупной конторе умные дяди садятся с калькуляторами и хоть примерно считают пользу от чего-нибудь. Давайте вот снова с потолка.
    Во-первых, у нас Вася. Вася разработчик и 30 минут в сутки в среднем тратит на цикл сборок, выкаток, решение проблем из-за версий пакетов или внезапных взрывов на рабочих машинках. Это 121 час в год (я учёл отпуск, потому 11 часов * 11 месяцев). При зарплате Васи в 100К рублей работодателю Вася обходится пусть в 150К рублей ежемесячно. Час = ~850 рублей. В год эти “30 минут” Васи обходятся работодателю в 100К рублей. Когда таких Вась тысяча, получаем издержки в 100М рублей ежегодно.
    Во-вторых, у нас Петя. Петя админ и следит за должной эксплуатацией N машин. Петя не железный и не универсал, потому его хватает на N = 100 машин с технологиями A, B и C. Машин 10К, Петь нам надо 100. Может быть, хватило бы и 80, например, но в инфраструктуре зоопарк (см. пункт ниже), из-за зоопарка что-то постоянно взрывается, разработчики достают вопросами и нытьём, потому 100. Вот эти 20 Петь обходятся работодателю ежегодно в… пусть 100К * 20 * 12 = 24М рублей.
    В-третьих, у нас 10K машин. На некоторых стоит Ubuntu 8, на некоторых Ubuntu 14, в углу на небольшом кластере крутится FreeBSD, в своём мирке живёт резервация Windows-серверов, а в чулане нечто, что управляет телескопом на орбите, но об этом всем забыли, а кушать оно просит раз в десятилетие. Часть машин простаивает, часть занята тем, что обеспечивает работу зоопарка, часть едва справляется с нагрузкой. Смело можно сказать, что 10% этого ЦОД дышит теплом в пустоту. Стоимость создания ЦОД можете посчитать сами, без бутылки не разобраться, но одна стойка (от аренды помещения до лицензий на софт) обходится в 1.5М..3М рублей. Мы бездарно используем ~23 стойки 42U. Ок, пусть 20. В пустоту улетели 30М..60М рублей уже со старта.
    Итого фиговая инфраструктура конторы на 1000 Вась, 100 Петь и 10К машин сначала выстрелит в 30М..60М рублей, а потом ежегодно будет стрелять на 124М+ рублей. Повторюсь, числа взяты с потолка, но примерно рядом с реальными. Просто чтобы вы представили порядок убытка. На фоне остальных трат выглядит не очень страшно, но… слушайте, это просто глупо — за восемь лет влететь в миллиард рублей потому, что пакеты раскатываются левой пяткой. При том, что можно не влетать.

    А вот теперь интересное. Выкатка чего-либо в контейнерах от этих издержек откусывает заметный кусок.
    Всё, что вам надо — обеспечить проход контейнера единого формата от разработчика до stable-машин. Инфраструктура больше не колбасится от попыток пропустить через себя весь ассортимент разработческих фантазий и мод. Всё красиво и ангелы порхают: ein контейнер (привет разработке), ein конвейер раскаток (привет админам), ein cloud (привет ЦОД). Облачность тут напрашивается. Контейнеры проще мониторить, проще натягивать на ресурсы, проще раскатывать и откатывать, проще оторвать от конкретного железа. Вообще всё проще, т.к. каждый занят своим делом и миры этих дел не перемешиваются. Больше изоляций богу изоляций.
    Эти решения были и до Docker’а, конечно.
    Фишка в том, что Docker дал массовое решение. Докеризоваться может и конторка под мостом, и Почта России (ну… допустим, а), и Amazon. Все могут.
    Фишка в том, что Docker получил широкую поддержку в облаках разных vendor’ов. Вы можете раскатить контейнер в локалке, в Google, в Amazon, да везде.
    Фишка в том, что это open source, спонсируемый крупными суммами крупных игроков.

    Потому считаю, что мнение “А ещё через пару лет все забудут эту х…ю в пользу того, что там будет стильно-модно-молодёжно” (цитата) несколько отстаёт от реальности. Все сели с калькуляторами, посчитали, умилились и взяли на вооружение не модную х…ю, но крайне полезную и давно ожидаемую штуковину. И никуда оно уже не денется.
    Чего и вам желаю.

    Вкладывать в разработчика убыточно

    Разработчики — очень мобильные работники.
    Их область деятельности слабо связана с конкретным производством (иначе говоря, Пупкин может как сервера сайтиков клепать, так и прошивку для утюга).
    Они изнежены и очень требовательны к условиям труда. Если на кофепоинте нет печенек, половина компании увольняется к тем, кто с печеньками.
    Они молоды. Если для многих других отраслей 30 лет — это возраст становления зрелого специалиста, то в IT/CS всерьёз обсуждают темы “есть ли разработка после тридцатника”. Чем ты моложе, тем толще шило вмежду полушариями.
    Они достаточно быстро повышают квалификацию, что приводит к overqualification, что приводит к разрыву между тем, что Пупкин может делать, и тем, что он делает, что приводит к неудовлетворённости, что уходит Пупкина из.
    Наконец, по статистике разных рекрутинговых агентств в среднем разработчик на одном рабочем месте сидит около двух лет. Хоть это и среднее по больнице (я на прошлой работе проработал 11 лет, а видел резюме чувака, за 3 года сменившего 5 работодателей), но.

    И вот тут смотрим на разработчика глазами работодателя. На кой фиг вкачивать в Пупкина ресурсы обучения и повышения квалификации, если Пупкин свалит в закат через год?
    Все эти поездки на конференции, оплаченные курсы, сертификации, что-нибудь-билдинги и т.п. — всё лишено смысла, если не приносит прямую выгоду в ближайшие пару месяцев. Стратегически же текущий работодатель вкладывается в обучение сотрудника для следующего работодателя.

    Соответственно, если с этой точки зрения посмотреть на то, как сейчас одаривают плюшками разработчиков, получается любопытная картина. Все вложения входят либо в организацию рабочего места (от стула до печенек), либо в построение имиджа компании — Пупкин из компании XYZWare на конференции Pyjava.js Jam-Hackary 2011 за час рассказал содержание статьи с Хабра, потом два часа общался с пацанами в фойе. Ура, теперь XYZWare упоминается в каких-нибудь дайджестах новостей.
    А вот то, что находится на стыке интересов работодателя и сотрудника (личный рост, так сказать) — не-а. И это сейчас нормально.

    Стартапы на примере Theranos

    Как $4,5 млрд превратились в ничто — краткая история дорогого стартапа Theranos, “делавшего” оборудование для революционных методов анализа крови. Дополнительно: wiki/Theranos.
    Тут что характерно для оценки методов оценки стартапов в современном мире. Можно:
    • в 19 лет (без опыта работы и вообще какого-либо бекграунда) получить под стартап почти ~$10M, если в совете директоров известный чувак;
    • потом за два года получить ещё ~$45M под одни лишь обещания, не имея ничего на руках;
    • за последующие года получить ~$1B… снова не имея ничего из обещанного на руках;
    • быть очень закрытым стартапом без утечек информации наружу, даже той информации, что нужна любому аудиту;
    • при всём этом получить от ЭКСПЕРТОВ оценку капитализации в $9B (без финансовой отчётности, без патентов, без методов работы, без всего);
    • попасть в рейтинги Forbes;
    • годами делать забор крови на обычном медицинском оборудовании вместо обещанного собственного;
    • получить проблемы только потому, что через 10..12 лет (!) общественность с журналистами заинтересовалась тем, что происходит и где результат.
    И тут внезапно (!) оказалось, что разработок нет, оборудования нет, репутации [уже] тоже нет, а те анализы, что делались даже на обычном оборудовании, сделаны с ошибками. Внезапно (!) оценку стартапа снизили в ноль.
    Всякий раз, когда вы в беседах и размышлениях оперируете капитализацией (за которой нулевая реальность), оценкой ЭКСПЕРТОВ (которые рисуют числа с потолка и дутых метрик), размером инвестиций (количество доверчивых идиотов, вливающих лишние финансы)… вспомните Theranos. Они не первые, они не последние.