Более детальное описание этапов данной инфографики:
1. Язык программирования
Изначально нужно хорошо разбираться хотя бы в одном языке программирования. Неважно в каком, это может быть Python, Java, Ruby, Golang и любой другой, просто знание языка в дальнейшем понадобится для написания сценариев автоматизации.
2. Базовые концепции операционных систем
Необходимо знать о контроле процессов, потоках, параллелизме, сокетах, управлении ввода-вывода, виртуализации, хранилище памяти и файловых системах.
3. Навык работы с терминалом
DevOps инженеру нужен навык работы с терминалом на разных операционных системах.
Чаще всего компании работают в среде Linux, так что обязателен опыт работы с Linux администрированием и Bash скриптами.
4. Сеть, безопасность и протоколы
Хорошо разбираться в сетевых протоколах TCP/IP, HTTP, HTTPS, SMTP, FTP и других.
5. Что и как настраивать
Инженер DevOps должен знать, как настроить веб-сервер, например, IIS, Nginx, Apache и Tomca. А также, как работать с прокси, файрволом, различными веб-серверами, балансировкой нагрузки, кэшированием, инструментами мониторинга.
6. Инфраструктура как код
Это один из наиболее важных компонентов в процессе обучения DevOps-инженера. Необходимо изучить контейнеризацию, оркестрацию контейнеров, обеспечивать инфраструктуру и управлять конфигурацией с помощью специальных инструментов.
7. Инструменты CI/CD
Для понимания CI и CD необходимо изучать Gitlab, Jenkins, Github и другие.
8. Мониторинг ПО и инфраструктуры
Мониторинг помогает проанализировать производительность инфраструктуры. Анализ собранных данных определяет насколько приложение и обновления влияют на взаимодействие с конечным пользователем. Такой инструмент, как SigNoz, может помочь в настройке надежной системы мониторинга.
9. Облачные провайдеры
DevOps не может существовать без облака. На сегодняшний день появилось немало поставщиков облачных услуг. Но самые популярные среди них: AWS, Azure и Google Cloud.
Итак, в этой области есть чему поучиться: следует знать хотя бы один язык программирования, разбираться в нюансах различных операционных систем и уметь работать с терминалом, знать о протоколах шифрования и передачи данных, иметь навык работы с популярными инструментами контейнеризации и оркестрации, а также разбираться в нюансах разработки облачных приложений.
