Как стать автором
Обновить
1
0

Sys.op

Отправить сообщение

RPM-репозиторий — своими руками

Время на прочтение7 мин
Количество просмотров10K

Итак, начнём.


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


image


Задача


Написать сервис, который будет принимать готовые rpm-пакеты по протоколу HTTP, парсить их метаданные, раскладывать файлы пакетов по каталогам в соответствии с внутренней структурой репозитория и обновлять метаданные репозитория после обработки очередного пакета. Что из этого получилось — описано под катом.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии36

Работа и жизнь в Болгарии. Часть вторая

Время на прочтение12 мин
Количество просмотров18K


18-ое ноября 2010-го года, Москва, 6 утра. На улице промозглый холодный ветер с мелким моросящими дождиком, заставляющий ёжиться в ожидании машины до Шереметьево. Регистрация, осмотр, паспортный контроль, небольшое ожидание, и вот уже в 8.20 самолет отрывается от полосы и несёт нас вдаль, в Софию. Два с половиной часа полёта, пустой встречающий аэропорт, небольшая очередь на паспортном контроле… И вот мы уже за дверьми аэропорта. Нас встречает яркое болгарское солнышко, ласково обогревающими своими лучами, и теплый легкий ветерок приятно пахнет свежестью и переменами…
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии34

Представления (VIEW) в MySQL

Время на прочтение10 мин
Количество просмотров453K
В комментариях Хабра упоминались вопросы по использованию представлений. Данный топик является обзором представлений, появившихся в MySQL версии 5.0. В нем рассмотрены вопросы создания, преимущества и ограничения представлений.

Что такое представление?


Представление (VIEW) — объект базы данных, являющийся результатом выполнения запроса к базе данных, определенного с помощью оператора SELECT, в момент обращения к представлению.

Представления иногда называют «виртуальными таблицами». Такое название связано с тем, что представление доступно для пользователя как таблица, но само оно не содержит данных, а извлекает их из таблиц в момент обращения к нему. Если данные изменены в базовой таблице, то пользователь получит актуальные данные при обращении к представлению, использующему данную таблицу; кэширования результатов выборки из таблицы при работе представлений не производится. При этом, механизм кэширования запросов (query cache) работает на уровне запросов пользователя безотносительно к тому, обращается ли пользователь к таблицам или представлениям.
Читать дальше →
Всего голосов 105: ↑104 и ↓1+103
Комментарии22

Теория и практика unattended upgrades в Ubuntu

Время на прочтение6 мин
Количество просмотров51K
Unattended upgrades — это родной для Debian/Ubuntu (и других основанных на них дистрибутивов GNU/Linux) механизм автоматических обновлений. По умолчанию он включён в системе благодаря наличию установленного пакета unattended-upgrades и конфигурационного файла /etc/apt/apt.conf.d/50unattended-upgrades, а настроен на обновления пакетов только из security-репозитория, куда попадают, например, критичные исправления для пакета libssl, которые выходят в результате очередного пополнения базы уязвимостей CVE.


Примечание: здесь и далее рассматриваются unattended upgrades в контексте серверных редакций Ubuntu, что скорее всего применимо «как есть» и к другим дистрибутивам, но могут встречаться свои особенности, оставшиеся вне рамок статьи.

Итак, какие дополнительные возможности предоставляют unattended upgrades (помимо включённых по умолчанию security updates) и к каким проблемам они могут привести?
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии9

Вы неверно измеряете загрузку процессора

Время на прочтение6 мин
Количество просмотров65K
Та метрика, которую мы называем «загрузкой процессора» на самом деле многими людьми понимается не совсем верно. Что же такое «загрузка процессора»? Это то, насколько занят наш процессор? Нет, это не так. Да-да, я говорю о той самой классической загрузке CPU, которую показывают все утилиты анализа производительности — от диспетчера задач Windows до команды top в Linux.

Вот что может означать «процессор загружен сейчас на 90%»? Возможно, вы думаете, что это выглядит как-то так:



А на самом деле это выглядит вот так:



«Работа вхолостую» означает, что процессор способен выполнить некоторые инструкции, но не делает этого, поскольку ожидает чего-то — например, ввода-вывода данных из оперативной памяти. Процентное соотношение реальной и «холостой» работы на рисунке выше — это то, что я вижу изо дня в день в работе реальных приложений на реальных серверах. Есть существенная вероятность, что и ваша программа проводит своё время примерно так же, а вы об этом и не знаете.
Читать дальше →
Всего голосов 95: ↑88 и ↓7+81
Комментарии62

Нагрузочное тестирование: с чего начать и куда смотреть

Время на прочтение11 мин
Количество просмотров80K
Вы наверняка знаете, что есть большая разница между тем, как будет работать ваше приложение/сервис в зависимости от того, сколько пользователей его используют. То, что работало во время разработки, может развалиться, когда придут первые реальные пользователи со своим окружением, а то, что работало с сотней пользователей, может умереть, когда их станет 10 тысяч. Или бывает, что вы все потестили на искусственных данных, а потом ваша база начинает торзмозить из-за пользователя с именем İnari.

О том, как выживают баги, когда «включать» в проекте нагрузочные тесты, откуда брать для них данные и можно ли вообще не тестировать, вывалив результаты сразу в продакшн, мы поговорили с Алексеем Лавренюком («Яндекс») и Владимиром Ситниковым (Netcracker).


Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии7

GitLab PostgreSQL postmortem

Время на прочтение10 мин
Количество просмотров10K
31 января 2017 года у GitLab случилась авария, связанная с эксплуатацией СУБД PostgreSQL, в результате которой часть данных была удалена, а проект был остановлен на время восстановления. Прошло уже несколько месяцев, и было очень много написано на эту тему, а сам GitLab представил исчерпывающий некролог, в котором рассказал, что произошло, какие предпринимались меры для восстановления и какие меры будут предприняты для предотвращения подобных аварий. Очень занимательное чтиво, рекомендуем его прочесть даже тем, кто далек от Постгреса.



В комментариях к нашему интервью с Алексеем Лесовским, некоторые представители сообщества, шутя, высказали претензию, что мы упомянули про аварию GitLab, но в итоге так и не провели подробный разбор полетов. Мы решили исправиться и попросили Алексея написать небольшой «разбор полетов». Основной целью этой публикации является детальный анализ некролога, выделение ключевых моментов, попытка проанализировать их и предложить рекомендации, как следовало бы действовать в подобной ситуации. И, конечно же рассмотрим меры, которые команда GitLab планирует предпринять для предотвращения таких инцидентов в будущем.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Почему вы не отвечаете на мой вопрос?

Время на прочтение7 мин
Количество просмотров21K

На различных Q&A-сайтах и форумах, связанных с разработкой, я провёл времени больше, чем хотелось бы признавать. Там я ответил на тысячи вопросов. Как правило, вопросы остаются в границах таких форумов. Но после того, как вопросы начали сыпаться на мой личный почтовый ящик, я подумал, что надо написать об этом.

Эти электронные письма и сообщения обычно поступают от людей, с которыми я никогда раньше не общался — все они просто знают, что я «отвечаю на вопросы или решаю проблемы». Всё обычно выглядит примерно так:

  • Я написал вопрос по ссылке {здесь}. Могли бы вы исправить ошибку?
  • Привет, пожалуйста, помогите здесь {ссылка}.
  • У меня есть серьёзное домашнее задание со сроком сдачи сегодня в 5 вечера, и мне с ним не справиться. Могли бы вы скачать его здесь {ссылка} и сделать так, чтобы к тому времени оно работало?

Это полные тексты реальных электронных писем, которые я нередко получаю.

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

Здесь я укажу несколько причин, по которым такие прямые запросы остаются без ответа, напишу, как действовать, чтобы получить ответ на вопрос, и представлю несколько шагов, которые вы должны сделать до отправки вопроса, чтобы он не оказался плохим.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии18

DNS glue records – что такое и почему они так важны?

Время на прочтение3 мин
Количество просмотров28K
Служба DNS, невидимая обычному пользователю, периодически оказывается в фокусе интереса IT-специалистов. По разным поводам. Особенно актуальной эта тема становится в периоды, когда основные провайдеры DNS подвергаются DDoS-атакам. Именно тогда, когда DNS становится частично неработоспособной, приходит понимание, что DNS – это основа, костяк всей структуры интернета.

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

  • Реестры доменов
  • Глобальные домены верхнего уровня (gTLD)
  • Различные национальные домены верхнего уровня (ccTLD)
  • И растущий с каждым годом список всех прочих доменов высшего уровня (.space, .photography и так далее)

