DevOps | Вопросы собесов
5.29K subscribers
29 photos
900 links
Download Telegram
Что такое volume и persistent volume и какие есть типы этих вольюмов ?
Спросят с вероятностью 13%

"volume" и "persistent volume" относятся к системам хранения данных, которые используются для управления данными приложений. Они играют важную роль в управлении состоянием и данными в среде контейнеров, где основной контейнер может быть временным и эфемерным.

Volume

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

Типы:
emptyDir: Временный каталог, который удаляется при удалении пода. Используется для хранения данных, которые не нужно сохранять после остановки пода.
hostPath: Монтирует файловую систему хоста в под, что может быть полезно для доступа к системным файлам хоста.
configMap, secret: Используются для хранения конфигурационных данных и конфиденциальной информации, соответственно.
nfs: Подключает NFS-шару.
persistentVolumeClaim (PVC): Используется для монтирования постоянного хранилища в под.

Persistent Volume (PV)

Это ресурс в кластере, который администратор кластера предварительно настраивает. Он представляет собой сегмент хранилища, который был выделен для хранения и доступен для использования всеми подами.

Типы:
GCE Persistent Disks: Диски, предоставляемые Google Cloud.
AWS EBS: Блочные устройства хранения от Amazon Web Services.
Azure Disk Storage: Дисковое хранилище от Microsoft Azure.
NFS: Общий доступ к файлам через сетевую файловую систему.
iSCSI: Подключение к блочным устройствам хранения через интернет.
Local: Предоставляет хранилище с локальных узлов кластера.
CephFS, GlusterFS: Файловые системы, ориентированные на высокопроизводительное распределенное хранение.

Persistent Volume Claim (PVC)

Это запрос на хранилище, который делает пользователь кластера. Это похоже на пользовательский запрос на хранилище в облачных сервисах. PVC конкретизирует размер и параметры доступа к PV.

Использование и преимущества

Позволяет управлять данными более гибко:
Данные не теряются при остановке контейнера: PVs предоставляют постоянное хранилище, которое сохраняется независимо от жизненного цикла подов.
Эффективное использование ресурсов: Volumes могут быть монтированы по нескольким подам, что облегчает общий доступ к данным.
Безопасность: Секреты и конфигурации могут быть безопасно внедрены в контейнеры.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Какая команда Kubernetes используется для развертывания приложения, указанного в файле манифеста?
Anonymous Quiz
61%
kubectl apply -f
26%
kubectl deploy -f
8%
kubectl create -f
5%
kubectl start -f
Что такое service monitor в кубере ?
Спросят с вероятностью 13%

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

Основная функция:

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

Как он работает

Настраивается через манифест Kubernetes, в котором указываются:
Селекторы для выбора сервисов, с которых нужно собирать метрики.
Параметры, описывающие, какие порты, пути и схемы (HTTP или HTTPS) следует использовать для сбора метрик.

Автоматически связывается с сервисами, подходящими под его селекторы, и настраивает Prometheus на сбор метрик с этих сервисов.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: web
interval: 30s


В этом примере:
selector.matchLabels определяет, что ServiceMonitor должен применяться к сервисам, у которых метка app соответствует example-app.
endpoints указывает, что метрики следует собирать с порта web каждые 30 секунд.

Преимущества:

1️⃣Автоматизация: Автоматизирует процесс конфигурации мониторинга, что упрощает управление мониторингом в больших и динамически изменяющихся средах Kubernetes.
2️⃣Централизация управления: Все настройки мониторинга могут быть централизованно управляемы через Kubernetes манифесты, что облегчает изменение и распространение изменений.
3️⃣Масштабируемость: Подход подходит для масштабируемых приложений, автоматически адаптируясь к изменениям в числе экземпляров сервиса или его конфигурации.

Использование ServiceMonitor вместе с Prometheus значительно упрощает задачу мониторинга, позволяя более эффективно управлять производительностью и здоровьем приложений в кластере.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
🤔 Какой метод развертывания минимизирует простой и обеспечивает беспрерывную доставку?
Anonymous Quiz
16%
Canary Deployment
41%
Blue-Green Deployment
40%
Rolling Deployment
3%
Recreate Deployment
Какие протоколы есть ?
Спросят с вероятностью 13%

Существует множество протоколов, каждый из которых выполняет определённые функции. Протоколы можно классифицировать по различным уровням сетевой модели OSI (Open Systems Interconnection) или по уровням модели TCP/IP. Вот краткий обзор некоторых из наиболее значимых протоколов в этих моделях:

Протоколы уровня приложений (Application Layer)
HTTP (Hypertext Transfer Protocol): используется для передачи веб-страниц и других данных в интернете.
HTTPS (HTTP Secure): расширение HTTP с поддержкой шифрования для безопасной передачи данных.
FTP (File Transfer Protocol): протокол для передачи файлов между системами через TCP/IP сети.
SMTP (Simple Mail Transfer Protocol): используется для отправки электронной почты.
IMAP (Internet Message Access Protocol) и POP3 (Post Office Protocol version 3): протоколы для получения электронной почты с сервера.
DNS (Domain Name System): протокол для преобразования доменных имен в IP-адреса.

Протоколы транспортного уровня (Transport Layer)
TCP (Transmission Control Protocol): обеспечивает надёжную, упорядоченную и безошибочную доставку данных.
UDP (User Datagram Protocol): обеспечивает передачу без установления соединения, что быстрее, но менее надёжно по сравнению с TCP.

Протоколы сетевого уровня (Network Layer)
IP (Internet Protocol): основной протокол для передачи пакетов данных через сеть. Включает IPv4 и IPv6.
ICMP (Internet Control Message Protocol): используется для передачи сообщений об ошибках и другой информационной диагностики.
ARP (Address Resolution Protocol): протокол для определения MAC-адреса по IP-адресу устройства в локальной сети.

Протоколы канального уровня (Data Link Layer)
Ethernet: наиболее распространённая технология для локальных сетей.
PPP (Point-to-Point Protocol): используется для прямого соединения двух узлов.
MAC (Media Access Control): управляет доступом к передающей среде.

Протоколы физического уровня (Physical Layer)
В этой категории протоколы обычно не называются, но они включают стандарты для передачи электрических, оптических или иных сигналов по физическим медиам, таким как медные кабели, волоконно-оптические кабели и радиоволны.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Какой инструмент используется для оркестрации контейнеров и управления их жизненным циклом?
Anonymous Quiz
8%
Docker Compose
1%
Nomad
86%
Kubernetes
5%
Swarm
1👍1
На каких технологиях базируется контейнеризация докер в том числе ?
Спросят с вероятностью 13%

Контейнеризация — это метод виртуализации на уровне операционной системы, который позволяет запускать и управлять приложениями и их зависимостями в изолированных "контейнерах". Docker, одна из наиболее популярных платформ для контейнеризации, использует ряд технологий Linux и функций ядра для обеспечения изоляции и безопасности контейнеров. Вот основные технологии, на которых она базируется:

1️⃣Пространства имён (Namespaces)
Являются ключевой функцией ядра Linux, которая ограничивает видимость и доступность системных ресурсов между различными процессами. Каждый контейнер работает в собственном наборе пространств имён, изолированно от других контейнеров и хост-системы. Основные пространства имён включают:
PID (Process ID): Изоляция процессов.
NET (Network): Управление сетевыми интерфейсами.
IPC (Inter-process Communication): Управление доступом к IPC ресурсам.
Mount: Управление точками монтирования файловых систем.
UTS (UNIX Time Sharing): Изоляция имени хоста и домена.
User: Изоляция пользователей и групп.

2️⃣Контрольные группы (Control Groups, cgroups)
Позволяют ограничивать и изолировать ресурсы системы, такие как ЦПУ, память, ввод-вывод и сеть, которые используются процессами. Docker использует cgroups для контроля над тем, сколько ресурсов системы может использовать каждый контейнер.

3️⃣Union File Systems
Это файловая система, которая поддерживает создание слоёв для файлов и папок, что позволяет контейнерам быть "легковесными". Docker использует UnionFS для предоставления базового образа контейнера, к которому можно добавлять изменения, не модифицируя исходный образ. Примеры таких файловых систем включают AuFS, OverlayFS и другие.

4️⃣Docker Engine
Это сервер с открытым API, который выполняет задачи по созданию, запуску и управлению Docker контейнерами. Он использует вышеупомянутые технологии для обеспечения изоляции и безопасности.

5️⃣Docker Image и Dockerfile
Строит свои контейнеры на основе образов (images), которые описаны в специальных файлах конфигурации — Dockerfile. Эти образы состоят из слоёв, каждый из которых представляет собой набор изменений относительно предыдущего слоя. Dockerfile содержит набор инструкций для сборки образа, что включает установку программного обеспечения, копирование файлов и другие команды.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🤔 Какой метод аутентификации и авторизации обеспечивает повышенную безопасность в микросервисной архитектуре?
Anonymous Quiz
39%
OAuth
3%
Basic Auth
25%
API Key
34%
JWT
Как посмотреть размер папки на диске ?
Спросят с вероятностью 13%

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

Windows

Использование проводника (Explorer)
1️⃣Откройте Проводник Windows.
1️⃣Наведите на папку, размер которой вы хотите узнать.
3️⃣Кликните правой кнопкой мыши и выберите "Свойства".
4️⃣В открывшемся окне "Свойства" вы увидите размер папки в разделе "Размер".

Использование командной строки
1️⃣Откройте командную строку (Cmd) или PowerShell.
2️⃣Введите следующую команду, заменив ПутьКПапке на путь к интересующей вас папке:
      du -sh ПутьКПапке

Для PowerShell можно использовать:
      Get-ChildItem ПутьКПапке -Recurse | Measure-Object -Property Length -Sum

Здесь Get-ChildItem перечисляет все файлы в папке, а Measure-Object считает их размер.

macOS и Linux

Использование терминала
1️⃣Откройте терминал.
2️⃣Введите команду du, чтобы узнать размер папки. Вот пример команды, которая показывает размер папки в читаемом виде (суммарный размер всех файлов):
      du -sh /путь/к/папке

Здесь:
-s означает "summary" (суммировать размер всех файлов в папке),
-h означает "human-readable" (отображать размер в удобочитаемом формате, например, в КБ, МБ, ГБ).

Объяснение команды du

Используется в Unix-подобных операционных системах для измерения размера файлового пространства, используемого файлами и папками. Она может быть настроена для вывода размера отдельных файлов в папке или для подсчёта общего размера всех файлов в папке.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯1
🤔 Какое значение по умолчанию имеет директива worker_processes в конфигурации Nginx?
Anonymous Quiz
20%
1
11%
2
57%
auto
12%
4
👍1
Как уменьшить размер Docker image ?
Спросят с вероятностью 13%

Уменьшение размера Docker образа (Docker image) является важной задачей в процессе оптимизации Docker контейнеров, поскольку это помогает сократить время загрузки, улучшить производительность и уменьшить расход ресурсов хранения и сети. Вот несколько эффективных методов этого:

1️⃣Выбор подходящего базового образа
Используйте облегчённые (lightweight) базовые образы, такие как Alpine Linux, которые по умолчанию содержат минимум установленного программного обеспечения. Это значительно уменьшает размер конечного образа.

2️⃣Минимизация слоёв образа
Объединяйте RUN-команды в Dockerfile. Каждая инструкция RUN, COPY, и ADD создаёт новый слой. Объединение этих команд в одну или несколько инструкций может значительно сократить количество слоёв и размер образа.
    RUN apt-get update && \
