🤔 Как AWS работает с DevOps?
AWS предоставляет облачные сервисы для автоматизации CI/CD, управления инфраструктурой, мониторинга и безопасности.
🚩CI/CD (Непрерывная интеграция и развертывание)
AWS предлагает инструменты для автоматической сборки, тестирования и деплоя.
AWS CodePipeline – автоматизация CI/CD-процессов
AWS CodeBuild – сборка и тестирование кода
AWS CodeDeploy – автоматический деплой в EC2, ECS, Lambda
AWS CodeCommit – репозиторий Git в AWS
Пример CI/CD-пайплайна в AWS CodePipeline
1. CodeCommit получает новый коммит
2. CodeBuild собирает и тестирует код
3. CodeDeploy разворачивает приложение на EC2
🚩Управление инфраструктурой (IaC)
В DevOps важно автоматически создавать и управлять ресурсами AWS.
Terraform – создает инфраструктуру по коду
AWS CloudFormation – аналог Terraform от AWS
AWS CDK (Cloud Development Kit) – IaC на Python/TypeScript
🚩Контейнеризация и оркестрация
AWS поддерживает управление контейнерами и Kubernetes.
Amazon ECS (Elastic Container Service) – контейнеры без Kubernetes
Amazon EKS (Elastic Kubernetes Service) – управляемый Kubernetes
AWS Fargate – запуск контейнеров без управления серверами
Пример развертывания контейнера в AWS ECS:
1. Собираем Docker-образ
2. Загружаем его в Amazon ECR (Elastic Container Registry)
3. ECS автоматически масштабирует и управляет контейнерами
🚩Мониторинг и логирование
Amazon CloudWatch – сбор метрик и логов
AWS X-Ray – трассировка запросов в микросервисах
AWS CloudTrail – аудит действий в AWS
Пример мониторинга EC2
1. CloudWatch собирает метрики CPU, RAM
2. Настраиваем авто-масштабирование на основе этих метрик
3. CloudTrail записывает все изменения инфраструктуры
🚩Безопасность и управление доступом
AWS IAM (Identity and Access Management) – контроль прав
AWS Secrets Manager – управление паролями и API-ключами
AWS KMS (Key Management Service) – шифрование данных
Ставь 👍 и забирай 📚 Базу знаний
AWS предоставляет облачные сервисы для автоматизации CI/CD, управления инфраструктурой, мониторинга и безопасности.
🚩CI/CD (Непрерывная интеграция и развертывание)
AWS предлагает инструменты для автоматической сборки, тестирования и деплоя.
AWS CodePipeline – автоматизация CI/CD-процессов
AWS CodeBuild – сборка и тестирование кода
AWS CodeDeploy – автоматический деплой в EC2, ECS, Lambda
AWS CodeCommit – репозиторий Git в AWS
Пример CI/CD-пайплайна в AWS CodePipeline
1. CodeCommit получает новый коммит
2. CodeBuild собирает и тестирует код
3. CodeDeploy разворачивает приложение на EC2
🚩Управление инфраструктурой (IaC)
В DevOps важно автоматически создавать и управлять ресурсами AWS.
Terraform – создает инфраструктуру по коду
AWS CloudFormation – аналог Terraform от AWS
AWS CDK (Cloud Development Kit) – IaC на Python/TypeScript
hcl
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}
🚩Контейнеризация и оркестрация
AWS поддерживает управление контейнерами и Kubernetes.
Amazon ECS (Elastic Container Service) – контейнеры без Kubernetes
Amazon EKS (Elastic Kubernetes Service) – управляемый Kubernetes
AWS Fargate – запуск контейнеров без управления серверами
Пример развертывания контейнера в AWS ECS:
1. Собираем Docker-образ
2. Загружаем его в Amazon ECR (Elastic Container Registry)
3. ECS автоматически масштабирует и управляет контейнерами
🚩Мониторинг и логирование
Amazon CloudWatch – сбор метрик и логов
AWS X-Ray – трассировка запросов в микросервисах
AWS CloudTrail – аудит действий в AWS
Пример мониторинга EC2
1. CloudWatch собирает метрики CPU, RAM
2. Настраиваем авто-масштабирование на основе этих метрик
3. CloudTrail записывает все изменения инфраструктуры
🚩Безопасность и управление доступом
AWS IAM (Identity and Access Management) – контроль прав
AWS Secrets Manager – управление паролями и API-ключами
AWS KMS (Key Management Service) – шифрование данных
hcl
resource "aws_iam_role" "s3_read" {
name = "s3-read-only"
assume_role_policy = jsonencode({
Statement = [{
Effect = "Allow"
Action = "s3:GetObject"
Resource = "arn:aws:s3:::my-bucket/*"
}]
})
}
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Где храним реквизиты (адреса, логины, пароли) для плейбуков?
Основные способы хранения:
- group_vars/host_vars — для адресов и переменных
- Ansible Vault — для зашифрованных секретов (пароли, токены)
- CI/CD секреты — переменные окружения в GitLab/GitHub
- Внешние системы — HashiCorp Vault, AWS Secrets Manager и т.д.
Vault позволяет безопасно хранить секреты прямо в репозитории.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Основные способы хранения:
- group_vars/host_vars — для адресов и переменных
- Ansible Vault — для зашифрованных секретов (пароли, токены)
- CI/CD секреты — переменные окружения в GitLab/GitHub
- Внешние системы — HashiCorp Vault, AWS Secrets Manager и т.д.
Vault позволяет безопасно хранить секреты прямо в репозитории.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Как найти запущенный процесс?
В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды.
🟠Команда `ps`
Команда
🟠Команда `top`
Команда
🟠Команда `htop`
Команда
🟠Команда `pgrep`
Команда
Пример использования:
🟠Команда `pidof`
Команда
🟠Команда `ps` с фильтрацией
Для более точного поиска можно использовать команду
🟠Команда `lsof`
Команда
🚩Пример поиска конкретного процесса
Допустим, вам нужно найти процесс с именем
Использование
Использование
Использование
🚩Использование `top` или `htop`
Запустите
Ставь 👍 и забирай 📚 Базу знаний
В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды.
🟠Команда `ps`
Команда
ps отображает список текущих процессов. Часто используемые опции:ps aux: Показывает все процессы в системе.ps -ef: Альтернативный формат вывода всех процессов.ps aux | grep <имя_процесса>
🟠Команда `top`
Команда
top показывает список процессов в реальном времени, обновляя его каждые несколько секунд. Это удобно для мониторинга системы и поиска процессов с высокой загрузкой CPU или памяти.top
🟠Команда `htop`
Команда
htop — это улучшенная версия top, предоставляющая более удобный интерфейс для мониторинга процессов. Она должна быть установлена отдельно.sudo apt-get install htop
htop
🟠Команда `pgrep`
Команда
pgrep используется для поиска процессов по имени. Она возвращает идентификаторы (PID) процессов, соответствующих критериям поиска.Пример использования:
pgrep <имя_процесса>
🟠Команда `pidof`
Команда
pidof возвращает идентификаторы (PID) процессов с указанным именем.pidof <имя_процесса>
🟠Команда `ps` с фильтрацией
Для более точного поиска можно использовать команду
ps с фильтрацией через grep.ps aux | grep <имя_процесса> | grep -v grep
🟠Команда `lsof`
Команда
lsof отображает список открытых файлов и может использоваться для поиска процессов, открывающих определенные файлы.sudo lsof -i :<номер_порта>
🚩Пример поиска конкретного процесса
Допустим, вам нужно найти процесс с именем
nginx. Вот несколько способов сделать этоИспользование
psps aux | grep nginx | grep -v grep
Использование
pgreppgrep nginx
Использование
pidofpidof nginx
🚩Использование `top` или `htop`
Запустите
top или htop и найдите процесс nginx в интерактивном режиме.Ставь 👍 и забирай 📚 Базу знаний
👍3
🤔 Что такое зомби процессы?
Зомби-процессы — это процессы, которые завершились, но их запись в таблице процессов остаётся, так как родительский процесс не обработал их код завершения. Они занимают минимальные системные ресурсы, но их наличие может указывать на проблемы в управлении процессами родительским процессом. Зомби-процессы можно устранить только завершением родительского процесса или с помощью сигналов. Наличие большого количества зомби-процессов может привести к исчерпанию доступных PID в системе.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1🔥1
🤔 Можно ли на лету изменить настройки dns контейнре через cli?
Нет, нельзя изменить DNS у уже запущенного контейнера напрямую через CLI. Но есть обходные способы!
🚩Остановка и перезапуск контейнера с новыми DNS
Самый надежный способ — перезапустить контейнер с нужными DNS-серверами
Или задать DNS через
🚩Изменение `/etc/resolv.conf` внутри контейнера (может сработать)
Можно изменить DNS вручную внутри работающего контейнера
🚩Использование `network connect` (только для user-defined сетей)
Можно подключить контейнер к другой сети с нужными DNS:
🚩Изменение настроек `systemd-resolved` (для контейнеров с `host`-сетью)
Если контейнер использует сеть хоста (
Ставь 👍 и забирай 📚 Базу знаний
Нет, нельзя изменить DNS у уже запущенного контейнера напрямую через CLI. Но есть обходные способы!
🚩Остановка и перезапуск контейнера с новыми DNS
Самый надежный способ — перезапустить контейнер с нужными DNS-серверами
docker run --dns 8.8.8.8 --dns 8.8.4.4 -d my_container
Или задать DNS через
docker network docker network create mynet --dns=1.1.1.1
docker run --net=mynet -d my_container
🚩Изменение `/etc/resolv.conf` внутри контейнера (может сработать)
Можно изменить DNS вручную внутри работающего контейнера
docker exec -it my_container sh
echo "nameserver 1.1.1.1" > /etc/resolv.conf
🚩Использование `network connect` (только для user-defined сетей)
Можно подключить контейнер к другой сети с нужными DNS:
docker network create mynewnet --dns=8.8.8.8
docker network connect mynewnet my_container
🚩Изменение настроек `systemd-resolved` (для контейнеров с `host`-сетью)
Если контейнер использует сеть хоста (
--network host), можно поменять DNS на хосте: resolvectl dns eth0 8.8.8.8
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Может ли приложение из одного неймспейса увидеть приложение из другого внутри кластера?
Да, если указать полное имя сервиса, включая неймспейс: service.namespace.svc.cluster.local. Однако по умолчанию межнеймспейсовая изоляция логическая, но не сетевая.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Да, если указать полное имя сервиса, включая неймспейс: service.namespace.svc.cluster.local. Однако по умолчанию межнеймспейсовая изоляция логическая, но не сетевая.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3🔥1💊1
🤔 Как определить ресурс, который необходим одной node?
Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно:
Проверить текущее потребление ресурсов (CPU, RAM, диски)*
Оценить нагрузку от подов (
Использовать мониторинг (Prometheus, Grafana,
🚩Проверить нагрузку на Node (`kubectl top node`)
Команда
Вывод
🚩Проверить потребление ресурсов подами (`kubectl top pods`)
Команда
Вывод
🚩Анализ `requests` и `limits` подов
Команда
Вывод (пример секции Allocatable)
Проверить
Вывод
🚩Использование Prometheus и Grafana для анализа нагрузки
Prometheus-запросы для анализа Node
Средняя загрузка CPU за 5 минут
Среднее использование памяти
Ставь 👍 и забирай 📚 Базу знаний
Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно:
Проверить текущее потребление ресурсов (CPU, RAM, диски)*
Оценить нагрузку от подов (
requests и limits) Использовать мониторинг (Prometheus, Grafana,
kubectl top) 🚩Проверить нагрузку на Node (`kubectl top node`)
Команда
sh
kubectl top nodes
Вывод
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node-1 500m 25% 2Gi 50%
node-2 1000m 50% 4Gi 80%
🚩Проверить потребление ресурсов подами (`kubectl top pods`)
Команда
sh
kubectl top pods --all-namespaces
Вывод
NAMESPACE POD CPU(cores) MEMORY(bytes)
default web-app-1 250m 256Mi
default web-app-2 300m 512Mi
monitoring prometheus-1 600m 1Gi
🚩Анализ `requests` и `limits` подов
Команда
sh
kubectl describe node node-1
Вывод (пример секции Allocatable)
Allocatable:
cpu: 4
memory: 8Gi
pods: 110
Проверить
requests и limits у подовsh
kubectl describe pod my-pod
Вывод
Requests:
cpu: 500m
memory: 1Gi
Limits:
cpu: 1
memory: 2Gi
🚩Использование Prometheus и Grafana для анализа нагрузки
Prometheus-запросы для анализа Node
Средняя загрузка CPU за 5 минут
promql
avg(rate(node_cpu_seconds_total[5m])) * 100
Среднее использование памяти
promql
avg(node_memory_Active_bytes) / avg(node_memory_MemTotal_bytes) * 100
Ставь 👍 и забирай 📚 Базу знаний
🔥2
🤔 Через что делается создание неймспейсов и запуск деплойментов?
- Всё делается через kube-apiserver, к которому обращаются:
- kubectl
- другие компоненты
- CI/CD пайплайны
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Всё делается через kube-apiserver, к которому обращаются:
- kubectl
- другие компоненты
- CI/CD пайплайны
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Зачем нужны теги в Ansible?
Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.
🚩Когда использовать теги?
🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.
🚩Как использовать теги?
🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск Nginx
Запуск только установки (
Запуск только перезапуска (
🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
Запуск только роли
🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
Ставь 👍 и забирай 📚 Базу знаний
Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.
🚩Когда использовать теги?
🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.
🚩Как использовать теги?
🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск Nginx
yaml
- name: Установить Nginx
apt:
name: nginx
state: present
tags: install
- name: Перезапустить Nginx
service:
name: nginx
state: restarted
tags: restart
Запуск только установки (
install) sh
ansible-playbook playbook.yml --tags install
Запуск только перезапуска (
restart) sh
ansible-playbook playbook.yml --tags restart
🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
yaml
- hosts: all
roles:
- { role: nginx, tags: web }
- { role: database, tags: db }
Запуск только роли
database sh
ansible-playbook playbook.yml --tags db
🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
sh
ansible-playbook playbook.yml --skip-tags restart
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Как посмотреть историю изменения деплоймента?
Для этого используют:
- kubectl rollout history deployment <имя> — показывает историю версий (ревизий).
- Можно увидеть, какие изменения конфигурации были внесены и когда.
Это полезно для отслеживания конфигурационных изменений и откатов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Для этого используют:
- kubectl rollout history deployment <имя> — показывает историю версий (ревизий).
- Можно увидеть, какие изменения конфигурации были внесены и когда.
Это полезно для отслеживания конфигурационных изменений и откатов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Какие есть метрики для измерения качества системы?
Для измерения качества системы (особенно в DevOps, SRE и разработке) используют различные метрики производительности, надежности и доступности.
🚩Основные метрики качества системы
🟠Метрики "Четырёх ключевых показателей" (DORA)
Эти метрики помогают оценить эффективность процессов DevOps:
Lead Time for Changes (Время доставки изменений) — время от написания кода до его выхода в прод.
Deployment Frequency (Частота развертываний) — как часто изменения попадают в прод.
Mean Time to Restore (MTTR) (Среднее время восстановления) — как быстро исправляются инциденты.
Change Failure Rate (Процент неудачных изменений) — доля развертываний, вызывающих сбои.
🟠Метрики надежности и доступности (SRE)
Эти метрики помогают измерять надежность системы:
SLA (Service Level Agreement) — договорное время доступности (например, 99.9%).
SLO (Service Level Objective) — целевое значение доступности (например, 99.95%).
SLI (Service Level Indicator) — фактические измеренные показатели (например, 99.93%).
Error Rate — процент ошибок в системе (HTTP 500, таймауты и т. д.).
Latency (Задержка) — время ответа системы на запросы.
🟠Метрики производительности
Они показывают, насколько быстро работает система:
CPU Utilization — загрузка процессора.
Memory Usage — использование оперативной памяти.
Disk I/O — скорость чтения/записи на диск.
Network Throughput — пропускная способность сети.
Response Time — время отклика системы.
🟠Метрики пользовательского опыта
Оценивают удобство работы пользователей с системой:
Apdex (Application Performance Index) — индекс удовлетворенности пользователей (0–1).
TTFB (Time to First Byte) — время до получения первого байта ответа от сервера.
Page Load Time — время полной загрузки страницы.
Bounce Rate — процент пользователей, покинувших сайт без взаимодействия.
Ставь 👍 и забирай 📚 Базу знаний
Для измерения качества системы (особенно в DevOps, SRE и разработке) используют различные метрики производительности, надежности и доступности.
🚩Основные метрики качества системы
🟠Метрики "Четырёх ключевых показателей" (DORA)
Эти метрики помогают оценить эффективность процессов DevOps:
Lead Time for Changes (Время доставки изменений) — время от написания кода до его выхода в прод.
Deployment Frequency (Частота развертываний) — как часто изменения попадают в прод.
Mean Time to Restore (MTTR) (Среднее время восстановления) — как быстро исправляются инциденты.
Change Failure Rate (Процент неудачных изменений) — доля развертываний, вызывающих сбои.
🟠Метрики надежности и доступности (SRE)
Эти метрики помогают измерять надежность системы:
SLA (Service Level Agreement) — договорное время доступности (например, 99.9%).
SLO (Service Level Objective) — целевое значение доступности (например, 99.95%).
SLI (Service Level Indicator) — фактические измеренные показатели (например, 99.93%).
Error Rate — процент ошибок в системе (HTTP 500, таймауты и т. д.).
Latency (Задержка) — время ответа системы на запросы.
🟠Метрики производительности
Они показывают, насколько быстро работает система:
CPU Utilization — загрузка процессора.
Memory Usage — использование оперативной памяти.
Disk I/O — скорость чтения/записи на диск.
Network Throughput — пропускная способность сети.
Response Time — время отклика системы.
🟠Метрики пользовательского опыта
Оценивают удобство работы пользователей с системой:
Apdex (Application Performance Index) — индекс удовлетворенности пользователей (0–1).
TTFB (Time to First Byte) — время до получения первого байта ответа от сервера.
Page Load Time — время полной загрузки страницы.
Bounce Rate — процент пользователей, покинувших сайт без взаимодействия.
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что такое Node API в Kubernetes?
Node API — это часть Kubernetes API, которая:
- Предоставляет информацию о Node-объектах.
- Позволяет отслеживать ресурсы, состояние нод, метки, таинтинги.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Node API — это часть Kubernetes API, которая:
- Предоставляет информацию о Node-объектах.
- Позволяет отслеживать ресурсы, состояние нод, метки, таинтинги.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как определить опции запуска пайплайна при редактировании определенных ресурсов в гите?
При работе с CI/CD (GitHub Actions, GitLab CI, Jenkins) часто нужно запускать пайплайн только при изменении определенных файлов. Это помогает оптимизировать сборку, экономить ресурсы и время.
🚩В GitHub Actions (on: push, paths)
В GitHub Actions можно указать файлы, изменения в которых запустят пайплайн.
🚩В GitLab CI/CD (only: changes)
В GitLab можно настроить запуск пайплайна по изменению файлов с помощью
🚩В Jenkins (when { changes })
В Jenkins Declarative Pipeline можно использовать
Ставь 👍 и забирай 📚 Базу знаний
При работе с CI/CD (GitHub Actions, GitLab CI, Jenkins) часто нужно запускать пайплайн только при изменении определенных файлов. Это помогает оптимизировать сборку, экономить ресурсы и время.
🚩В GitHub Actions (on: push, paths)
В GitHub Actions можно указать файлы, изменения в которых запустят пайплайн.
name: Infra Pipeline
on:
push:
paths:
- 'infra/**'
- 'k8s/**'
pull_request:
paths:
- 'infra/**'
- 'k8s/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy Infrastructure
run: ./deploy.sh
🚩В GitLab CI/CD (only: changes)
В GitLab можно настроить запуск пайплайна по изменению файлов с помощью
only: changes. stages:
- deploy
terraform:
stage: deploy
script:
- terraform apply -auto-approve
only:
changes:
- terraform/**
🚩В Jenkins (when { changes })
В Jenkins Declarative Pipeline можно использовать
when { changes } для проверки измененных файлов. pipeline {
agent any
stages {
stage('Deploy Ansible') {
when { changes path: 'ansible/**' }
steps {
sh './deploy_ansible.sh'
}
}
stage('Deploy Helm') {
when { changes path: 'helm/**' }
steps {
sh './deploy_helm.sh'
}
}
}
}Ставь 👍 и забирай 📚 Базу знаний
🔥1
🤔 Что мы можем делать с помощью ArgoCD?
- Доставлять Kubernetes-манифесты из Git;
- Отслеживать дрифт и синхронизацию;
- Обновлять Helm-чарты;
- Делать rollback и promote версий;
- Настраивать RBAC и уведомления.
Это ключевой инструмент GitOps в Kubernetes.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Доставлять Kubernetes-манифесты из Git;
- Отслеживать дрифт и синхронизацию;
- Обновлять Helm-чарты;
- Делать rollback и promote версий;
- Настраивать RBAC и уведомления.
Это ключевой инструмент GitOps в Kubernetes.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Что такое нормализация баз данных?
Нормализация баз данных - это процесс организации данных в базе данных для минимизации избыточности данных и обеспечения их целостности. Цель нормализации - структурировать таблицы таким образом, чтобы устранить аномалии обновления, вставки и удаления данных. Нормализация достигается путем разбиения больших таблиц на более мелкие, связанных между собой отношениями, что упрощает управление данными и делает их более логически связанными.
🚩Зачем нужна нормализация
🟠Устранение избыточности данных
Нормализация позволяет минимизировать дублирование данных, что экономит пространство и упрощает управление базой данных.
🟠Обеспечение целостности данных
Нормализация помогает поддерживать целостность данных, обеспечивая правильное и единообразное хранение данных.
🟠Упрощение структуры базы данных
Разделение данных на логические таблицы делает структуру базы данных более понятной и удобной для использования.
🟠Избежание аномалий данных
Нормализация предотвращает возникновение аномалий при обновлении, вставке и удалении данных.
🚩Основные формы нормализации
🟠Первая нормальная форма (1NF)
Удаление повторяющихся групп в таблице. Каждый столбец должен содержать только атомарные (неделимые) значения. Все записи в таблице должны быть уникальными.
🟠Вторая нормальная форма (2NF)
Таблица должна быть в 1NF. Удаление частичной функциональной зависимости: каждый неключевой атрибут должен быть полностью зависим от первичного ключа.
🟠Третья нормальная форма (3NF)
Таблица должна быть в 2NF. Удаление транзитивной зависимости: все неключевые атрибуты должны быть напрямую зависимы от первичного ключа, а не от других неключевых атрибутов.
🟠Бойс-Кодд нормальная форма (BCNF)
Усиление 3NF: каждая детерминанта должна быть кандидатом на ключ, что означает, что в любой нетривиальной функциональной зависимости X -> Y, X должно быть суперключом.
🟠Четвертая нормальная форма (4NF)
Таблица должна быть в BCNF. Устранение многозначных зависимостей: таблица не должна содержать многозначных зависимостей, когда один атрибут зависит от нескольких значений другого атрибута.
🟠Пятая нормальная форма (5NF)
Таблица должна быть в 4NF. Устранение соединительных зависимостей: данные должны быть разбиты так, чтобы каждая зависимость сохранялась.
🚩Примеры применения нормализации
🟠Первая нормальная форма
Если у вас есть таблица с повторяющимися группами, такими как несколько телефонных номеров для одного клиента, вы создаете отдельную таблицу для телефонов и связываете ее с таблицей клиентов.
🟠Вторая нормальная форма
Если у вас есть таблица заказов с колонками "номер заказа", "название товара" и "цена товара", вы можете создать отдельные таблицы для заказов и товаров, чтобы цена товара зависела только от товара, а не от комбинации заказа и товара.
🟠Третья нормальная форма
Если у вас есть таблица сотрудников с колонками "идентификатор сотрудника", "название отдела" и "имя начальника отдела", вы можете создать отдельные таблицы для сотрудников и отделов, чтобы имя начальника отдела зависело только от отдела, а не от сотрудника.
Ставь 👍 и забирай 📚 Базу знаний
Нормализация баз данных - это процесс организации данных в базе данных для минимизации избыточности данных и обеспечения их целостности. Цель нормализации - структурировать таблицы таким образом, чтобы устранить аномалии обновления, вставки и удаления данных. Нормализация достигается путем разбиения больших таблиц на более мелкие, связанных между собой отношениями, что упрощает управление данными и делает их более логически связанными.
🚩Зачем нужна нормализация
🟠Устранение избыточности данных
Нормализация позволяет минимизировать дублирование данных, что экономит пространство и упрощает управление базой данных.
🟠Обеспечение целостности данных
Нормализация помогает поддерживать целостность данных, обеспечивая правильное и единообразное хранение данных.
🟠Упрощение структуры базы данных
Разделение данных на логические таблицы делает структуру базы данных более понятной и удобной для использования.
🟠Избежание аномалий данных
Нормализация предотвращает возникновение аномалий при обновлении, вставке и удалении данных.
🚩Основные формы нормализации
🟠Первая нормальная форма (1NF)
Удаление повторяющихся групп в таблице. Каждый столбец должен содержать только атомарные (неделимые) значения. Все записи в таблице должны быть уникальными.
🟠Вторая нормальная форма (2NF)
Таблица должна быть в 1NF. Удаление частичной функциональной зависимости: каждый неключевой атрибут должен быть полностью зависим от первичного ключа.
🟠Третья нормальная форма (3NF)
Таблица должна быть в 2NF. Удаление транзитивной зависимости: все неключевые атрибуты должны быть напрямую зависимы от первичного ключа, а не от других неключевых атрибутов.
🟠Бойс-Кодд нормальная форма (BCNF)
Усиление 3NF: каждая детерминанта должна быть кандидатом на ключ, что означает, что в любой нетривиальной функциональной зависимости X -> Y, X должно быть суперключом.
🟠Четвертая нормальная форма (4NF)
Таблица должна быть в BCNF. Устранение многозначных зависимостей: таблица не должна содержать многозначных зависимостей, когда один атрибут зависит от нескольких значений другого атрибута.
🟠Пятая нормальная форма (5NF)
Таблица должна быть в 4NF. Устранение соединительных зависимостей: данные должны быть разбиты так, чтобы каждая зависимость сохранялась.
🚩Примеры применения нормализации
🟠Первая нормальная форма
Если у вас есть таблица с повторяющимися группами, такими как несколько телефонных номеров для одного клиента, вы создаете отдельную таблицу для телефонов и связываете ее с таблицей клиентов.
🟠Вторая нормальная форма
Если у вас есть таблица заказов с колонками "номер заказа", "название товара" и "цена товара", вы можете создать отдельные таблицы для заказов и товаров, чтобы цена товара зависела только от товара, а не от комбинации заказа и товара.
🟠Третья нормальная форма
Если у вас есть таблица сотрудников с колонками "идентификатор сотрудника", "название отдела" и "имя начальника отдела", вы можете создать отдельные таблицы для сотрудников и отделов, чтобы имя начальника отдела зависело только от отдела, а не от сотрудника.
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что такое SLA, SLO, SLI?
- SLA (Service Level Agreement) — договорной уровень доступности между клиентом и поставщиком (например, 99.9% аптайма).
- SLO (Service Level Objective) — технические цели внутри компании (например, latency < 100ms в 95% случаев).
- SLI (Service Level Indicator) — метрика (например, количество ошибок, время ответа), которая измеряет качество сервиса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- SLA (Service Level Agreement) — договорной уровень доступности между клиентом и поставщиком (например, 99.9% аптайма).
- SLO (Service Level Objective) — технические цели внутри компании (например, latency < 100ms в 95% случаев).
- SLI (Service Level Indicator) — метрика (например, количество ошибок, время ответа), которая измеряет качество сервиса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥3
🤔 Что такое 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:
Для MySQL
🚩Особенности Data Source
🟠Кастомизация
Вы можете устанавливать плагины для подключения к нестандартным источникам данных. Grafana Marketplace предлагает плагины для расширения функциональности.
🟠Мульти-сорсинг
Один дашборд может использовать несколько источников данных, что позволяет объединять данные из разных систем.
🟠Глобальные переменные
Источники данных могут использовать глобальные параметры, такие как время (
🟠Безопасность
Поддержка различных методов аутентификации: токены, ключи API, OAuth.
Ставь 👍 и забирай 📚 Базу знаний
Это источник данных, с которым 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.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Что известно об iptables?
iptables — это утилита для настройки фильтрации трафика в ядре Linux. Позволяет управлять входящими, исходящими и пересылаемыми пакетами, создавать правила NAT и проксирования.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
iptables — это утилита для настройки фильтрации трафика в ядре Linux. Позволяет управлять входящими, исходящими и пересылаемыми пакетами, создавать правила NAT и проксирования.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Что такое IaC?
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
🚩Зачем нужен IaC?
🟠Автоматизация
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
🟠Консистентность
одинаковая среда на всех серверах, исключение человеческих ошибок.
🟠Быстрое развертывание
развернуть инфраструктуру можно за минуты.
🟠Легкость в откате
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
🟠Масштабируемость
легко добавить новые серверы или ресурсы при увеличении нагрузки.
🚩Как работает IaC?
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
🚩Основные инструменты IaC
🟠Terraform
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
🟠Ansible
удобен для настройки серверов (конфигурации ПО).
🟠Puppet / Chef
похожи на Ansible, но требуют агента на серверах.
🟠CloudFormation
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знаний
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
🚩Зачем нужен IaC?
🟠Автоматизация
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
🟠Консистентность
одинаковая среда на всех серверах, исключение человеческих ошибок.
🟠Быстрое развертывание
развернуть инфраструктуру можно за минуты.
🟠Легкость в откате
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
🟠Масштабируемость
легко добавить новые серверы или ресурсы при увеличении нагрузки.
🚩Как работает IaC?
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}🚩Основные инструменты IaC
🟠Terraform
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
🟠Ansible
удобен для настройки серверов (конфигурации ПО).
🟠Puppet / Chef
похожи на Ansible, но требуют агента на серверах.
🟠CloudFormation
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 В чём плюсы Helm?
Helm — менеджер пакетов для Kubernetes, его плюсы:
- Повторное использование шаблонов и параметров (values.yaml)
- Быстрая установка и обновление приложений
- Откаты к предыдущим версиям
- Централизация и стандартизация манифестов
- Работа с репозиториями чартов, как apt или yum
Он значительно упрощает управление сложными развертываниями в Kubernetes.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Helm — менеджер пакетов для Kubernetes, его плюсы:
- Повторное использование шаблонов и параметров (values.yaml)
- Быстрая установка и обновление приложений
- Откаты к предыдущим версиям
- Централизация и стандартизация манифестов
- Работа с репозиториями чартов, как apt или yum
Он значительно упрощает управление сложными развертываниями в Kubernetes.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Как мы можем поменять последовательное выполнение таски плейбука на машинах в параллельное?
По умолчанию Ansible выполняет задачи последовательно, но можно ускорить выполнение с помощью параметра
🚩Увеличение параллельных подключений (`forks`)
Установить
🚩Асинхронное выполнение (`async` + `poll`)
Если задача выполняется долго, ее можно запустить асинхронно и не ждать завершения.
Пример асинхронного выполнения установки пакета
Проверить статус запущенных задач:
🚩Использование `&` в Shell-командах (`shell` + `nohup`)
Пример запуска задачи в фоновом режиме
Ставь 👍 и забирай 📚 Базу знаний
По умолчанию Ansible выполняет задачи последовательно, но можно ускорить выполнение с помощью параметра
forks или асинхронных задач (async). 🚩Увеличение параллельных подключений (`forks`)
forks – это количество серверов, на которых Ansible выполняет задачи одновременно. ansible-playbook -i inventory.ini playbook.yml --forks=10
Установить
forks в ansible.cfg: [defaults]
forks = 10
🚩Асинхронное выполнение (`async` + `poll`)
Если задача выполняется долго, ее можно запустить асинхронно и не ждать завершения.
Пример асинхронного выполнения установки пакета
- name: Установить nginx параллельно
apt:
name: nginx
state: present
async: 300
poll: 0
async: 300 – запускает задачу и дает ей 300 секунд на выполнение poll: 0 – не ждет завершения, сразу переходит к следующей Проверить статус запущенных задач:
ansible all -m async_status -a "jid=1234567890" -i inventory.ini
🚩Использование `&` в Shell-командах (`shell` + `nohup`)
Пример запуска задачи в фоновом режиме
- name: Запустить долгий процесс
shell: "nohup long_script.sh &"
Ставь 👍 и забирай 📚 Базу знаний
👍3