Все это делает и так не простую систему еще более сложной.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии5

Docker контейнер с данными на Postgres для интеграционного тестирования и лёгким расширением

Время на прочтение7 мин
Количество просмотров89K

Про использование Docker и Docker-compose последнее время написано очень много, например рекомендую недавнюю статью на Хабре, если вы до сих пор не прониклись. Это действительно очень удобно, а в связке в ansible особенно. И я его использую везде. От разработки, до автоматического интеграционного тестирования на CI. Про использование в тестировании, тоже писали. Это здорово и удобно. Однако, для локальной разработки, для траблешутинга данных "как в продакшене" или тестирование производительности, на "объёмах близких в продакшену", хочется иметь под рукой образ, содержащий базу, "как в продакшене"!


Соответственно, хочется, чтобы каждый разработчик, приступая к работе над проектом, мог запустить его одной командой, например:


./gradlew dockerRun

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


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


Разумеется мы поговорим о написании Dockerfile для такого образа с данными, и некоторых подводных камнях этого процесса.

Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии2

Основы TCP/IP для будущих дилетантов

Время на прочтение11 мин
Количество просмотров474K
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.

Читать дальше →
Всего голосов 47: ↑39 и ↓8+31
Комментарии63

Облачное хранилище корпоративного класса на базе NGINX Plus и Minio

Время на прочтение5 мин
Количество просмотров32K

В этой статье говорится о том, как настроить обратный прокси-сервер NGINX или NGINX Plus в качестве балансировщика нагрузки для хранилища объектов (object storage) на базе Minio.

Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии16

Как протестировать образ для docker за полсекунды

Время на прочтение4 мин
Количество просмотров18K

В этой статье рассматривается простой способ создания и тестирования образов docker. По ходу повествования, используя Goss, мы напишем тесты, с помощью которых можно проверить официальный образ Nginx всего за ~0,5 с.

Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии18

Исключительная роль босса

Время на прочтение8 мин
Количество просмотров14K
Сотрудники должны любить работу. Так они гораздо продуктивнее. Но как ее любить, когда начальство — одна из основных причин, мешающих трудиться с удовольствием. Тут правда, взаимность — начальству почти так же мешают сотрудники. Обе стороны вроде не прочь избавиться от этого иерархического конфликта. Почему же компании без генерального директора такая редкость? Чем он выделяется как человек или это просто функция, которую неважно кто, но должен выполнять? В средней компании с сотнями сотрудников объем управленческой информации превышает возможности любого одного человека. Да, придумали десятки ERP, CRM, которые систематизирую и обобщают эти информационные потоки, но будь секрет управления только в обработке данных, какая-нибудь из этих систем ее уже решила и устанавливалась повсеместно.

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

Средний срок, который нормально выдерживает фирма «без руководителя» — 6 месяцев. Это расчеты Джен Клейн, исследователя из школы менеджмента MIT. Потом начинаются проблемы. Чем крупнее компания, тем больше проблем у нее будет без единоначалия. Рассмотрим немногие исключения.



Шведская компания Crisp управляется без начальства уже 3 года. Это мелкая фирма-консультант по ИТ с 40 сотрудниками. Другой пример — интернет-магазин Zappos с 1,5 тысячами сотрудников.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии18

Хороший триггер, плохой триггер: как мы мониторим сотни серверов по всему миру

Время на прочтение8 мин
Количество просмотров27K


Необходимость мониторинга должна быть очевидна практически для любой компании, однако я не раз сталкивался с примерами, когда к такому выводу ребята приходили только после падения продакшна. Причем нередко команда узнавала об этом уже постфактум — от своего генерального директора, которому на недоступность проекта пожаловались его друзья, решившие вдруг взглянуть на стартап. И вот он в гневе звонит членам команды с вопросом даже не «почему все упало», а почему он об этом знает, а они — нет. И тут им в голову приходит мысль, а почему бы не настроить мониторинг? Казалось бы, что может быть проще…

