Skip to content

Обо мне / Подготовка к assesment

Краткая справка для прохождения assesment на DevOps роль

OSI (Open Systems Interconnection) — модель взаимодействия устройств в компьютерных сетях

Уровень Название Короткое описание Применение Используемые порты/интерфейсы Ограничения
7 Прикладной (Application) Интерфейс приложений к сети; сетевые сервисы Веб (HTTP/HTTPS), почта, FTP, DNS, API TCP/UDP-порты приложений (напр. 80, 443, 25, 53, 21, 22) Зависимость от безопасности и форматов; уязвимости приложений
6 Представления (Presentation) Кодирование/декодирование, шифрование, сжатие TLS/SSL, кодировки (UTF-8), сжатие N/A (функция формата/шифрования) Нагрузка на CPU; несовместимости форматов
5 Сеансовый (Session) Управление сессиями/диалогами (установление/завершение) RPC, управление сессиями приложений, чекпоинты N/A Stateful — сложность восстановления и масштабирования
4 Транспортный (Transport) End-to-end связь: надежность, управление потоком/ошибками TCP (надежно), UDP (ненадежно), мультиплексирование по портам TCP/UDP номера портов (well-known/registered) TCP: задержки, Head‑of‑Line; UDP: отсутствие гарантий доставки
3 Сетевой (Network) Логическая адресация и маршрутизация (IP) Маршрутизация IPv4/IPv6, ICMP, BGP/OSPF N/A (используются IP‑адреса) MTU/фрагментация; масштаб таблиц маршрутизации
2 Канальный (Data Link) Передача кадров по сети, MAC‑адресация, VLAN Ethernet, ARP, VLAN, коммутаторы, PPP MAC‑адреса; физические/коммутаторные порты Broadcast‑домен, MTU, уязвимости на уровне LAN (ARP spoofing)
1 Физический (Physical) Передача битов: электрические/оптические/радиосигналы, коннекторы Кабели (UTP, fiber), Wi‑Fi, разъёмы (RJ‑45, SFP) Физические порты/разъёмы (RJ‑45, SFP и т.д.) Полоса, дальность, помехи, аппаратные поломки

Краткая таблица протоколов

Протокол Расшифровка Краткое описание Поведение / особенности Типичные порты / номера Команды
TCP Transmission Control Protocol Надёжный протокол с установкой соединения и гарантией доставки Connection‑oriented, handshake, retransmit любые TCP‑порты (напр. 22, 80, 443) ss -tna / tcpdump -n 'tcp port 22' -c 5
UDP User Datagram Protocol Лёгкий протокол без гарантий доставки Connectionless, низкие задержки DNS 53 (UDP), DHCP 67/68, RTP/VoIP ss -una / dig @8.8.8.8 example.com
Broadcast Широковещательная доставка Отправка пакета всем узлам подсети L2/L3 broadcast, не маршрутизируется по умолчанию MAC ff:ff:ff:ff:ff:ff; IP 255.255.255.255 tcpdump -n broadcast -c 20 / arp -a
ICMP Internet Control Message Protocol Диагностика и сообщения об ошибках (ping) Используется для ping/traceroute, нет портов нет портов (типы/коды ICMP) ping -c 3 8.8.8.8 / traceroute -n 8.8.8.8
DHCP Dynamic Host Configuration Protocol Автоматическое выдача IP и параметров сети Клиент‑сервер, discovery через broadcast UDP 67 (server), UDP 68 (client) tcpdump -n udp port 67 or udp port 68 -c 20 / sudo dhclient -v
ARP Address Resolution Protocol Разрешение IP → MAC в локальной сети Broadcast запросы и кэширование нет портов (L2) arp -a / ip neigh show

Коды ошибок в рамках сетевого взаимодействия

Код Значение Краткое описание Как диагностировать Быстрое исправление
200 OK Успешный запрос Логи приложения, ответ body Нет действия
201 Created Ресурс создан Логи API, Location header Проверить запись в БД
301 Moved Permanently Постоянный редирект curl -I, Location Исправить URL/конфиг
302 Found Временный редирект curl -I Проверить логи редиректов
400 Bad Request Неверный запрос Логи приложения, validation errors Исправить запрос/валидацию
401 Unauthorized Нет/истёк токен Заголовки Authorization Проверить токен/аутентификацию
403 Forbidden Доступ запрещён ACL/permission logs Исправить права/ACL
404 Not Found Ресурс не найден URL, роуты Проверить роут/ресурс
408 Request Timeout Таймаут запроса nginx/timeout logs Увеличить таймаут/оптимизировать
429 Too Many Requests Rate limit Заголовки rate-limit, метрики Backoff, увеличить лимит
500 Internal Server Error Ошибка приложения Application logs, stacktrace Исправить баг/деплой
502 Bad Gateway Неверный ответ upstream Nginx/HAProxy logs Проверить/перезапустить upstream
503 Service Unavailable Сервис недоступен Health checks, metrics Масштаб/maintenance
504 Gateway Timeout Таймаут upstream Nginx logs, slow backend Оптимизировать backend/таймаут

Команды для поиска проблем на сети

Команда Описание Важные параметры Пример Как интерпретировать
ping Проверка доступности хоста и RTT -c <n> (кол‑во), -W (timeout) ping -c 4 8.8.8.8 Пакеты теряются → потеря связи/packet loss; высокий RTT → задержки
traceroute / tracert Трассировка маршрута пакетов -n (без DNS), -w (timeout) traceroute -n 8.8.8.8 Узкие места по hop; if * — ICMP/TTL blocking
mtr Комбинация ping+traceroute (реaltime) -r (report), -c mtr -r 8.8.8.8 Показывает packet loss и latency по hop
tcpdump Сниффинг трафика (пакеты) -i <iface>, -w file, фильтры BPF sudo tcpdump -i eth0 port 80 -c 100 Смотрим пакеты/handshake/RST; полезно для детального анализа
ss / netstat Сокеты, порты, состояния соединений -tuna, -l, -p ss -tuna TIME_WAIT/RST → проблемы закрытия; нет LISTEN → сервис не поднят
ip route Таблица маршрутизации ip route show Неправильный маршрут → трафик идёт не туда
ip neigh ARP/NDP таблица ip neigh Нет MAC → ARP проблемы, duplicate → ARP conflict
dig / nslookup DNS резолвинг и диагностика +short, @server, тип запроса dig +short example.com NXDOMAIN → нет записи; ответ от неправильного сервера → DNS конфиг
curl / wget HTTP‑проверки (headers/body) -I, -v, --max-time curl -I https://example.com HTTP code 5xx → backend ошибка; TLS handshake failure → cert/ALPN issues
nmap Сканирование портов/хостов -p, -sT/-sS, -Pn nmap -p 22,80 host Closed/Filtered/Open помогает понять firewall/NAT
iftop / nload Мониторинг трафика в реальном времени интерфейс iftop -i eth0 Высокая полоса → нагрузка/утечка трафика
arping Проверка ARP‑ответов -c, -I arping -c 3 -I eth0 192.168.1.1 Нет ответа → L2/ARP проблема

Таблица популярных HTTP методов

Метод Описание Пример использования Рекомендации
GET Получение ресурса (без изменения) GET /api/users/123 Идёмпотентен; кешировать, не использовать для изменений
POST Создание ресурса или выполнение операции POST /api/users с JSON body Не идёмпотентен; валидация входных данных
PUT Полная замена ресурса PUT /api/users/123 с полным объектом Идёмпотентен; использовать для полной замены
PATCH Частичное обновление ресурса PATCH /api/users/123 с частичным JSON Использовать для частичных изменений
DELETE Удаление ресурса DELETE /api/users/123 Идёмпотентен (повторный DELETE — OK)
HEAD Получить только заголовки ответа HEAD /api/users/123 Быстрое наличие ресурса, кеш/мета‑данные
OPTIONS Получить поддерживаемые методы / CORS preflight OPTIONS /api/users Используется для CORS и описания возможностей ресурса

Список регулярных выражений

Назначение Regex (PCRE/ECMAScript) Пример строки Примечание
Email ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ user@example.com Простая проверка, не для 100% RFC‑совместимости
IPv4 ^((25[0-5]|2[0-4]\d|[01]?\d\d?)(\.|$)){4}$ 192.168.0.1 Валидирует октеты 0–255
URL (http/https) ^https?://[^\s/$.?#].[^\s]*$ https://example.com/path Простая проверка, не для всех кейсов
Дата YYYY-MM-DD ^\d{4}-\d{2}-\d{2}$ 2025-10-19 Доп. валидация на корректность даты не выполняется
Целое число (опционально знак) ^-?\d+$ -42
Дробное число ^-?\d+(\.\d+)?$ 3.14
UUID v4 ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ 550e8400-e29b-41d4-a716-446655440000 Проверяет вариант v4
Логический поисковый паттерн (contains) (?i)error|fail|exception Error: something (?i) — case‑insensitive

Список используемых файловых систем

Файловая система Где используется Особенности Ограничения
ext4 Linux серверы/рабочие станции Надёжная, широкая поддержка, journaling Ограничения на масштаб (очень большие FS поддерживаются)
XFS Высокопроизводительные диски, большие файлы Отлично с большими объёмами и параллельной записью Нельзя уменьшать файловую систему онлайн
Btrfs Снэпшоты, дедупликация, субтомы Copy‑on‑write, снэпшоты, компрессия Исторически стабильность/производительность — проверить перед продом
ZFS Большие хранилища, NAS, аналитика Copy‑on‑write, контроль целостности, дедупликация, снэпшоты Память и ресурсоёмкость; лицензирование/совместимость
NTFS Windows, совместный доступ с Linux (ntfs-3g) Поддерживает ACL, большие файлы Плохо подходит как основной Linux FS (производительность/совместимость)
FAT32 / exFAT Removable media, USB Совместимость с ОС, простота FAT32: max file 4GB; exFAT: лучше для больших файлов, менее защищённая
tmpfs Временное хранение в памяти (RAM) Очень быстро, tmpfs монтируется в RAM Не персистентна; ограничена объёмом RAM
overlayfs Контейнерные файловые слои (Docker) Union FS, слои образов, copy‑up Подходит для контейнеров, но имеет нюансы с permission/locks

Crontab - способ запуска заданий по расписанию

Поле Значение Описание Пример поля
minute 0-59 Минуты запуска 30
hour 0-23 Часы запуска 2
day_of_month 1-31 День месяца 1
month 1-12 или Jan-Dec Месяц */6
day_of_week 0-7 или Sun-Sat (0/7 = Sun) День недели 1-5
special @reboot/@daily/... Специальные строки вместо 5 полей @daily

Примеры записей crontab:

Cron entry Описание
30 2 * * * /usr/local/bin/backup.sh Запуск backup.sh каждый день в 02:30
*/5 * * * * /usr/bin/php /srv/app/cron.php Каждые 5 минут
0 0 1 * * /usr/bin/find /var/log -type f -mtime +30 -delete Удалять логи старше 30 дней 1-го числа месяца
@reboot /usr/bin/docker start myservice Запустить контейнер при загрузке системы
0 3 * * 0 root /usr/bin/apt-get update && apt-get -y upgrade Обновление по воскресеньям в 03:00 (пример в /etc/crontab с полем user)

Описание записей DNS зон

Тип записи Описание Пример записи Использование
A IPv4 адрес для хоста www IN A 192.0.2.10 Указывает IPv4 адрес для имени
AAAA IPv6 адрес для хоста www IN AAAA 2001:db8::1 IPv6 эквивалент A
CNAME Каноническое имя (алиас) app IN CNAME www.example.com. Алиас на другое имя (не на IP)
MX Почтовый сервер и приоритет @ IN MX 10 mail.example.com. Маршрутизация почты
TXT Произвольный текст, SPF, DKIM, verification @ IN TXT "v=spf1 mx -all" SPF, DKIM, доменная валидация
NS Делегирование зоны example.com. IN NS ns1.example.net. Указывает авторитативные NS
SOA Start of Authority — метаданные зоны @ IN SOA ns1.example.net. hostmaster.example.com. (...) Обязательная запись зоны
SRV Сервисы с приоритетом/портом _sip._tcp IN SRV 10 60 5060 sipserver.example. SIP, XMPP, Kubernetes headless discovery
PTR Обратная запись (IP → имя) 10.2.0.192.in-addr.arpa. IN PTR host.example.com. Reverse DNS для почты/логов
CAA Разрешение CA выдавать сертификаты @ IN CAA 0 issue "letsencrypt.org" Контроль выдачи TLS сертификатов

Что такое DNS зона

Выделенный сегмент интернета, где хранится информация о доменах и связанных с ними ресурсах, которые находятся под управлением определённой организации или лица.

GIT - команды для работы с репозиториями

Команда Результат / что делает команда Доступные параметры (частые) Пример команды
git init Создаёт новый локальный репозиторий (инициализирует .git). --bare (создаёт bare-репозиторий без рабочей копии) git init my-repo
git clone Клонирует удалённый репозиторий в новую папку. --depth <n> (shallow clone — только последние n коммитов), --branch <name> (клонировать указанную ветку) git clone https://github.com/user/repo.git
git add Добавляет изменения в индекс (staging area) для следующего коммита. -A (добавить/удалить все изменения), . (все изменения в текущей папке), <path> (конкретный путь/файл) git add . / git add src/main.c
git status Показывает текущее состояние рабочей директории и индекс. -s (короткий/сводный вывод) git status
git diff Показ отличий: рабочая директория vs индекс; --staged — индекс vs последний коммит. --staged (показать отличия, подготовленные к коммиту), --name-only (только имена изменённых файлов) git diff / git diff --staged
git commit Создаёт коммит из индекса. --amend исправляет последний коммит. -m <msg> (сообщение коммита), --amend (изменить последний коммит), -a (автоматически добавить отслеживаемые файлы) git commit -m "fix bug" / git commit --amend
git log Показывает историю коммитов; --oneline — компактно, --graph — ASCII‑граф ветвления. --oneline (одна строка на коммит), --graph (визуализация ветвления), -n <N> (показать N последних) git log --oneline --graph
git branch Работа с ветками: создать, перечислить, удалить. -a (все локальные и remote ветки), -d (удалить ветку безопасно), -D (форсированное удаление), <name> (имя ветки) git branch feature/x / git branch -D old
git checkout Переключение веток или восстановление файлов; -b создаёт новую ветку и переключается на неё. -b <branch> (создать и переключиться на ветку) git checkout -b feature/x / git checkout main
git switch Современная команда для переключения/создания веток (альтернатива checkout для веток). -c <branch> (создать новую ветку и переключиться) git switch -c feature/x / git switch main
git merge Слияние указанной ветки в текущую; при конфликте нужно решать вручную. --no-ff (всегда создать merge-коммит), --squash (объединить изменения без создания merge-коммита) git merge feature/x
git rebase Перенос (переписывание) коммитов на основе другой ветки; -i — интерактивное редактирование. -i (интерактивный rebase: squash, fixup, редактирование) git rebase main / git rebase -i HEAD~3
git fetch Получает обновления с удалённого репозитория, не меняя рабочую ветку. --all (все удалённые), --prune (удалить remote‑ссылки, которых больше нет на сервере) git fetch origin / git fetch --all --prune
git pull fetch + merge (по умолчанию). Часто используют --rebase для линейной истории. --rebase (выполнить rebase вместо merge после fetch) git pull --rebase origin main
git push Отправляет локальные коммиты на удалённый репозиторий. --force (форсировать перезапись истории — опасно), --set-upstream (установить upstream для ветки), origin <branch> (куда/какая ветка) git push origin feature/x / git push --set-upstream origin feature/x
git remote Управление удалёнными репозиториями (добавить/удалить/показать). add (добавить remote), remove (удалить), set-url (сменить URL), -v (показать URL) git remote add origin git@github.com:user/repo.git
git tag Создаёт метки (теги) коммитов: lightweight или аннотированные. -a <name> -m <msg> (аннотированный тег с сообщением), <name> (имя тега) git tag -a v1.0 -m "release 1.0" / git push origin v1.0
git stash Временно сохраняет незакоммиченные изменения и очищает рабочую директорию. push (положить изменения в стек), pop (взять и удалить из стека), list (показать список), apply (применить без удаления) git stash push -m "WIP" / git stash pop
git reset Перемещает указатель ветки: --soft сохраняет индекс/файлы, --hard откатывает всё. --soft (только переместить HEAD), --mixed (по умолчанию — сброс индекса), --hard (удалить изменения в рабочей директории — осторожно) git reset --soft HEAD~1 / git reset --hard HEAD~1
git revert Создаёт новый коммит, отменяющий указанный коммит (без переписывания истории). -m <parent> (для merge — указать родителя, который считать "основным") git revert <commit>
git cherry-pick Применяет выбранный коммит из другой ветки в текущую (копирует изменения). <commit> (хеш коммита) git cherry-pick a1b2c3d
git rm Удаляет файл из индекса и рабочей копии; --cached — только из индекса. -r (рекурсивно для папок), --cached (оставить локальный файл, удалить из индекса) git rm file.txt / git rm --cached file.txt
git mv Переименовывает/перемещает файлы и фиксирует это как одно действие. git mv oldname newname
git blame Показывает, кто и в каком коммите изменил каждую строку файла. -L <start>,<end> (ограничить диапазон строк) git blame -L 10,20 file.c
git bisect Двоичный поиск проблемного коммита (поиск, где появился баг). start (инициализация), good (отметить рабочую версию), bad (отметить проблемную) git bisect start; git bisect bad; git bisect good v1.0
git reflog Локальный журнал движений HEAD — помогает восстановить потерянные коммиты. git reflog
git config Настройки Git (имя, email, алиасы и т.д.). --global (для пользователя), --local (для репозитория), user.name (параметр) git config --global user.name "Ivan"

