DevOps | Вопросы собесов
5.2K subscribers
29 photos
819 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Как покрываете Ansible тестами?

Для тестирования Ansible используют инструменты, такие как Molecule, который позволяет создавать тестовые сценарии, запускать плейбуки и проверять их результаты. Также используются статические анализаторы, такие как ansible-lint, для проверки кода на соответствие стандартам. Кроме того, можно применять интеграционные тесты с помощью Docker или виртуальных машин.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥52
🤔 Как настроите уведомления для сервисов от чего это будет зависеть?

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

🚩Основные факторы

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

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

🟠Каналы уведомлений
Email
SMS
Мессенджеры (Slack, Microsoft Teams)
Системы управления инцидентами (PagerDuty, OpsGenie)

🟠Инструменты мониторинга
Prometheus + Alertmanager
Grafana
Zabbix

🚩Пример настройки уведомлений с использованием Prometheus и Alertmanager

1⃣Настройка правил алертинга в Prometheus
Создайте или отредактируйте файл alerts.yml
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"


Добавьте конфигурацию в prometheus.yml
rule_files:
- "alerts.yml"


2⃣Настройка Alertmanager
Создайте или отредактируйте файл alertmanager.yml
global:
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alertmanager@example.com'

route:
receiver: 'email-notifications'

receivers:
- name: 'email-notifications'
email_configs:
- to: 'team@example.com'
send_resolved: true

inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']


Запустите Alertmanager
./alertmanager --config.file=alertmanager.yml


3⃣Интеграция Alertmanager с Prometheus
Добавьте Alertmanager в конфигурацию Prometheus
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']


🚩Пример настройки уведомлений в Grafana

🟠Создание контактной точки (Contact Point)
Перейдите в раздел "Alerting" -> "Contact points" и создайте новую контактную точку. Укажите каналы уведомлений, такие как Email, Slack, PagerDuty и другие.
🟠Создание правила уведомлений (Notification Policy)
Перейдите в раздел "Alerting" -> "Notification policies" и создайте новую политику уведомлений. Настройте условия и укажите контактные точки.

🚩Пример настройки уведомлений в Zabbix

🟠Создание медиатипа (Media Type)
Перейдите в раздел "Administration" -> "Media types" и создайте новый медиатип (например, Email или SMS).
🟠Создание пользователей и настройка уведомлений
Перейдите в раздел "Administration" -> "Users" и создайте пользователей. Настройте медиатипы для каждого пользователя и укажите, когда и как отправлять уведомления.

Ставь 👍 и забирай 📚 Базу знани
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
🤔 Что такое мониторинг, какие инструменты можно использовать?

Мониторинг — это процесс наблюдения за состоянием инфраструктуры и приложений для обеспечения их работоспособности и своевременного реагирования на сбои. Система мониторинга собирает метрики, логи и события для анализа и визуализации. Для мониторинга можно использовать инструменты, такие как Prometheus для сбора метрик, Grafana для визуализации, и ELK stack для логирования. Эти инструменты помогают отслеживать производительность и стабильность системы, а также выявлять аномалии в работе.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
🤔 Как бы вы настроили уведомления для сервисов которые находятся без интернета полностью локализованы закрыты от всего извне?

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

🚩Локальный почтовый сервер (SMTP)

1⃣Установка
sudo apt update
sudo apt install postfix


2⃣Настройка
Отредактируйте /etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination


3⃣Перезапуск Postfix
sudo systemctl restart postfix   


4⃣Проверка
echo "Test email" | mail -s "Test Subject" user@example.com


🚩Локальный мессенджер (Mattermost)

