Pull to refresh
6
0

Сеньор эникей

Send message

Круги ада с GitHub Actions (строим CI/CD pipeline для Java-проекта)

Reading time14 min
Views36K


Мне частенько приходится строить пайплайн для сборки проектов на Java. Иногда это опенсорс, иногда нет. Недавно я решил попробовать перенести часть своих репозиториев с Travis-CI и TeamCity на GitHub Actions, и вот что из этого получилось.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments13

Как ограничить частоту запросов в HAProxy: пошаговая инструкция

Reading time8 min
Views8.7K

Автор статьи объясняет, как реализовать в HAProxy ограничение скорости обработки запросов (rate limiting) с определенных IP-адресов. Команда Mail.ru Cloud Solutions перевела его статью — надеемся, что с ней вам не придется тратить на это столько времени и усилий, сколько пришлось потратить ему.

Дело в том, что это один из самых популярных методов защиты сервера от DoS-атак, но в интернете трудно найти понятную инструкцию, как конкретно его настроить. Методом проб и ошибок автор заставил HAProxy ограничить частоту запросов по списку IP-адресов, который обновляется в реальном времени.

Для настройки HAProxy не требуется никаких предварительных знаний, поскольку ниже излагаются все необходимые шаги.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments4

Управление логгированием в systemd

Reading time12 min
Views119K
Systemd Journal

Демон инициализации systemd де-факто уже стал стандартом в современных Linux-системах. На него перешли многие популярные дистрибутивы: Debian, RHEL/CentOS, Ubuntu (начиная с версии 15.04). В systemd используется принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.
В его основе лежит централизация: специализированный компонент journal cобирает все системные сообщения (сообщения ядра, различных служб и приложений). При этом специально настраивать отправку логов не нужно: приложения могут просто писать в stdout и stderr, a journal сохранит эти сообщения автоматически. Работа в таком режиме возможна и с Upstart, но он сохраняет все логи в отдельный файл, тогда как systemd сохраняет их в бинарной базе, что существенно упрощает  систематизацию и поиск.

Хранение логов в бинарных файлах также позволяет избежать сложностей с использованием парсеров для разных видов логов. При необходимости логи можно без проблем переконвертировать в другие форматы (более подробно об этом будет рассказано ниже).
Journal может работать как совместно с syslog, так и полностью заменить его.
Для просмотра логов используется утилита journalctl. Об особенностях и тонкостях работы с ней мы расскажем в этой статье.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments15

Как описать 100 Gitlab джоб в 100 строк на Jsonnet

Reading time5 min
Views8.6K

В продолжение предыдущей статьи про инструменты деплоя в Kubernetes, хочу рассказать вам про то как можно использовать Jsonnet для упрощения описания джоб в вашем .gitlab-ci.yml



Дано


Есть монорепа, в которой:


  • 10 Dockerfiles
  • 30 описанных деплоев
  • 3 окружения: devel, staging и production

Задача


Настроить пайплайн:


  • Сборка Docker-образов должна производиться по добавлении git-тэга с версией.
  • Каждая операция деплоя должна выполняться при пуше в ветку окружения и только по изменении файлов в конкретной директории
  • В каждом окружении установлен свой gitlab-runner с отдельным тэгом, который выполняет деплой только в своём окружении.
  • Не все приложения должны быть задеплоены в каждое из окружений, мы должны описать пайплайн так, чтобы иметь возможность делать исключения.
  • Некоторые деплойменты используют git submodule и должны запускаться с установленной переменной GIT_SUBMODULE_STRATEGY=normal

Описать это всё может показаться настоящим адом, но мы не отчаиваемся и вооружившись Jsonnet сделаем это легко и непринуждённо.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments2

JupyterHub, или как управлять сотнями пользователей Python. Лекция Яндекса

Reading time10 min
Views46K
Платформа Jupyter позволяет начинающим разработчикам, аналитикам данных и студентам быстрее начать программировать на Python. Предположим, ваша команда растёт — в ней теперь не только программисты, но и менеджеры, аналитики, исследователи. Рано или поздно отсутствие совместного рабочего окружения и сложность настройки начнут тормозить работу. Справиться с этой проблемой поможет JupyterHub — многопользовательский сервер c возможностью запускать Jupyter одной кнопкой. Он отлично подходит для тех, кто преподаёт Python, а также для аналитиков. Пользователю нужен только браузер: никаких проблем с установкой ПО на ноутбук, совместимостью, пакетами. Мейнтейнеры Jupyter активно развивают JupyterHub наряду с JupyterLab и nteract.

Меня зовут Андрей Петрин, я руководитель группы аналитики роста в Яндексе. В докладе на Moscow Python Meetup я напомнил о плюсах Jupyter и рассказал про архитектуру и принципы работы JupyterHub, а также про опыт применения этих систем в Яндексе. В конце вы узнаете, как поднять JupyterHub на любом компьютере.


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

Всем привет! Меня зовут Андрей Петрин, я руководитель группы аналитики роста в Яндексе. Я расскажу про библиотеку JupyterHub, которая в свое время сильно упростила нам жизнь в аналитике Яндекса, мы буквально почувствовали буст продуктивности большого количества команд.
Total votes 34: ↑34 and ↓0+34
Comments3

Data Version Control (DVC): версионирование данных и воспроизводимость экспериментов

Reading time8 min
Views30K
Эта статья — своеобразный мастер-класс «DVC для автоматизации ML экспериментов и версионирования данных», который прошел 18 июня на митапе ML REPA (Machine Learning REPA:
Reproducibility, Experiments and Pipelines Automation) на площадке нашего банка.

Тут я расскажу об особенностях внутренней работы DVC и способах применения его в проектах.

Примеры кода, используемые в статье доступны здесь. Код тестировался на MacOS и Linux (Ubuntu).

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments1

Создание бизнес-плана IT cтартапа: пошаговая детальная структура

Reading time3 min
Views32K
Для разработки своего IT стартапа (рекрутинговая веб-платформа) по крупицам создал детальную структуру бизнес-плана. Далее, проработав каждый пункт, получил ясную и понятную картину будущего Бизнеса. Структура охватывает все важные направления как для создателя, так и для инвестора. Адаптировано для рынков США и Европы.
Шерю для всех.

image

1.) Коротко о проекте (Что привносит проект на рынок?)
1.1.) Почему? (Мечта, видение, причина, вера, главная цель Бизнеса)
1.2.) Как? (миссия)
1.3.) Краткое описание сути Проекта
1.4.) Детальное описание Проекта
1.5.) Решаемые Проектом проблемы
1.6.) Долгосрочные цели проекта
1.7.) Бизнес-концепт: обзор проекта / описание ноу-хау

2). Функционал (Технологическое решение проекта)
2.1.) Краткое описание платформы
2.2.) Детальное описание платформы
2.3.) Дополнительные модули, услуги
2.4.) Тех. задание – веб платформа
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments1

BPF для самых маленьких, часть нулевая: classic BPF

Reading time22 min
Views52K

Berkeley Packet Filters (BPF) — это технология ядра Linux, которая не сходит с первых полос англоязычных технических изданий вот уже несколько лет подряд. Конференции забиты докладами про использование и разработку BPF. David Miller, мантейнер сетевой подсистемы Linux, называет свой доклад на Linux Plumbers 2018 «This talk is not about XDP» (XDP – это один из вариантов использования BPF). Brendan Gregg читает доклады под названием Linux BPF Superpowers. Toke Høiland-Jørgensen смеется, что ядро это теперь microkernel. Thomas Graf рекламирует идею о том, что BPF — это javascript для ядра.


На Хабре до сих пор нет систематического описания BPF, и поэтому я в серии статей постараюсь рассказать про историю технологии, описать архитектуру и средства разработки, очертить области применения и практики использования BPF. В этой, нулевой, статье цикла рассказывается история и архитектура классического BPF, а также раскрываются тайны принципов работы tcpdump, seccomp, strace, и многое другое.


Разработка BPF контролируется сетевым сообществом Linux, основные существующие применения BPF связаны с сетями и поэтому, с позволения @eucariot, я назвал серию "BPF для самых маленьких", в честь великой серии "Сети для самых маленьких".

Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments5

Ускорение дисковой подсистемы Qemu KVM в Linux

Reading time7 min
Views44K


Иногда я берусь за различные задачи по настройке серверов. Некоторое время назад ко мне обратился владелец небольшой хостинговой компании, с интересной проблемой. Он хотел бы на своих серверах, где уже стоял Ubuntu 18.04, запускать виртуальные машины с Windows под KVM.

Однако проведённое им тестирование показало, что дисковая система KVM прилично отставала от показателей, которые у него были под Hyper-V. Он хотел раскочегарить qemu на своих Ubuntu серверах, чтобы избежать закупок дорогих серверных лицензий Windows (бесплатная версия Microsoft Hyper-V Server не устраивала из-за своих ограничений).
С убеждённостью в том, что возможно превзойти настройки по-умолчанию, я взялся за работу.
Total votes 51: ↑46 and ↓5+41
Comments101

13 инструментов для обработки текста в командной оболочке

Reading time17 min
Views88K
Здесь представлен фрагмент будущей книги «Основные инструменты и практики для начинающего разработчика программного обеспечения» Бальтазара Рубероля и Этьена Броду. Книга должна помочь образованию подрастающего поколения разработчиков. Она охватит такие темы, как освоение консоли, настройка и эффективная работа в командной оболочке, управление версиями кода с помощью git, основы SQL, инструменты вроде Make, jq и регулярные выражения, основы сетевого взаимодействия, а также лучшие практики разработки программного обеспечения и совместной работы. В настоящее время авторы упорно работают над этим проектом и приглашают всех поучаствовать в списке рассылки.

Содержание


Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments65

Packer, Terraform и Ansible: деплой кластера Kubernetes за час

Reading time16 min
Views22K


Привет, меня зовут Андрей Щукин, я помогаю крупным компаниям мигрировать сервисы и системы в Облако КРОК. Вместе с коллегами из компании Southbridge, которая проводит в учебном центре «Слёрм» курсы по Kubernetes, мы недавно провели вебинар для наших заказчиков.

Я решил взять материалы отличной лекции Павла Селиванова и написать пост для тех, кто ещё только начинает работать с инструментами provisioning’а облаков и не знает, с чего начать. Поэтому я расскажу про стек технологий, которые используются у нас в обучении и продакшене Облака КРОК. Поговорим о современных подходах к управлению инфраструктурой, про связку компонентов Packer, Terraform и Ansible, а также про инструмент Kubeadm, с помощью которого мы будем производить установку.

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

Не давайте имён курам
Печёные пирожки полезнее жареных
Начинаем печь. Packer
Terraform — инфраструктура как код
Запуск Terraform
Структура кластера Kubernetes
Kubeadm
Репозиторий со всеми файлами
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments3

Разработка плагинов для Zabbix Agent 2

Reading time18 min
Views15K

На последнем Zabbix Summit 2019 вместе с выходом Zabbix 4.4 был анонсирован новый Zabbix Agent 2, ключевая фишка которого — возможность написания плагинов к нему на языке Go. И многие сразу стали спрашивать: а как же, собственно, эти плагины писать, как они устроены? Где взять документацию и примеры?


В этой статье я хочу дать ответы на эти и некоторые другие вопросы. Обо всём по порядку, но если вы из тех, кто сразу рвётся в бой, смело пропускайте вступительную часть и переходите к практике ⎝◔◞ ◔⎠


Итак...


Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments5

Go vs Python. Виталий Левченко

Reading time15 min
Views56K

Предлагаю ознакомиться с расшифровкой доклада Виталия Левченко Go vs Python


Go — волшебное слово, решение всех проблем продакшна разом и одновременно негодная технология без эксепшнов. Истина посередине, поэтому поговорим о конкретных примерах:


  • asyncio vs горутины;
  • производительность узких мест;
  • лаконичность vs простота кода;
  • порог входа;
  • тулинг и паттерны поиска проблем и оптимизации производительности;
  • обслуживание в продакшне.

Читать дальше →
Total votes 51: ↑34 and ↓17+17
Comments39

VMware vSAN 6.7 — И грянул гром

Reading time9 min
Views41K
Заканчивался 2018-й год…

