Forwarded from Experimental chill
Метастабильные падения
Я просто обожаю эксплуатацию.
Практически никто о метастабильных падениях не говорит, они достаточно бессистемные, но кажется на своей практике поиска и вот сейчас мап редьюса я столкнулся просто со всем, что написано в статье.
Метастабильные падения это падения, которые вызваны непредвиденными обстоятельствами и даже если их убрать, то система не восстанавливается и продолжает не работать. Скажем, DDOS атака сама по себе не является метастабильным падением. Вы можете её убрать, и система продолжит хорошо работать.
Ретраи
Рассмотрим пример. Скажем, вы пишете сервис Google Maps API для поиска маршрута. Новый релиз разломал бэкенд карт. Надо откатывать, но вот незадача, ваше API используется очень тупыми железками вроде GPS навигаторов. Они перезапрашивают в цикле. В итоге бэкенд карт разломался, вы пытаетесь откатить изменения, а из-за количества запросов бэкенд снова валится. Вы снова пытаетесь поднять инстансы, а они не держат эту нагрузку. В итоге система сломана, надо очень сильно понижать нагрузку уровнями выше.
Кэш
Другой пример. Сундар Пичай рассказывал конгрессу, что в поиске примерно 50% запросов, которые задаются единожды и не повторяются другими пользователями. Когда вы видите, что 50% запросов можно отвечать, не ходя на бэкенд, то вы сделаете себе кэш. Кэш понизит лэтенси, будет крутой оптимизацией. Но...
Скажем, кэш для поиска работает днями, с ним все хорошо, проходят релизы. В один момент формат кэша поменялся и все таки надо его сбросить. Сбрасывайте, а бэкенд не может выдержать нагрузки! А он нужен для того, чтобы набрать кэш. В итоге вы не можете набрать кэш, потому что бэкенд развалился, кэш уже сбросился и невалиден. Как минимум вы застряли в системе, которая не двигается вперёд, как максимум это просто ад восстанавливать из-за многих релизов бекенда.
Сверхоптимизации
Третий пример, которого я страшно боюсь в своей работе. В мапредьюсе надо решить, сколько вы должны заплодить машин, как подробить данные для выполнения работы на той или иной стадии, чтобы минимизировать выполнение. Это моделька машинного обучения, и машинное обучение может ошибаться на высоких квантилях. В итоге приходит пользователь, у него пайплайн работал день, а теперь не может завершиться 10 дней из-за плохих решений автоскейлинга. Да что там говорить, ресурсов всей компании не хватит с такими решениями модельки, чтобы завершить пайплайн за месяц.
Что произошло на самом деле:
1. Мы научились оптимизировать пайплайн очень хорошо, без модельки он завершался
2. Пайплайн вырос в сотню раз, но мы все ещё хорошо его оптимизировали
3. Мы поменяли модельку оптимизации
4. Теперь не хватит ресурсов компании его завершить
В итоге надо руками прописывать как запускать стадии, что противоречит всем моделям эластичности Клауда.
Ближайший простой пример: алгоритмам сжатия не стоит иметь формат, который умеет сжимать в экспоненту раз, а то и в квадрат. Из-за этого есть zip-бомбы.
Все такие примеры очень показательны, что распределенные системы странно ломаются и входят в такой порочный круг, и часто их оптимизации могут привести к таким состояниям, когда они ломаются и сами не починятся. В литературе практически никогда ничего не говорится про такие идеи.
Решения, которые стоит рассматривать при проектировке
* Приоритеты. Делать приоритеты хорошим запросам.
* Лимиты. Если что-то оптимизируете, не оптимизируете это в сотню раз, если можете эту сотню в итоге потерять и не справиться.
* Всегда планировать нагрузку без оптимизаций, которые когда-то могут не работать, в том числе кэши. Пусть оно замедлит на 100ms ответ, но оно хотя бы не упадёт. Учения, стресс тестирование пригодится.
* Деградация. Попытайтесь задизайнить бэкенд, чтобы он эластично деградировал, скажем, не искать лучший маршрут в Google Maps, а рассматривать только X%.
* Следите за системой, одно падение может обнаружить баг, который был годами. Обычно происходит так: система ломается чуть-чуть, что-то подозрительное происходит, на след день что-то ещё хуже, через 2 дня всё падает крахом.
[1] Metastable Failures in Distributed Systems
Я просто обожаю эксплуатацию.
Практически никто о метастабильных падениях не говорит, они достаточно бессистемные, но кажется на своей практике поиска и вот сейчас мап редьюса я столкнулся просто со всем, что написано в статье.
Метастабильные падения это падения, которые вызваны непредвиденными обстоятельствами и даже если их убрать, то система не восстанавливается и продолжает не работать. Скажем, DDOS атака сама по себе не является метастабильным падением. Вы можете её убрать, и система продолжит хорошо работать.
Ретраи
Рассмотрим пример. Скажем, вы пишете сервис Google Maps API для поиска маршрута. Новый релиз разломал бэкенд карт. Надо откатывать, но вот незадача, ваше API используется очень тупыми железками вроде GPS навигаторов. Они перезапрашивают в цикле. В итоге бэкенд карт разломался, вы пытаетесь откатить изменения, а из-за количества запросов бэкенд снова валится. Вы снова пытаетесь поднять инстансы, а они не держат эту нагрузку. В итоге система сломана, надо очень сильно понижать нагрузку уровнями выше.
Кэш
Другой пример. Сундар Пичай рассказывал конгрессу, что в поиске примерно 50% запросов, которые задаются единожды и не повторяются другими пользователями. Когда вы видите, что 50% запросов можно отвечать, не ходя на бэкенд, то вы сделаете себе кэш. Кэш понизит лэтенси, будет крутой оптимизацией. Но...
Скажем, кэш для поиска работает днями, с ним все хорошо, проходят релизы. В один момент формат кэша поменялся и все таки надо его сбросить. Сбрасывайте, а бэкенд не может выдержать нагрузки! А он нужен для того, чтобы набрать кэш. В итоге вы не можете набрать кэш, потому что бэкенд развалился, кэш уже сбросился и невалиден. Как минимум вы застряли в системе, которая не двигается вперёд, как максимум это просто ад восстанавливать из-за многих релизов бекенда.
Сверхоптимизации
Третий пример, которого я страшно боюсь в своей работе. В мапредьюсе надо решить, сколько вы должны заплодить машин, как подробить данные для выполнения работы на той или иной стадии, чтобы минимизировать выполнение. Это моделька машинного обучения, и машинное обучение может ошибаться на высоких квантилях. В итоге приходит пользователь, у него пайплайн работал день, а теперь не может завершиться 10 дней из-за плохих решений автоскейлинга. Да что там говорить, ресурсов всей компании не хватит с такими решениями модельки, чтобы завершить пайплайн за месяц.
Что произошло на самом деле:
1. Мы научились оптимизировать пайплайн очень хорошо, без модельки он завершался
2. Пайплайн вырос в сотню раз, но мы все ещё хорошо его оптимизировали
3. Мы поменяли модельку оптимизации
4. Теперь не хватит ресурсов компании его завершить
В итоге надо руками прописывать как запускать стадии, что противоречит всем моделям эластичности Клауда.
Ближайший простой пример: алгоритмам сжатия не стоит иметь формат, который умеет сжимать в экспоненту раз, а то и в квадрат. Из-за этого есть zip-бомбы.
Все такие примеры очень показательны, что распределенные системы странно ломаются и входят в такой порочный круг, и часто их оптимизации могут привести к таким состояниям, когда они ломаются и сами не починятся. В литературе практически никогда ничего не говорится про такие идеи.
Решения, которые стоит рассматривать при проектировке
* Приоритеты. Делать приоритеты хорошим запросам.
* Лимиты. Если что-то оптимизируете, не оптимизируете это в сотню раз, если можете эту сотню в итоге потерять и не справиться.
* Всегда планировать нагрузку без оптимизаций, которые когда-то могут не работать, в том числе кэши. Пусть оно замедлит на 100ms ответ, но оно хотя бы не упадёт. Учения, стресс тестирование пригодится.
* Деградация. Попытайтесь задизайнить бэкенд, чтобы он эластично деградировал, скажем, не искать лучший маршрут в Google Maps, а рассматривать только X%.
* Следите за системой, одно падение может обнаружить баг, который был годами. Обычно происходит так: система ломается чуть-чуть, что-то подозрительное происходит, на след день что-то ещё хуже, через 2 дня всё падает крахом.
[1] Metastable Failures in Distributed Systems
Forwarded from Andrei Yangabishev
Я сейчас просматриваю лекции и семинары ФПМИ за 2021. Просто офигенный лектор
https://mipt.ru/online/algoritmov-i-tekhnologiy/teoriya-ORS.php
https://mipt.ru/online/algoritmov-i-tekhnologiy/teoriya-ORS.php
mipt.ru
Липовский Р.Г. Теория отказоустойчивых распределенных систем
Курс лекций, 3 курс 2019
Forwarded from Vadim Shender
Это 19-й год. Если что, вот лекции 20-го: https://www.youtube.com/playlist?list=PL4_hYwCyhAvZaJ3CJlGo9FxOTA2bS1YyN, семинары: https://www.youtube.com/playlist?list=PL4_hYwCyhAvZTjajkPpwgR29jyx81lMCl, репозиторий на github: https://gitlab.com/Lipovsky/distsys-course.
Forwarded from DevOps Deflope News
Сайт с аннотированными примерами GitHub Actions для новичков
http://a.e42.link/jmO5Y
http://a.e42.link/jmO5Y
GitHub Actions by Example
GitHub Actions by Example is an introduction to the service through annotated examples.
Forwarded from sudo rm -rf /*
Короче говоря, вот ресурс подробно расписывающий все нюансы индексирования и тюнинга баз данных. На языке понятном разработчику (а значит и администратору).
А еще автор (Markus Winand) написал довольно толковую книгу SQL Performance Explained, и сайт Use the Index Luke это как бы бесплатная веб-версия этой DBA Bible.
А еще автор (Markus Winand) написал довольно толковую книгу SQL Performance Explained, и сайт Use the Index Luke это как бы бесплатная веб-версия этой DBA Bible.
Use-The-Index-Luke
SQL Indexing and Tuning e-Book for developers: Use The Index, Luke covers Oracle, MySQL, PostgreSQL, SQL Server, ...
SQL indexing and tuning tutorial for developers. No unnecessary database details—just what developers need to know. Covers all major SQL databases.
Forwarded from Записки админа
😈 Why we're migrating (many of) our servers from Linux to FreeBSD - ещё одна статья о том, почему FreeBSD может оказаться хорошим выбором для прода. Для бывалых админов аргументы известны, и не лишены смысла местами.
#freebsd #напочитать #фидбечат
#freebsd #напочитать #фидбечат
Forwarded from Записки админа
🐧 Интересный ресурс, на котором можно изучить работу systemd и попрактиковаться с разными вариантами запуска https://systemd-by-example.com #systemd #линк
Forwarded from Записки админа
🛠 Ещё немного полезных рекомендаций для написания скриптов - Modern Bash (Zsh) Scripting. #bash #zsh #scripts
Forwarded from sudo rm -rf /*
This media is not supported in your browser
VIEW IN TELEGRAM
dive: инструмент, который вам визуально покажет изменения, происходящие на каждом слое в имадже. Отлично подходит чтобы найти мертвую проститутку, которую запаковали в контейнер 7 слоёв тому назад.
Forwarded from Блог Сергея Баранова
Годнота. Проектирование мессенджеров вроде WhatsApp
http://highscalability.com/blog/2022/1/3/designing-whatsapp.html
http://highscalability.com/blog/2022/1/3/designing-whatsapp.html
Forwarded from Записки админа
🐧 Хм, неужели я дожил до статей вида "Reclaiming the lost art of Linux server administration"...
А поделитесь мнением, камрады, как считаете - где сейчас находится то самое старое доброе системное администрирование linux? Нужно ли оно современному специалисту? Или же всё вот это вот "запустить собственный блог на виртуальном сервере, поставив весь нужный софт напрямую" уже не так что бы сильно кому-то и требуется в век облачных технологий, автоматизаций и описания всего as a code?
Что скажете? Давайте перед началом рабочей недели немного разомнём голову... #linux #напочитать
А поделитесь мнением, камрады, как считаете - где сейчас находится то самое старое доброе системное администрирование linux? Нужно ли оно современному специалисту? Или же всё вот это вот "запустить собственный блог на виртуальном сервере, поставив весь нужный софт напрямую" уже не так что бы сильно кому-то и требуется в век облачных технологий, автоматизаций и описания всего as a code?
Что скажете? Давайте перед началом рабочей недели немного разомнём голову... #linux #напочитать
Forwarded from ДевОпс Інженер 🇺🇦 (Oleg Mykolaichenko)
Elasticstack Provider
Зарелизили ElasticStack провайдер для Terraform.
Можно:
1. Свой сетап (не обязательно Elastic Cloud)
2. Создание, сетинги и мапинги индексов
3. Lifecycle Policy для индексов (полезно)
4. Индекс темплейт для новых индексов
5. Юзеров и частично snapshot api
Нельзя:
- Kibana, и все что касается Kibana - ноль ресурсов
- Очень жду Kibana dashboards as a Code
https://registry.terraform.io/providers/elastic/elasticstack/latest/docs
UPD: В коментах подсказали, что также есть рабочий оператор:
https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html
Зарелизили ElasticStack провайдер для Terraform.
Можно:
1. Свой сетап (не обязательно Elastic Cloud)
2. Создание, сетинги и мапинги индексов
3. Lifecycle Policy для индексов (полезно)
4. Индекс темплейт для новых индексов
5. Юзеров и частично snapshot api
Нельзя:
- Kibana, и все что касается Kibana - ноль ресурсов
- Очень жду Kibana dashboards as a Code
https://registry.terraform.io/providers/elastic/elasticstack/latest/docs
UPD: В коментах подсказали, что также есть рабочий оператор:
https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html
Forwarded from Dima Olliak
Про алерты классную статью вот недавно читал. Как чуваки в Netflix потонули в алертах по превышению порогового значения и научились определять в ряду значений changepoints - моменты, после которых что-то пошло не так.
https://netflixtechblog.com/fixing-performance-regressions-before-they-happen-eab2602b86fe
https://netflixtechblog.com/fixing-performance-regressions-before-they-happen-eab2602b86fe
Forwarded from D0znpp
Друзья! Мы сделали опенсорс фаервол для апишек. Он проверяет запросы и ответы по сваггеру как прокси и может блокировать или писать в лог, когда не матчится. https://github.com/wallarm/api-firewall быстрее чем nginx на 60%
GitHub
GitHub - wallarm/api-firewall: Fast and light-weight API proxy firewall for request and response validation by OpenAPI specs.
Fast and light-weight API proxy firewall for request and response validation by OpenAPI specs. - GitHub - wallarm/api-firewall: Fast and light-weight API proxy firewall for request and response va...
Forwarded from Мониторим ИТ
How to use Prometheus for anomaly detection in GitLab
One of the more basic functions of the Prometheus query language is real-time aggregation of time series data. Andrew Newdigate, a distinguished engineer on the GitLab infrastructure team, hypothesized that Prometheus query language can also be used to detect anomalies in time series data. Читать дальше в блоге Гитлаб.
One of the more basic functions of the Prometheus query language is real-time aggregation of time series data. Andrew Newdigate, a distinguished engineer on the GitLab infrastructure team, hypothesized that Prometheus query language can also be used to detect anomalies in time series data. Читать дальше в блоге Гитлаб.