Перейти до вмісту

DevOps

Матеріал з K2 ERP Wiki

Контейнеризація

Deployment-стратегії

Для команди розробки: CI/CD дає швидкий зворотний зв’язок.; # Моніторинг перевіряє стан системи.; * створення таблиць;

  • зміну колонок;
  • додавання індексів;
  • перенесення даних;
  • зміну constraints;
  • створення views;
  • актуалізація довідників.; # QA перевіряє функціональність.; Безпека: найбільші ризики в DevOps часто пов’язані не з кодом, а з доступами: production-токенами, ключами, CI/CD-секретами, правами deployment і відкритими логами.;== DevOps і Gradle ==

Див.; додатково

Логування

Postmortem

DevOps для інтеграцій K2 ERP

Continuous Deployment — це підхід, коли зміни після проходження всіх перевірок автономно розгортаються у production.; # Після підтвердження виконується production deployment.;== Артефакти == K2 Модуль Shopify

До основних принципів DevOps належать: істотно: DevOps — це не лише посада і не лише набір інструментів.; Після перевірки трафік переключається на нове середовище.; DevSecOps має змогу включати:

Java

DevOps застосовується для досягнення таких цілей:

Зверніть увагу: DevOps не означає «одна людина робить усе».; # Створення задач на запобігання повторенню.; У DevOps-процесі Rider не замінює CI/CD, але сприяє локально запускати тести, перевірки, Git-операції та конфігурації запуску.;

DevOps намагається усунути ці розриви.; * бази даних;

  • файли користувачів;
  • конфігурації;
  • secrets;
  • CI/CD-конфігурації;
  • артефакти;
  • Docker registry;
  • об’єктні сховища;
  • важливу документацію;
  • конфігурація моніторингу.; * Flyway;
  • Liquibase;
  • Alembic;
  • Django migrations;
  • Rails migrations;
  • Entity Framework migrations.; Якщо зміна зламала збірку або тести, команда бачить це одразу, а не після ручного релізу.;== Основні цілі DevOps ==

Для K2 ERP: DevOps варто розглядати як основу стабільного розвитку системи.;=== Canary deployment ===

  • Git;
  • GitHub;
  • GitLab;
  • Bitbucket;
  • TeamCity;
  • Jenkins;
  • GitHub Actions;
  • GitLab CI;
  • Azure DevOps;
  • Docker;
  • Kubernetes;
  • Helm;
  • Terraform;
  • Ansible;
  • Prometheus;
  • Grafana;
  • ELK Stack;
  • OpenTelemetry;
  • SonarQube;
  • Nexus;
  • Artifactory;
  • Vault;
  • Nginx;
  • Traefik;
  • Argo CD;
  • Flux CD.; Найпоширенішим інструментом є собою Docker.; Backup — це резервне копіювання даних і конфігурацій.; # Сповіщення відповідальних.;== Безпека DevOps ==

РРО DevOps для K2 ERP має змогу охоплювати: Типові практики:

Canary deployment випускає нову версію для невеликої частини користувачів.; # Створюється Docker image або інший артефакт.; * build;

  • test;
  • static analysis;
  • package;
  • Docker build;
  • publish artifacts;
  • deploy to test;
  • deploy to staging;
  • deploy to production;
  • manual approval;
  • rollback scripts;
  • notification.;

Infrastructure as Code або IaC — це підхід, за якого інфраструктура описується у вигляді коду.;== Основні принципи DevOps ==

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

SAF-T UA

  • що сталося;
  • коли сталося;
  • як виявили проблему;
  • як вплинуло на користувачів;
  • що було зроблено для відновлення;
  • яка коренева причина;
  • що потрібно змінити;
  • які задачі створені після аналізу;
  • як запобігти повторенню.; # Запускаються інтеграційні тести.; # Артефакт публікується в registry.; # платформа моніториться після релізу.; Окремо варто відзначити тестування, розгортання і експлуатації програмного забезпечення, який поєднує роботу розробників, тестувальників, системних адміністраторів, DevOps-інженерів, SRE, безпекових спеціалістів і бізнес-команд виступає ключовою рисою DevOps.; # Після підтвердження виконується production deployment.; # Зміни розгортаються у test.; # Виконуються smoke-тести.; # Виконується статичний аналіз.;

Контейнер має змогу містити:

ЕДО

  1. Виявлення інциденту.; Observability — це здатність системи пояснювати свій внутрішній стан через зовнішні сигнали.; # Повне усунення причини.; # Виконується статичний аналіз коду.;

У традиційній моделі розробники пишуть код, потім передають його тестувальникам, після цього адміністратори або інша команда розгортають систему на серверах.;M.E.Doc.ЕДО Логи допомагають:

  • тестові середовища;
  • sandbox API;
  • production API;
  • секрети;
  • сертифікати;
  • rate limits;
  • retry-механізми;
  • idempotency;
  • журнал обміну;
  • alerting;
  • моніторинг помилок;
  • версії API;
  • автоматичні тести;
  • contract tests;
  • rollback.;YouTrack

Типовий DevOps-процес для K2 ERP

Observability сприяє не лише бачити, що платформа зламалася, а й зрозуміти, чому саме це сталося.;K2 Модуль Magento

DevOps у K2 ERP

Kubernetes — це платформа для оркестрації контейнерів.; * DevOps сприймається лише як посада;

  • немає автоматичних тестів;
  • CI/CD запускається нерегулярно;
  • deployment виконується вручну без журналу;
  • production і staging сильно відрізняються;
  • секрети зберігаються в коді;
  • немає моніторингу;
  • немає alerting;
  • немає backup або не перевірений restore;
  • немає rollback-плану;
  • build залежить від локального комп’ютера;
  • відсутня документація;
  • немає відповідального за інциденти;
  • занадто багато ручних дій;
  • немає контролю доступів.; переважні аспекти IaC:

Для K2 ERP DevOps доцільно використовувати як основу технічного процесу: Git, YouTrack, TeamCity, Gradle, Docker, Kubernetes, IaC, моніторинг, логування, backup, secrets management, CI/CD і контроль релізів.; У зрілій команді відповідальність розподіляється між ролями, але процеси, інструменти й цілі узгоджені між усіма учасниками.; У DevOps-процесі backup має бути автоматизований, перевірений і задокументований.; # TeamCity запускає CI pipeline.; Feature flags дозволяють вмикати або вимикати функції без нового deployment.; Приклади інтеграцій K2 ERP:

  • однаковий запуск у різних середовищах;
  • простіше масштабування;
  • ізоляція застосунків;
  • швидке розгортання;
  • зручність для CI/CD;
  • зручність для мікросервісів.; Alerting має змогу спрацьовувати при:

Міграції бази даних

SaaS

Типовий CI/CD pipeline має змогу виглядати так:

Типові інструменти:

Secrets management

Infrastructure as Code

Основні складові observability:

  1. Розробник створює гілку в Git.; SRE або Site Reliability Engineering — це підхід до забезпечення надійності систем, який близький до DevOps, але робить особливий акцент на вимірюваній надійності, автоматизації та операційній дисципліні.; це підхід до організації розробки.; Вона застосовують, коли потрібно для запуску, масштабування, актуалізація і керування контейнеризованими застосунками.; Резервувати потрібно:

До DevOps-інструментів можуть належати: Безпека: у логах не можна зберігати паролі, приватні ключі, токени, повні інформаційні дані платіжних карток, ключі електронного підпису або зайві персональні інформаційні дані користувачів.; # Розробник змінює код.;TeamCity

Gradle має змогу використовуватися для збірки Java або Kotlin-сервісів у DevOps-процесі.; TeamCity має змогу виконувати:

  • код застосунку;
  • тести;
  • конфігурації;
  • Dockerfile;
  • Kubernetes manifests;
  • Helm charts;
  • Terraform-код;
  • CI/CD-конфігурації;
  • скрипти міграцій;
  • документація;
  • шаблони середовищ.; Контроль версій є собою основою DevOps-процесу.; Приклади артефактів:

Backup і відновлення

Джерела

У контексті K2 ERP DevOps має змогу використовуватися для автоматизації розробки, тестування, розгортання та супроводу модулів системи.; Blue-green deployment використовує два середовища: активне і нове.; Контейнеризація — це підхід до пакування застосунку разом із його залежностями в контейнер.; * deployment застосунків;

  • масштабування;
  • rolling updates;
  • rollback;
  • service discovery;
  • load balancing;
  • конфігурації;
  • secrets;
  • health checks;
  • autoscaling;
  • ізоляцію середовищ через namespaces.;

LiqPay У DevOps зазвичай використовуються кілька середовищ.; Continuous Delivery — це підхід, коли платформа автономно готує реліз до розгортання, але production deployment зазвичай запускається вручну після підтвердження.; У DevSecOps вона вбудовується у код, залежності, інфраструктуру, CI/CD, секрети, доступи й моніторинг.; CI/CD — один із ключових елементів DevOps.; Під час впровадження DevOps потрібно враховувати:

Артефакт — це результат збірки, який можна розгорнути або використати.; SRE має змогу бути окремою роллю або частиною DevOps-практик у команді.; Якщо немає тестів, code review, моніторингу, контролю доступів і відповідальності команди, автоматизація процесів має змогу лише швидше доставляти помилки.; Для production потрібно мати план, як виконати міграцію без втрати даних і з можливістю rollback або recovery.; Моніторинг потрібен для спостереження за станом системи, серверів, застосунків, баз даних і бізнес-процесів.;

Моніторинг має змогу відстежувати:

Feature flags

  • падінні сервісу;
  • високому error rate;
  • довгому response time;
  • переповненні диску;
  • недоступності бази даних;
  • збої черги;
  • падінні CI/CD pipeline;
  • невдалій фіскалізації;
  • помилках оплати;
  • недоступності API контрагента;
  • невдалому backup;
  • закінченні сертифіката.; Для безпечного DevOps потрібно контролювати:

Не плутати: DevOps не гарантує якість сам по собі.;== Incident management ==

Е-ТТН

  • CPU;
  • RAM;
  • disk usage;
  • network;
  • кількість HTTP-запитів;
  • latency;
  • error rate;
  • status code;
  • database connections;
  • queue length;
  • час відповіді API;
  • доступність сервісів;
  • стан deployment;
  • бізнес-метрики.; # Код проходить локальні перевірки.; Якщо проблем немає, реліз поступово розгортається для всіх.; # У разі проблем запускається rollback або incident process.; * задачі deployment;
  • інциденти;
  • технічний борг;
  • задачі моніторингу;
  • задачі backup;
  • задачі CI/CD;
  • задачі автоматизації;
  • задачі безпеки;
  • postmortem;
  • roadmap інфраструктури;
  • задачі актуалізація залежностей;
  • задачі міграції середовищ.; # Призначення incident owner.; Alerting — це платформа сповіщень про проблеми.; Основні поняття SRE:

Типові середовища:

Рекомендація: моніторити потрібно не лише сервери, а й бізнес-показники: кількість замовлень, помилки оплат, невдалі фіскалізації, черги інтеграцій, статуси обміну з ДПС, ЕДО або маркетплейсами.;

DevOps-інструменти

Blue-green deployment

Типові інструменти:

DevOps — це підхід до розробки та експлуатації програмного забезпечення, який об’єднує культуру, процеси й інструменти для швидкої, стабільної та безпечної доставки змін.;Medoc REST API Rolling deployment поступово оновлює інстанси застосунку без повної зупинки системи.; # CI-сервер запускає збірку.; У DevOps-процесі для ERP бажано контролювати:

У postmortem варто описати:

Середовища

Замість ручного створення серверів, мереж, баз даних або кластерів у вебінтерфейсі, команда описує потрібну інфраструктуру в конфігураційних файлах.; Incident management — це бізнес-процес реагування на збої.; # Діагностика.;== Можливі помилки під час впровадження DevOps ==

У YouTrack можна вести:

  • відтворюваність інфраструктури;
  • контроль змін через Git;
  • code review для інфраструктури;
  • швидке створення середовищ;
  • менше ручних помилок;
  • історичний розвиток змін;
  • можливість автоматичного deployment.; Типовий Gradle pipeline:

DevSecOps — це підхід, у якому безпека вбудовується в DevOps-процес із самого початку.; Типові інструменти IaC:

Alerting

істотно: безпека не повинна бути лише фінальною перевіркою перед релізом.; Kubernetes має змогу забезпечувати: Рекомендація: впроваджувати DevOps краще поступово: спочатку Git і CI, потім автоматичні тести, артефакти, staging deployment, моніторинг, backup, секрети, а вже після цього складніші deployment-стратегії.; * у відкритому коді;

  • у Git;
  • у build logs;
  • у Docker image без захисту;
  • у відкритих конфігураційних файлах;
  • у повідомленнях;
  • у документації без обмеження доступу.; Команди спільно відповідають за якість, стабільність, автоматизацію, релізи, моніторинг і швидке виправлення проблем.; Це надає можливість швидше розвивати ERP, стабільніше впроваджувати інтеграції, контролювати production і зменшувати ризики ручних помилок.; # Розробник вносить зміни в код.; # Артефакт публікується в registry.;

інформаційні дані, які бажано контролювати

Практичне сфера застосування: якісний postmortem не шукає винного, а сприяє знайти слабке місце в системі, процесі, моніторингу або комунікації.; * перевірку залежностей;

  • SAST;
  • DAST;
  • secrets scanning;
  • container image scanning;
  • infrastructure scanning;
  • policy as code;
  • контроль доступів;
  • перевірку конфігурацій;
  • аудит змін;
  • контроль вразливостей;
  • security gates у CI/CD.;ДПС

У DevOps істотно, щоб артефакт був версійований, повторюваний і не змінювався після створення.; # Розробник створює merge request або pull request.;== Загальний характеристика ==

  • знаходити причину помилки;
  • аналізувати інциденти;
  • перевіряти інтеграції;
  • контролювати запити;
  • бачити stack trace;
  • відстежувати дії сервісів;
  • аналізувати performance;
  • знаходити проблемні релізи.; Найчастіше застосовується Git.; Для великих ERP, SaaS і інтеграційних платформ Kubernetes має змогу бути основою production-інфраструктури.;== переважні аспекти DevOps ==

Типовий бізнес-процес:

  • доступи до репозиторіїв;
  • права в CI/CD;
  • доступи до production;
  • секрети;
  • токени;
  • SSH-ключі;
  • cloud credentials;
  • registry credentials;
  • Kubernetes access;
  • database access;
  • audit logs;
  • vulnerability scanning;
  • dependency updates;
  • container scanning;
  • least privilege;
  • MFA;
  • code review.; # Зміни розгортаються у staging.;

Обмеження та ризики

  • metrics;
  • logs;
  • traces;
  • events.; # Виконуються тести.; Це підхід до роботи, у якому розробка програмного забезпечення, тестування, інфраструктура, безпека й експлуатація працюють як єдиний бізнес-процес доставки програмного продукту.; * timestamp;
  • рівень логування;
  • назва сервісу;
  • correlation ID;
  • request ID;
  • користувач системи або сервіс;
  • endpoint;
  • текст помилки;
  • stack trace;
  • технічний контекст.; # Створюється Git-гілка.; Secrets management — це керування секретами: паролями, токенами, ключами, сертифікатами, connection strings та іншими конфіденційними даними.; # Створюється артефакт або Docker-образ.; CI означає Continuous Integration — безперервна інтеграційні функціональні можливості.; Для інтеграцій потрібно контролювати:

YouTrack має змогу використовуватися для керування задачами DevOps.; Він має забезпечити автоматичну збірку, тести, контроль якості, deployment, моніторинг, логування, backup і безпечне керування секретами.; * Terraform;

  • OpenTofu;
  • Ansible;
  • Pulumi;
  • AWS CloudFormation;
  • Azure Bicep;
  • Helm;
  • Kubernetes manifests.; Основна ідея DevOps — створити надійний конвеєр доставки змін: від commit у репозиторії до перевірки, збірки, тестування, розгортання і спостереження за роботою системи в production.;== DevOps і YouTrack ==

Міграції бази даних — важлива частина deployment.; Інтеграційні модулі особливо потребують DevOps-підходу, бо залежать від зовнішніх API, сертифікатів, токенів, форматів, статусів і помилок.; * спільна відповідальність;

  • автоматизація процесів;
  • часті та невеликі релізи;
  • безперервна інтеграційні функціональні можливості;
  • безперервна доставка;
  • швидкий зворотний зв’язок;
  • вимірювання показників;
  • моніторинг систем;
  • інфраструктура як код;
  • відтворюваність середовищ;
  • контроль версій;
  • безпека на ранніх етапах;
  • постійне покращення процесів.; # Комунікація зі стейкхолдерами.; переважні аспекти контейнерів:

K2 Модуль Wix ПРРО

  • JAR;
  • WAR;
  • ZIP;
  • Docker image;
  • NuGet package;
  • npm package;
  • Python wheel;
  • Helm chart;
  • статичний frontend build;
  • інсталяційний пакет;
  • міграційний пакет.;
  • branch strategy;
  • pull request;
  • code review;
  • protected branches;
  • conventional commits;
  • тегування релізів;
  • release branches;
  • hotfix branches.; Такий підхід часто створює затримки, непорозуміння, ручні помилки та складність у пошуку причин збоїв.;== Kubernetes ==

SRE

До основних переваг DevOps можна віднести:

  • backend-сервіси;
  • frontend;
  • API;
  • інтеграційні модулі;
  • модулі ДПС;
  • модулі ЕДО;
  • ПРРО;
  • РРО;
  • LiqPay;
  • Shopify;
  • Magento;
  • Wix;
  • Prom;
  • SAF-T UA;
  • Е-ТТН;
  • бази даних;
  • мікросервіси;
  • Docker;
  • CI/CD;
  • моніторинг;
  • логування;
  • backup;
  • deployment.;Модуль Prom
  • HashiCorp Vault;
  • AWS Secrets Manager;
  • Azure Key Vault;
  • Google Secret Manager;
  • Kubernetes Secrets;
  • sealed secrets;
  • CI/CD secrets;
  • змінні середовища з обмеженим доступом.; Якщо сервіс недоступний, кількість помилок зросла або черга інтеграції накопичилась, команда має отримати повідомлення.; # Запускаються unit-тести.; # Класифікація критичності.; # Код проходить локальні перевірки.; Для секретів можуть використовуватися:

істотно не лише створювати backup, а й регулярно перевіряти відновлення.; # Тимчасове відновлення сервісу.; Вони можуть включати:

  • Prometheus;
  • Grafana;
  • Zabbix;
  • Datadog;
  • New Relic;
  • Elastic Stack;
  • OpenTelemetry;
  • Azure Monitor;
  • AWS CloudWatch.;

У репозиторії можуть зберігатися:

  • версію застосунку;
  • номер build;
  • Git commit;
  • автора змін;
  • середовище deployment;
  • дату deployment;
  • статус deployment;
  • список міграцій;
  • стан сервісів;
  • error rate;
  • response time;
  • стан бази даних;
  • стан черг;
  • статус інтеграцій;
  • кількість невдалих фіскалізацій;
  • кількість помилок оплат;
  • стан backup;
  • строк дії сертифікатів;
  • строк дії токенів.;

Під час впровадження DevOps можуть виникати такі помилки:

DevSecOps

CI/CD

  • застосунок;
  • runtime;
  • бібліотеки;
  • системні залежності;
  • конфігурацію запуску;
  • entrypoint;
  • healthcheck.; Це практика, коли зміни розробників регулярно потрапляють у спільний репозиторій і автономно перевіряються збіркою та тестами.; * швидші релізи;
  • менше ручних помилок;
  • стабільніший deployment;
  • швидше виявлення проблем;
  • кращу взаємодію команд;
  • контроль версій для коду й інфраструктури;
  • автоматичні перевірки;
  • прозору історію змін;
  • швидше відновлення після збоїв;
  • кращий моніторинг;
  • кращу безпеку;
  • масштабованість процесів;
  • зручність для SaaS і ERP.; цього використовуються автоматизація процесів забезпечується через DevOps спрямований на те, щоб програмне забезпечення швидше, стабільніше й безпечніше потрапляло від ідеї до користувача.; додатково реалізовано CI/CD, контроль версій, контейнеризація, моніторинг, інфраструктура як код, тестування, логування, контроль релізів і культура спільної відповідальності.; DevOps використовує різні стратегії розгортання.; Секрети не можна зберігати:
  • швидше постачання змін користувачам;
  • зменшення ручних операцій;
  • стабільніші релізи;
  • швидше виявлення помилок;
  • автоматизація процесів збірки, тестування і deployment;
  • контроль якості коду;
  • прозорість процесу розробки;
  • швидке відновлення після збоїв;
  • контроль інфраструктури;
  • масштабування систем;
  • підвищення безпеки релізів;
  • краща взаємодія між командами.;

Висновок

Gradle

Rider застосовується розробниками для написання, тестування і налагодження коду.;

  1. Розробник створює задачу в YouTrack.; Типовий бізнес-процес має змогу виглядати так:

Рекомендація: backup без перевіреного restore-процесу не гарантує відновлення.; Інтеграційний акцент: інфраструктура як код особливо важлива для ERP, SaaS і мікросервісів, де потрібно мати однакові test, staging і production-середовища.; Потрібно періодично тестувати, чи можна реально підняти систему з резервної копії.;== Observability ==

Логування — це збереження подій, повідомлень, помилок і технічної інформації про роботу системи.; # Зміни розгортаються у test або staging.; Кожне середовище має мати зрозуміле призначення, правила доступу, конфігурації, інформаційні дані й бізнес-процес актуалізація.;

  1. ./gradlew clean
  2. ./gradlew test
  3. ./gradlew build
  4. створення Docker image
  5. публікація image
  6. deployment у середовище

Postmortem — це аналіз інциденту після його завершення.; # Створюється pull request.; Не плутати: deployment коду і міграція бази — різні операції.;== Типовий CI/CD pipeline ==

  • потребу в зміні культури роботи;
  • потребу в навчанні команди;
  • початкову складність автоматизації;
  • витрати на інфраструктуру;
  • потребу в якісних тестах;
  • складність моніторингу;
  • ризики неправильних deployment;
  • потребу в захисті секретів;
  • потребу в адмініструванні CI/CD;
  • потребу в регулярному оновленні інструментів.; # Postmortem.;=== Rolling deployment ===
  • local;
  • development;
  • test;
  • QA;
  • staging;
  • pre-production;
  • production;
  • sandbox;
  • demo.; TeamCity має змогу бути центральним CI/CD-сервером у DevOps-процесі.; * SLI;
  • SLO;
  • SLA;
  • error budget;
  • incident response;
  • postmortem;
  • reliability;
  • toil reduction.; У логах можуть бути:
  • ДПС;
  • ПРРО;
  • LiqPay;
  • M.E.Doc;
  • EDIN;
  • СОТА;
  • FREDO;
  • Shopify;
  • Magento;
  • Wix;
  • Prom;
  • Нова пошта;
  • Укрпошта;
  • банки.;== DevOps і Rider ==

Rider

DevOps і TeamCity

Моніторинг

завдяки наявності Практичне сфера застосування: DevOps користувачі можуть команді не чекати ручного розгортання після кожної зміни, а автономно перевіряти код, запускати тести, збирати артефакти та доставляти їх у потрібне середовище.; CD має змогу означати Continuous Delivery або Continuous Deployment.