Відкритий вебінар З чого почати в DevOps - vit-um/DevOps GitHub Wiki
DevOps - це підхід до розробки ПЗ, який об'єднує в собі розробку (DEVelopment)
та експлуатацію (OPerations)
, з метою покращення ефективності та швидкості процесу розробки, тестування, розгортання та управління програмним забезпеченням.
DevOps використовує автоматизацію
та програмні інструменти, щоб забезпечити стабільність
та надійність
ПЗ під час розгортання та експлуатації.
Інструменти та практики DevOps
- Безперервна інтеграція CI/
- Безперервна доставка /CD
- Інфраструктура як код IAC
- Автоматизація процесів PIPELINE
- Моніторинг та логування
- Співпраця та комунікація
Етапи SDLC (Software Development Life Cycle)
- Planning (планування),
- кодінг,
- білд,
- Testing (тестування),
- доставка,
- Deployment (розгортання),
- моніторинг та зворотній зв'язок.
Software development life cycle — процес розробки програмного забезпечення від початку до кінця. SDLC зазвичай включає такі етапи як планування, збір вимог, проєктування, реалізація, тестування, розгортання та супровід.
В тесті вказані вірними наступні етапи: "Planning, Analysis, Design, Implementation, Testing, Deployment, Maintenance"
- На етапі
Implementation
відбувається кодування та збірка програмного забезпечення. - Мета етапу
Deployment
в SDLC:
- Запустити програмне забезпечення у виробництво
- Переконатися, що програмне забезпечення стабільне і відповідає вимогам
- Забезпечити підтримку та обслуговування програмного забезпечення
- Мета етапу
Maintenance
: Виправлення дефектів та проблем у програмному забезпеченні. - Мета безперервної інтеграції (CI) в SDLC:
- Автоматизувати процес збірки та тестування
- Підвищити якість коду
- Зменшити ризик виникнення дефектів та проблем
- Мета безперервної доставки (CD) в SDLC:
- Автоматизувати процес випуску релізів
- Гарантувати, що програмне забезпечення завжди знаходиться в стані готовності до релізу
- Забезпечити швидший зворотній зв'язок із зацікавленими сторонами
Антипатерни DevOps
- Ізольовані команди
- Відсутність автоматизації
- Надмірна залежність від інструментів (якщо надмірно покладатись на якісь конкретні інструменти це може привести до проблем пов'язаних з їх застосуванням для інноваційних розробок чи проектів)
- Погана комунікація
- Відсутність постійного вдосконалення
Майбутнє DevOps
- впровадження машинного навчання і штучного інтелекту,
- використання безсерверної архітектури,
- важливість безпеки і відповідності вимогам в DevOps.
Основні компоненти пайплайнів в DevOps включають
-
Збір інтеграції (Continuous Integration, CI): Цей етап включає в себе автоматичну компіляцію коду, виконання модульних тестів і інші перевірки, що допомагають виявити проблеми в коді на ранніх стадіях розробки.
-
Тестування: На цьому етапі виконується різноманітне тестування, таке як інтеграційне тестування, функціональне тестування, навантажувальне тестування тощо, щоб переконатися, що програмне забезпечення працює належним чином.
-
Розгортання (Deployment): Цей етап включає в себе автоматичне розгортання програмного забезпечення на тестових та виробничих серверах.
-
Моніторинг і логування: Після розгортання важливо відстежувати інформацію про роботу програмного забезпечення, а також відслідковувати помилки та проблеми.
-
Звітування (Reporting): Пайплайн може створювати звіти про процеси та результати кожного кроку для інформування команди про стан проекту.
-
Автоматизація (Automation): Основною ідеєю пайплайнів є автоматизація якомога більшої кількості етапів, щоб зменшити втрати часу та помилки, підвищити надійність та забезпечити швидку доставку програмного забезпечення.
Пайплайни в DevOps можуть бути налаштовані різними способами, враховуючи потреби та вимоги конкретного проекту, і вони є важливим інструментом для досягнення автоматизації процесів розробки та доставки програмного забезпечення.
Чим DevOps відрізняється від SRE
DevOps
і SRE
(Site Reliability Engineering) - це два підходи до управління інфраструктурою та операціями в інформаційних технологіях, але вони мають деякі відмінності:
- Цільова спрямованість:
- DevOps - більш загальний підхід до розробки та управління програмним забезпеченням, який покликаний покращити співпрацю між розробниками та операторами (Dev і Ops). DevOps орієнтований на автоматизацію процесів розробки, тестування та розгортання, з метою зменшення часу доставки програмного забезпечення і підвищення якості.
- SRE - це специфічний підхід, розроблений Google, який фокусується на забезпеченні надійності та доступності великих веб-сервісів. SRE використовує інженерні методи та культуру, щоб зменшити інциденти та забезпечити надійну роботу сервісів.
- Ролі та відповідальності:
- DevOps спрямований на співпрацю між розробниками та операторами, але ролі не завжди чітко визначені. DevOps сприяє тому, щоб розробники відповідали за операційні аспекти та щоб оператори були більш залучені до розробки.
- SRE визначає роль "інженера надійності сайту" (SRE), яка включає в себе чітко визначені відповідальності щодо надійності та доступності.
- Вимоги до надійності:
- DevOps може враховувати різні рівні надійності в залежності від конкретного проекту, але він не обов'язково встановлює жорсткі метричні вимоги.
- SRE встановлює жорсткі метричні вимоги до надійності, такі як SLA (Service Level Agreement) і SLO (Service Level Objective), і використовує їх для вимірювання та контролю над надійністю системи.
- Інструменти та практики:
- DevOps використовує широкий спектр інструментів і практик, включаючи CI/CD (Continuous Integration/Continuous Deployment), автоматизоване тестування, контейнеризацію, оркестрацію та інші.
- SRE також використовує ці інструменти, але звертає більше уваги на моніторинг, вимірювання та аналіз даних для забезпечення надійності та доступності систем.
Загалом, DevOps і SRE можуть використовуватися разом або окремо, в залежності від потреб і конкретних обставин організації. SRE може бути розглянутий як підмножина DevOps, спеціалізована на питаннях надійності та доступності великих веб-сервісів.
Набір інструментів DevOps
- Cloud Native Trail Map - огляд або карта інструментів DevOps для початківців
- DevOps Tools Periodic Table - Періодична таблиця інструментів DevOps є основним галузевим ресурсом для визначення найкращих інструментів протягом усього життєвого циклу програмного забезпечення.
- CNCF Cloud Native Interactive Landscape - проект покликаний класифікувати більшість пропозицій продуктів у галузі хмарних технологій з посиланням на репозиторії GitHub та його оцінку.