Skip to content

Роль DevOps

DevOps-інженер спеціалізується на розробці та забезпеченні ефективної роботи процесів розробки, тестування і впровадження програмного забезпечення, що дозволяє швидко та надійно випускати новий функціонал та виправляти помилки.

Команди DevOps

Розглянемо декілька видів команд, у яких може працювати DevOps-інженер:

  1. Уявімо, що є DevOps-команда, і це не означає що всі в ній є DevOps-інженерами. Натомість вони можуть просто слідувати принципам і використовувати відповідні інструменти. Це невелика кросфункціональна команда.
  2. Є команда, і в ній є інженер з тайтлом DevOps. Ця людина відповідає за, наприклад, автоматизацію релізів, налаштування інфраструктури, інструменти для моніторингу, а також за впровадження DevOps-практик.
  3. Бувають команди, які складаються тільки з DevOps-консультантів. Їх задачею є надання DevOps-послуг іншим командам у компаніях та впровадження змін централізовано.

Обов’язки DevOps

Обов’язки DevOps-інженера залежать від конкретних потреб команди та стратегії компанії, але основні з них включають:

  • Адвокація DevOps практик, тобто інженер відповідає за впровадження та популяризацію DevOps методологій та найкращих практик у команді.
  • Автоматизація процесів, включаючи CI/CD, для прискорення розробки та впровадження програм.
  • Написання інструментів та скриптів для автоматизації завдань, які полегшують робочий процес і покращують ефективність.
  • Безпека інфраструктури, включаючи контроль доступу та моніторинг на предмет виявлення вразливостей.
  • Розробка та підтримка платформи та загальних інструментів, які можуть використовуватись усіма командами в організації для покращення розробки.

Навички DevOps

Навички DevOps-інженера охоплюють різноманітні області, ось деякі з них:

  • Програмування, оскільки часто виникає потреба в написанні коду для автоматизації завдань або розробки власних інструментів.
  • Linux є стандартом для інфраструктури, тож важливо мати глибокі знання цієї операційної системи, включаючи навички запуску коду на Linux.
  • Ти маєш розуміти, як створювати резервні копії баз даних та системи та вміти їх відновлювати. Це критично важливо для забезпечення надійності системи.
  • Навички роботи з контейнерами, особливо Docker, є необхідними, оскільки це допомагає ізолювати додатки та їх залежності.
  • Саморегулювання (Self-Healing). Ти маєш уміти налаштовувати додатки так, щоб вони могли масштабуватися під навантаженням та відновлюватися після відмов.
  • Налаштування процесів Continuous Integration та Continuous Deployment/Delivery (CI/CD) є важливими для автоматизації розробки.
  • Знання про хмарні платформи, такі як Azure, AWS, GCP, допомагає визначити, коли і як використовувати їхні ресурси.
  • Уміння автоматизувати інфраструктуру за допомогою інструментів, таких як Terraform, допомагає забезпечити повторюваність інфраструктурних налаштувань.
  • Знання методів інженерії надійності систем (SRE) та розуміння базових архітектурних принципів допомагає створювати стійкі до відмов інфраструктури.
  • Навички налаштування моніторингу та систем оповіщення важливі для своєчасного виявлення проблем.
DevOps Phase Tools
Continuous Planning & Development Gitlab Maven
GJT Gradle
TFS Confluence
SVN Subversion
Mercurial Scrum
Jira Lean
Bit Bucket Kanban
Trello
Continuous Integration Jenkins Travis and Circle CI
Bamboo Buddy
GitlabCI
Team City
Continuous Testing Junit Microfocus UFT
Selenium Test NG
JMeter Tricentis Tosca
Cucumber Jasmic
Test Sigma
Continuous Deployment Ansile Go
Chef Vagrant
Docker Spinnaker
IBM Urban code ArgoCD
Kubernetes
Puppet
Continuous Feedback Webalizer Flowdock
W3 Perl Open web Analytics
Service Now Pendo
Slack Qeutelli’s TED
Continuous Operations Kubernetes
Docker Swarm