1⃣Установка Mattermost
Следуйте [документации](https://docs.mattermost.com/install/self-managed-install.html).

2⃣Настройка
Создайте каналы и пользователей.

3⃣Интеграция с мониторингом
Используйте веб-хуки Mattermost для уведомлений.

🚩Системы управления инцидентами (Zabbix)

1⃣Установка Zabbix
Следуйте [документации](https://www.zabbix.com/download).

2⃣Настройка
Настройте хосты, триггеры и действия.

3⃣Настройка уведомлений
Медиатипы: Настройте Email и SMS. Пользователи: Создайте пользователей и уведомления.

🚩Локальный стек мониторинга (Prometheus, Alertmanager)

1⃣Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.yml


2⃣Установка Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml


3⃣Настройка алертинга в Prometheus
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"


4⃣Настройка Alertmanager
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@local.example.com'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@local.example.com'
send_resolved: true


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🤔 Что такое squash в Docker?

squash — это процесс объединения всех слоёв Docker-образа в один. Это уменьшает количество слоёв, упрощает образ и может ускорить развертывание. Однако использование squash делает процесс сборки менее гибким из-за потери промежуточных слоёв.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🤔 Как обеспечить достоверность уведомлений которые вы получаете?

Для того чтобы уведомления были достоверными и надежными, необходимо учитывать несколько важных аспектов.

🟠Тщательная настройка правил алертинга
Правильно настроенные правила алертинга помогают избежать ложных срабатываний и пропусков важных событий.Определите четкие пороговые значения для метрик. Настройте правила так, чтобы они учитывали контекст и временные интервалы (например, CPU usage > 80% в течение 5 минут). Используйте тренды и аномалии вместо статических порогов для более точного алертинга.

🟠Корреляция событий
Объединение нескольких метрик и событий для повышения точности алертов. Настройте алерты, которые срабатывают только при наличии нескольких условий. Используйте системы, такие как Prometheus и Alertmanager, для сложной логики алертинга.

🟠Визуализация и проверка метрик
Использование дашбордов и графиков для визуализации метрик и проверки правильности алертов. Настройте дашборды в Grafana или Kibana для постоянного мониторинга метрик. Регулярно проверяйте данные на предмет аномалий и соответствия реальной картине.

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

🟠Настройка систем уведомлений
Убедитесь, что системы уведомлений настроены правильно и доставляют сообщения своевременно. Используйте надежные каналы уведомлений (например, локальный почтовый сервер, локальные мессенджеры). Настройте резервные каналы уведомлений на случай отказа основного канала.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Что такое firewall?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Как linux выбирает, какой из процессов завершить?

Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.

🚩Как работает OOM Killer?

🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).

🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.

🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.

🚩Пример расчета OOM Score

🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)

🚩Настройка OOM Killer

Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге /proc. Например, для изменения приоритета процесса:
echo -1000 > /proc/<PID>/oom_score_adj


🚩Логирование и мониторинг

При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно /var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Как покрываете Ansible тестами?

Для тестирования Ansible используют инструменты, такие как Molecule, который позволяет создавать тестовые сценарии, запускать плейбуки и проверять их результаты. Также используются статические анализаторы, такие как ansible-lint, для проверки кода на соответствие стандартам. Кроме того, можно применять интеграционные тесты с помощью Docker или виртуальных машин.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
🤔 Что вы выберете между Terraform и opentofu?

Это инструменты для управления инфраструктурой как кодом (IaC), которые помогают автоматизировать развертывание, управление и масштабирование ресурсов в облачных и локальных средах. Оба инструмента имеют свои сильные и слабые стороны. Выбор между ними зависит от конкретных требований и контекста использования.

🚩Terraform

Плюсы

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

Поддержка множества провайдеров
Terraform поддерживает широкий спектр облачных провайдеров и сервисов (AWS, Azure, Google Cloud, и т.д.). Разработчики активно добавляют новые провайдеры и обновляют существующие.

Мощная и гибкая конфигурация
Использование HashiCorp Configuration Language (HCL) для написания инфраструктурного кода. Поддержка сложных сценариев развертывания с использованием модулей, переменных и терраформ-рабочих областей.

Минусы

Коммерциализация
Некоторые функции доступны только в коммерческой версии Terraform Enterprise. Переход на платные функции может быть дорогостоящим для небольших команд.

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

🚩OpenTofu (ранее OpenTF)

OpenTofu — это форк Terraform, который возник в ответ на изменения в лицензионной политике HashiCorp.

Плюсы

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

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

Быстрое развитие
Открытое сообщество разработчиков может быстрее внедрять новые функции и исправления.

Минусы

Меньшее сообщество
Хотя OpenTofu быстро растет, его сообщество и экосистема пока меньше, чем у Terraform. Ограниченное количество документации и примеров по сравнению с Terraform.

Потенциальные риски совместимости
Хотя OpenTofu совместим с Terraform на текущий момент, в будущем могут возникнуть различия в функциональности и поддержке провайдеров.

🚩Выбор инструмента

