Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Исследуйте яркий мир с бесконечными головоломками и разнообразными средами в каждой главе. Расширьте свои возможности с помощью захватывающих испытаний на время со специальными типами шариков, которые помогут вам в пути.

Квест Зумба

Казуальные, Три в ряд, Головоломки

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
573
imctobitch
imctobitch
Норм автор
IT-юмор
Серия I'm CTO, bitch
1 месяц назад

Подписка на ежедневные логи⁠⁠

Подписка на ежедневные логи I`m CTO bitch, IT юмор, Разработка, Скриншот, Истории из жизни, Троллинг, Мат, Некомпетентность, Админ, Sre, Логи

😡 Телеграм-канал

Показать полностью 1
[моё] I`m CTO bitch IT юмор Разработка Скриншот Истории из жизни Троллинг Мат Некомпетентность Админ Sre Логи
85
71
DmitriitheFals
4 месяца назад
Лига Сисадминов
Серия Унылое графоманство и ковыряние в носу

Ответ на пост «Сисадмин эволюционировал в DevOps — и вот что из этого вышло»⁠⁠1

Что за бред я прочитал под видом длинопоста месячной давности?
И почему не надо хоститься в Git In Sky, судя по этому посту.

Для лиги лени: опять на Пикабу тащат старье с выродившегося в маркетинг хабра

стал DevOps-тимлидом
Вместо трелей будильника мой телефон издает тревожный звон сообщений из системы мониторинга и экстренных звонков от клиента.

На телефон лида никогда, ни при каких обстоятельствах, не идут ни данные мониторинга, ни звонки от клиентов. Вообще никогда. И то, и другое, идет на первую линию, максимум на вторую.

вижу, что сломалась база данных. В такой ранний час из кластера предательски вывалилась одна нода.

База данных не "ломается" просто так. Кроме случаев, когда в нее кто-то кривыми руками полез, и что-то в ней удалил. И ни в каком случае это не связано с выпадением ноды из кластера.
Есть два основных сценария:
1 База данных не очень важна, не очень нужна, и можно положиться на работу сервиса High availability (HA). Ну умерла одна физическая нода, да и ладно, через 2-5 минут система перезагрузится на другой
2 База данных важна, нужна, и очень нужна. В таком случае строится или RAC или Always on, в разных вариантах, по бедности, и когда база все же нужна, но не очень, можно обойтись Pacemaker&Corosync, или Patroni . Stolon может быть. Если вы смелый и старый - Galera.

При любых условиях выпадение ноды из кластера порождает только алерты, которые закрываются первой линией.

Как мне подсказывают, еще такое "отсутствие HA" бывает при внедрении "типа-импортозамещения" методом далее-далее, там HA отсутствует, в привычном понимании.

Инициализировав новую ноду и добавив ее в кластер

Чего чего там происходит? Достав со склада холодный резерв? И за 5 минут его подготовив к работе, прямо из дома в ЦОД? Что я только что прочитал?
И при чем тут девопс лид?

Подъем по тревоге” ночью или в выходные происходит не часто (один-два раза в месяц).

Это значит, что система абсолютно не настроена, и построена из говна и свиста. Нет резервов, нет кластера, нет людей. Все задачи свалены на как-бы лида, но по фактическим задачам - инженера, ответственного за физическую инфраструктуру.

Как и у многих хостинговых компаний на рынке, у нас сложилась “многоярусная” система реагирования на проблемы с инфраструктурой.

Но при чем тут девопс, если речь про хостинг? Где тут в схеме "вышел из строя физический сервер" - CI или CD ?

Мы сознательно отказались от полностью автоматической системы и поставили между инфраструктурой и инженерами людей. Автоматика бы отзванивалась на любой чих в системе.

То есть автоматика не просто не настроена, ее вообще нет.

Сегодня инженер, ответственный за проект, не подошел к телефону

Как легко увидеть, налицо экономия на качестве и кадрах. Нормальная система слежения требует 2 (двух) людей на уровне, и только потом эскалацию на уровень выше. Опять же, совершенно не поняна иерархия - почему заявлены проблемы в железной части, но звонок ушел на девопс-инженера и девопс-лида?

Умываюсь и иду на дейлик в 10:00 по Москве, где мы отчитываемся о наших задачах.

