Не только для DevOps

23 сентября 2022
Не только для DevOps

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

Старейшая Unix-утилита получила обновление

Приложения и сервисы в современном мире живут недолго. Даже успешно «выстрелившие» приложения забываются и заменяются новыми утилитами. Но есть и приятные исключения — легендарные приложения живут десятилетиями и ничто не мешает им развиваться внутри аудитории своих поклонников. Так, например, реинкарнация популярного в начале миллениума Miranda до сих пор живёт в виде Miranda-NG.

Почти такая же судьба постигла медиаплеер Light Alloy. Раньше он был Shareware, но имел уникальную фичу. Для жителей стран бывшего СНГ лицензия была бесплатной. Чтобы её получить пользователю нужно было отгадать одну из нескольких десятков загадок на русском языке. Сейчас же приложение стало полностью бесплатным, но вот загадки из старых версий до сих пор встречаются на разных сайтах.

Еще больше примеров среди инструментов для Unix-систем, которые всегда отличались своим долголетием. Один из таких инструментов — утилита curl, созданная в 1998 году шведским программистом Даниэлем Стенбергом. Проект начинался как бот для доставки курсов валют в IRC, но вылился в нечто большее. Сейчас эта кроссплатформенная утилита знакома всем DevOps и разработчикам.

Причем, «кроссплатформенная» не просто громкое слово для обозначения тройки Windows / Linux / macOS. Она работает почти на любых системах от RTOS QNX до Tru64 UNIX. Даже под мейнфреймы IBM на базе z/OS system есть своя собственная версия curl. Это, конечно, не Doom, запущенный на электронном тесте для определения беременности, но вполне близко к этому.

И вот эта легендарная утилита совсем недавно получила обновление до версии 7.85.0. Вместе с внедрением нового протокола QUIC при помощи портативной библиотеки wolfSSL особое внимание было уделено безопасности. В частности была устранена проблема с обработкой cookies, заставляющая сервер плеваться ошибкой 400 Bad Request, что по сути делало curl инструментом для проведения DoS-атаки. Schannel SSP теперь умеет обращаться с TLS 1.3, а команда setopt получила новые опции CURLOPT_PROTOCOLS_STR и CURLOPT_REDIR_PROTOCOLS_STR, взамен старых, написанных много лет назад.

Полный список изменений можно увидеть на официальном сайте проекта. Или послушайте, как разработчик сам рассказывает об обновлении:

Новый язык для распределённых систем

Сколько сейчас в мире языков программирования? Кажется, что такое легко загуглить, но это путь в кроличью нору. TIOBE говорит о 265+ языках, Wikipedia обозначает 700+, а онлайн-энциклопедия языков программирования HOPL сообщает о 8945 зарегистрированных языках. При этом на слуху всего лишь несколько десятков. И мы расскажем еще про один.

Тренд на переход в облачную инфраструктуру породил существенный спрос на распределённые вычисления. Когда приложению надо выйти за границы одной ОС, то возникает куча костылей. Надо не только открыть сокет и отправить данные наружу, но и убедиться, что на другой стороне запущено соответствующее приложение. Оно должно принять данные, выполнить десериализацию и только потом запустить необходимые вычисления.

Авторы языка программирования Unison ломают привычную парадигму и представляют сообществу иной способ подхода к распределённым вычислениям. Они сделали язык, код которого изначально адресован контексту. Каждая директива языка идентифицируется хешем его синтаксического дерева. Он становится своего рода указателем на адрес в огромном неизменяемом адресном пространстве.

Такой подход даёт интересную суперспособность — перемещать вычисления с места на место, доставляя отсутствующие зависимости по их хешу. Также это сразу убирает потенциальные конфликты зависимостей — не может возникнуть ситуация, когда мы ссылаемся на директиву по имени. Необходимость в сериализации/десериализации также исчезает. Архитектура языка исключает ошибки при десериализации данных, если в кодовой базе есть различия.

Изменён в этом языке и подход к хранению кода. Это не привычные текстовые файлы, структурированные исключительно по желанию и опыту их автора, а хорошо структурированная базу данных. Код преобразуется в неё при сохранении.

Это даёт разные преимущества: и мгновенное неразрывное переименование, и поиск по типу. А чтобы получить код для редактирования, достаточно одной команды. Результат — красивый структурированный буфер с кодом.