🟠Когда выбрать Terraform
Если вам нужна стабильность и зрелость инструмента с широким сообществом и обширной документацией. Если ваша инфраструктура уже использует Terraform и вы не хотите менять инструмент. Если вам нужны коммерческие функции Terraform Enterprise для управления и обеспечения безопасности инфраструктуры.
🟠Когда выбрать OpenTofu
Если вы хотите использовать полностью открытый инструмент без коммерческих ограничений. Если вас беспокоят изменения в лицензионной политике HashiCorp и вы хотите избежать потенциальных проблем в будущем. Если вы хотите поддержать открытое сообщество и активно участвовать в развитии инструмента.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 В каких случаях будете использовать foreach а в каких count приведите пример?

В Terraform, for_each и count используются для создания нескольких экземпляров ресурсов на основе списка значений или карты (map). Выбор между ними зависит от структуры данных и конкретного сценария использования.

🚩count

count используется для создания фиксированного количества экземпляров ресурса на основе числового значения. Это простой способ создания ресурсов, если количество экземпляров известно заранее и не зависит от ключей или других атрибутов.
Сценарий: Создание трех экземпляров виртуальных машин с одинаковой конфигурацией.
resource "aws_instance" "example" {
count = 3
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"

tags = {
Name = "example-instance-${count.index}"
}
}


🚩for_each

for_each используется для создания ресурсов на основе ключей карты (map) или множества (set). Это позволяет более гибко управлять созданием ресурсов и ссылаться на конкретные экземпляры по их ключам.
Сценарий: Создание экземпляров виртуальных машин с разными конфигурациями на основе карты значений.
locals {
instances = {
instance1 = { ami = "ami-0c55b159cbfafe1f0", instance_type = "t2.micro" }
instance2 = { ami = "ami-0c55b159cbfafe1f0", instance_type = "t2.small" }
instance3 = { ami = "ami-0c55b159cbfafe1f0", instance_type = "t2.medium" }
}
}

resource "aws_instance" "example" {
for_each = local.instances
ami = each.value.ami
instance_type = each.value.instance_type

tags = {
Name = each.key
}
}


🚩Когда использовать `count`

🟠Фиксированное количество ресурсов
Если количество экземпляров известно заранее и одинаково для всех экземпляров.
🟠Простые сценарии
Когда все экземпляры имеют одинаковую конфигурацию или различия минимальны.

Создание трех одинаковых экземпляров S3 бакетов.
resource "aws_s3_bucket" "example" {
count = 3
bucket = "example-bucket-${count.index}"
}


🚩Когда использовать `for_each`

🟠Динамическое создание ресурсов
Если количество экземпляров и их конфигурация зависят от динамически определяемых данных.
🟠Работа с ключами
Когда нужно использовать ключи для идентификации и управления экземплярами ресурсов.

Создание IAM пользователей с различными именами и политиками.
locals {
users = {
alice = "arn:aws:iam::aws:policy/AdministratorAccess"
bob = "arn:aws:iam::aws:policy/ReadOnlyAccess"
}
}

resource "aws_iam_user" "example" {
for_each = local.users
name = each.key
path = "/users/"
}