Ответ на пост «Сисадмин эволюционировал в DevOps — и вот что из этого вышло» DevOps, Тимлид, Сисадмин, Мониторинг, Gitlab, Sre, Аутсорсинг, Рутина, Кластер, Длиннопост, IT, Посты на Пикабу, Видео, YouTube, Ответ на пост

Собери совещание

Обязательно присутствуют проджекты, которые приносят обратную связь от заказчиков - допустим, клиент приходил в пятницу и просил побыстрее что-то сделать. Мы оцениваем срочность и, если это необходимо, раздвигаем очередь задач, чтобы сфокусироваться на самом важном.

то есть спринтов нет, метод "бегаем туда - бегаем сюда".

Классика.

В общей сложности на опрос 20 с лишним человек уходит 18-20 минут.

20 человек в девопс команде на одного лида, но при этом один дежурный инженер? Цифры не сходятся. Никак.

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

Исправлять ситуацию, конечно, никто не собирался. Но это уже другая история

Послеобеденное время — период, когда можно тет-а-тет обсудить задачи коллег. Сегодня, например, минут 40 проводил плановый performance-аудит баз данных одного из проектов.

Какое отношение perf аудит, который зависит еще и от запросов, не говоря про оптимизацию внутри базы, чем занимаются DBA, имеет к devops ? Да, observability находится на мониторинге, в том числе, у devops команды, но в реальном мире devops инженер обычно не лезет в план запросов.

Помимо встреч, мне с разных сторон прилетают задачки. Например, приходят коллеги из отдела маркетинга с заявками от клиентов. Они ждут совета, как и в какой пакет обернуть требуемую услугу, какую сделать презентацию. Будучи архитектором,

только что был девопс лидом, а стал архитектором. Волшебная трансформация. Маркетолог, писавший текст, забыл о чем писал?

Вечером, уже дома, могу посмотреть кино с женой или сажусь за свой пет-проект.

После подьема по алерту в 4 утра, два раза в месяц, к 20 человек падает в кровать. Какой уж тут пет-проект.

Впрочем, удивляться нечему. Если текст размещен на Хабре в 2025 - значит, это обычное маркетинговое творение. Накрыть пленкой, весной закопать в грядки перед посадкой картошки.

Показать полностью 1 1
[моё] DevOps Тимлид Сисадмин Мониторинг Gitlab Sre Аутсорсинг Рутина Кластер Длиннопост IT Посты на Пикабу Видео YouTube Ответ на пост
5
15
gitinsky
gitinsky
5 месяцев назад
Лига Сисадминов

Сисадмин эволюционировал в DevOps — и вот что из этого вышло⁠⁠1

Дмитрий, тимлид DevOps-команды в Git In Sky, о том, как проходят будни DevOps-инженера и какие вызовы приносит стремительный рост рынка облачных решений.

Был сисадмином, затем техническим директором — стал DevOps-тимлидом. В идеальном мире моя задача — автоматизировать рутину, настроить CI/CD, мониторинг и придерживаться принципа “Инфраструктура как код”.

Но это в теории. На практике же стабильность системы держится на честном слове, пока кто-то не решит "чуть-чуть поправить" прод. Поэтому DevOps — это вечный "День Радио" в отдельно взятой инфраструктуре.

“День Радио” — это фильм с сюжетом, что в прямом эфире вот-вот должен стартовать марафон, но за десять минут до начала выясняется, что заранее подготовленная тема перехвачена конкурентами. И начинается суета и множество сюжетных поворотов и проблем 🙂

6:00. С добрым утром, кластер

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

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

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

“Подъем по тревоге” ночью или в выходные происходит не часто (один-два раза в месяц). Только если отваливается проект, по которому ответственный я, или кто-то из инженеров моей группы, который не смог принять вызов.

Как и у многих хостинговых компаний на рынке, у нас сложилась “многоярусная” система реагирования на проблемы с инфраструктурой. Первый уровень - это младшие дежурные, которые сидят посменно: по 12 часов в режиме 24/7. Когда-то и я начинал с такого, но в другой компании.

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

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

Сегодня инженер, ответственный за проект, не подошел к телефону, но цепочка остановилась на мне.

10:00. Утренний скрам

Сисадмин эволюционировал в DevOps — и вот что из этого вышло DevOps, Тимлид, Сисадмин, Мониторинг, Gitlab, Sre, Аутсорсинг, Рутина, Кластер, Длиннопост

Штатный подъем — тремя часами позже. Умываюсь и иду на дейлик в 10:00 по Москве, где мы отчитываемся о наших задачах. Как правило, по задачам у нас две встречи: ровно в десять мы отчитываемся, что делали вчера — в данном случае в пятницу, что произошло за выходные, что будем делать сегодня и в какой последовательности.

Эта встреча помогает правильно расставить приоритеты. Обязательно присутствуют проджекты, которые приносят обратную связь от заказчиков - допустим, клиент приходил в пятницу и просил побыстрее что-то сделать. Мы оцениваем срочность и, если это необходимо, раздвигаем очередь задач, чтобы сфокусироваться на самом важном.

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

10:20. Разбор полетов

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

В целом в подобных ситуациях мы друг на друга не обижаемся. У нас сыгранная команда и доброжелательные отношения. В данном случае было бы гораздо хуже, если бы я был недостаточно знаком с проектом. В подобных случаях понять даже самые простые вещи спросонья не так-то просто.

На After scrum мы обсуждаем не только инциденты, но и то, кому и как решать те или иные задачи. Младшие приходят к старшим, а я часто выступаю эдаким “играющим тренером” - раздаю ребятам задачки, принимаю результаты работы и даю подсказки, наводящие на решения возникающих трудностей.

Чаще всего, кстати, при приемке срабатывает проверка “на дурака” - что в задаче действительно выполнены все пункты, именно так, как просил клиент, а не как додумал DevOps-инженер. В анализе задач всегда приходится включать здравый смысл. В нашей сфере задача вполне может быть решена (допустим, попросили добавить какой-то флаг PHP — ты добавил), а проблема клиента — нет. Это частая история. Иногда даже приходится применять решение, противоречащее best practice, потому что именно оно, а не что-то другое, решает задачу клиента.

11:00. Архитектурный созвон

Расходимся мы около 11 часов. После этого по понедельникам я созваниваюсь с архитекторами — это 3-4 человека по всей команде. Зачастую присутствуют и проджекты, которые ведут данные проекты.

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

В другие дни недели вместо архитектурной встречи у меня есть час или два свободного времени, чтобы решить свои задачи.

12:30. Анализ логов

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

Скорее всего роль сыграли изменения от разработки клиента. Моя задача: описать случившееся и отчитаться об общем даунтайме, если он был. Сегодня инцидент имел место, но система просто перешла в режим деградации, на продукте это никак не сказалось. Готовый отчет я направляю разработчику, который ведет проект со стороны клиента, а также прикладываю к задаче в нашем таск-трекере (в зависимости от того, каким инструментом пользуется клиент).

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

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

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

14:00. Ворох задач

Сисадмин эволюционировал в DevOps — и вот что из этого вышло DevOps, Тимлид, Сисадмин, Мониторинг, Gitlab, Sre, Аутсорсинг, Рутина, Кластер, Длиннопост

Послеобеденное время — период, когда можно тет-а-тет обсудить задачи коллег. Сегодня, например, минут 40 проводил плановый performance-аудит баз данных одного из проектов. Потом отвечал на вопросе в чате пресейлов.

Помимо встреч, мне с разных сторон прилетают задачки. Например, приходят коллеги из отдела маркетинга с заявками от клиентов. Они ждут совета, как и в какой пакет обернуть требуемую услугу, какую сделать презентацию. Будучи архитектором, я также занимаюсь планированием различных работ и разбором уже выполненных операций перед тем, как они будут сданы клиенту. А еще с каждым из клиентов у меня есть еженедельный созвон по событиям за эту неделю. Могу так же, как инженер, сделать какие-то задачи из общего трекера: сегодня я переделал раннеры в GitLab CI, достал данные из логов по просьбе коллеги, ответил на вопросы в чате разработчиков.

В своей работе мы в основном опираемся на подход инфраструктура как код (Iaac). Основные инструменты — Ansible и Terraform, так что 80% времени мы работаем с заготовками Ansible. У нас есть копилка плейбуков для Ansible, которые модифицируются всеми командами. Это общий котел с заготовками, откуда мы периодически вынимаем и добавляем нужное. Но вопросы в чате все равно возникают часто.

Иногда дело доходит и до собеседований. Как именно я собеседую — на что и почему смотрю — я расскажу отдельно. Это довольно обширная тема.

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

19:00. Вечер трудного дня

Мой рабочий день заканчивается в 19 часов. Под конец дня я заполняю отчет, куда потратил свое время - мы трекаем все в Redmine. После этого иду к техдиру и спрашиваю в переписке, как прошел день, какие есть проблемы, не нужно ли что-то подхватить. Делаю я это уже обычно с телефона, сидя на кухне. С техдиром мы в свободной форме обсуждаем ситуацию и расходимся отдыхать.

Кажется, что мой график не нормирован. Но на самом деле это только одна сторона медали. Вторая сторона, что я могу работать всего 4 часа за день. У нас свободное отношение к присутствию на рабочем месте (если не случился инцидент, конечно). Надо жену в магазин отвезти посреди дня — пожалуйста. В МФЦ документы подать — тоже без проблем.

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

Вне дома я люблю слушать аудиокниги. В последнее время мне нравится "боярка". Порой книги настолько увлекают, что я даже пытаюсь растянуть дорогу на машине, чтобы послушать подольше. Сейчас слушаю “Идеальный мир для лекаря”.

Вечером, уже дома, могу посмотреть кино с женой или сажусь за свой пет-проект. Просто изучать технологии мне уже не так неинтересно, а под конкретную задачу — вполне. В рамках пет-проекта я собираю опенсорсный сервис мониторинга — эдакий “швейцарский нож” девопсов. Пытаюсь найти для него кирпичики: смотрю чужие проекты и сервисы, экспериментирую с ними. Там бывают интересные задачки — можно случайно залипнуть и “очнуться” в 3 часа ночи, понимая, что уже как 3 часа ты должен спать =D.

Сисадмин эволюционировал в DevOps — и вот что из этого вышло DevOps, Тимлид, Сисадмин, Мониторинг, Gitlab, Sre, Аутсорсинг, Рутина, Кластер, Длиннопост

День подошел к концу. Завтра снова буду следить за инфраструктурой и чинить возникающие поломки, чтобы сделать разработчиков наших клиентов чуть более счастливыми.

Хочу запросить обратную связь у коллег-айтишников. Что интересного у вас в течение дня происходит?

Показать полностью 3
[моё] DevOps Тимлид Сисадмин Мониторинг Gitlab Sre Аутсорсинг Рутина Кластер Длиннопост
25
48
DELETED
1 год назад

Задачки для DevOps и SRE⁠⁠

Задачки для DevOps и SRE DevOps, IT, Sre, Программирование, Github

В этом репозитории собраны вопросы и упражнения по различным техническим темам, иногда связанным с DevOps и SRE.

📊 На данный момент 2624 упражнений и вопросов.

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

Если вы заинтересованы в карьере инженера DevOps, изучение некоторых концепций, упомянутых здесь, будет полезно, но вы должны знать, что речь идет не об изучении всех тем и технологий, упомянутых в этом репозитории.

[моё] DevOps IT Sre Программирование Github
27
3
gogobugogo
gogobugogo
2 года назад
Site Reliability Engineering
Серия SRE

Бесплатный курс "SRE: стратегии и методы"⁠⁠

МТС будет бесплатно готовить SRE - специалистов, которые обеспечивают доступность и надежность разрабатываемых компанией IT-систем и сервисов.

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

В первом модуле слушатели познакомятся с базовыми принципами SRE, затем студентам расскажут, что такое идеальное приложение с точки зрения данной узкой специализации, научат выстраивать системы мониторинга и работать с индикаторами.

Третий модуль будет посвящен балансировке нагрузки и работе с базами данных. Финальный модуль раскроет главную тайну - как проводятся те самые канареечные развертывания и Post mortem-анализ. Каждую из тем отработают на реальных кейсах.

Подробности и запись.

Sre IT Бесплатное обучение Linux Текст
5
6
gogobugogo
gogobugogo
2 года назад
Site Reliability Engineering
Серия SRE

Как создавать софт, как SRE⁠⁠

Перевод очень интересной статьи "How to Build Software like an SRE", в которой разбираются подходы к созданию приложений с точки зрения SRE.

Принципы надежности и компромиссы, усвоенные на собственном горьком опыте

Я занимаюсь этой “надежностью” уже некоторое время (около 5 лет), в компаниях, насчитывающих от 20 до более чем 2000 человек. Меня всегда в первую очередь всегда интересовали те элементы ПО, которые я описываю как живущие “вне” приложения — например, как приложение получает свою конфигурацию? На каких типах серверов оно запускается и являются ли эти типы наиболее подходящими? Что с ним происходит на пути от “кода в репозитории” до “запуска на проде”? И я всегда следил за тем, что мне нравится — какие механизмы позволяют быструю итерацию, а какие вызывают разочарование, какие приводят к сбоям, а какие предотвращают их.

Я думаю, что будет полезно, если я все это запишу, даже если это будет просто для меня в качестве справочника.

Обратите внимание, что этот список немного странный с точки зрения SRE. Моя цель не заключается в том, чтобы “построить все так, чтобы надежность была 100%”; это больше похоже на “как достичь 80% надежности, затратив 20% усилий, при этом позволяя разработчикам работать быстро”, что в конечном итоге дает нам систему, которая выглядит совсем по-другому. Но это стоит попробовать — если делать это хорошо, работа с продом становится интересной, а не уныло безопасной или ужасающе опасной.

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

Итак! Пройдя через всё это — вот как я бы начал все сначала, если бы мог.

Coding (параметры? да я их еле знаю!)

Никаких конфигов, зашитых в код. Если ваш сервис по какой-либо причине не может загрузить конфигурацию при запуске, он должен просто аварийно завершиться — этот случай гораздо проще диагностировать, чем результат того, что инстанс выполнил старый код, потому что никто не вспомнил о том, что нужно удалить строку config.get(enable_cool_new_thing, false).

Чрезвычайно строгие настройки RPC. Я говорю о нуле (или МОЖЕТ БЫТЬ одной) повторных попыток и таймауте, в 3 раза превышающем p⁹⁹. Здесь мы стремимся к предсказуемости, и многократные повторные попытки или длительные таймауты в качестве быстрого решения проблемы в работе сервиса превратятся в недельное расследование и головную боль через год. Исправьте неисправный сервис!

Никогда не отказывайтесь от локального тестирования. Это значительно сокращает время цикла разработки, чем необходимость полагаться (и возиться с этим) на CI или удаленные рабочие среды. Контейнеризация локальной тестовой среды может упростить управление зависимостями и обеспечить их переносимость между машинами.

Избегайте использования состояния как чумы. Управление сервисом с сохранением состояния (stateful) значительно сложнее, чем без сохранения состояния. Существует много хороших управляемых баз данных и кэшей, просто используйте один из них!

Merging (там, куда мы идем — тесты не нужны)

Используйте Git. Используйте его для всего — инфраструктуры, конфигов, кода, дашбордов, графиков дежурств. Ваш репозиторий Git — это источник истины, который можно восстановить на определенный момент времени.

Не тратьте время на полное покрытие кода тестами. И вообще, не занимайтесь “расстановкой галочек” — это только для красивых графиков и диаграмм, которые имеют очень мало общего с тем, какую фактическую ценность дает ваше изменение (см. ниже).

Уделяйте приоритетное внимание тестам в реальных условиях. Самый ценный тест, который занимает меньше всего времени, — это просто применение вашего изменения на стейджинге (или, еще лучше, на проде!) и демонстрация того, что оно делает то, что вы хотели, и не ломает всё. На втором месте по эффективности находятся интеграционные тесты, а юнит-тесты идут последними — то есть, “только если у вас есть на них время”.

При изменениях в инфраструктуре делайте планы максимально ясными и очевидными. Это может означать “положить Terraform Plan как коммент к пуллреквесту”, так же сделайте с diff helm. Существуют отличные инструменты, позволяющие убедиться, что изменения, которые, по вашему мнению, вы вносите, являются теми изменениями, которые вы вносите на самом деле, поэтому убедитесь, что они находятся в центре внимания.

При внесении изменений в код делайте регрессии максимально очевидными. Журналы ошибок, использование ЦП и частота ошибочных запросов являются отличными сигналами, позволяющими выявить около 90% плохих версий и работают для практически любого сервиса (полностью универсальны). Так что не отбрасывайте их!

Deploying (no sleep til prod)

Используйте Docker. Это отраслевой стандарт не просто так — разбор зависимостей в средах с такими инструментами, как Chef или Ansible, всегда проигрывает этой приятной автономности.

Развертывайте всё и всегда. Каждый день, который проходит без вашего деплоя, увеличивает вероятность того, что он на самом деле был незаметно сломан (в результате чьего-то изменения, обновления зависимостей, удаления стороннего API), и через две недели будет очень трудно выяснить, что и где пошло не так.

Проверяйте развертывания по мере их выполнения. Можете ли вы создать полностью поврежденный образ и успешно разлить его на все машины? Почему? Это можно исправить несколькими способами, включая canary/shadow развертывания или даже просто хорошими readiness проверками.

