и посмотреть медиа
DevOps - interview questions
и посмотреть медиа
DevOps interviews.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Interview questions on DevOps.
🤔 Как разделять элементы CI и CD в jenkins? В Jenkins CI (Continuous Integration) и CD (Continuous Delivery/Deployment) можно разделять на разные стадии (stages) или отдельные пайплайны. Это повышает гибкость, упрощает отладку и делает процесс масштабируемым. 🚩Разделение CI и CD внутри одного `Jenkinsfile` Можно использовать разные стадии (stages) в Jenkinsfile: Пример: pipeline { agent any stages { stage('CI: Build & Test') { steps { echo "📦 Сборка и тестирование кода" sh 'mvn clean package' // Сборка sh 'mvn test' // Юнит-тесты } } stage('CI: Code Analysis') { steps { echo "🧐 Анализ кода (SonarQube)" sh 'sonar-scanner' } } stage('CD: Staging Deployment') { steps { echo "🚀 Деплой на стейджинг" sh 'kubectl apply -f k8s/staging.yaml' } } stage('CD: Production Deployment') { when { branch 'main' // Только для main-ветки } steps { echo "🔥 Деплой в прод" sh 'kubectl apply -f k8s/production.yaml' } } } } 🚩Отдельные пайплайны для CI и CD Можно разделить CI и CD на разные пайплайны, используя Jenkins Multibranch Pipeline. CI-пайплайн (Jenkinsfile.ci) pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } } post { success { archiveArtifacts artifacts: '**/target/*.jar' build job: 'CD-Pipeline', wait: false // Запуск CD после успешного CI } } } CD-пайплайн (Jenkinsfile.cd) pipeline { agent any stages { stage('Deploy to Staging') { steps { sh 'kubectl apply -f k8s/staging.yaml' } } stage('Manual Approval') { steps { input message: "Deploy to Production?" } } stage('Deploy to Production') { steps { sh 'kubectl apply -f k8s/production.yaml' } } } } 🚩Использование `Jenkins Shared Library` для разделения логики Если много пайплайнов, лучше вынести CI/CD-логику в общую библиотеку (vars/ci.groovy, vars/cd.groovy). Пример CI (vars/ci.groovy) def call() { pipeline { agent any stages { stage('Build & Test') { steps { sh 'mvn clean package && mvn test' } } } } } Пример CD (vars/cd.groovy) def call() { pipeline { agent any stages { stage('Deploy') { steps { sh 'kubectl apply -f k8s/production.yaml' } } } } } Jenkinsfile с использованием библиотек @Library('my-shared-library') _ ci() // Запуск CI cd() // Запуск CD Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как ограничить видимость глобальной переменной между двумя функциями? - Использовать (двойное подчеркивание) для индикации приватности (по соглашению). - Не экспортировать в __all модуля. - Или структурировать код так, чтобы переменные были внутри классов/замыканий. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое SLA, SLO, SLI? Эти три термина относятся к управлению надежностью и качеством IT-сервисов. Они помогают определить, измерить и гарантировать уровень обслуживания пользователей. 🚩SLI (Service Level Indicator) – Показатель уровня сервиса SLI – это метрика, которая показывает, насколько хорошо работает сервис. - Доступность (например, uptime 99.9%) - Время ответа API (например, менее 200 мс) - Ошибки запросов (например, не более 1% 5xx ошибок) 🚩SLO (Service Level Objective) – Целевой уровень сервиса SLO – это цель, которую компания ставит для SLI. Доступность 99.9% сервиса в месяц. Среднее время ответа API ≤ 200 мс. 🚩SLA (Service Level Agreement) – Соглашение об уровне сервиса SLA – это официальное соглашение между клиентом и провайдером сервиса, которое описывает обязательства и штрафы за их невыполнение. - Если доступность меньше 99.9%, клиент получает возврат денег. - Если среднее время ответа API больше 500 мс, клиент получает скидку. 🚩Как они связаны? SLI (метрика) → измеряет, насколько хорош сервис. SLO (цель) → устанавливает, каким должен быть сервис. SLA (договор) → фиксирует обязательства и штрафы. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как мы можем с помощью cloudfront сохранить бюджет на использование сервисов? Amazon CloudFront — это CDN (Content Delivery Network), которая помогает оптимизировать затраты на трафик и нагрузку на серверы. Использование CloudFront позволяет экономить бюджет на AWS-сервисах следующими способами: 🟠Кеширование контента (уменьшение нагрузки на бэкенд) CloudFront кэширует статический и динамический контент, что снижает количество запросов к вашим основным серверам (например, EC2, S3, API Gateway, Lambda). Меньше запросов к S3 (меньше операций GET, а они платные). Меньше запросов к API Gateway и Lambda (так как CloudFront может кешировать ответы API). Экономия на EC2 и RDS, так как нагрузка перераспределяется. 🟠Использование бесплатного трафика между CloudFront и S3 Когда CloudFront забирает файлы из S3 в том же регионе, за исходящий трафик из S3 не взимается плата. Исходящий трафик из S3 в интернет стоит ≈ $0.09 за ГБ. Исходящий трафик из CloudFront в интернет дешевле (например, первые 1 ТБ в месяц — бесплатно). 🟠Снижение стоимости глобального трафика Если у вас клиенты в разных странах, CloudFront дешевле, чем стандартный AWS-трафик. Исходящий трафик из CloudFront в интернет в среднем на 30-50% дешевле, чем прямой выход из EC2 или S3. AWS часто снижает цены на CloudFront трафик в рамках программ оптимизации. 🟠Фильтрация ненужного трафика (ботов, DDoS, парсеров) CloudFront позволяет использовать AWS WAF (Web Application Firewall) для блокировки вредоносных запросов. Меньше запросов к бэкенду (EC2, API Gateway, Lambda). Защита от DDoS (AWS Shield Standard бесплатен для CloudFront). 🟠Кеширование динамического контента CloudFront поддерживает TTL (Time-to-Live) для кэширования даже динамических API-ответов. Вместо запроса к API Gateway/Lambda, CloudFront может вернуть кэшированный ответ. Можно настроить "Stale While Revalidate" — клиент получает устаревший контент, пока идет обновление. 🟠Гибкое управление ценой через региональные edge-локации CloudFront позволяет управлять ценами, ограничивая определенные регионы. Можно исключить дорогие регионы (например, Южную Америку, где трафик дороже). Можно использовать AWS Origin Shield для дополнительного кеширования между регионами. 🟠Использование CloudFront Functions вместо AWS Lambda CloudFront поддерживает CloudFront Functions, которые выполняются прямо на edge-узлах и дешевле, чем Lambda@Edge. CloudFront Functions работают быстрее и стоят $0.10 за миллион запросов. Lambda@Edge стоит $0.60 за миллион запросов + плата за выполнение. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое data source в графане? Это источник данных, с которым Grafana может взаимодействовать для построения графиков, панелей мониторинга (dashboards) и выполнения запросов. Data Source определяет, как Grafana подключается к внешним системам мониторинга, базам данных или API для получения метрик, логов или другой информации. 🚩Основные аспекты 🟠Типы Data Source Grafana поддерживает множество типов источников данных, включая: Системы мониторинга: Prometheus Zabbix InfluxDB Graphite Лог-агрегаторы: Loki Elasticsearch Splunk Облачные сервисы: AWS CloudWatch Google Cloud Monitoring Azure Monitor Реляционные базы данных: MySQL PostgreSQL API или внешние плагины: JSON API OpenTelemetry 🟠Функции Data Source Подключение: Определяет параметры для соединения с внешним хранилищем данных, такие как URL, токены аутентификации, логин/пароль. Выполнение запросов: Обеспечивает интерфейс для написания запросов к данным через встроенный редактор запросов Grafana. Форматирование данных: Конвертирует данные из формата, предоставляемого источником, в формат, понятный Grafana. 🟠Добавление Data Source Добавление источника данных выполняется через веб-интерфейс Grafana: Зайдите в Settings → Data Sources. Нажмите кнопку Add data source. Выберите нужный тип источника (например, Prometheus). Настройте параметры подключения (например, URL, токен, порт). Нажмите Save & Test, чтобы проверить соединение. 🟠Примеры запросов Для Prometheus: rate(http_requests_total[5m]) Для MySQL SELECT time, value FROM metrics WHERE time > NOW() - INTERVAL 1 HOUR; 🚩Особенности Data Source 🟠Кастомизация Вы можете устанавливать плагины для подключения к нестандартным источникам данных. Grafana Marketplace предлагает плагины для расширения функциональности. 🟠Мульти-сорсинг Один дашборд может использовать несколько источников данных, что позволяет объединять данные из разных систем. 🟠Глобальные переменные Источники данных могут использовать глобальные параметры, такие как время ($__timeFilter), для унификации запросов. 🟠Безопасность Поддержка различных методов аутентификации: токены, ключи API, OAuth. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Сервис типа кластер P со значением nan, что это значит? nan = Not a Number В контексте метрик или мониторинга (например, Prometheus, Grafana), NaN указывает: - Значение не было рассчитано. - Источник данных не вернул метрику. - В формуле деление на ноль или ошибка в агрегации. - Сервис неактивен или отключен. Если это в метриках по кластеру — возможно, сервис вообще не репортит нужную метрику. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какой самый большой минус Ansible? Ansible – мощный инструмент для автоматизации, но у него есть серьезные недостатки, особенно при масштабировании. 🚩Основной минус – Медленная работа на больших инфраструктурах 🟠Нет агентов каждый раз Ansible подключается по SSH и выполняет задачи без предварительного кеширования что замедляет процесс. 🟠Ограничения Python на удаленных хостах если целевой сервер слабый или без Python, выполнение плейбуков будет медленным. 🟠Последовательное выполнение по умолчанию Ansible выполняет задачи последовательно, что дольше, чем параллельные методы (например, в SaltStack). yaml - name: Установка Nginx hosts: all tasks: - name: Установить Nginx apt: name: nginx state: present Запуск задач параллельно (-f 50) sh ansible-playbook playbook.yml -f 50 🚩Другие минусы Ansible 🟠Высокая нагрузка на управляющий узел Если 1000+ серверов, главный Ansible-узел может быстро перегрузиться. 🟠Сложное управление зависимостями Роли могут конфликтовать, если версии не совпадают. Ansible Galaxy не такой удобный, как Terraform Registry 🟠Ограниченная идемпотентность Некоторые модули (особенно shell и command) не всегда понимают, применялась ли конфигурация раньше. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какие таблицы прописывал в iptables? В iptables есть 5 таблиц, но чаще всего работают с тремя: 🟠`filter` основная таблица для контроля трафика (используется по умолчанию) 🟠`nat` для трансляции адресов (SNAT, DNAT, редиректы) 🟠`mangle` для изменения пакетов (маркировка, TTL, QoS) 🟠`raw` для исключения пакетов из обработки conntrack 🟠`security` используется в SELinux для меток безопасности 🚩Таблица `filter` (фильтрация пакетов) Используется для разрешения или блокировки трафика. iptables -P INPUT DROP iptables -A INPUT -p tcp --dport 22 -j ACCEPT 🚩Таблица `nat` (трансляция адресов) Используется для NAT, порт-форвардинга, маскарадинга. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Пример: Проброс порта (DNAT) – входящие пакеты на 80 порт перенаправляем на 8080 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 🚩Таблица `mangle` (изменение пакетов) Используется для маркировки пакетов, изменения TTL, QoS. iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64 Пример: Маркировка пакетов для использования в tc (QoS) iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1 Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Для чего используется clickhouse? ClickHouse – это высокопроизводительная колоночная база данных для аналитики. Она предназначена для быстрого выполнения аналитических запросов на больших объемах данных (миллиарды строк). Используется в BI-системах, логировании, мониторинге и обработке событий. 🚩Основные возможности 🟠Очень быстрые запросы за счёт хранения данных по колонкам и сжатия. 🟠Отлично масштабируется работает на одной машине или в кластере. 🟠Поддержка SQL работает с привычными SQL-запросами. 🟠Хорош для real-time аналитики обработка миллионов событий в секунду. 🟠Без индексов использует Primary Key + MergeTree, что упрощает оптимизацию. 🟠Хорошее сжатие данных благодаря специальным алгоритмам хранения. 🚩Где используется? 🟠Аналитика и отчёты BI-системы (анализ продаж, маркетинга, поведения пользователей). Агрегация данных по времени (финансы, реклама, ретеншн). 🟠Логирование и мониторинг Хранение логов (NGINX, Kubernetes, Clickstream). Аналитика событий в реальном времени. 🟠IoT и Big Data Обработка телеметрии с датчиков. Анализ поведения пользователей в приложениях. 🟠Пример работы с ClickHouse 1⃣Создание таблицы CREATE TABLE visits ( user_id UInt32, url String, duration UInt32, event_time DateTime ) ENGINE = MergeTree() ORDER BY event_time; 2⃣Вставка данных INSERT INTO visits VALUES (1, 'Ссылка скрыта 30, now()); 3⃣Аналитический запрос (например, среднее время посещения сайта) SELECT url, AVG(duration) FROM visits GROUP BY url ORDER BY AVG(duration) DESC; Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!