Обучение системного инженера. Путеводитель по ключевым навыкам и знаниям
Всем привет! Меня зовут Максим, я работаю системным инженером в Yandex Cloud и в Яндекс Практикуме на курсе «Системный администратор». В этой статье я опишу свой субъективный взгляд на путь развития системного инженера (DevOps‑инженера, SRE, системного администратора).
Системный инженер — ключевой игрок в создании и поддержании сложных информационных систем. Он объединяет в себе знания из различных областей: от аппаратной части и инфраструктуры до программного обеспечения и сетей.
В дополнение к этой статье я создал:
Общие рекомендации
Вот несколько общих советов, которые помогут быстрее прокачивать навыки и проходить собеседования:
Не бояться английского языка! Чаще практиковаться: читать статьи, слушать подкасты и обучающие видео.
Читать техническую литературу! Это отличный способ углубить знания и расширить кругозор.
Учиться и практиковаться как можно чаще! Лучше учиться каждый день по 1–2 часа, чем один раз в неделю по 10.
Не бояться оставлять сложные вещи «на потом»! Если что‑то вызывает трудности, стоит отложить на время и вернуться к этому позднее, фокусируясь на других аспектах, чтобы не терять мотивацию и прогресс.
Не застревать на одной теме! Это совет для перфекционистов, таких как я, которые любят узнавать всё и сразу. Почти ни один раздел этого учебного плана нельзя выучить раз и навсегда. Вы всегда будете возвращаться к изучению прошлых тем, поэтому старайтесь не застревать на одной из них слишком долго.
Основы. Уровень I
Первая стадия обучения является фундаментом этой профессии. Здесь вы будете углубляться в основы, важные для понимания и эффективной работы в области DevOps, SRE и системного администрирования. Этот уровень знаний предоставит вам необходимую базу для освоения более сложных концепций и инструментов, связанных с управлением инфраструктурой и автоматизацией процессов.
Технический английский, понимание операционной системы Linux, систем контроля версий, основ программирования и сетевых принципов — каждый из этих компонентов играет ключевую роль в формировании уровня подготовки системного инженера. Давайте погрузимся в эти основы, которые станут надежным фундаментом на пути к пониманию и владению DevOps‑практиками.
Технический английский
Цель: Научиться читать технические материалы, документацию и просматривать обучающие курсы и видео на английском языке.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/1. Fundamentals I/1. Technical English/resources_ru.md
Linux
Цель: Овладеть навыками работы с операционной системой Linux на уровне администратора. Администрирование Linux является ключевым навыком для системного инженера, поскольку большинство инструментов и серверных систем базируются на этой платформе.
Технологии: Linux (Debian / RedHat)
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/1. Fundamentals I/2. Linux/resources_ru.md
Системы контроля версий
Цель: Овладеть git и её базовыми командами, ветвлениями и слияниями, навыком решения конфликтов.
Технологии: git (init, clone, add, commit, push, pull, merge)
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/1. Fundamentals I/3. Version Control Systems/resources_ru.md
Программирование
Цель: Овладеть основами программирования на Python, утилитами grep / awk / sed, навыком написания скриптов на bash и регулярными выражениями.
Технологии: Python / Go, bash, grep, awk, sed, regexp
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/1. Fundamentals I/4. Scripting/resources_ru.md
Компьютерные сети
Цель: Изучить модель OSI, сетевые протоколы и основные утилиты анализа и настройки сети.
Технологии:
Протоколы: ARP, IP, TCP, UDP, HTTP, DNS, TLS/SSL
Утилиты: ping, traceroute, telnet, arp, route, nslookup, host, ip, ifconfig, ethtool, netstat, ss, nc, iperf, iptraf, tcpdump
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/1. Fundamentals I/5. Networks/resources_ru.md
Приложения. Уровень I
На этой стадии обучения вы начнёте погружение в более технические аспекты, необходимые для разработки, развёртывания и поддержки приложений и сервисов. Этот этап ориентирован на углубление в популярные инструменты и технологии.
Здесь вы углубитесь в настройку веб‑серверов и балансировщиков нагрузки, баз данных, контейнеров, систем автоматизации развёртывания, процессов CI/CD, а также освоите основы логирования, мониторинга и программную инженерию. Эти знания и навыки играют важную роль в построении и поддержке инфраструктуры приложений.
Веб-сервера и балансировщики нагрузки
Цель: Понять основные принципы работы веб‑серверов и балансировщиков нагрузки, научиться устанавливать и настраивать такие популярные решения, как Nginx и HAProxy.
Технологии: Nginx, HAProxy.
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/1. Web‑servers and load balancers/resources_ru.md
Базы данных
Цель: Овладеть базовыми принципами реляционных и нереляционных СУБД, освоить язык запросов SQL, а также приобрести навыки настройки мониторинга, репликации и создания резервных копий баз данных.
Технологии: PostgreSQL, MySQL, Redis, MongoDB.
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/2. Databases/resources_ru.md
Контейнеры
Цель: Овладеть принципами и инструментами контейнеризации для эффективного управления, развёртывания и масштабирования приложений, а также для создания более гибкой и устойчивой инфраструктуры.
Технологии: Docker / Docker compose, cgroups, namespaces, chroot (факультатив: lxc, systemd‑nspawn)
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/3. Containers/resources_ru.md
Системы управления конфигурациями
Цель: Изучить системы управления конфигурациями для автоматизации настройки серверов и инфраструктуры.
Технологии: Ansible (рекомендую) / SaltStack / Puppet / Chef
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/4. SCM/resources_ru.md
CI/CD
Цель: Овладеть принципами и практиками CI/CD для автоматизации процессов сборки, тестирования и доставки программного обеспечения, с целью ускорения и улучшения качества разработки и поставки продукта.
Технологии: Gitlab (рекомендую) / Github Actions / Bitbucket / Teamcity
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/5. CICD/resources_ru.md
Логирование
Цель: Овладеть установкой и конфигурацией систем логирования для сбора, хранения и анализа логов.
Технологии: Elasticsearch FluentD Kibana (рекомендую) / Grafana Loki
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/6. Logging/resources_ru.md
Мониторинг
Цель: Овладеть установкой и конфигурацией систем мониторинга, настройкой алертинга и создания наглядных графиков для контроля состояния системы, оповещения о проблемах и визуализации данных для принятия информированных решений.
Технологии: Prometheus, Alertmanager, Grafana, VictoriaMetrics (рекомендую) / Thanos / Cortex
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/7. Monitoring/resources_ru.md
Программная инженерия
Цель: Овладеть принципами разработки программного обеспечения, структурирования кода, методами тестирования и оптимизации процессов разработки для создания надежных, масштабируемых и эффективных программных продуктов.
Методологии: Agile, DevOps, SRE
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/2. Applications I/8. Software engineering/resources_ru.md
Приложения. Уровень II
На этом этапе вы будете изучать более продвинутые инструменты для управления приложениями и создания систем. Вы познакомитесь с системами оркестрации контейнеров, облачными технологиями, изучите способы управления инфраструктурой как кодом (IaC), познакомитесь с веб‑программированием и System Design.
Этот этап поможет понять, как создавать более сложные и надёжные системы, а также как использовать современные технологии для управления этой сложной техникой.
Оркестрация контейнеров
Цель: Овладеть принципами и практиками оркестрации контейнеров для эффективного управления, развёртывания и масштабирования микросервисных приложений, чтобы обеспечить высокую доступность и надёжность управления контейнерной инфраструктурой.
Технологии: Kubernetes (рекомендую) / OpenShift / Docker Swarm / Nomad
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/3. Applications II/1. Container orchestration/resources_ru.md
Облака
Цель: Овладеть принципами и инструментами облачных платформ для развёртывания, управления и оптимизации инфраструктуры, обеспечивая масштабируемость, гибкость и безопасность при проектировании и поддержке приложений и сервисов в облачной среде.
Технологии: Yandex Cloud (рекомендую) / AWS / GCP / Azure
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/3. Applications II/2. Clouds/resources_ru.md
Infrastructure as Code
Цель: Освоить принципы и инструменты инфраструктуры как кода для автоматизации управления и развёртывания инфраструктуры, обеспечивая согласованность, масштабируемость и эффективное управление ресурсами с использованием кода.
Технологии: Terraform (рекомендую) / Pulumi / CloudFormation
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/3. Applications II/3. IaC/resources_ru.md
Веб-программирование
Цель: Овладеть языком программирования и инструментами для создания динамических веб‑приложений, понимать основные концепции веб‑разработки для создания веб‑приложений.
Технологии: Python (рекомендую) / Go
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/3. Applications II/4. Web programming/resources_ru.md
Системный дизайн
Цель: Овладеть принципами и методологиями системного дизайна для способности проектировать, строить и масштабировать сложные системы, обеспечивая их эффективность и надежность.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/3. Applications II/5. System Design/resources_ru.md
Основы. Уровень II
Я только начинаю финальный этап. Поэтому данная секция может содержать неточности и быть неполной. Тем не менее, я постарался охватить области, которые могут быть полезны для системного инженера.
Низкоуровневое программирование
Цель: Освоить навыки низкоуровневого программирования для более глубокого понимания аппаратных особенностей компьютеров и разработки высокоэффективного программного обеспечения, а также умение оптимизировать и взаимодействовать с аппаратным обеспечением на уровне ближе к машинному коду.
Технологии: C / C++ / Rust / Assembly
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/1. Low-level programming/resources_ru.md
Операционные системы
Цель: Получить понимание принципов функционирования операционных систем, освоить навыки управления ресурсами, процессами, файловой системой и потоками.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/2. Operating Systems/resources_ru.md
Архитектура компьютера
Цель: Получить понимание аппаратных особенностей компьютерных систем, структуры центрального процессора, внутренних шин и памяти.
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/4. Fundamentals II/3. Computer Architecture/resources_ru.md
Внутреннее устройство баз данных
Цель: Овладеть знаниями о структуре и принципах функционирования устройства баз данных для эффективного проектирования, оптимизации запросов и обеспечения высокой производительности в работе с данными в базах данных.
Ресурсы: https://github.com/mdubakin/devops‑roadmap/blob/master/4. Fundamentals II/4. Database Internals/resources_ru.md
Алгоритмы
Цель: Овладеть фундаментальными алгоритмами и структурами данных для разработки эффективных и оптимизированных программных решений, научиться выбирать и применять подходящие алгоритмы в зависимости от задачи, а также развить навыки анализа производительности и оптимизации программного кода.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/5. Algoritms/resources_ru.md
Распределённые системы
Цель: Получить знания о взаимодействии компонентов в условиях распределённой среды с целью обеспечения высокой доступности, масштабируемости и надёжности приложений и сервисов.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/6. Distributed systems/resources_ru.md
Безопасность
Цель: Понять принципы и методы обеспечения безопасности информации, включая анализ угроз, внедрение превентивных мер, разработку стратегий реагирования на инциденты и обеспечение безопасности информационных систем.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/7. Security/resources_ru.md
Архитектура приложений
Цель: Овладеть принципами проектирования и построения гибких, масштабируемых и высокопроизводительных архитектур приложений, а также развить навыки выбора подходящих паттернов и технологий для создания эффективных программ.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/8. Software Architecture/resources_ru.md
Компиляторы
Цель: Овладеть принципами и технологиями компиляции, а также понимать процесс трансляции программного кода, включая фазы лексического, синтаксического анализа и генерации кода, с целью улучшения производительности и эффективности программ.
Ресурсы: https://github.com/mdubakin/devops-roadmap/blob/master/4. Fundamentals II/9. Compilers/resources_ru.md
Заключение
Этот учебный план представляет лишь один из возможных путей обучения системного инженера. Важно понимать, что подход к обучению у всех индивидуальный, поэтому план выше может не соответствовать потребностям каждого из вас. Подходите к нему гибко, вносите изменения, подстраивая под себя и свои цели. Используйте его как отправную точку, на которой можно строить свой собственный уникальный путь обучения.