Включите ограничение на “мгновенное” развертывание конфигов. Это может показаться нелогичным (“мгновенное” часто означает “сломать все сразу и быстро”), но возможность отключить проблемную функцию или заблокировать IP менее чем за 5 минут с лихвой компенсирует повышенный риск. Это позволяет всё делать быстро, но управлять этим нужно осторожно!

Operating (my god, it’s full of pods)

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

Используйте Helm. Или какой-то другой инструмент для управления манифестами Kubernetes, я не привередлив — главное, чтобы вы никогда не использовали прямые команды kubectl apply, edit или delete. Жизненный цикл ресурсов должен быть доступен в системе контроля версий.

Избегайте операторов и CRD (Custom Resource Definition). Как уже упоминалось выше, я люблю Kubernetes, но для очень многих разработчиков он очень сложен, и пользовательские операторы резко уходят в область “Что это за херня?”, что создает ему сложную репутацию. Пусть все будет просто.

Запускайте по 3 экземпляра всего. Как и с резервными копиями, два экземпляра — это один, а один — не существует :) Кроме того, убедитесь (действительно проверьте на проде), что 2 из 3 “штук” могут справиться с полной нагрузкой самостоятельно — в противном случае у вас на самом деле нет такой устойчивости к сбоям, как вы думаете.

Структурированные логи — это неотъемлемая часть. Вместе с идентификаторами трассировки они позволяют вам пройти 90% пути к APM (application performance monitoring), но при гораздо меньших затратах и усилиях со стороны разработчиков.

Итак, это текущий список! Думаю, что буду периодически возвращаться сюда и добавлять что-то еще. Пожалуйста, не стесняйтесь обращаться ко мне, если что-то из этого особенно вас раздражает или если у вас есть ещё что-то, о чем бы вы хотели бы поговорить 😜

Показать полностью
[моё] Sre IT Kubernetes Docker Разработка Программирование Длиннопост Текст
0
3
gogobugogo
gogobugogo
2 года назад
Site Reliability Engineering
Серия SRE

Лекторий по SRE⁠⁠

Полезный и бесплатный цикл лекций "Образовательный видеокурс по SRE от А до Я" от ведущего специалиста в этой области Дмитрия Масленникова.

Кому подойдет лекторий:

  • Начинающим специалистам: студентам старших курсов и начинающим SRE-специалистам, которые уже имеют опыт в промышленной разработке

  • Опытным DevOps-инженерам: которые хотят расширить свою экспертизу

  • Разработчикам: которые интересуются работой высоконагруженных систем

Sre Образование IT Развитие Текст
0
5
gogobugogo
gogobugogo
2 года назад
Site Reliability Engineering
Серия SRE

“Надежность” (Reliability) и “Доступность” (Availability) — в чём разница?⁠⁠

“Надежность” (Reliability) и “Доступность” (Availability) — в чём разница? Sre, Технологии, Инновации, Доступность, Надежность, Длиннопост

Photo by Jeremy Thomas on Unsplash

Надежность и доступность имеют разные значения, когда речь идет о программном обеспечении. В чем разница между ними и что они значат по отдельности?

В чём разница между надежностью и доступностью?

Доступность — это процент времени, в течение которого система доступна пользователям. Надежность — это вероятность того, что система будет соответствовать определенному уровню производительности, основанному на потребностях пользователя, в течение определенного периода времени.

Хотя надежность звучит очень похоже на доступность, при более внимательном рассмотрении обнаруживаются определенные различия. Например, если два сервиса имеют следующие значения доступности, какой из них будет считаться более надежным?

“Надежность” (Reliability) и “Доступность” (Availability) — в чём разница? Sre, Технологии, Инновации, Доступность, Надежность, Длиннопост

График, показывающий процент доступности двух сервисов

На первый взгляд кажется, что сервис А более надежен, но при более внимательном рассмотрении оказывается, что это не так. Пользователи не обращаются к каждой странице сайта равномерно. Каждый пользователь обязательно заходит на страницу входа в систему, около 90% из них посещают каталог, а страницу с настройками посещает только 30% пользователей. Учитывая это, сервис B будет восприниматься как более надежный, потому что надежность определяется на основе пользовательского опыта.

Что такое “доступность”?

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

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

Как измерить доступность?

