Size: a a a

DevOps Jobs - работа и аналитика

2020 May 24

DT

Dmitry Titov in DevOps Jobs - работа и аналитика
Adolf Stallman
Ты думаешь, тебе нужны будут эти деньги?
Нет, поверь мне, в случае серьезного простоя тебе просто крышка
О чем и речь, смысл от этих СЛА 99.9999
если большинство провайдеров вернет тебе деньги за простой
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
если ты рашен бизнес.... ну, ты выживешь скорее всего
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
кто же там ложился...
источник

DT

Dmitry Titov in DevOps Jobs - работа и аналитика
а убыток у тебя измеряется не в затратах на виртуалочки
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
лол
источник

AS

Adolf Stallman in DevOps Jobs - работа и аналитика
George Gaál
это если ты всратостартап
Неважно, стартап ты или нет
источник

AS

Adolf Stallman in DevOps Jobs - работа и аналитика
Важно, был ли у тебя DRP
Свой собственный, а не провайдерский
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
Додо как-то пережили падение
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
только как искусственная причина была падения
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
​​Мы в iGooods лежали почти полдня. Стыдно! Зря я угорал вчера над утконосом, что они упали. Поделюсь честно, от чего мы лежали. Это подробный постмортем аварии с техническими подробностями, мама, извини.



Из-за коронавируса к нам начали приходить в 2-3 раза больше клиентов, чем обычно. Плюс у нас на днях запускается два новых партнерства — с Joom и с магазинами Лента. Серверы работали на 40-60 процентах емкости и мы решили «добавить железа». В 6 вечера мы налили пару новых машин в кластер приложений, в час ночи по Москве — перетащили базу на новую, ультра мощную тачку. Обе операции — необычные для iGooods, множество вещей делалось руками. Ошибка №0 — мы сделали 2 крупных изменения близко друг с другом

В 7 утра по Москве, сервер базы данных начал плавиться от нагрузки в процессор. Это компьютер с 70 ядрами, но базе нужно было минимум 300. Запросов было вроде бы не сильно больше, чем обычно, но занимали они всё больше времени. Люди просыпались у себя дома и начинали делать заказы — сервера умирали, сайт не открывался, приложения выдавали ошибки. Самое опасное — курьеры и сборщики заказов выходили на работу и не могли работать.

Мы, конечно, думали, что сможем быстро починить проблему. Через час стало понятно, что нужно хотя бы временное решение. Мы выключили все пользовательские интерфейсы iGooods, оставив рабочей только админку и внутренние приложения курьеров и пикеров (сборщиков заказов). Ошибка №1 — в случае аварии не нужно пытаться «сделать хорошо», нужно определить критичные сервисы и восстановить их первым делом.

Мы решили, что проблема в новой базе данных. Мало ли, конфигурация, железо, да хоть драйверы. Попытались вернуться на старый сервер. Мы не сохранили WAL логи между переездами, так что вместо 3 минут эта операция заняла 40 минут — пришлось перегнать всю базу данных между серверами. Мы планировали откат для приложений, но не для переноса базы — он нам казался довольно безопасной операцией. Ошибка №2 — мы решили, что «уж тут-то не взорвется», на самом деле вместе с любым изменением нужно продумывать пути отката.

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

В конце концов, Женя случайно заметили ошибку, что наше rails приложение не может записать в redis-кеш. BINGO! Вот тут всё наконец-то встало на свои места. В нашем приложении есть много страниц, которые собираются очень долго. Все они кешируются rails'ами в redis. И вот этот редис кеш у нас отвалился на запись на части серверов приложений из-за кривых настроек окружения (душераздирающие подробности приложены картинкой). Кеш протухал постепенно и с каждой потерянной записью все больше тяжелых запросов грузили Postgres. Ошибки №3, 4 и 5: настройка тачек производится руками, не кодом; логи переполнены, так что сложно заметить новую ошибку; не все важные сервисы (redis, rails cache) включены в мониторинг.

Как вы можете видеть, всё довольно банально. Будь у нас настроена нормальная рабочая среда — не было бы такой аварии.