resource "aws_iam_user_policy_attachment" "example" {
for_each = local.users
user = aws_iam_user.example[each.key].name
policy_arn = each.value
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151
🤔 Что такое Kubernetes?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3
🤔 Что нужно сделать чтобы после того как вы создали репозиторий с этим репозиторием можно было работать?

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

🚩Основные шаги

1⃣Создание нового репозитория
Перейдите на GitHub и войдите в свой аккаунт. Нажмите на кнопку "New" для создания нового репозитория. Введите имя репозитория, описание (опционально), выберите публичный или приватный доступ, инициализируйте с README (если нужно). Нажмите "Create repository".

2⃣Клонирование или инициализация репозитория
Если репозиторий уже существует на GitHub
git clone https://github.com/yourusername/your-repository.git
cd your-repository


Если вы создаете новый локальный репозиторий
mkdir your-repository
cd your-repository
git init


3⃣Добавление файлов и коммит начального состояния
Создайте или добавьте файлы
echo "# Your Repository" > README.md   


Добавьте файлы в индекс
git add README.md   


Сделайте первый коммит
git commit -m "Initial commit"   


4⃣Настройка удаленного репозитория
Если вы инициализировали локальный репозиторий, вам нужно настроить удаленный репозиторий.
git remote add origin https://github.com/yourusername/your-repository.git


5⃣Пуш изменений в удаленный репозиторий
Отправьте ваши изменения в удаленный репозиторий
git push -u origin master


🚩Дополнительные шаги для совместной работы

1⃣Создание веток
Для разработки новых функций или исправлений багов рекомендуется создавать отдельные ветки
git checkout -b feature-branch   


2⃣Создание Pull Request (PR)
После завершения работы в ветке создайте Pull Request на GitHub для обзора и слияния.

3⃣Настройка файлов `.gitignore`
Добавьте файл .gitignore для исключения ненужных файлов из коммитов.
echo "node_modules/" > .gitignore
git add .gitignore
git commit -m "Add .gitignore"


4⃣Настройка CI/CD
Подключите сервисы Continuous Integration/Continuous Deployment, такие как GitHub Actions, Travis CI или Jenkins, для автоматизации тестирования и развертывания.
# Пример файла .github/workflows/ci.yml для GitHub Actions
name: CI

on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🤔 Где лучше всего хранить state?

State лучше хранить в управляемых внешних хранилищах, таких как базы данных или распределённые системы (Redis, Consul). Это упрощает масштабирование и сохраняет данные при перезапуске контейнеров. Использование локального хранилища не рекомендуется из-за рисков потери данных.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
🤔 Как вы думаете почему редис используют с mongobd, а не постгрес например?

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

🟠Совместимость и дополнение функциональности
MongoDB — это документно-ориентированная база данных, оптимизированная для хранения и управления JSON-подобными документами. Она хорошо подходит для хранения сложных данных и поддерживает гибкую схему.
Redis — это база данных в памяти, которая используется для высокопроизводительного кэширования и обработки данных. Она поддерживает различные структуры данных, такие как строки, списки, множества и хэши. Эти два инструмента дополняют друг друга, предлагая сочетание долговременного хранения данных (MongoDB) и быстрого доступа к данным (Redis).
PostgreSQL — это реляционная база данных с расширенными возможностями, такими как поддержка транзакций, строгая схема и ACID-соответствие. Она хорошо подходит для сложных запросов и аналитики.

🟠Типы данных и схемы
Гибкая схема MongoDB позволяет легко изменять структуру данных без сложных миграций. MongoDB отлично работает с JSON-документами, что делает его удобным для хранения полуструктурированных данных.
Redis поддерживает различные структуры данных, такие как списки, множества, сортированные множества и хэши, что делает его идеальным для использования в качестве кэша и обработки данных в реальном времени.

🟠Производительность и масштабируемость
Redis работает в памяти, что обеспечивает очень высокую скорость чтения и записи. Это делает его идеальным для кэширования и временного хранения данных, которые требуют быстрого доступа. Redis может обрабатывать большое количество операций в секунду, что делает его подходящим для высоконагруженных систем.
MongoDB масштабируется горизонтально, что позволяет эффективно управлять большими объемами данных. Поддержка шардинга в MongoDB позволяет распределять данные по нескольким узлам, улучшая производительность и отказоустойчивость.

🟠Кэширование и обработка данных в реальном времени
Redis часто используется для кэширования результатов запросов из MongoDB. Это снижает нагрузку на MongoDB и улучшает производительность системы. Redis может использоваться для хранения сессий пользователей, очередей задач и других временных данных, которые требуют быстрого доступа и обновления.

🚩Примеры использования

🟠Кэширование
Использование Redis для кэширования часто запрашиваемых данных из MongoDB. Например, результаты сложных запросов или часто используемые документы могут храниться в Redis для быстрого доступа.
import redis
from pymongo import MongoClient

# Подключение к Redis и MongoDB
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
mongo_client = MongoClient('localhost', 27017)
db = mongo_client['example_db']
collection = db['example_collection']

# Получение данных из Redis
data = redis_client.get('key')
if not data:
# Если данных нет в Redis, получить их из MongoDB
data = collection.find_one({'_id': 'key'})
# Сохранить данные в Redis для кэширования
redis_client.set('key', data)


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Какие протоколы знаешь?

Протоколы: TCP (надежная передача данных), UDP (быстрая и ненадёжная), HTTP/HTTPS (веб-протоколы), FTP (передача файлов), SMTP/IMAP/POP3 (почтовые протоколы), WebSocket (двусторонняя связь) и DNS (разрешение имён).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Чем DevOps отличается от Agile?

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

🚩Agile

Увеличение гибкости и адаптивности разработки программного обеспечения.
🟠Итеративная разработка
Разработка проходит в коротких циклах (итерациях), что позволяет регулярно представлять работающее программное обеспечение.
🟠Непрерывная обратная связь
Регулярные встречи (например, ежедневные стендапы, спринт-ревью) для получения обратной связи от команды и заинтересованных сторон.
🟠Кросс-функциональные команды
Команды, состоящие из разработчиков, тестировщиков, аналитиков и других специалистов, работают вместе над проектом.
🟠Фокус на клиенте
Постоянное взаимодействие с клиентами для уточнения требований и проверки соответствия продукта их ожиданиям.

Фреймворки: Scrum, Kanban, XP (Extreme Programming).

🚩DevOps

Увеличение скорости и качества доставки программного обеспечения через автоматизацию и улучшение сотрудничества между разработчиками и операционными командами.
🟠Непрерывная интеграция и доставка (CI/CD)
Автоматизация сборки, тестирования и развертывания кода, чтобы изменения могли быстро и надежно попасть в рабочую среду.
🟠Инфраструктура как код (IaC)
Использование кода для управления и автоматизации инфраструктуры, что делает процессы повторяемыми и предсказуемыми.
🟠Мониторинг и логирование
Постоянное отслеживание состояния приложений и инфраструктуры для быстрого обнаружения и устранения проблем.
🟠Сотрудничество и обмен знаниями
Улучшение взаимодействия между разработчиками и операционными инженерами через общие инструменты и процессы.

Инструменты: Jenkins, Docker, Kubernetes, Ansible, Terraform, Prometheus, Grafana.

🚩Сравнение и различия

🟠Фокус
Agile: Сфокусирован на процессе разработки и управлении проектами, улучшая гибкость и адаптивность команды разработки.
DevOps: Сфокусирован на процессе доставки и эксплуатации, улучшая автоматизацию и сотрудничество между разработчиками и операционными командами.

🟠Команды
Agile: Включает кросс-функциональные команды, которые работают вместе над созданием программного обеспечения.
DevOps: Включает команды разработчиков и операций, которые совместно работают над автоматизацией и улучшением процессов развертывания и эксплуатации.

🟠Методы и инструменты
Agile: Методы Scrum, Kanban и другие Agile-практики, которые улучшают процесс управления проектами.
DevOps: Инструменты и практики для автоматизации развертывания, мониторинга и управления инфраструктурой.

🚩Связь между Agile и DevOps

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

🟠DevOps
Дополняет Agile, автоматизируя развертывание и эксплуатацию программного обеспечения, что позволяет быстрее доставлять изменения пользователям.

🟠Agile команда
Может использовать Scrum для управления спринтами и задачами.

🟠DevOps практики
Могут быть использованы для автоматизации CI/CD пайплайнов, чтобы каждая итерация разработки могла быть быстро и надежно развернута на серверы.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🤔 Когда используется UDP?

UDP используется, когда важна скорость и допустима потеря данных, например, в стриминге, видеозвонках, DNS-запросах и онлайн-играх.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Какой из сигналов SIGTERM/SIGKILL вызывает команда kill?

Команда kill в Linux может отправлять разные сигналы процессам, включая как SIGTERM, так и SIGKILL. Основное различие между ними заключается в том, как они обрабатываются процессами.

🚩SIGTERM и SIGKILL

🟠SIGTERM (Signal 15)
Это сигнал завершения, который может быть перехвачен и обработан процессом. Процесс может выполнить очистку (освободить ресурсы, сохранить состояние и т.д.) перед завершением. По умолчанию команда kill отправляет именно этот сигнал. Пример команды: kill <PID>, где <PID> - идентификатор процесса.

🟠SIGKILL (Signal 9)
Это сигнал немедленного завершения, который не может быть перехвачен процессом. Процесс завершается мгновенно без выполнения какой-либо очистки. Используется, когда процесс не реагирует на другие сигналы. Пример команды: kill -9 <PID>.

🚩Использование команды kill

🟠Отправка SIGTERM (по умолчанию)
Когда вы используете команду kill без указания сигнала, по умолчанию отправляется сигнал SIGTERM.
kill <PID>


🟠Отправка SIGKILL
Для отправки сигнала SIGKILL используется флаг -9.
kill -9 <PID>


🚩Примеры и практическое применение

🟠SIGTERM
Команда: kill 1234
Процесс с идентификатором 1234 получит сигнал SIGTERM и, если он запрограммирован для обработки этого сигнала, может выполнить завершение с очисткой.

🟠SIGKILL
Команда: kill -9 1234
Процесс с идентификатором 1234 будет немедленно завершен без возможности выполнения какой-либо очистки.

🚩Когда использовать SIGTERM или SIGKILL

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5