apt-get install -y package1 package2 && \
rm -rf /var/lib/apt/lists/*


3️⃣Удаление ненужных файлов
Удаляйте временные файлы и зависимости, которые не нужны в финальном образе, в той же инструкции RUN, которая их создаёт. Это включает кэши пакетных менеджеров, временные файлы и документацию.

4️⃣Использование многоэтапной сборки (multi-stage builds)
Многоэтапная сборка позволяет использовать один Dockerfile для создания нескольких промежуточных образов, из которых можно копировать только нужные файлы в финальный образ. Это особенно полезно для языков, требующих компиляции, таких как Java или C, где исходный код и компиляторы не нужны в рабочем образе.
    # Этап сборки
FROM golang:1.14 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

# Финальный этап
FROM alpine:latest
COPY --from=builder /app/myapp /app/myapp
ENTRYPOINT ["/app/myapp"]


5️⃣Использование .dockerignore
Добавляйте файл `.dockerignore` в ваш проект, чтобы исключить ненужные файлы и директории из контекста сборки (например, временные файлы, локальные конфигурационные файлы, каталоги с зависимостями типа node_modules и т.д.), что уменьшает время сборки и размер образа.

6️⃣Оптимизация добавления ресурсов
Минимизируйте количество инструкций ADD иак умень по возможности комбинируя копируемые файлы в одну инструкцию, чтобы сократить количество слоёв.

7️⃣Выбор правильных инструкций
Используйте COPY вместоеньшить если вам не нужны дополнительные функции ADD, такие как автоматическое распаковывание архивов и добавление файлов из URL.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🤯1
🤔 Какое преимущество предоставляет использование Terraform вместо традиционных скриптов развертывания?
Anonymous Quiz
5%
Лучшая производительность
16%
Императивное управление
72%
Декларативное управление
7%
Меньше зависимостей
🤔 Какой компонент Docker отвечает за создание, управление и удаление контейнеров?
Anonymous Quiz
70%
Docker Engine
3%
Docker Hub
21%
Docker Compose
5%
Docker Swarm
Forwarded from Идущий к IT
10$ за техническое собеседование на английском языке:

1. Отправьте запись технического собеседования на английском языке файлом на этот аккаунт
2. Добавьте ссылку на вакансию или пришлите название компании и должность
3. Напишите номер кошелка USDT (Tether) на который отправить 10$

🛡 Важно:

– Запись будет использована только для сбора данных о вопросах
– Вы останетесь анонимны
– Запись нигде не будет опубликована

🤝 Условия:

– Внятный звук, различимая речь
– Допустимые профессии:
• Любые программисты
• DevOps
• Тестировщики
• Дата сайнтисты
• Бизнес/Системные аналитики
• Прожекты/Продукты
• UX/UI и продукт дизайнеры
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📌 Как убить зомби процесс ?

💬 Спрашивают в 13% собеседований

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

Удаление зомби-процесса

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

Шаги:

1️⃣ Найти родительский процесс зомби-процесса:

Сначала нужно определить идентификатор (PID) и его родительского процесса (PPID).
      ps aux | grep 'Z'


Пример вывода:

   user     1234  0.0  0.0      0     0 ?        Z    13:00   0:00 [my_zombie_process] <defunct>


В данном примере 1234 — это PID зомби-процесса.

2️⃣ Найти родительский процесс (PPID):

Чтобы узнать родительский процесс, используйте команду ps -o ppid=:

      ps -o ppid= -p 1234


Пример вывода:

   5678

   Здесь 5678 — это PID родительского процесса.

3️⃣ Перезапустить или завершить родительский процесс:

Если родительский процесс важен и его нельзя завершить, попробуйте его перезапустить. Это может вызвать выполнение wait(), и зомби-процесс будет очищен.

Если перезапуск невозможен или не помогает, можно попытаться завершить родительский процесс. Используйте команду kill для этого:

      sudo kill -HUP 5678


Команда kill -HUP отправляет сигнал перезапуска родительскому процессу, что может вызвать выполнение wait(). Если это не помогает, можно использовать сигнал SIGTERM или SIGKILL:
      sudo kill -TERM 5678
sudo kill -KILL 5678


Внимание: Прежде чем завершать родительский процесс, убедитесь, что это не повредит системе или важным службам.

1️⃣ Найти все зомби-процессы:

      ps aux | grep 'Z'


2️⃣ Для каждого зомби-процесса найти его PPID:

      ps -o ppid= -p <PID_зомби>


3️⃣ Перезапустить или завершить родительский процесс:

      sudo kill -HUP <PPID>


Если это не помогает:
      sudo kill -TERM <PPID>
sudo kill -KILL <PPID>


Зомби-процесс — это завершившийся процесс, запись которого не удалена, так как родительский процесс не выполнил wait(). Чтобы удалить зомби-процесс, нужно воздействовать на его родительский процесс.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
📌 Как сирота отличается от зомби процесса ?

💬 Спрашивают в 13% собеседований

Сиротский процесс (orphan process) и зомби-процесс (zombie process) представляют собой два разных состояния процессов в операционной системе Unix/Linux. Давайте рассмотрим, в чем их отличие.

Сиротский процесс

Это процесс, чей родительский процесс завершился до того, как завершился сам процесс. В этом случае сиротский процесс автоматически принимается на попечение процессом init (PID 1) или systemd, который становится его новым родителем. init или systemd затем отслеживает такие процессы и выполняет wait(), чтобы предотвратить появление зомби-процессов.

1️⃣ Процесс A создает процесс B.

2️⃣ Процесс A завершается, пока процесс B еще выполняется.

3️⃣ Процесс B становится сиротским и его родителем становится init или systemd.

Зомби-процесс

Это процесс, который завершился, но его запись в таблице процессов все еще существует, потому что его родительский процесс не вызвал системный вызов wait() для получения кода завершения и других данных. Зомби-процессы не используют системные ресурсы, кроме записи в таблице процессов, но если родительский процесс не выполняет wait(), то такие записи могут накапливаться.

1️⃣ Процесс A создает процесс B.

2️⃣ Процесс B завершается.б

3️⃣ Процесс A не вызывает wait(), чтобы забрать статус завершения процесса B.

4️⃣ Процесс B остается в состоянии зомби.

Отличия:

1️⃣ Состояние родительского процесса:

Сиротский процесс: Родительский процесс завершился до завершения дочернего процесса

Зомби-процесс: Дочерний процесс завершился, но родительский процесс не вызвал wait(), чтобы забрать статус завершения.

2️⃣ Состояние дочернего процесса:

Сиротский процесс: Процесс продолжает выполняться и получает нового родителя (init или systemd).

Зомби-процесс: Процесс уже завершился, но запись о нем все еще существует в таблице процессов.

3️⃣ Ресурсы:

Сиротский процесс: Использует системные ресурсы как обычный процесс.

Зомби-процесс: Не использует системные ресурсы, кроме записи в таблице процессов.

Сиротский процесс — это процесс, чей родитель завершился, и он был передан под управление init или systemd. Зомби-процесс — это завершившийся процесс, запись о котором все еще существует, потому что родительский процесс не вызвал wait().

ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥1
🤔 Какой инструмент CI/CD используется для автоматизации тестирования и развертывания?
Anonymous Quiz
1%
Grafana
79%
Jenkins
3%
Prometheus
17%
Ansible
🔥12
📌 Чем DevOps отличается от Agile ?

💬 Спрашивают в 13% собеседований

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

Agile

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

Основные характеристики:

1️⃣ Итеративный и инкрементальный подход:

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

2️⃣ Коллективная работа и коммуникация:

Акцент на тесное взаимодействие между членами команды и с заказчиком.

3️⃣ Адаптивное планирование:

Возможность быстро адаптироваться к изменениям требований в ходе проекта.

4️⃣ Постоянное улучшение:

Регулярные ретроспективы для анализа и улучшения процесса разработки.

Примеры:

Scrum: Подход, основанный на спринтах, регулярных встречах (ежедневные stand-up, спринт-планирование, ретроспективы) и определенных ролях (Scrum Master, Product Owner, команда разработки).

Kanban: Метод, ориентированный на визуализацию рабочего процесса и управление потоком задач.

DevOps

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

Основные характеристики:

1️⃣ Автоматизация:

Автоматизация процессов сборки, тестирования, развертывания и мониторинга.

2️⃣ Непрерывная интеграция и доставка (CI/CD):

Практика частой интеграции кода и его автоматического развертывания на различных средах (разработка, тестирование, продакшн).

3️⃣ Инфраструктура как код (IaC):

Управление инфраструктурой через код для обеспечения репликации и масштабирования сред.

4️⃣ Мониторинг и логирование:

Постоянный мониторинг приложений и инфраструктуры для быстрого обнаружения и устранения проблем.

5️⃣ Культурное изменение:

Сдвиг в культуре организации для улучшения сотрудничества между командами разработки и эксплуатации.

Примеры:

Jenkins: Инструмент для автоматизации CI/CD.

Docker: Платформа для контейнеризации приложений.

Kubernetes: Система оркестрации контейнеров.

Terraform: Инструмент для управления инфраструктурой как кодом.

Prometheus и Grafana: Инструменты для мониторинга и визуализации данных.

Основные различия

1️⃣ Фокус:

Agile: Сосредоточен на процессе разработки и управлении изменениями требований через итерации и инкременты.

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

2️⃣ Команды и роли:

Agile: Включает роли, такие как Product Owner, Scrum Master и команда разработки.

DevOps: Включает разработчиков, специалистов по эксплуатации, инженеров по автоматизации и других, кто работает над интеграцией и доставкой.

3️⃣ Процессы и инструменты:

Agile: Использует методологии, такие как Scrum и Kanban, для управления процессом разработки.

DevOps: Использует инструменты и практики для автоматизации и мониторинга всего жизненного цикла приложения.

4️⃣ Цели:

Agile: Ускорить процесс разработки, улучшить взаимодействие внутри команды и с заказчиком.

DevOps: Ускорить и автоматизировать процесс доставки программного обеспечения, улучшить качество и надежность выпускаемых продуктов, а также обеспечить непрерывное развертывание и мониторинг.

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

ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
🤔 Какой из следующих инструментов используется для управления конфигурациями?
Anonymous Quiz
23%
Git
3%
Docker
54%
Puppet
20%
Jenkins
👍2
📌 Какая файловая система бывает с динамическими inode ?

💬 Спрашивают в 13% собеседований

Одной из файловых систем с динамическим управлением inodes является XFS.

XFS и динамическое управление inodes

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

🤔 Как работает динамическое управление inodes

1️⃣ Динамическое выделение inodes:

В отличие от файловых систем, таких как ext2/ext3/ext4, где количество inodes задается при создании файловой системы и не может быть изменено, XFS выделяет inodes по мере необходимости. Это значит, что файловая система XFS не имеет фиксированного числа inodes при создании.

2️⃣ Адаптация к рабочей нагрузке:

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

3️⃣ Использование свободного пространства:

Использует свободное пространство файловой системы для хранения inodes. Это позволяет эффективно использовать доступное дисковое пространство и предотвращает ситуацию, когда место на диске еще есть, но новые файлы создать невозможно из-за нехватки inodes.

Для создания файловой системы XFS на диске /dev/sdX1 используется утилита mkfs.xfs:
mkfs.xfs /dev/sdX1


Проверка использования inodes на XFS

Для этого на файловой системе XFS можно использовать команду df -i:
df -i /mnt/myxfs


Пример вывода:
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdX1 0 0 0 - /mnt/myxfs

На XFS файловых системах команда df -i может показывать значения inodes как 0, что указывает на динамическое управление inodes.

Файловая система XFS использует динамическое управление inodes, выделяя их по мере необходимости и позволяя эффективно использовать дисковое пространство. Это предотвращает проблемы с нехваткой inodes, которые могут возникать в файловых системах с фиксированным числом inodes.

ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
📌 Что такое OOM ?

💬 Спрашивают в 13% собеседований

OOM (Out of Memory) — это состояние, в котором операционная система или приложение сталкивается с нехваткой оперативной памяти для выполнения текущих задач или запросов. Когда система исчерпывает доступную память, она не может выделить необходимое количество памяти для новых или уже работающих процессов.

🤔 Что происходит при OOM?

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

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

1️⃣ Выделение памяти:

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

2️⃣ Использование swap:

Если оперативная память заканчивается, система может использовать swap (файл или раздел на диске, используемый как дополнительная память). Однако, swap медленнее, чем оперативная память, и при интенсивном использовании swap производительность системы может существенно снизиться.

3️⃣ Активация:

Если свободной памяти и swap все равно недостаточно, в Linux запускается OOM Killer. Это механизм, который выбирает и завершает один или несколько процессов для освобождения памяти.

4️⃣ Завершение процессов:

Делает это, основываясь на различных метриках, таких как использование памяти, приоритет процесса и т.д. Обычно он выбирает процессы с наибольшим использованием памяти или процессы с низким приоритетом.

Причины возникновения

1️⃣ Неоптимизированное программное обеспечение:

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

2️⃣ Недостаток ресурсов:

Физическая память системы может быть недостаточной для текущей рабочей нагрузки.

3️⃣ Непредвиденные рабочие нагрузки:

Внезапное увеличение рабочих нагрузок или запуск ресурсовоемких приложений может привести к исчерпанию памяти.

Примеры предотвращения и решения

1️⃣ Мониторинг использования памяти:

Регулярное наблюдение за использованием памяти позволяет своевременно выявлять проблемы. Инструменты, такие как top, htop, free и vmstat, помогают отслеживать использование памяти.

2️⃣ Настройка swap:

Увеличение размера swap раздела или файла может помочь временно компенсировать нехватку оперативной памяти.

3️⃣ Оптимизация приложений:

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

4️⃣ Настройка OOM Killer:

В Linux можно настроить поведение OOM Killer, используя /proc файловую систему и такие параметры, как /proc/sys/vm/oom_adj и /proc/<pid>/oom_score_adj, чтобы контролировать приоритеты завершения процессов.

Пример

Команда free показывает использование оперативной памяти и swap:
free -h

Пример вывода:
              total        used        free      shared  buff/cache   available
Mem: 16G 12G 1.5G 512M 2.5G 3G
Swap: 4G 2G 2G


Команда top позволяет наблюдать за процессами в реальном времени и их использованием памяти:
top


OOM (Out of Memory) — это состояние нехватки оперативной памяти, когда система не может выделить память для новых или существующих процессов. Для решения этой проблемы используется OOM Killer, который завершает процессы для освобождения памяти.

ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61