Как стать автором
Обновить
206.5
Яндекс Практикум
Помогаем людям расти

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

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров19K

Всем привет! Меня зовут Максим, я работаю системным инженером в Yandex Cloud и в Яндекс Практикуме на курсе «Системный администратор». В этой статье я опишу свой субъективный взгляд на путь развития системного инженера (DevOps‑инженера, SRE, системного администратора).

Системный инженер — ключевой игрок в создании и поддержании сложных информационных систем. Он объединяет в себе знания из различных областей: от аппаратной части и инфраструктуры до программного обеспечения и сетей.

В дополнение к этой статье я создал:

Общие рекомендации

Вот несколько общих советов, которые помогут быстрее прокачивать навыки и проходить собеседования:

  1. Не бояться английского языка! Чаще практиковаться: читать статьи, слушать подкасты и обучающие видео.

  2. Читать техническую литературу! Это отличный способ углубить знания и расширить кругозор.

  3. Учиться и практиковаться как можно чаще! Лучше учиться каждый день по 1–2 часа, чем один раз в неделю по 10.

  4. Не бояться оставлять сложные вещи «на потом»! Если что‑то вызывает трудности, стоит отложить на время и вернуться к этому позднее, фокусируясь на других аспектах, чтобы не терять мотивацию и прогресс.

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

Основы. Уровень 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

Заключение

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

Теги:
Хабы:
Всего голосов 18: ↑14 и ↓4+12
Комментарии4

Публикации

Информация

Сайт
practicum.yandex.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
Ира Ко