Category: DevOps

Про DevOps

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

    Що таке 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.
    Беззаперечно, вся ця інформація хоч і має на своїй меті огляд всіх можливих варіантів, але я міг щось забути. Якщо ви помітили неточність, будь ласка напишіть коментар – я обов’язково виправлю.

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

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

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

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

    Що таке DevOps?

    DevOps – це філософія підходу до розборки програмного забезпечення та набір практик.
    Полягає вона в об’єднанні двох напрямків Development(Розробка) та Operations(Обслуговування).
    Історично склалося, що код пишуть – розробники, а встановлюють і обслуговують – адміністратори систем.
    При такому підході часто створюються ситуації, на кшталт: “В мене на комп’ютері все працює, то щось на сервері”.
    DevOps покликаний вирішити такі проблеми та за допомогою яких інструментів це можливо зробити.

    Програмне забезпечення (ПЗ) – це результат роботи програмістів, у вигляді вихідних кодів(source code).
    Ці вихідні коди зберігаються у системі контролю версій, популярний наразі – Git.

    Як стати DevOps інженером у 2022 році? Що потрібно знати?

    Зважаючи на те що DevOps інженер, об’єднує декілька напрямків, він повинен розуміти основні концепції як що працює, наприклад:

    Але це все лірика.
    Основна задача DevOps інженеру – це супроводження проєкту, вихідні коди повинні бути скомпільовані(якщо це необхідно) та встановлені на сервер.
    Я рекомендую розібратися із:

    Також, необхідно знати як працює мережа:

    Тут вже, мабуть, йде голова обертом, щось дуже багато треба знати й розуміти.
    Для початку необхідно знати концепцію, а не бути абсолютним професіоналом у кожному із напрямків.
    На великих проєктах, існують команди спеціалістів: системних адміністраторів, мережевих адміністраторів, адміністраторів безпеки.
    Ваша задача: підготувати ПЗ та сервер до роботи, а не повністю його обслуговувати. Але і таке буває.

    Сьогодні контейнеризація – стала новим стандартом.
    Вивчаємо:

    Одним із таких систем є Docker. Тому це треба обов’язково вивчити й розуміти як працює.

    Але нащо це все, ви запитаєте мене, і де тут DevOps?

    Далі цікавіше.Одними з основних концепцій DevOps є CI/CD та автоматизація.


    Continuous Integration(CI) – “Безперервна інтеграція”, це коли код який потрапив до репозиторію від різних розробників, автоматично збирається на білд сервері та проходить етапи тестування і перевірок.
    На етапі CI можуть створюватись якісь “Артефакти”. Для того, щоб кожного разу не перебудовувати та пришвидшити наступні типові побудови – використовують репозиторій зберігання артефактів. Таким є NEXUS artifact repository.
    Артефакт – це скомпільовані файли, бібліотеки, які використовуються для роботи програми, та з’явились у процесі побудови.
    Також на етапі побудови можуть з’явитися Docker Images які також необхідно десь зберігати. Наприклад DockerHub.

    Continuous Delivery(CD) – “Безперервне доставлення” є розширенням безперервної інтеграції, оскільки вона автоматично розгортає всі зміни коду в тестовому та/або предпродуктовому(Staging) середовищі після етапу збірки. А доставляння та розгортання у продуктовій середі виконуєтся власноруч.
    Окремо відмічу:
    Continious Deployment(CD) – Це фактично заміна або перезагрузка “безперервного доставляння”. Завдяки цій практиці кожна зміна вихідних кодів, яка проходить усі етапи вашого виробничого конвеєра, буде доступна вашим клієнтам. Немає ніякого втручання людини, і лише невдалий тест запобіжить впровадженню нових змін у продуктовій середі.
    Для автоматизації цих процесів використовують системи автоматизації: GitHub Actions, GitLab CI/CD, Jenkins, TeamCity.
    Найбільш використовуваним наразі є Jenkins. Тому це кандидат на вивчення у першу чергу.

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