Вот как вы можете рассчитать процент доступности вашего сервиса:‍

  1. Определите общее время работы

  2. Вычтите время, в течение которого сервис был недоступен

  3. Разделите получившееся время на общее время‍

Процент доступности = (Общее время — Сумма простоев)/Общее время

“Девятки” доступности

“Надежность” (Reliability) и “Доступность” (Availability) — в чём разница? Sre, Технологии, Инновации, Доступность, Надежность, Длиннопост

Допустимое время простоя для различных “девяток” доступности

Как улучшить доступность услуги?

  • Развертывайте свой сервис в различных географических точках по всему миру, сокращая количество единичных точек отказа.

  • Используйте chaos engineering для экспериментов и поиска уязвимостей системы.

  • Эффективно используйте балансировщики нагрузки для перенаправления запросов.

  • Улучшите процесс управления инцидентами, чтобы сократить время простоя, вызванное инцидентами.

Что такое надежность?

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

Как измерить надежность?

Поскольку надежность — это продолжительность безотказной работы системы, мы можем измерить ее, используя метрику “Среднее время наработки на отказ” (MTBF).

  1. Посчитайте количество отказов

  2. Найдите общее время работы

  3. Разделите общее время на количество сбоев‍

Среднее время наработки на отказ (MTBF) = Общее время работы (в часах)/Количество отказов‍

Надежность также может быть измерена с помощью частоты отказов сервиса:

  1. Посчитайте количество отказов

  2. Найдите общее время работы

  3. Разделите количество отказов на общее время работы‍

Частота отказов = Количество отказов/Общее время работы‍

Имейте в виду, что, хотя эти формулы и выглядят простыми, самое сложное — определить, что же такое “сбой” для вашей системы. Поскольку надежность основана на пользовательском опыте, вам необходимо использовать такие процессы, как SLI, чтобы понять, каков приемлемый уровень обслуживания.

Как повысить надежность сервиса?

  • Тестируйте систему и разверните runbook automation.

  • Тщательно тестируйте новые функции перед деплоем.

  • Внедрите надлежащий процесс управления инцидентами.

Взаимосвязь между надежностью и доступностью

Надежность системы зависит от того, будет ли она выдавать правильный результат, когда это нужно. Это не то же самое, что доступность, которая означает доступность в любое время. Тем не менее, доступность и надежность взаимосвязаны. Можно сказать, что доступность — это самый простой и основной элемент надежности. Надежность и доступность идут рука об руку, поскольку одно невозможно без другого. Только если что-то доступно, мы можем определить, насколько оно надежно. Таким образом, высокий уровень надежности приводит к высокому уровню доступности.

Что такое ремонтопригодность и как она связана с доступностью и надежностью?

Ремонтопригодность — это способность сервиса сохраняться или восстанавливаться до прежнего состояния после проведения технического обслуживания. Она влияет на доступность, определяя, насколько эффективно устраняются простои. В случае инцидента обслуживаемые сервисы могут быть легко восстановлены или быстро сохранены. Ремонтопригодность может быть как проактивной, так и реактивной.

  • Проактивная ремонтопригодность предполагает создание сервиса с понятным и легко изменяемым кодом. Проактивное техническое обслуживание также включает практики, такие как тестирование и контроль качества (QA).

  • Реактивная ремонтопригодность относится к способности системы восстанавливаться после инцидента. Поскольку инциденты неизбежны, лучше всего внедрить надежный процесс реагирования на инциденты.

Надежность против инноваций

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

‍Всегда будут изменения, нестабильность и неопределенность, и именно поэтому бессмысленно стремиться к совершенству. Вы всегда должны стремиться к реалистичному и практичному времени безотказной работы (которое никогда не будет 100%). После определенного момента улучшение надежности или доступности станет незаметным для пользователей. Усилия, которые вы тратите на повышение надежности после этого момента, лучше было бы направить в другое место. Лучшие в своем классе корпоративные организации часто обеспечивают доступность на уровне 99,999%, также известную как доступность “пять девяток”, с годовым временем простоя всего 5,256 минут.‍

Процент доступности системы, гарантированный пользователям, обычно указывается в соглашении об уровне обслуживания (SLA). Лучший способ справиться с простоями — это быть готовым к любому инциденту. Наличие надежного процесса управления инцидентами и соответствующего бюджета на ошибки (допустимая ненадежность) жизненно важно для каждой организации.

Источник

Показать полностью 2
Sre Технологии Инновации Доступность Надежность Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии