Гайд для DevOps: навички, ресурси, поради для побудови кар’єри
Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!
Усім привіт! Мене звати Іван Ревчук, я Head of Infrastructure української IT-компанії Brainstack_. Свою кар’єру в ІТ я розпочав понад 10 років тому із системного адміністратора. Згодом я перейшов у DevOps, розвинувся у цій ролі та став лідом. У статті я поділюся головними скілами, які варто прокачати, аби стати затребуваним фахівцем з DevOps.
Якщо ви вже працюєте DevOps, не поспішайте закривати вкладку. Тут я також поділюсь ресурсами, які допоможуть вам розвиватися у цій ролі та отримати підвищення.
Хардскіли для роботи DevOps-інженера
Професія DevOps-інженера перебуває на перетині розробки, тестування, адміністрування та менеджменту. Універсального набору навичок, які б відчинили вам двері в усі компанії відразу, не існує. Усе залежить від технологій та підходів кожного бізнесу. Тому раджу почати з вивчення базових навичок, а потім прокачуватися під вимоги конкретної компанії.
Усі необхідні навички можна розділити на п’ять основних компонентів: Linux, DB, Networking, Development, Cloud. Серед базових скілів, якими має володіти кожен DevOps:
- поглиблене знання Linux;
- знання мережі, повне розуміння моделі OSI. Вміння налагоджувати, профілювати та вирішувати мережеві проблеми;
- досвід роботи з контейнерами та віртуалізацією з використанням Docker, LXC, KVM/QEMU, VMWare;
- знання основних компонентів Kubernetes: kube-apiserver, kube-scheduler, kube-controller-manager, kube-proxy тощо;
- знання реляційних і нереляційних баз даних (MySQL, PostgreSQL, Elasticsearch, MongoDB, тощо);
- досвід роботи з системами моніторингу та збору логів: Zabbix, Grafana, Sentry, ELK stack, Prometheus;
- досвід роботи з програмним забезпеченням для автоматизації, таким як ansible, puppet або chef;
- знання локальних інструментів для моніторингу та усунення проблем: tcpdump, ss/netstat, mtr, vmstat, iostat, top, sar, free, pmap, ps, lsof, strace, iproute2 утиліти;
- вміння писати складні скрипти (shell/python);
- знання будь-якої хмарної платформи (AWS, GCP, Azure);
- впевнене володіння принайні однією мовою програмування (Python, Go, PHP, Rust тощо).
Новачку перш за все важливо зрозуміти, як працює структура, а не застрягати у вивченні кожного окремого інструмента. Краще зорієнтуватися в арсеналі навичок допоможуть «дорожні карти».
Головні софтскіли для DevOps
Якби мене попросили виокремити найважливішу навичку DevOps, я б назвав уміння працювати в команді. DevOps-інженер — це про постійну комунікацію: із девами, стейкхолдерами, менеджментом і клієнтами.
Наведу свіжий приклад, як мені знадобився цей скіл. До
Так ми запровадили оновлений deploy flow. Він повністю будувався в GitLab з використанням gitlab-ci. Це надало девам єдине оточнення для зберігання, тестування та деплою коду.
Звучить логічно та круто, але втілення цієї ідеї вимагало великої кількості переговорів. Я годинами спілкувався з лідом кожної команди, збирав інформацію й аргументи, доводив, чому оновлення необхідне, розповідав про плани та все погоджував.
Серед інших важливих навичок — вміння самостійно ухвалювати рішення, аналітичне та критичне мислення. DevOps-інженер повинен чітко розуміти, чи варто впроваджувати ту чи іншу технологію/інструмент (eBPF, WebAssembly, OpenAI-рішення тощо), або ж можна обійтися без неї, бо це не дасть значного value для бізнесу.
Аби робити ефективні зміни, фахівець має досконало розуміти, які сервіси зараз використовує компанія, та постійно експерементувати з конфігурацією та оптимізацією, аби взяти від них максимум. Наприклад, від зміни конфігурації СУБД можна збільшити перфоманс в десятки разів.
Саме тому перед зміною технології варто поставити собі просте питання: «Для чого?». Зміни мають приносити реальні переваги для бізнесу, а не бути самоціллю. З досвіду я бачив, як компанії змінювали СУБД, системи моніторингу, мови програмування, наймали нові команди, але проблеми з продуктивністю та втратами для бізнесу залишалися через відсутність зваженого підходу.
DevOps-інженер має постійно балансувати між швидкістю, якістю, безпекою, ефективністю, надійністю, зручністю та продуктивністю, ухвалюючи рішення з урахуванням всіх факторів.
Де та як вчитися DevOps-методології
Не існує чарівних експрес-курсів, книжки чи відео, після яких ви станете гуру DevOps. Можливо, зараз я когось засмучу, але вам доведеться пройти всі кола пекла, перш ніж дійти до цієї позиції. Із плюсів — наприкінці шляху ви зрозумієте, що всі зусилля того варті.
Роботодавці більш зацікавлені в DevOps-інженерах, які пройшли шлях від helpdesk до сисадміна, трохи попрацювали Linux-адміном, Net-адміном або DB-адміном, в процесі ще написали свій pet-проєкт будь-якою мовою програмування.
Це показник того, що фахівець розуміє можливості інфраструктури, має навички комунікації з девелоперами, користується офіційною документацією.
Досить органічно можна перейти в DevOps з ролі тестувальника чи розробника. Ці фахівці вже володіють певними важливими навичками, які знадобляться у майбутній професії.
Наприклад, тестувальники мають досвід автоматизації та розуміють мови програмування, вміють тестувати інфраструктурні зміни, взаємодіяти з розробниками, знають DevOps-тулсет для моніторингу. До того ж, їхній склад мислення дозволяє прорахувати більшість edge-кейсів перед деплоєм у прод.
Щодо розробників, то їхня в перевага у розумінні, що можна «викосити» з етапу збирання програми, вмінні виправити код конфігурації, швидко додати нові метрики чи нову бібліотеку, а також полагодити баг в опенсорсних DevOps-тулах.
Мати такі скіли — цінно, але все ж вчитися доведеться. Незалежно від вашого бекграунду, краще почати з базових речей: Linux, Networking, DB. Це та основа на якій будується весь сучасний цифрорвий світ.
Наступний крок — курси на Udemy, Pluralsight, acloud.guru та educative.io. Вони будуть доповненням до базових речей і дадуть конкретику вже в розрізі сервісів, які використовуються в DevOps.
Ось декілька прикладів корисних програм:
- Introduction to DevOps;
- DevOps Beginners to Advanced with Projects — 2023;
- Learn DevOps for Developers;
- HashiCorp Certified Terraform Associate;
- Hands-On GitOps — для інженерів, які працюють або тільки почали працювати з Kubernetes.
Одні лише курси не забезпечать вас роботою. Вони дають лише базове розуміння про процеси, підходи й інструменти в DevOps, а також напрямок роботи — наприклад, як зробити так, щоб ваш сайт розгортався в AWS-клауді. Після курсів у вас ще залишиться багато gapʼів у знаннях. Потрібно буде багато самостійно розбиратися, читати й пробувати.
Обов’язково ознайомлюйтеся з офіційною документацією сервісу, з яким ви розбираєтеся — там міститься найбільш детальна інформація. Ченджлоги при оновленнях — теж must read. Так ви краще зрозумієте нові можливості та убезпечите себе від ризику падіння після оновлення.
Бонус: корисні книги, сайти та канали DevOps-інженеру
Зібрав корисні сайти, літературу та канали в Telegram і на YouTube, які допоможуть прокачати навички та опанувати нові інструменти DevOps-інженерам. Ресурси будуть корисні як новачкам, так і профі, які прагнуть розвиватися.
Сайти:
Книги:
- The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win;
- The Unicorn Project: A Novel about Digital Disruption, Developers, and Overthrowing the Ancient Powerful Order;
- The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations;
- Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation;
- Infrastructure as Code: Managing Servers in the Cloud;
- Kubernetes Security;
- Cloud Native DevOps with Kubernetes;
- SRE Books;
- Unix and Linux System Administration Handbook.
Telegram- та YouTube-канали:
- CatOps — Telegram-канал девопсів з України, де зібрані апдейти нових версій інструментів, закордонні статті, авторські огляди та інформація про тематичні івенти.
- Неправильний DevOps — подкасти про DevOps та SRE.
7 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів