Роль DevOps
DevOps-інженер спеціалізується на розробці та забезпеченні ефективної роботи процесів розробки, тестування і впровадження програмного забезпечення, що дозволяє швидко та надійно випускати новий функціонал та виправляти помилки.
Команди DevOps
Розглянемо декілька видів команд, у яких може працювати DevOps-інженер:
- Уявімо, що є DevOps-команда, і це не означає що всі в ній є DevOps-інженерами. Натомість вони можуть просто слідувати принципам і використовувати відповідні інструменти. Це невелика кросфункціональна команда.
- Є команда, і в ній є інженер з тайтлом DevOps. Ця людина відповідає за, наприклад, автоматизацію релізів, налаштування інфраструктури, інструменти для моніторингу, а також за впровадження DevOps-практик.
- Бувають команди, які складаються тільки з 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 |