Що таке DevOps? Та як стати DevOps Інженером? ч.2


Продовжуємо першу частину статті “Що таке DevOps? Та як стати DevOps Інженером?“.

Сьогодні більшість компаній перейшли від обслуговування своїх серверів до перенесення своєї інфраструктури до “хмари”.
Що таке хмара?
Хмара – це набір сервісів та серверів, які постачальник хмарних технологій здає в оренду замовнику.
Ще називають Infrastructure as a Service(IaaS) – Інфраструктура як сервіс.
Такий підхід дозволяє зменшити витрати на обслуговування інфраструктури, зменшити час на зміну конфігурації, вирішити проблеми зі зберіганням бекапів тощо.
Існує багато різних постачальників хмарних рішень: Amazon Web Services(AWS), Azure, Google Cloud Provider(GCP), DigitalOcean.

Всі вони мають безліч сервісів: такі як замовлення віртуального сервера, або специфічних, як сервіс черг.
Безумовним лідером у хмарних технологіях є AWS, тому я рекомендую почати вивчення саме з нього. Станом на 2022 рік вони надають доступ до більш ніж 200+ сервісів.
Але не лякайтесь на справді нема потреби знати всі ці сервіси, достатньо розумітися на декількох самих необхідних, наприклад: EC2, S3, RDS, EKS, CloudFront.

Автоматизація

Безумовно, спочатку, зайти до веб-консолі та запустити один два-три-десять віртуальних серверів, буде не складно.
Але із часом така рутинна робота, почне напрягати та і де тут автоматизація?
Тут нам на допомогу приходять різні системи автоматизації, такі як: Ansible, Puppet, Chef.
Дуже легким у розумінні та обслуговуванні є:
Ansible – це система яка дозволяє автоматизувати розгортання та обслуговування типових систем. За допомогою великої кількості готових модулів, та можливістю створювати свої.
Також відмічу систему побудови інфраструктури:
Terraform – ця система Infrastructure as a Code(IaC) дозволяє описати типову конфігурацію серверів у вигляді коду, які необхідно створити у хмарі, та у декілька команд, розгорнути готову інфраструктуру, або так само легко змінювати її конфігурацію.
Має багато додаткових модулів, які покривають більшість наявних IaaS постачальників.

Оркестрація

Скоріш за все ви зіткнетеся із необхідністю розгортання великої кількості Docker контейнерів, тут вам знадобиться системи оркестрації контейнерів, наприклад: Kubernetes, Docker Swarm, Openshift Container Platform, Rancher та інші.
Велика кількість проєктів використовує саме Kubernetes, як систему оркестрації. Тому рекомендую звернути увагу на нього у першу чергу.

Логування

Після того як ви описали та побудували свою інфраструктуру, особливо якщо вона досить велика, вам необхідно налаштувати централізований збір метрик систем та іх логування.
Систем моніторингу також дуже багато. Скоріш за все, ви зустрінете на проектах: Zabbix, Nagios, Munin, тощо.
Zabbix – це інструмент для моніторингу ІТ-інфраструктури, такої як мережі, сервери, віртуальні машини та хмарні сервіси. Збирає та відображає основні показники системи.
Останнім часом дуже популярним стає Prometheus та система візуалізації метрик Grafana.
Велике значення у концепції DevOps має логування. Необхідно зберігати як системі логи, так і логи аплікейшену(ПЗ). Особливо це важко стає коли у вас десятки серверів.
Тут на допомогу приходять системи централізованого збору та агрегації логів: ELK, Graylog, Sentry.
ELK-stack – це абревіатура трьох популярних сервісів, системи повнотекстового пошуку ElasticSearch, системи збору логів Logstash, та Kibana системи візуалізації та аналізу даних.
Ця підбірка систем, дозволяє збирати та аналізувати велику кількість логів систем. Та із деякими маніпуляціями навіть специфічні до вашого проєкту логи.

Скриптинг

І останнім по рахунку, але не останнім по важливості, знанням для DevOps інженеру – є вміння писати скрипти. Тому треба звернути увагу на BASH скриптинг, знати на непоганому рівні Python, або із нещодавнього Golang.

Контроль версій

Також хочу звернути вашу увагу, на те що більшість інструментів що я згадав, мають у своїй основі: конфігураційні файли, файли опису інфраструктури.
Ці файли, або вихідні коди ПЗ, зберігаються у системі контролю версій, самий популярний наразі – це Git.
Систем управління контролем версій також багато: Bitbucket, GitHub, GitLab. Вони всі працюють однаково, але більшість open-source проектів використовують GitHub.

Післямова

Дуже багато систем і інструментів у кожному із напрямків і це здається дуже важким, як це все знати та пам’ятати. Не лякайтесь, достатньо знати хоча б один із представлених, щоб розуміти як це працює.
Ці знання дадуть вам змогу претендувати на позицію Junior DevOps.
Беззаперечно, вся ця інформація хоч і має на своїй меті огляд всіх можливих варіантів, але я міг щось забути. Якщо ви помітили неточність, будь ласка напишіть коментар – я обов’язково виправлю.

В цілому ця стаття початок великої подорожі, я буду додавати більш поглибленный огляд на кожний інструмент, перевіряйте блог.
Дякую за ваш час.


Leave a Reply

Your email address will not be published. Required fields are marked *