По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Итак, вы хотите стать DevOps-инженером? Это впечатляющий, сложный и высокооплачиваемый вариант карьеры, но такая ключевая роль объединяет разработку программного обеспечения и его эксплуатацию. Мы составили дорожную карту DevOps, которая включает в себя все шаги, которые необходимы для того, чтобы занять место эксперта DevOps.
Как вы знаете, DevOps – это набор практик и инструментов для интеграции и автоматизации процессов между IT-командами и командами разработчиков программного обеспечения. Поэтому он фокусируется на общении и сотрудничестве между командами, используя лучшие инструменты автоматизации, доступные для повышения эффективности.
Следующий акцент делается на объединении тех, кто работает в области разработки программного обеспечения с развертыванием ПО, а также на обеспечении высокого уровня структурной и технической поддержки.
Это все означает, что DevOps-инженеры должны знать свое дело, чтобы справиться с этой неподъемной задачей. А что же тогда такое «их дело»? Оказывается, что это не просто их дело, но и дело всех остальных.
Конечно, это может звучать, как что-то невероятное, что мало кто может преодолеть. DevOps-инженеры действительно являются экспертами высокого уровня, и стать одним из них также практически невозможно. Вместе с тем, данное руководство поможет вам четко понять, какие шаги необходимо предпринять, прежде чем начать свое путешествие по DevOps.
Давайте посмотрим.
Зачем вам нужна дорожная карта DevOps?
В нашей статье о DevOps рассказывается о том, почему стать DevOps-инженером так сложно, ведь DevOps-команды включают в себя разработчиков и IT-специалистов, работающих рука об руку на протяжении всего жизненного цикла проекта.
И поэтому, дорожная карта DevOps предполагает высокие навыки и необходимые шаги, которые помогают повысить скорость и качество разработки и развертывания и предотвратить организационную разрозненность. Иногда команды объединяются, чтобы максимизировать эффективность, при этом инженеры работают на протяжении всего жизненного цикла продукта или приложения.
Итак, каковы же эти требования? Вот этот исчерпывающий список для того, чтобы получить эту дорожную карту, которая направит вас на верный путь.
Как стать DevOps-инженером за 14 шагов
1. Изучайте языки программирования
Первый шаг к тому, чтобы стать DevOps-инженером, - это владение одним или несколькими языками программирования. Конечно, вы не будете интегрировать базы данных или автоматизировать процессы разработки и развертывания, отлаживать базы данных, отлаживать код и исправлять возникающие проблемы, но в результате вы должны внести свой вклад в поддержание конвейера непрерывной интеграции/поставки в рабочем состоянии.
Если вы читаете эту статью, то мы можем предположить, что вы владеете хотя бы одним из «больших» языков программирования, таких как Java, JavaScript или Python. Но если все же нет, то мы рекомендуем вам повысить уровень знания до высокого как минимум двух или трех языков программирования из списка ниже:
Python
Perl
Java
JavaScript
Go
Ruby
Rust
C
C++
2. Научитесь работать с разными ОС
DevOps-инженеру необходимо знать, как работают разные операционные системы, а также различия между ними, в основном потому, что вы будете запускать приложения на серверах. В связи с этим, оптимальным решением для такого рода вещей, как правило, является Linux – ее используют большинство компаний и поставщиков серверов. Если вы используете веб-приложение, то оно, вероятнее всего, находится на сервере Linux.
Есть и другие операционные системы, которые не помешает знать:
Windows
Unix
Debian
SUSE Linux
Fedora
Ubuntu
CentOS
RHEL
macOS
FreeBSD
OpenBSD
NetBSD
3. Концепция ОС
Так вот, операционные системы – это лишь часть дорожной карты DevOps. Также вы должны быть в состоянии углубиться, понимая базовую инфраструктуру ОС, которая позволяет вам запускать приложение. Это называется «концепцией операционной системы», и вы должны быть знакомы с:
Управлением запуском
Управлением процессом
Сокетами
Front-end разработкой
Потоками и параллелизмом
Управлением вводом/выводом
Основами POSIX
Виртуализацией
Файловыми системами
Памятью и хранилищем
Управлением службами
Сетью
4. Сетевая безопасность и протоколы
Как DevOps-инженер, вы должны быть всегда спокойны. Сетевая безопасность и протоколы помогут вам обеспечить целостность и безопасность ваших данных. Они определяют процессы и методологии, которые вы будете использовать для защиты вашей сети от попыток несанкционированного доступа.
Вот протоколы, о которых вам следует знать:
HTTP
HTTPS
FTP
Межсетевые экраны
SSH
SSL/TTS
IPsec и VPN
Переадресация портов
AT-TLS
SNMP
Аутентификация OSFP
Прокси-доступ
5. Терминалы – ваш новый дом
Консоль позволяет разработчикам автоматизировать, создавать сценарии и выполнять системные задачи без использования графического пользовательского интерфейса.
В следствие чего, вы должны уметь работать с текстом, создавать bash-сценарии, отслеживать процессы, производительность системы, работать в сети, компилировать приложения из исходника, Vim, Nano, Emacs и Powershell.
Мы готовы поспорить, что, если вы уже привыкли, и вам удобно, создавать файлы .cfg в выбранной вами FPS, то здесь вы будете как дома. И вам в любом случае нужно будет это делать.
6.Веб-серверы
Когда пользователь запрашивает информацию, сервер выполняет запрос. На веб-сервере может размещаться один или несколько веб-сайтов с использованием одного и того же оборудования и ресурсов. Он взаимодействует с веб-браузером через HTTP/HTTPS. Быть DevOps-инженером означает знать, как контролировать сервер.
Вот некоторые распространенные веб-серверы, о который вам стоит узнать:
Apache
Nginx
IIS
Tomcat
Caddy
Istio
Envoy
Consul
Linkerd
7. Инструменты непрерывной интеграции/непрерывной поставки
Конвейер непрерывной интеграции/поставки (CI/CD) необходим для разработки программного обеспечения в рамках DevOps. Как было сказано в предыдущей статье, непрерывная интеграция – это методика разработки программного обеспечения, при которой разработчики объединяют все изменения кода, которые они вносят, в единый репозиторий.
В то время как, непрерывная поставка реализует изменения кода, которые автоматически создаются, тестируются и подготавливаются в производственному выпуску. Ее можно рассматривать как расширение непрерывной интеграции.
Вот некоторые из инструментов, которые вы можете использовать для этой цели:
TravisCI
GitHub
GitLab
Bamboo
Jenkins
TeamCity
Azure DevOps
8. Изучите инфраструктуру как код (IaC)
Пожалуй, это одно из основных направлений работы DevOps-инженеров. Поэтому неудивительно, что эта тема довольно обширная и разнообразная. Знание таких контейнеров, как Kubernetes и Docker, а также различных инструментов управления конфигурацией имеет жизненно важное значение для вашего собственного развития и успеха проектов, которые вы возглавляете.
Вот некоторые DevOps-инструменты, о которых вам следует знать:
Docker
Containers
LXC
Ansible
Salt
Chef
Puppet
Mesos
Kubernetes
Docker Swarm
Nomad
Istio
Service Mesh
Linkerd
Consul Connet
Maesh
Kuma
Terraform
9. Управление приложениями
Управление приложениями относится к процессу измерения доступности, возможностей и производительности приложения. Данные, собираемые в процессе, позволяют выявлять и устранять баги и ошибки до того, как у пользователей возникнут проблемы. Обычно используется такое программное обеспечение, как:
AppDynamic
Instana
New Relic
Jaeger
OpenTracing
10. Управление инфраструктурой
Эта часть дорожной карты DevOps влечет за собой процесс получения как можно большего количества данных о вашей инфраструктуре с целью принятия обоснованных оперативных решений.
В этой связи, используются данные, генерируемые помимо прочего приложениями, серверами и сетевыми устройствами, с целью отслеживание таких показателей, как мощность оборудования, пропускная способность сети и время работоспособности. В свою очередь, эта информация помогает повысить эффективность и устранять ошибки, показывая, какие области требуют большего внимания.
Вот некоторые хорошие инструменты для управления инфраструктурой:
Grafana
Prometheus
Zabbix
Nagios
Datadog
11. Шаблон облачного проектирования
Этот шаблон помогает создавать масштабируемые, надежные и безопасные приложения в облаке. Однако для этого необходимо быть знакомым с одним ли несколькими шаблонами облачного проектирования. На наш взгляд, одними из самыми важными являются следующие:
Источники событий
Посредник
CQRS
Агрегирование на шлюзе
Консолидация вычислительных ресурсов
Внешнее хранилище конфигурации
Уровень защиты от повреждений
Каналы и фильтры
Перенесение в шлюз
Маршрутизация шлюза
Расширение за счет внешних устройств
12. Управление логами
Логи помогают составлять список событий, происходящих в системе, и изучать их детали. Благодаря этому, управление журналами поможет вам, то есть начинающему DevOps-инженеру, улучшить службы и процессы, предотвратить уязвимости и выявить узкие места.
Вот некоторые из инструментов, которые вы так или иначе будете использовать:
Splunk
Elastic stack
Graylog
Papertrail
13. Поставщики облачных услуг и пакеты услуг
Как мы уже поняли, облачные услуги – это то, с чем обязательно нужно быть знакомым DevOps-инженеру. Кроме того, вам необходимо понимать преимущества и особенности каждого поставщика облачных услуг для того, чтобы ваша организация могла сделать верный осознанный выбор. Некоторые из популярных заслуживают того, чтобы их изучили, например:
Google Cloud
AWS
Azure
Digital Ocean
Linode
Alibaba
Конечно, стоит отметить, что эти провайдеры редко работают по фиксированной стоимости. Как правило, цены на эти услуги зависят от необходимого количества доменов и памяти и SSL-сертификатов, требуемых ЦП.
14. Другие технологии
Это лишь краткий список того, что вам нужно сделать, чтобы получить знания на пути к тому, чтобы стать DevOps-инженером.
Таблица кэша
Обратный прокси-сервер
Прокси-сервер переадресации
Межсетевой экран
Балансировка нагрузки
Сервер кэширования
Заключение
Дорожная карта DevOps предназначена для того, чтобы направить вас на правильный путь к профессиональным навыкам DevOps. Конечно, это не означает, что он уже устоявшийся и не подлежит изменению. Технологии меняются ежедневно, и вы должны постоянно быть в курсе новых инструментов и решений. Еще один пункт на пути к становлению DevOps-инженером – это обучение и адаптация, и, пожалуй, самое важное – хорошо выполнять свою работу.
Если вы следуете этой дорожной карте и у вас уже есть солидная база знаний в области компьютерных наук, то вам потребуется всего каких-то шесть месяцев для того, чтобы сдвинуться с той точки, в которой вы сейчас, и дойти до начала своей карьеры DevOps-инженера.
Не забудьте добавить следующие пункты в список того, что нужно выучить:
Языки программирования
Концепции ОС
Терминалы
Сеть и безопасность
Инструменты CI/CD
Веб-сервер
Инфраструктура как код
Управление приложением
Управление инфраструктурой
Шаблон облачного проектирования
Управление журналом
Поставщики облачных услуг и управление службами
Другие технологии
Часто задаваемые вопросы
Чем занимается DevOps-инженер?
DevOps-инженер использует инструменты, процессы и методологии, чтобы удовлетворить все потребности в процессе разработки программного обеспечения, разработки оболочки пользовательского интерфейса и кодирования для развертывания, обслуживания и обновлений.
Сколько времени нужно, чтобы стать DevOps-инженером?
Если у вас уже есть опыт работы с Linux и сетями, и вы следуете дорожной карте DevOps-инженера, то это займет примерно шесть месяцев.
Что такое CI/CD в DevOps?
Это передовая методология DevOps, которая использует автоматизацию разработки приложений, позволяя увеличить скорость разработки и развертывания приложений. CI/CD относится к непрерывной интеграции, поставке и развертыванию.
В мире разработки есть множество инструментов для хранения данных, и Redis — один из самых популярных. Согласно опросу Stack Overflow Developer Survey за 2024 год среди 65?000 разработчиков Redis используют 20% респондентов. Если ты новичок в IT и хочешь разобраться, что такое Redis и как его можно использовать, эта статья для тебя.
Что такое Redis
Redis (от английского REmote DIctionary Service) — это система управления базами данных в памяти (in-memory database). Это значит, что все данные хранятся в оперативной памяти, а не на жестком диске, что делает Redis сверхбыстрым. Он может использоваться как кэш, очередь сообщений или даже база данных для хранения данных, которым нужно обеспечивать быстрый доступ.
Но что отличает Redis от других баз данных? В первую очередь — его скорость и гибкость. Redis поддерживает множество типов данных, таких как строки, списки, множества и даже упорядоченные множества, что позволяет решать широкий круг задач.
Основные характеристики Redis
Пройдемся по основным характеристикам Redis, которые делают эту систему удобной:
1. Скорость. Redis хранит данные в памяти, а не на диске, что делает его невероятно быстрым. Он способен обрабатывать миллионы операций в секунду.
2. Поддержка разных типов данных. Redis поддерживает строки, списки, множества, хеши и упорядоченные множества. Это дает гибкость при выборе структуры данных для приложения.
3. Персистентность данных. Это значит, что твои данные не исчезнут при сбое или перезапуске сервера — они сохранятся на диске и будут доступны после восстановления работы.
4. Простота в установке и настройке. Redis легко установить и настроить на различных платформах, а также интегрировать с популярными языками программирования, например, Python, Node.js, Java и другими.
Разбираемся, как работает Redis
Redis хранит все данные в оперативной памяти сервера. Это позволяет обрабатывать запросы намного быстрее, чем традиционные базы данных, которые записывают информацию на жесткий диск.
Представь, что тебе нужно хранить часто используемые данные, например, сессии пользователей или результаты запросов. Если бы при каждом запросе приходилось обращаться к данным на жестком диске, это занимало бы много времени. Вместо этого можно сохранять информацию в Redis и получать к ней быстрый доступ. Именно поэтому Redis так популярен для кэширования и ускорения работы приложений.
Redis поддерживает разные типы данных — строки, списки, множества. Это делает его более гибким по сравнению с классическими базами данных и удобным для работы с динамическими данными. Но если данных слишком много, оперативной памяти может не хватить, поэтому Redis чаще используют для временных данных, которые быстро обновляются.
Типы данных Redis
1. Строки (Strings) — это самый простой и часто используемый тип данных в Redis. Можно хранить текстовые или бинарные данные — например, JSON, изображения или сериализованные объекты. Пример: токены доступа к API или кэширование HTML-страниц.
2. Списки (Lists) — упорядоченные наборы строк, которые можно дополнять как слева, так и справа. Например, список последних действий пользователя в приложении, например, история сообщений в чате.
3. Множества (Sets) — неупорядоченные уникальные значения. Быстрые операции объединения, пересечения и разности. Пример: уникальные теги, присвоенные статьям на сайте.
4. Отсортированные множества (Sorted Sets). Похожи на множества, но каждое значение связано с числовым приоритетом (score), по которому и сортируются. Пример: хранение рейтинга пользователей в игровом приложении.
5. Хэш-таблицы (Hashes) — это структуры, похожие на объекты или ассоциативные массивы, которые идеально подходят для хранения связанных данных. К примеру, хранение профиля пользователя с ключами «имя», «email», «дата регистрации».
6. Bitmaps и HyperLogLog. Они нужны для работы с большими данными. Например, если тебе надо посчитать уникальных посетителей сайта за месяц без хранения огромных списков.
Как пользоваться Redis?
Redis отлично подходит для решения задач, связанных с быстрым доступом к данным. Он может использоваться как кэш, очередь сообщений или даже как полноценная база данных. Вот несколько распространенных сценариев:
1. Кэширование данных. Redis помогает создавать кэш — временное хранилище для часто запрашиваемых данных. Вместо того чтобы каждый раз обращаться к медленной базе данных, ты можешь хранить результаты запросов в Redis и получать их за доли секунды. Данные кэша хранятся в виде пар «ключ-значение», и их можно быстро получить, не обращаясь к дисковой памяти. Представь, что у тебя есть онлайн-магазин, и пользователи постоянно смотрят одни и те же товары. Сохранив информацию о них в Redis, ты сможешь быстрее её показывать и разгрузить сервер.
2. Сессии пользователей. Многие веб-приложения хранят информацию о сессиях пользователей в Redis, потому что это надёжно и быстро. В качестве примера разберем авторизацию на сайте. Когда пользователь заходит в учетную запись, его данные сессии записываются в Redis. Это позволяет быстро проверять аутентификацию при каждом запросе, не обращаясь к основной базе данных.
3. Очереди сообщений. Redis позволяет организовывать очереди сообщений благодаря спискам и механизму «подписка/публикация» (pub/sub). В системе уведомлений, когда нужно отправить пуши сразу тысячам пользователей, сообщения ставятся в очередь Redis и отправляются по мере обработки.
4. Аналитика и мониторинг. Redis используется для подсчёта метрик в реальном времени благодаря спискам. Представь игровое приложение, которое показывает количество игроков онлайн. Каждый раз, когда кто-то подключается или выходит, Redis мгновенно обновляет счётчик.
5. Таблица лидеров (Leaderboard) С помощью сортированных множеств (sorted sets) в Redis можно создавать лидерборды. Представь, что у тебя есть игра, в которой нужно показывать таблицу лидеров — топ-10 игроков с самыми высокими очками. В игре каждому элементу присваивается свое значение. Redis с его сортировочными наборами (sorted sets) позволяет мгновенно обновлять и показывать такую таблицу при каждом изменении очков у игроков.
6. Работа с временными данными. Redis отлично справляется с данными, которые часто меняются, например, с подсчетом лайков или просмотров. В таких случаях пары ключ-значение позволяют быстро обновлять информацию и показывать актуальные данные.
Итоги
В этой статье мы постарались познакомить тебя с основными возможностями Redis и его применением в работе. Как показывает практика, Redis — это надежный, масштабируемый и эффективный инструмент, который подходит для решения множества задач, от кэширования данных до аналитики. А еще Redis обладает высокой производительностью, что делает его одним из самых привлекательных решений для высоконагруженных и быстрых информационных систем.
Третья статья будет посвящена поиску и устранению неисправностей EtherChannels. Большинство проблем с EtherChannels происходит из-за неправильной конфигурации.
Предыдущие статьи этого цикла:
Устранение неполадок коммутации Cisco
Траблшутинг STP (Spanning tree protocol)
Case #1
В этом сценарии есть только два коммутатора и два интерфейса. Идея состоит в том, чтобы сформировать etherchannel путем объединения интерфейсов FastEthernet 0/13 и 0/14, но это не работает
Сначала мы проверим, все ли интерфейсы работают. Да они все работают.
Мы можем проверить, что port-channel interface был создан, но он не работает.
Вот хорошая команда для проверки EtherChannel. Используйте суммарную информацию от команды show etherchannel summary, чтобы увидеть ваши port-channels. Мы видим, что коммутатор A настроен для LACP и коммутатор B для PAgP, а это никогда не будет работать.
Лучшая команда для использования это show etherchannel detail. Это дает вам много информации, но нам особенно интересно узнать, настроен ли LACP для пассивного или активного режима. Интерфейсы в активном режиме будут "активно" пытаться сформировать EtherChannel. Интерфейсы в пассивном режиме будут отвечать только на запросы LACP.
Вот вывод команды show etherchannel detail на коммутаторе B. Мы видим, что он был настроен для PAgP, и интерфейсы настроены для desirable режима. Если бы они были настроены на автоматический режим, мы бы увидели флаг А.
SwitchB(config)#no interface po1
SwitchB(config)#interface fa0/13
SwitchB(config-if)#channel-group 1 mode passive
SwitchB(config-if)#exit
SwitchB(config)#interface fa0/14
SwitchB(config-if)#channel-group 1 mode passive
Давайте сначала избавимся от port-channel interface. Если мы этого не сделаем, вы увидите ошибку при попытке изменить channel-group mode на интерфейсах.
После изменения конфигурации мы видим, что port-channel1 поднялся. Задача решена!
Извлеченный урок: убедитесь, что вы используете один и тот же режим EtherChannel с обеих сторон.
Case #2
Ну что же давайте рассмотрим другую ошибку! Та же топология и EtherChannel, который не функционирует:
Мы проверяем, что port-channel interface существует, но он не работает с обеих сторон.
Мы также видим, что интерфейс FastEthernet 0/13 и 0/14 были добавлены к port-channel interface.
Интерфейсы FastEthernet рабочие, поэтому мы знаем, что проблема не в этом. Давайте углубимся в конфигурацию EtherChannel.
Мы видим, что FastEthernet 0/13 и 0/14 на коммутаторе A оба настроены на автоматический режим PAgP (из-за флага "A").
FastEthernet 0/13 и 0/14 на коммутаторе B также настроены на автоматический режим PAgP. Это никогда не сбудет работать, потому что оба коммутатора теперь пассивно ждут сообщений PAgP.
SwitchB(config)#interface fa0/13
SwitchB(config-if)#channel-group 1 mode desirable
SwitchB(config-if)#interface fa0/14
SwitchB(config-if)#channel-group 1 mode desirable
Давайте изменим один из коммутаторов, чтобы он активно отправлял сообщения PAgP.
EtherChannel сейчас работает. Проблема решена!
Извлеченный урок: при использовании PAgP убедитесь, что хотя бы один из коммутаторов использует требуемый режим, или в случае LACP убедитесь, что один коммутатор находится в активном режиме.
Case #3
Еще одна ситуация: EtherChannel настроен между коммутатором A и коммутатором B, но клиент жалуется, что соединение медленное ... что может быть не так?
Быстрая проверка говорит нам, что port-channel interface работает.
Команда show etherchannel detail дает нам много выходных данных, но она так же нам говорит, что происходит. Вы видите, что интерфейс FastEthernet 0/13 и 0/14 были настроены для port-channel, но коммутатор не смог связать их, потому что FastEthernet 0/14 настроен на 10 Мбит. Возможно, что это основная причина медленной скорости передачи данных.
Мы будем использовать один из операторов для команды show. Нас интересует только то, чтобы увидеть вероятную причину, которую команда "show etherchannel detail" покажет.
SwitchA(config)#interface fa0/14
SwitchA(config-if)#speed auto
SwitchB(config)#interface fa0/14
SwitchB(config-if)#speed auto
Давайте изменим скорость на авто. Мы должны убедиться, что FastEthernet 0/13 и 0/14 имеют одинаковую конфигурацию.
Вероятно, вы увидите пару сообщений о том, что ваши интерфейсы переходят в состояние up и down.
Теперь мы видим, что оба интерфейса были добавлены в port-channel... проблема решена!
Извлеченный урок: убедитесь, что все интерфейсы, которые будут добавлены в port-channel, имеют одинаковую конфигурацию!
