DevOps расшифровывается как Development Operations.
В повседневные задачи DevOps инженера входит управление инфраструктурой приложений (в основном веб).
Что должен знать и уметь такой инженер - например по клику кнопкой в нужном датацентре произошел деплой приложения. DevOps должен суметь создать этот интерфейс с кнопкой и автоматизировать процесс приобретения инстанса (например в AWS), установки операционной системы и необходимых пакетов, доставки приложения на этот инстанс, прописывания всех настроек в приложении и приведение приложения в полную боевую готовность, т.е. состояние, в котором к приложению можно пускать пользователей.
По пунктам, что нужно знать и уметь:
- неистово учиться и гуглить
- сетевые технологии, на уровне маршрутизации, TCP/IP, DNS, SMTP и остальных протоколов начиная с 3 уровня модели OSI
- сетевые операционные системы (преимущественно семейства Linux) на уровне автоматизирования установки, обновления, настройки безопасности и мониторинга
- системы виртуализации (Xen, OpenVZ) и контейнеризации (Docker, Vagrant)
- настраивать сервера и мигрировать конфигурации, например перейти с Apache на Nginx, или с PHP на HHVM
- Chef
- Puppet
- Ansible
- Capistrano
- VCS
- AWS/OpWorks/CloudFormation/CodeDeploy, OpenStack
- Munin/Logstash/Kibana и другие связки для мониторинга
- Continuous delivery
- Программировать на Bash, Ruby, Python, Go, Perl, уметь понимать конфиги на самых экзотических языках, например YAML
- TDD
- продукты hashicorp
- автоматизировать создание и восстановление бэкапов баз данных
- масштабировать приложения по горизонтали (настраивать балансировщики, реверс-проксирование, шардинг и репликацию в базах)
- рассчитывать и оптимизировать издержки на поддержание инфраструктуры приложений
- видеть будущее инфраструктуры приложения и компании, двигать инфраструктуру в это будущее
DevOps - это хипстерный вариант программирующего сисадмина. Нужно уметь очень быстро учиться и непрерывно осваивать новые технологии. Если какая-то технология только в альфе, вы уже должны учиться уметь ею пользоваться. В момент беты вы ее уже должны обкатывать в пилотных проектах, а релиз должен автоматизированно устанавливаться в продакшене.