Итак, чего нам не хватило и что мы приведем в порядок:
- инфраструктура в коде (полный ansible вместо хождения руками на серверы);
- хороший, чистый мониторинг всех ключевых метрик приложения,  APM — за день до аварии мы включили Datadog, но ещё не было нормальных дэшбордов и исторических данных;
- сообщения об ошибках (у нас bugsnag) засраны нерелевантными сообщеними — их нужно почистить.

Мы с Федей обозначили проблемы в первые же дни, но не успели решить их — были вещи поважнее. Знал бы прикуп — жил бы в Сочи.

Если у вас похожая ситуация — рекомендую навести порядок заранее, не ждать форс-мажора.

Ну и делать много сложных правок вместе — чревато. Стоило разнести перенос базы и деплой новых машин на день — тогда бы мы не потратили так много времени на ложный след тормозной базы.

Fin.
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
дивапс который мы все заслужили
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
комменты будут?
источник

RK

R K in DevOps Jobs - работа и аналитика
bofh666
Да нету никакого стека)) Я ж написал, что есть требования твои от жизни и требования работодателей потенциальных

Карьера? Хммм... комлюктерный клуб (нормальный, а не тот, где контра и гопники), книги-книги-книги, домашний комлюктер, профильный ВУЗ, параллельно начало подработок комплюктерным ничтожеством типа как щас мастер, живу рядом, приеду быстро (на самом деле адище был), далее офисные "ЛВС на виндус" с влажными мечтами о MCSA и CCNA хотя бы, потом каким-то раком попал в сурьезный бизнес, где был Оракол (примерно оттуда начался интерес к линупсу), дальше опять говно какое-то офисное, потом скитания с какой-то вообще лютой хуйней, потом, опять же, повезло, попал в стартап (ураблять! прорыфф и модное слово!), где можно было в одну каску уже нормально развернуться и пилить нормальную масштабную хуйню в плане админства сетевого и вообще, ставить условия, принимать решения и т.д., но не склалось, дальше какая-то мелкая хуйня, много, плюс начало попыток работы на себя удаленно, вот там бессонные ночи, ни пожрать, ни посрать, потом внезапно очень сильно повезло (с людьми) — старший инженегр в крупном интеграторе со всяким энтерпрайз железом, далее бодишоп на букву Лю и там уже внутренняя галера на совсем кровавый энтерпрайз (Дойчебанк), но меня поменяли на индусов, поэтому пришлось попробоваться в госухуи, но случился очередной поворот, и я попал в человеческий геймдев... но и там, блять, не было девопс!) да и нет его нигде — с тех пор много воды утекло еще, но это все уже под NDA, хехе ;)

ЗЫ Тут наверняка присутствуют маститые кадровики, которые используют аббревиатуру CV вместо резюме. Так вот CV — это что выше, а не то, что вы там себе думаете, просматривая резюме на ХХшечке или других "работных сайтах"
Ясно. Ну стек есть, сам сформировался думаю. Кароч понял, буду двигаться поступательно. Про резюме не понял мысль. Вы про "чистый опыт"?
источник

GG

George Gaál in DevOps Jobs - работа и аналитика
источник

AS

Adolf Stallman in DevOps Jobs - работа и аналитика
George Gaál
комменты будут?
Классика
источник

AS

Adolf Stallman in DevOps Jobs - работа и аналитика
В целом, ничего сложного и необычного
источник

AS

Adolf Stallman in DevOps Jobs - работа и аналитика
2020-й год, рельсы, руби, Россия, посмортем, который, почему-то, было не стыдно писать и потом не стыдно читать
источник

b

bofh666 in DevOps Jobs - работа и аналитика
R K
Ясно. Ну стек есть, сам сформировался думаю. Кароч понял, буду двигаться поступательно. Про резюме не понял мысль. Вы про "чистый опыт"?
Про резюме — это выпад в сторону тупых кадровиц, которые не понимают разницу между CV (curriculum vitae, жизнеописанием) и резюме.
источник