Популярные приложения/клиенты для работы с Git

  • Git (CLI) — официальная командная строка.
  • Visual Studio Code — встроенная поддержка Git + GUI.
  • GitHub Desktop (Windows/macOS) — простой GUI для GitHub.
  • Sourcetree (Atlassian) — бесплатный GUI с визуализацией веток.
  • GitKraken — современный UI (есть бесплатные и платные версии).
  • Tower — платный клиент для macOS/Windows.
  • SmartGit — мультиплатформенный клиент.
  • TortoiseGit — интеграция Git в проводник Windows.
  • IntelliJ IDEA / PhpStorm / WebStorm — встроенная поддержка Git (JetBrains).
  • Git Extensions — GUI для Windows.

CI/CD: этапы, описание, лучшие практики

Этап Описание Лучшие практики
Source / Commit Разработка, контроль версий Малые коммиты, ветки feature, PR с ревью
Build Компиляция/сборка артефакта Детерминированные сборки, кэширование, BuildKit
Static analysis / Lint Анализ кода, правила стиля Запуск линтеров в CI, fail on error, авто‑форматирование
Unit tests Быстрые модульные тесты Быстро, изолированно, покрытие критичных модулей
Integration tests Тесты взаимодействий компонентов Использовать тестовые окружения/контейнеры, mock зависимости
Security / SCA Сканы уязвимостей и секретов Trivy/Dependabot, сканинг зависимостей, secret scanning
Package / Artifact Упаковка, версияция артефактов Хранить в registry/artifact repo, семантические теги
Deploy to staging Деплой в тест/стейдж Автоматический deploy, smoke tests, feature flags
E2E / Acceptance End‑to‑end тесты на staging Стабильные сценарии, изолированные данные
Release / Deploy to prod Промежуток релиза в прод Canary/Blue‑Green/Rolling, мониторинг и откат
Monitor & Observe Логи, метрики, алерты SLO/SLI, автоматические тревоги, runbooks
Rollback / Remediation Откат при проблемах Быстрые откаты, автоматический rollback при failed healthchecks