Новый подход решает массу проблем, но одновременно порождает иные сложности. Так, например, организация работы сборщика мусора в распределённых системах крайне сложна. Традиционные репозитории также не пригодны для такого кода. С другой стороны, а когда внедрение инновационных решений было простым? Пожелаем же разработчикам удачи!

CI/CD для простых проектов

CI/CD для простых проектов

Вводите CI/CD — готовьтесь сравнивать и выбирать ПО. Чаще всего выбирают GitLab или Jenkins, при помощи которых можно выстроить систему любой сложности. Даже что-то очень простое можно сделать, хоть это и стрельба из пушки по воробьям. Шума будет много — профита мало. Простые пайплайны в большинстве случаев могут быть спокойно реализованы парой плейбуков Ansible.

Есть более простое ПО с зачатками CI/CD — Ansible Semaphore. Это такая красивая веб-морда над привычными плейбуками, напоминающая интерфейс AWX. Но в отличие от него не нужен Docker / Kubernetes, и он проще. Проект популярен и имеет более 5.2k звёздочек на GitHub. Ближайший аналог — инструмент для автоматизации рутинных задач Rundeck.

Из крутых опций Ansible Semaphore — создание шаблонов для выполнения задач, сборки и развертывания. Сервис может не только хранить SSH-ключики, но и подтягивать их из Vault. Сами плейбуки тоже можно хранить не локально, а забирать из Git. Есть простое API для интеграции. Ну и на десерт — уведомления в Telegram, чтобы вы всегда были в курсе, успешно ли завершилось то или иное действие.

Конечно, есть и изрядное количество минусов. Во-первых, значительно меньше функций, чем в AWX. Во-вторых, документация, мягко говоря, скудная и явно требует доработки. Ну и в-третьих, система хорошо справляется только с простыми задачами. Выстраивание сложных пайплайнов — это не про неё. Но когда требуется максимально простое решение без оглядки на функциональность, тут Ansible Semaphore покажет себя с лучшей стороны.

Что такое «сдвиг влево»

Поговорим о процессах и методологии. Тренд последних лет — обеспечение безопасности приложений на самых ранних этапах жизненного цикла разработки. Ещё его называют «сдвигом влево». Если рассматривать цепочку развёртывания как обычный конвейер, перемещающийся слева-направо, то процессы безопасности чаще всего запускаются на последних этапах разработки.

Чтобы устранять проблемы безопасности на ранних этапах, процессы необходимо сдвигать влево, перемещаясь к началу конвейера. Так гораздо проще решаются архитектурные проблемы, позже это становится практически невозможным. Побочным эффектом от «сдвига влево» станет ускорение поставок. Звучит не очень логично, но это так.

Когда разработчики на самых начальных этапах начинают уделять внимание вопросам безопасности, дальнейшие действия не требуют существенных временных затрат. По некоторым данным, например, в этой статье указывается, что выигрыш по времени может составить до 50%.

При этом порой формируется ложное впечатление, что «сдвиг влево» может снизить общий уровень защиты. Слой безопасности как бы «размазывается» на всю цепочку и уязвимости до продакшена не доходят. Важно понимать, что эта концепция не должна мешать непрерывности. Процесс начинается раньше, а заканчивается позже, как бы растягиваясь по конвейеру.

Кстати, существует и такой термин, как «сдвиг вправо», но звучит он гораздо реже. Применяется в основном к процессу приёмочного тестирования пользователями (User Acceptance Testing — UAT). Если этот процесс сдвинут влево, то часть проблем может всплыть потом и доставить массу неприятностей. Так что для UAT чаще всего будет применим именно «сдвиг вправо».

Митапы и конференции

Онлайн

Ruby Russia

Программа уже доступна на официальном сайте — регистрируйтесь и присоединяйтесь к нашей онлайн-конференции 30 сентября и 1 октября.

Полторы тысячи рубистов, заранее отснятые в студии доклады кинематографического качества и прямой эфир из Сколково: всё, чтобы собраться и обсудить интересующие вас темы из мира Ruby разработки!

Регистрация

 

Онлайн

DevOps Meetup

9 ноября 2022


Рады сообщить, что осенью у нас запланирован отличный DevOps Meetup. Программа мероприятия пока что формируется, но регистрация уже открыта. Детальная информация будет опубликована позже, так что следите за наши новостями. Если у вас есть идея доклада и вы хотите стать спикером, то пишите на почту andy@evrone.com.

Регистрация

Вакансии

Удаленка / Офис

Evrone 

 

Мы открыты для новых DevOps-инженеров. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.