IT-инфраструктура • инструкции • практикаПоиск по сайту

Серверы и системное администрирование

Найти материал →

Doom в google sheets: как sheeternetes превратил таблицу в контейнерный реестр

DOOM в электронной таблице: как Sheeternetes превратил Google Sheets в контейнерный реестр

Существует почти универсальное правило для мира технологий: если у устройства есть экран и хотя бы немного памяти, рано или поздно кто-нибудь попробует запустить на нём DOOM. Игра уже работала на осциллографах, кофемашинах, тестах на беременность и даже сельскохозяйственной технике. Теперь очередь дошла до электронной таблицы.

Команда Sheet-Native Computing Foundation решила не просто показать игру в браузере, а поместить полноценный контейнер с DOOM непосредственно в ячейки. Образ физически хранится внутри таблицы, затем собирается обратно в Docker-образ, проверяется по SHA-256 и запускается. Так появился SheetDoom - необычная демонстрация возможностей проекта Sheeternetes.

Тем, кто хочет разобраться, как запустить DOOM в электронной таблице, потребуется не только любопытство, но и базовое понимание Docker, Python и устройства контейнерных образов. При этом речь идёт не о симуляции: внутри действительно работают Chocolate Doom и свободный IWAD Freedoom, упакованные в Linux-контейнер.

Что такое Sheeternetes

Sheeternetes - экспериментальный оркестратор, в котором электронная таблица выполняет роль control plane. Вкладки Deployments, Nodes, Pods и Events находятся внутри Google Sheets или Excel, а планировщик читает и изменяет данные в ячейках. На другом конце системы работают настоящие Docker-контейнеры.

Иными словами, таблица здесь не изображает кластер, а сама становится его управляющей частью. В проекте реализованы планирование ресурсов, bin-packing, отказоустойчивость, live-миграция, HMAC-подписи и собственный формат контейнерных образов SICF - Sheet-Native Image Container Format.

Обычный контейнерный сценарий предполагает, что в манифесте указано что-то вроде `image: nginx:alpine`. Затем kubelet обращается к Docker Hub или другому реестру, загружает слои и запускает контейнер. Sheeternetes поддерживает такую модель, сохраняя совместимость с привычной Kubernetes-экосистемой.

Но у проекта есть и более необычный режим: образ можно хранить прямо в электронной таблице. Тогда одна книга одновременно выступает в качестве control plane и container registry. Это особенно интересно для изолированных сред, где отсутствует интернет и запрещено обращение к внешним хранилищам.

Как контейнерный образ помещается в ячейки

Механика SICF относительно проста. Каждый слой контейнера представляет собой TAR-архив. Его байты кодируются в Base64, разбиваются на фрагменты и записываются в ячейки вкладки Layers. Для адресации используется SHA-256-дайджест.

Информация о самом образе - имя, конфигурация и перечень слоёв - хранится отдельными строками на вкладке Images. Когда требуется запустить контейнер, puller извлекает фрагменты, склеивает их, проверяет контрольную сумму, восстанавливает архив и передаёт его Docker через `docker load`.

По принципу это напоминает OCI-образы и content-addressable storage. Отличие заключается лишь в носителе: вместо специализированного blob-хранилища используются ячейки Google Sheets. Именно поэтому DOOM в Google Таблицах выглядит одновременно абсурдно и технически показательно.

Как устроен SheetDoom

Сам игровой образ основан на Chocolate Doom и Freedoom. В него не включаются коммерческие игровые ресурсы id Software: используется свободный набор данных Freedoom, распространяемый через Debian main. Поэтому проект не связан с пиратским распространением оригинальных файлов DOOM.

После сборки образ помещается в SICF, а затем переносится в книгу. Sheeternetes извлекает его, восстанавливает слои и запускает контейнер на реальной машине. Пользователь получает игру DOOM онлайн - с управлением клавиатурой и выводом изображения в браузере.

Для воспроизведения эксперимента понадобятся Docker, Python 3, библиотека `openpyxl`, а также два репозитория: один с Dockerfile игры, другой с реализацией инструмента `sheetbuild`. При этом запуск возможен и без подключения к интернету, если все необходимые данные заранее сохранены в книге.

Неожиданные ограничения Google Sheets

Эксперимент выявил несколько особенностей электронных таблиц. Google Sheets может незаметно изменять слишком длинные строки, записанные в одну ячейку. Поэтому теоретический предел в 50 000 символов не всегда соответствует практическому: стабильным рабочим размером фрагмента оказался блок примерно на тысячу символов.

Есть и другое ограничение. Итоговый объём образа определяется не только допустимым количеством символов в ячейке. Гораздо важнее квоты Google Sheets, лимиты API, скорость чтения и записи, а также число обращений к таблице. Большой контейнер может упереться не в размер конкретной ячейки, а в ограничения всей инфраструктуры.

Интересно, что конкурентное редактирование в такой схеме неожиданно оказывается полезным. Несколько участников могут работать с разными частями книги, а сама таблица сохраняет историю изменений и предоставляет простой механизм наблюдения за состоянием системы. Для промышленной эксплуатации это, конечно, не отменяет вопросов блокировок, согласованности и контроля доступа.

Зачем вообще запускать DOOM таким способом

Практической необходимости хранить игровые контейнеры в Google Sheets нет. Однако SheetDoom хорошо демонстрирует идею sheet-native computing: привычные офисные инструменты могут использоваться не только для отчётов и расчётов, но и как интерфейс управления инфраструктурой.

Подобные эксперименты помогают наглядно объяснить устройство контейнеров. Пользователь видит, что образ состоит из слоёв, манифест связан с дайджестами, а контрольная сумма позволяет проверить целостность данных. В обычном registry эти процессы скрыты за несколькими командами Docker, тогда как в таблице каждый этап становится видимым.

Проект также показывает, где проходит граница между демонстрацией и реальной эксплуатацией. Запустить DOOM в браузере можно, но использовать Google Sheets в качестве production-регистра контейнеров - плохая идея. Таблица удобна для обучения, прототипирования и эффектных экспериментов, однако не заменяет специализированное хранилище.

Тем не менее именно такие проекты поддерживают культуру "DOOM на необычных устройствах". И если возникает вопрос, как запустить DOOM в браузере без стандартной установки, SheetDoom даёт на него весьма экстравагантный ответ: собрать контейнер, разложить его по ячейкам и поручить электронной таблице доставить игру на выполнение.

Sheet-Native Computing Foundation развивает эту концепцию шире одного игрового эксперимента. В экосистеме заявлены проекты для оркестрации, сетевого взаимодействия, хранения, наблюдаемости и CI/CD, а также собственные стандарты SCRI и SICF. Всё это открыто, ориентировано на международное сообщество и построено вокруг идеи, что электронная таблица может быть не только документом, но и полноценным рабочим интерфейсом для вычислительной инфраструктуры.

Прокрутить вверх