Однажды, ясным декабрьским днём, решила наша Компания приобрести новое «железо». Нет, конечно, это не случилось в одночасье. Решение было принято раньше. Намного раньше. Но, как водится, не всегда наши желания совпадают с возможностями акционеров. И денег не было, и мы держались. Но наконец-то наступил тот радостный момент, когда приобретение было одобрено на всех уровнях. Всё было хорошо, «белые воротнички» радостно аплодировали, надоело им на серверах 7-ми летней давности ежемесячно обрабатывать документы по 25 часов и они очень настойчиво просили Департамент ИТ придумать что-нибудь, чтобы подарить им больше времени для других, не менее важных дел.

Мы пообещали сокращение времени обработки документов в 3 раза, до 8 часов. Для этого выстрелили из пушки по воробьям. Этот вариант казался единственным, поскольку в нашей команде нет, и никогда не было, администратора баз данных для применения всевозможных оптимизаций запросов (DBA).
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments182

Повторная обработка событий, полученных из Kafka

Reading time7 min
Views25K


Привет, Хабр.


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


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

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments5

Знакомство с wal-g системой бекапирования PostgreSQL

Reading time6 min
Views30K

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

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments16

Трассировка и мониторинг в Istio: микросервисы и принцип неопределенности

Reading time9 min
Views5.3K
Принцип неопределенности Гейзенберга гласит, что нельзя одновременно измерить положение объекта и его скорость. Если объект движется, то у него нет местоположения. А если местоположение есть – значит у него нет скорости.



Что касается микросервисов на платформе Red Hat OpenShift (и под управлением Kubernetes), то благодаря соответствующему софту с открытым кодом они могут одновременно рапортовать как о своей производительности, так и об исправности. Старика Гейзенберга это, конечно, не опровергает, но зато устраняет неопределенность при работе с облачными приложениями. Istio позволяет легко организовать отслеживание (трассировку) и мониторинг таких приложений, чтобы держать все под контролем.
Читать дальше: Трассировка и мониторинг в Istio
Total votes 12: ↑12 and ↓0+12
Comments0

Шпаргалка для сисадмина по SELinux: 42 ответа на важные вопросы

Reading time6 min
Views29K
Перевод статьи подготовлен специально для студентов курса «Администратор Linux».




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

«Важная истина, что вещи не всегда являются тем, чем кажутся, общеизвестна…»

―Дуглас Адамс, Автостопом по Галактике

Безопасность. Повышение надежности. Соответствие. Политика. Четыре Всадника Апокалипсиса сисадмина. В дополнение к нашим ежедневным задачам — мониторингу, резервному копированию, внедрению, настройке, обновлению и т. д. — мы также отвечаем за безопасность наших систем. Даже тех систем, где сторонний провайдер рекомендует нам отключить усиленную безопасность. Это похоже на работу Этана Ханта из “Миссия невыполнима”.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments4

Функциональный Powershell с классами — не оксюморон, я гарантирую это

Reading time6 min
Views5.9K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Functional PowerShell with Classes.
I promise it’s not an oxymoron"
автора Christopher Kuech.


Объектно-ориентированная и функциональная парадигмы программирования могут казаться не в ладах друг с другом, но обе в равной мере поддерживаются в Powershell. Практически все программные языки, функциональные и нет, имеют средства расширенного связывания имён и значений; Классы, подобно struct-ам и record-ам, это всего лишь один подход. Если мы ограничим использование Классов связыванием имён и значений и станем избегать таких "тяжёлых" объектно-ориентированных программных концепций, как наследование, полиморфизм, или изменяемость (mutability), мы сможем использовать их преимущества, не усложняя наш код. Далее, добавляя неизменяемые (immutable) методы преобразования типов, мы можем обогатить Классами наш функциональный код.


Магия кастов


Касты одна из самых мощных фич в Powershell. Когда вы подвергаете значение касту, вы полагаетесь на добавляемую средой в ваше приложение возможность неявных инициализации и валидации. Например, простой каст строки в [xml] прогонит её через код парсера и сгенерирует полное дерево xml. Мы можем в своём коде использовать Классы с той же целью.

Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments2

Настройка окружения в CLI. WSL / Windows Terminal

Reading time17 min
Views81K
Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже senior yaml developer`ом, пользуется command line interface. Далеко не все задумываются об улучшении рабочего окружения в CLI и повышении продуктивности работы в терминале. Мне хотелось бы поделиться своим опытом настройки окружения для работы с Linux из Windows.



Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux. Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).

Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы. Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments33

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity