🛠 Список вещей, из-за которых может начаться третья мировая война
Нет, не ядерная программа Северной Кореи. И даже не секретная армия роботов Израиля. На мой взгляд всё будет гораздо прозаичнее.
№1: bash-скрипты
Я никогда ещё не встречал вещи настолько могучей и настолько безобразной как скрипты на языке bash. Эти невидимые работяги, на плечах которых покоится без преувеличения половина современного цифрового мира, могут запросто перенаправить stderr неба в stdin Аллаха и даже не поперхнуться, хотя по условиям задачи надо было ровно наоборот.
Bash — это универсальный суперклей, который выполняет грязную работу по соединению всего со всем. При использовании важно помнить следующие моменты:
- Язык обладает очень ёмким(хотя и странным) синтаксисом. Возможно, поэтому на нём так легко прототипировать всякое одноразовое фуфло.
- В языке напрочь отсутствует типизация. Всё есть строка, живите теперь с этим. Есть, конечно, операторы, которые при острой необходимости позволят сравнить трактор с павианом, но я вас предупредил.
- Мало кто знает про
set -e
, ещё меньше (почти никто и никогда) людей запариваются над тестированием скриптов. При отсутствииset -e
скрипт будет переть как каток по горячему асфальту до самого конца дороги. Ошибка синтаксиса? Похер, работаем дальше. Нет файла или каталога? Похер, работаем дальше.
Всё вышесказанное прямо говорит о том, что скрипты на bash — это оружие судного дня. Их пишут один раз и потом о них забывают. До тех пор, пока всё не сломается или пока не перепишут весь код к петухам собачьим.
Операция сравнения трактора с павианом завершилась неудачно, ваш кластер будет удалён.
№2: переменные окружения
Ещё один потенциальный генератор катастроф, который довольно трудно подвергается тестированию.
Хорошо там, где есть "физическое" разделение тестинга и продакшна; ещё лучше там, где существует предпусковая проверка(health-check, который перед стартом потыкается во все сервисы и выдаст HTTP 503 в случае ошибки, что в свою очередь запустит роллбэк), но несмотря на всю накопленную годами мудрость ENV-бомбы продолжают взрываться.
Переменные окружения — это невидимые ниточки, за которые операционная система дёргает софт в юзерспейсе. Стоит дёрнуть не ту ниточку или не так — и может пиздануть так, что мало не покажется.
А ещё в переменные окружения часто суют credentials от каких-нибудь mission critical компонентов инфраструктуры. Что произойдет при их утечке наружу можете представить и сами.
№3: регулярные выражения
За примерами далеко ходить не надо: вот и вот. В обоих случаях как следствие весь Интернет ебал вола и терял деньги в течение довольно ощутимого промежутка времени. Недопроверили регулярку? Будьте уверены — пизданёт с грохотом.
Как и в случае с bash, регулярки — мощный инструмент с ёмким синтаксисом, который совершенно не предназначен для чтения и понимания людьми. Можно было бы заменить их на Verbal Expressions, но только вот где найти столько времени и столько обезьянок чтобы переписать все регулярки на вербалки?
Mon, 7 Oct 2019 21:42:07 +0200
RSS // Telegram // Статистика