Системное администрирование
Общий опыт: 4 года
Необходимость понимания операционных систем и умения писать shell-скрипты появляется естественным образом при работе с back-end и DevOps.
Linux
Долгое время моей повседневной системой была Arch Linux, а типовым выбором для серверов — Debian. В последнее время меня заинтересовали идеи stateless операционных систем на базе функциональных декларативных конфигураций, что привело меня к NixOS ( мой конфиг ) и Guix .
С точки зрения системного администрирования, я нахожу интересным то, что NixOS вполне может избавить от необходимости возиться с Ansible при обновлении серверов и гарантировать их работоспособность при любом обновлении, но отсутствие загрузочных образов на базе NixOS у облачных провайдеров пока ограничивает применимость этих идей. Что же касается Guix, то, при всей привлекательности Scheme, её время ещё не пришло (и может не прийти): даже если систему удасться запустить на реальном железе (есть сложности), перекомпилировать ядро при каждом обновлении из-за использования несвободных драйверов — спасибо, нам хватило Gentoo…
Говоря в наши дни о Linux, нельзя обойти тему контейнеризации: помимо написания и оптимизации Dockerfile’ов, есть опыт разворачивания систем с Docker внутри LXC -контейнеров с ограниченными правами (каких только чудес не бывает).
Что касаемо systemd : есть небольшой опыт написания юнитов, аллергии нет.
FreeBSD, OpenBSD
Некоторое время назад меня интересовал мир BSD.
FreeBSD : вполне жизнеспособный вариант для любой задачи (даже Wayland уже по-тихоньку приживается), да и интересно наблюдать за развитием FreeBSD’шного ответа Docker Hub’у в виде Bastille . Тем не менее, целесообразность использования FreeBSD в production в настоящий момент весьма туманна.
OpenBSD : эталонный пример документированности и продуманности системы (без шуток). Даже жаль, что из-за вечных проблем с реальным железом и экспериментального статуса виртуализации на уровне ядра ( vmm — Тео всё-таки сдался) перспективы применимости этой системы ещё более туманны, чем у FreeBSD.
Тем не менее, из этого опыта я вынес любовь и уважение к ZFS , которая вполне надёжно портирована и на Linux ( OpenZFS ). Лучше, чем нативная Btrfs , уж точно.
Shell-скрипты
Несмотря на то, что Python сейчас можно найти практически на любой машине (особенно, когда Python — основной язык сервисов компании, в которой ты работаешь), иногда гораздо проще и быстрее использовать отдельные программы, склеенные shell-скриптами. В основном, я пишу скрипты с использованием башизмов, но, в зависимости от задачи (Debian-based система на сервере, busybox-based образ…), могу писать и в POSIX sh
-совместимом виде.
RTOS
В области встроенных систем, есть опыт разработки операционной системы реального времени, разрабатывавшейся на C++, а также опыт работы с FreeRTOS. RTOS на C++ используется в автопилоте БПЛА, FreeRTOS — в силовыми преобразователями. См. также раздел по C++ .
Иллюстрация
-
Композиция в целом: обложки книг O’Reilly до ребрендинга. Эта иллюстрация вдохновлена в первую очередь книгами Арнольда Роббинса по sed и awk , двум завсегдатаям многих shell-скриптов, и отдельно awk , который мог бы быть неплохим скриптовым языком, если бы он делал принудительной (в отличие от Lua) глобальную видимость для переменных.
-
Зелёное растение: библия системного программирования на Linux от Майкла Керриска . Не могу сказать, что знаю эту книгу от корки до корки, но регулярно обращаюсь к ней, когда меня интересует что-то во внутренностях Linux. Подзаголовок POSIX также выполнен в цветах обложки этой книги.
-
Сине-голубые лямбды и красная сфера с рогами: логотипы NixOS и FreeBSD соответственно.