0 484

Roadmap для DevOps инженеров

Категории: Программирование

В этой статье рассмотрим дорожную карту, как развиваться и что учить для тех, кто хочет стать DevOpsами/Site Reliability Engineerами.

дорожняя карта DevOps

📖 Общие полезные статьи

🗺️ Изучите язык программирования

Начать стоит с изучения одного из предложенных на дорожной карте языков программирования: Python, Ruby, Go, Rust, C, C++, и т.д. Главным будет базовое понимание какого-то Cи-подобного языка. это вам поможет в будущем читать код верхнеуровнево любого Си-подобного языка.

Что касается Go – это статически типизированный язык программирования, который был разработан внутри компании Google. В отличие от динамически типизированного языка, код проверяется перед запуском, а не после.

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

Но доминирующим языком для бэкенда остается Python. Roadmap по питону можно найти тут.

📈 Agile DevOps процесc

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

Так же стоит обратить внимание на следующие статьи:

Agile DevOps процес

💾 Big data решения

Часто девопсам нужно поддерживать BigData решения, схемы ниже описывают основные подходы к распределенным системам

Распределенная файловая система

Существует 3 основных подхода как организовать распределенную файловую систему:

  1. Один CPU к одному диску
  2. Параллельное считіваение - Один CPU и много дисков
  3. Распределенное считывание. Сет серверов из пункта №1
Distributed File System

Distributed Database

Существует 2 основных подхода как организовать распределенную базу данных:

  1. Master-Slave(follower)  репликация. В этом случае на Slave (follower) используется для чтения, а мастер для записи.
  2. Мульти мастер репликация
Distributed Database

Distributed Computation

Для распределенных вычислений можно выделить 2 основных подхода:

  1. Несколько процессоров, которые использует совместную память для общения
  2. Отдельные компьютеры использующее свои процессоры и память, которые коммуницируют между собой по сети.
Distributed Computation

🔧 Навыки администрирования серверов

Инженеру DevOps необходимо управлять всеми типами серверов. Часто речь идет о целом парке: их может быть больше ста и состоят они из экземпляров ОС Linux (очень редко из экземпляров других ОС).

Поэтому для начала советую уделить особое внимание Linux. Если у вас мало опыта работы с данной ОС, начните с Ubuntu. Изучите основные команды, инструменты для мониторинга, настройки и разберитесь с работой терминала.

Список ОС которые нужно уметь администрировать

  • Windows server
  • Ubuntu
  • CentOS
  • RHEL
  • FreeBSD
  • OpenBSD
  • NetBSD
  • Fedora
  • Debian
  • SuseLinux

Понимать следующие аспекты ОС

  1. Управление процессами
  2. Потоки и параллелизм
  3. Сокеты
  4. Основы POSIX
  5. Основы компьютерных сетей
  6. Управление вводом/выводом
  7. Виртуализация
  8. Память/Диски
  9. Файловые системы
  10. Управление инициализацией (initd)
  11. Управление сервисами (systemd)

🕸️ Сети, безопасность и протоколы

Знание сетей, безопасности и базовых протоколов необходимо инженеру DevOps, так как он должен настраивать VPC и группы безопасности/брандмауэры, а также использовать различные протоколы.

  • HTTP (протокол передачи гипертекста);
  • SSL (обеспечивает защищенный обмен данными);
  • SSH  (сетевой протокол, позволяющий производить удаленное управление операционной системой);
  • FTP (протокол передачи файлов);
  • SMTP (простой протокол передачи почты)
  • IMAPS
  • POP38
  • DMARC
  • SPF
  • Doman Keys
  • Перенаправление портов
  • IPSec & VPN
  • AT-TLS
  • OSPF Authentication
  • SNMP
  • Firewall
  • Proxy

🏢 Веб серверы

🏘️ Инфраструктура как код

Инфраструктура как код (IaC) – это по сути настройка и подъем всей инфраструктуры в виде конфигурационных файлов, с помощью которых легко подымать новые серверы и масштабировать старые. 

Контейнеры

  • Docker – это программная платформа для быстрой разработки, тестирования и развертывания приложений. Docker упаковывает ПО в стандартизованные блоки, которые называются контейнерами. Каждый контейнер включает все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения. Благодаря Docker можно быстро развертывать и масштабировать приложения в любой среде и сохранять уверенность в том, что код будет работать.
  • LXC – Linux containers система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы

Управление конфигурацией

  • Ansible – ПО с открытым исходным кодом, которое автоматизирует поставку программного обеспечения, управление конфигурацией и развёртывание приложений. Ansible помогает  DevOps-специалистам автоматизировать сложные задачи
  • Salt
  • Chef
  • Puppet

Оркестрирование контейнеров

Управление инфраструктурой

Service mesh

  • Istio – Open Source-проект, разработанный при сотрудничестве команд из Google, IBM и Lyft. Он решает сложности, возникающие в приложениях, основанных на микросервисах, например: управление трафиком, безопасность, трассировка, мониторинг, логи.
  • Consulэто децентрализованный отказоустойчивый discovery-сервис от компании HashiCorp
  • Envoy
  • Linkerd

🏄‍♂️ CI/CD инструменты

🕵️ Мониторинг инфраструктуры и приложений

Мониторинг инфраструктуры

  • Prometheus – мониторинг систем таких как: серверы, базы данных, отдельные виртуальные машины, приложение и другое.
  • Grafana – платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.
  • Nagios
  • Zabbix
  • Monit
  • DataDog

Мониторинг приложений

☁️ Облачные платформы

  • AWS
  • Digital Ocean
  • Azure
  • Google Cloud
  • Heroku
  • Linode
  • Vultr

📝 Командная строка

Ниже приведен список утилит которые должен знать и использовать продвинутый DevOps.

Утилиты для работы с текстом

  • awk
  • sed
  • grep
  • sort
  • uniq
  • cat
  • cut
  • echo
  • fmt
  • tr
  • nl
  • egrep
  • fgrep
  • wc

Мониторинг процессов

  • ps
  • top
  • htop
  • atop
  • Isof

Сети

  • nmap
  • tgpdump
  • pung
  • mtr
  • traceroute
  • dlg
  • alrman
  • alrodump
  • dlg
  • iptables
  • netstat

Написание bash скриптов

Консоли

  • Vim
  • Nano
  • PowerShell
  • Emacs

 Производительность системы

  • nman
  • iostat
  • sar
  • vmstat

Другие

  • strace
  • dtrace
  • systemtap
  • uname
  • df
  • history

Комментарии:

Пожалуйста авторизируйтесь, чтобы получить возможность оставлять комментарии