Нам, например, круглосуточно требуется мониторить более 46 000 метрик на более чем 500 серверах в 6 дата-центрах и 4 странах, а DAU игры War Robots стабильно переваливает за 1 500 000 человек.

Но правильный, настоящий мониторинг пишется кровью системного администратора и разработчика. Каждый кейс, каждый факап и даже внутренние процессы, включая количества тонера в картридже принтера, должны быть описаны сценарием мониторинга. Я решил немного рассказать о том, с чем мы столкнулись при организации этого процесса, а также как выстроили работу сисадминов, снизив количество дежурств и улучшив их качество. При этом упор будет сделан на подходе к мониторингу, тогда как настройка той или иной системы легко гуглится и без посторонней помощи.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии14

Состояние сетевой безопасности в 2016 году, подробный отчёт Qrator Labs и Wallarm

Время на прочтение7 мин
Количество просмотров8.9K


«Хабраэффект» наоборот — атаки на Хабрахабр за год (сверху) и на Гиктаймс (снизу). В феврале 2017 на Гиктаймс была нейтрализована атака в 17,5 Гбит/с.



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

Инциденты, связанные с атаками типа «отказ в обслуживании» вновь на слуху — но теперь грамотно выполненные атаки уже угрожают доступности целых регионов. На проблему вновь нужно обращать повышенное внимание — словно мы вернулись на 5—7 лет назад в прошлое.

До прошлого года могло казаться, что проблема DDoS уже достаточно хорошо решена.

Но мощность атак и их сложность в минувшем году выросли радикально. В прошлом даже мощные атаки в 100—300 Гбит/с не вызывали особой «головной боли». Сложные типы атак на протоколы прикладного уровня случались редко.

А в 2016 году мир впервые увидел атаки в 1 Тбит/с, и атаки на L7 стали куда более распространёнными.
Всего голосов 54: ↑53 и ↓1+52
Комментарии5

Как мы Redis Cluster готовили

Время на прочтение5 мин
Количество просмотров58K


В мире опен сорс есть огромное количество технологий, подходов, паттернов, тулзов и аппов, которые юзает очень много компаний. Как превратить используемое ПО или технологию в конкурентное преимущество? Предлагаю рассмотреть на примере Redis Cluster — как мы прокладывали наш путь.
Читать дальше →
Всего голосов 44: ↑35 и ↓9+26
Комментарии26

Полное практическое руководство по Docker: с нуля до кластера на AWS

Время на прочтение39 мин
Количество просмотров1.7M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Всего голосов 125: ↑124 и ↓1+123
Комментарии44

Syncookied — OpenSource ddos protection system

Время на прочтение10 мин
Количество просмотров18K
Когда в нашей компании LTD BeGet встала задача прозрачной фильтрации атак на 4 уровне модели OSI, мы написали свое решение Syncookied. Данным решением мы бы хотели поделиться с Internet-сообществом, так как на текущий момент аналогов ему мы не нашли (или мы о них не знаем). Есть платные решения на подобии Arbor, F5, SRX, но стоят они совершенно других денег и в них используются другие технологии защиты.

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

» GitHub
» GitHub модуль ядра
» Страница проекта


Читать о Syncookied
Всего голосов 48: ↑45 и ↓3+42
Комментарии13

Nginx и https. Получаем класс А+

Время на прочтение4 мин
Количество просмотров162K
image

Недавно вспомнилось мне, что есть такой сервис — StartSsl, который совершенно бесплатно раздаёт trusted сертификаты владельцам доменов для личного использования. Да и выходные попались свободные. В общем сейчас напишу, как в nginx настроить HTTPS, чтобы при проверке в SSL Labs получить рейтинг А+ и обезопасить себя от последних багов с помощью выпиливания SSL.

Итак, приступим. Будем считать, что у вы уже зарегистрировались на StartSsl, прошли персональную проверку и получили вожделенный сертификат. Для начала опубликую итоговый конфиг, а после этого разберу его.
Читать дальше →
Всего голосов 61: ↑52 и ↓9+43
Комментарии85

Информация

В рейтинге
Не участвует
Откуда
Estepona, Málaga, Испания
Зарегистрирован
Активность