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

DevOps

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

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

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

Canary deployment

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

Rolling deployment поступово оновлює інстанси застосунку без повної зупинки системи.== DevOps-інструменти == Основні складові observability:

Рекомендація: backup без перевіреного restore-процесу не гарантує відновлення. У традиційній моделі розробники пишуть код, потім передають його тестувальникам, після цього адміністратори або інша команда розгортають систему на серверах.
  • однаковий запуск у різних середовищах;
  • простіше масштабування;
  • ізоляція застосунків;
  • швидке розгортання;
  • зручність для CI/CD;
  • зручність для мікросервісів. Blue-green deployment використовує два середовища: активне і нове.== Observability ==

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

Для секретів можуть використовуватися: CI/CD — один із ключових елементів DevOps. # Створюється Docker image або інший артефакт. # Створюється pull request. Типовий Gradle pipeline:

  • задачі deployment;
  • інциденти;
  • технічний борг;
  • задачі моніторингу;
  • задачі backup;
  • задачі CI/CD;
  • задачі автоматизації;
  • задачі безпеки;
  • postmortem;
  • roadmap інфраструктури;
  • задачі оновлення версій залежностей;
  • задачі міграції середовищ. У зрілій команді відповідальність розподіляється між ролями, але процеси, інструменти й цілі узгоджені між усіма учасниками. цього використовуються автоматизація процесів забезпечується через DevOps спрямований на те, щоб програмне забезпечення (ПЗ) швидше, стабільніше й безпечніше потрапляло від ідеї до користувача.; так само реалізовано CI/CD, контроль версій, контейнеризація, моніторинг, інфраструктура як код, тестування, логування, контроль релізів і культура спільної відповідальності. * падінні сервісу;
  • високому error rate;
  • довгому response time;
  • переповненні диску;
  • недоступності бази даних;
  • збої черги;
  • падінні CI/CD pipeline;
  • невдалій фіскалізації;
  • помилках оплати;
  • недоступності API контрагента;
  • невдалому backup;
  • закінченні сертифіката. Якщо зміна зламала збірку або тести, команда бачить це одразу, а не після ручного релізу.== Безпека DevOps ==

DevOps для K2 ERP здатна охоплювати: Не плутати: DevOps не гарантує якість сам по собі. # Код проходить локальні перевірки. У postmortem варто описати:

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

Gradle

Основні цілі DevOps

Для K2 ERP DevOps доцільно використовувати як основу технічного процесу: Git, YouTrack, TeamCity, Gradle, Docker, Kubernetes, IaC, моніторинг, логування, backup, secrets management, CI/CD і контроль релізів. # Класифікація критичності. Безпека: найбільші ризики в DevOps часто пов’язані не з кодом, а з доступами: production-токенами, ключами, CI/CD-секретами, правами deployment і відкритими логами. Це практика, коли зміни розробників регулярно потрапляють у спільний репозиторій і автоматизовано перевіряються збіркою та тестами.

Blue-green deployment

Секрети не можна зберігати:

  • що сталося;
  • коли сталося;
  • як виявили проблему;
  • як вплинуло на користувачів;
  • що було зроблено для відновлення;
  • яка коренева причина;
  • що потрібно змінити;
  • які задачі створені після аналізу;
  • як запобігти повторенню. Основна ідея DevOps — створити надійний конвеєр доставки змін: від commit у репозиторії до перевірки, збірки, тестування, розгортання і спостереження за роботою системи в production. # Тимчасове відновлення сервісу. Для команди розробки: CI/CD дає швидкий зворотний зв’язок. DevSecOps здатна включати:

Вони можуть включати:

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

  • швидші релізи;
  • менше ручних помилок;
  • стабільніший deployment;
  • швидше виявлення проблем;
  • кращу взаємодію команд;
  • контроль версій для коду й інфраструктури;
  • автоматичні перевірки;
  • прозору історію змін;
  • швидше відновлення після збоїв;
  • кращий моніторинг;
  • кращу безпеку;
  • масштабованість процесів;
  • зручність для SaaS і ERP.== інформаційні дані, які бажано контролювати ==
  • HashiCorp Vault;
  • AWS Secrets Manager;
  • Azure Key Vault;
  • Google Secret Manager;
  • Kubernetes Secrets;
  • sealed secrets;
  • CI/CD secrets;
  • змінні середовища з обмеженим доступом. # Моніторинг перевіряє стан системи.== DevOps і YouTrack ==

Kubernetes

DevOps і TeamCity

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

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

SRE або Site Reliability Engineering — це підхід до забезпечення надійності систем, який близький до DevOps, але робить особливий акцент на вимірюваній надійності, автоматизації та операційній дисципліні. Secrets management — це керування секретами: паролями, токенами, ключами, сертифікатами, connection strings та іншими конфіденційними даними. YouTrack здатна використовуватися для керування задачами DevOps. # Комунікація зі стейкхолдерами. Вона застосовується для для запуску, масштабування, оновлення версій і керування контейнеризованими застосунками. # Створюється артефакт або Docker-образ. Feature flags дозволяють вмикати або вимикати функції без нового deployment. Якщо проблем немає, реліз системи поступово розгортається для всіх. Під час впровадження DevOps потрібно враховувати: Замість ручного створення серверів, мереж, баз даних або кластерів у вебінтерфейсі, команда описує потрібну інфраструктуру в конфігураційних файлах. # Артефакт публікується в registry. Observability — це здатність системи пояснювати свій внутрішній стан через зовнішні сигнали.K2 Модуль Wix

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

ЕДО

  • JAR;
  • WAR;
  • ZIP;
  • Docker image;
  • NuGet package;
  • npm package;
  • Python wheel;
  • Helm chart;
  • статичний frontend build;
  • інсталяційний пакет;
  • міграційний пакет. # QA перевіряє функціональність.

Для інтеграцій потрібно контролювати:

Міграції бази даних — важлива частина deployment. До основних принципів DevOps належать:

DevOps — це підхід до розробки та експлуатації програмного забезпечення, який об’єднує культуру, процеси й інструменти для швидкої, стабільної та безпечної доставки змін.

Incident management

Джерела

конкурентні переваги DevOps

Основні принципи DevOps

SRE здатна бути окремою роллю або частиною DevOps-практик у команді. це підхід до організації розробки.K2 Модуль Shopify

DevOps і Gradle

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

DevOps намагається усунути ці розриви. # Розробник створює merge request або pull request.TeamCity

  • CPU;
  • RAM;
  • disk usage;
  • network;
  • кількість HTTP-запитів;
  • latency;
  • error rate;
  • status code;
  • database connections;
  • queue length;
  • час відповіді API;
  • доступність сервісів;
  • стан deployment;
  • бізнес-метрики. Інтеграційний акцент: інфраструктура як код особливо важлива для ERP, SaaS і мікросервісів, де потрібно мати однакові test, staging і production-середовища. Окремо варто відзначити тестування, розгортання і експлуатації програмного забезпечення, який поєднує роботу розробників, тестувальників, системних адміністраторів, DevOps-інженерів, SRE, безпекових спеціалістів і бізнес-команд виступає ключовою рисою DevOps.
  • timestamp;
  • рівень логування;
  • назва сервісу;
  • correlation ID;
  • request ID;
  • користувач системи або сервіс;
  • endpoint;
  • текст помилки;
  • stack trace;
  • технічний контекст.YouTrack

Kubernetes здатна забезпечувати: Continuous Delivery — це підхід, коли платформа автоматизовано готує реліз до розгортання, але production deployment зазвичай запускається вручну після підтвердження.SaaS Моніторинг здатна відстежувати:

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

Середовища

Infrastructure as Code

Gradle здатна використовуватися для збірки Java або Kotlin-сервісів у DevOps-процесі. До DevOps-інструментів можуть належати: Приклади артефактів:

Висновок

  • код застосунку;
  • тести;
  • конфігурації;
  • Dockerfile;
  • Kubernetes manifests;
  • Helm charts;
  • Terraform-код;
  • CI/CD-конфігурації;
  • скрипти міграцій;
  • документація;
  • шаблони середовищ. DevOps застосовується для для досягнення таких цілей:
  • швидше постачання змін користувачам;
  • зменшення ручних операцій;
  • стабільніші релізи;
  • швидше виявлення помилок;
  • автоматизація процесів збірки, тестування і deployment;
  • контроль якості коду;
  • прозорість процесу розробки;
  • швидке відновлення після збоїв;
  • контроль інфраструктури;
  • масштабування систем;
  • підвищення безпеки релізів;
  • краща взаємодія між командами. # Після підтвердження виконується production deployment. # Запускаються інтеграційні тести. Якщо немає тестів, code review, моніторингу, контролю доступів і відповідальності команди, автоматизація процесів здатна лише швидше доставляти помилки.== Контейнеризація ==
  • доступи до репозиторіїв;
  • права в 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. # Призначення incident owner. # Виконуються тести.

Secrets management

Для безпечного DevOps потрібно контролювати:

Postmortem — це аналіз інциденту після його завершення. # платформа моніториться після релізу.== Артефакти ==

  1. Розробник створює задачу в YouTrack. Continuous Deployment — це підхід, коли зміни після проходження всіх перевірок автоматизовано розгортаються у production. # Postmortem. через Практичне сценарії використання: DevOps користувачі можуть команді не чекати ручного розгортання після кожної зміни, а автоматизовано перевіряти код, запускати тести, збирати артефакти та доставляти їх у потрібне середовище.Модуль Prom

Alerting — це платформа сповіщень про проблеми. Типові практики:

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

  • потребу в зміні культури роботи;
  • потребу в навчанні команди;
  • початкову складність автоматизації;
  • витрати на інфраструктуру;
  • потребу в якісних тестах;
  • складність моніторингу;
  • ризики неправильних deployment;
  • потребу в захисті секретів;
  • потребу в адмініструванні CI/CD;
  • потребу в регулярному оновленні інструментів. # Створення задач на запобігання повторенню. Alerting здатна спрацьовувати при:
  • backend-сервіси;
  • frontend;
  • API;
  • інтеграційні модулі;
  • модулі ДПС;
  • модулі ЕДО;
  • ПРРО;
  • РРО;
  • LiqPay;
  • Shopify;
  • Magento;
  • Wix;
  • Prom;
  • SAF-T UA;
  • Е-ТТН;
  • бази даних;
  • мікросервіси;
  • Docker;
  • CI/CD;
  • моніторинг;
  • логування;
  • backup;
  • deployment. У DevOps-процесі Rider не замінює CI/CD, але оптимізує локально запускати тести, перевірки, Git-операції та конфігурації запуску. TeamCity здатна виконувати:

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

Rolling deployment

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

критично: безпека не повинна бути лише фінальною перевіркою перед релізом.Rider Безпека: у логах не можна зберігати паролі, приватні ключі, токени, повні інформаційні дані платіжних карток, ключі електронного підпису або зайві персональні інформаційні дані користувачів. Контейнер здатна містити:

Alerting

  • створення таблиць;
  • зміну колонок;
  • додавання індексів;
  • перенесення даних;
  • зміну constraints;
  • створення views;
  • оновлення версій довідників. # Створюється Git-гілка. # Виконується статичний аналіз.Medoc REST API

Резервувати потрібно:

У DevOps критично, щоб артефакт був версійований, повторюваний і не змінювався після створення.== Міграції бази даних ==

  • Prometheus;
  • Grafana;
  • Zabbix;
  • Datadog;
  • New Relic;
  • Elastic Stack;
  • OpenTelemetry;
  • Azure Monitor;
  • AWS CloudWatch. * 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. # Зміни розгортаються у test або staging. Потрібно періодично тестувати, чи можна реально підняти систему з резервної копії.
  • у відкритому коді;
  • у Git;
  • у build logs;
  • у Docker image без захисту;
  • у відкритих конфігураційних файлах;
  • у повідомленнях;
  • у документації без обмеження доступу. # Розробник змінює код. Типові інструменти:

CI/CD

CI означає Continuous Integration — безперервна інтеграційні функції ERP.SAF-T UA Java

Типові інструменти: Зверніть увагу: DevOps не означає «одна людина робить усе». критично: DevOps — це не лише посада і не лише набір інструментів. # Сповіщення відповідальних. DevOps використовує різні стратегії розгортання. * тестові середовища;

  • sandbox API;
  • production API;
  • секрети;
  • сертифікати;
  • rate limits;
  • retry-механізми;
  • idempotency;
  • журнал обміну;
  • alerting;
  • моніторинг помилок;
  • версії API;
  • автоматичні тести;
  • contract tests;
  • rollback. Якщо сервіс недоступний, кількість помилок зросла або черга інтеграції накопичилась, команда має отримати повідомлення. Це підхід до роботи, у якому розробка програмного забезпечення, тестування, інфраструктура, безпека й експлуатація працюють як єдиний бізнес-процес доставки програмного продукту. # Розробник вносить зміни в код. Найчастіше застосовується для Git. Для великих ERP, SaaS і інтеграційних платформ Kubernetes здатна бути основою production-інфраструктури.Е-ТТН

Логування — це збереження подій, повідомлень, помилок і технічної інформації про роботу системи. Приклади інтеграцій K2 ERP:

  1. Розробник створює гілку в Git. # Після підтвердження виконується production deployment. # TeamCity запускає CI pipeline. # Повне усунення причини.

Infrastructure as Code або IaC — це підхід, за якого інфраструктура описується у вигляді коду.== Типовий CI/CD pipeline ==

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

Deployment-стратегії

LiqPay

РРО

  1. Виявлення інциденту.
  • SLI;
  • SLO;
  • SLA;
  • error budget;
  • incident response;
  • postmortem;
  • reliability;
  • toil reduction. # CI-сервер запускає збірку. # Виконується статичний аналіз коду. У DevOps-процесі backup має бути автоматизований, перевірений і задокументований.== Моніторинг ==

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

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

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

Контроль версій виступає як основою DevOps-процесу. Incident management — це бізнес-процес реагування на збої.

  • Terraform;
  • OpenTofu;
  • Ansible;
  • Pulumi;
  • AWS CloudFormation;
  • Azure Bicep;
  • Helm;
  • Kubernetes manifests.== Загальний SEO-опис ==
  • версію застосунку;
  • номер build;
  • Git commit;
  • автора змін;
  • середовище deployment;
  • дату deployment;
  • статус deployment;
  • список міграцій;
  • стан сервісів;
  • error rate;
  • response time;
  • стан бази даних;
  • стан черг;
  • статус інтеграцій;
  • кількість невдалих фіскалізацій;
  • кількість помилок оплат;
  • стан backup;
  • строк дії сертифікатів;
  • строк дії токенів.== Див. так само ==
  • відтворюваність інфраструктури;
  • контроль змін через Git;
  • code review для інфраструктури;
  • швидке створення середовищ;
  • менше ручних помилок;
  • історія продукту змін;
  • можливість автоматичного deployment. # Код проходить локальні перевірки.

Артефакт — це результат збірки, який можна розгорнути або використати. критично не лише створювати backup, а й регулярно перевіряти відновлення. Після перевірки трафік переключається на нове середовище. # Зміни розгортаються у staging. * branch strategy;

  • pull request;
  • code review;
  • protected branches;
  • conventional commits;
  • тегування релізів;
  • release branches;
  • hotfix branches.
  • ДПС;
  • ПРРО;
  • LiqPay;
  • M.E.Doc;
  • EDIN;
  • СОТА;
  • FREDO;
  • Shopify;
  • Magento;
  • Wix;
  • Prom;
  • Нова пошта;
  • Укрпошта;
  • банки. Такий підхід часто створює затримки, непорозуміння, ручні помилки та складність у пошуку причин збоїв.== DevOps і Rider ==

SRE

Кожне середовище має мати зрозуміле призначення, правила доступу, конфігурації, інформаційні дані й бізнес-процес оновлення версій. Для production потрібно мати план, як виконати міграцію без втрати даних і з можливістю rollback або recovery.== DevSecOps ==

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

DevOps у K2 ERP

Моніторинг потрібен для спостереження за станом системи, серверів, застосунків, баз даних і бізнес-процесів. # Зміни розгортаються у test. У DevOps-процесі для ERP бажано контролювати: M.E.Doc.ЕДО

TeamCity здатна бути центральним CI/CD-сервером у DevOps-процесі.

Контейнеризація — це підхід до пакування застосунку разом із його залежностями в контейнер.ДПС

Kubernetes — це платформа для оркестрації контейнерів. У DevSecOps вона вбудовується у код, залежності, інфраструктуру, CI/CD, секрети, доступи й моніторинг. # Запускаються unit-тести. Observability оптимізує не лише бачити, що платформа зламалася, а й зрозуміти, чому саме це сталося. # Артефакт публікується в registry.K2 Модуль Magento

  • знаходити причину помилки;
  • аналізувати інциденти;
  • перевіряти інтеграції;
  • контролювати запити;
  • бачити stack trace;
  • відстежувати дії сервісів;
  • аналізувати performance;
  • знаходити проблемні релізи. * застосунок;
  • runtime;
  • бібліотеки;
  • системні залежності;
  • конфігурацію запуску;
  • entrypoint;
  • healthcheck.== Можливі помилки під час впровадження DevOps ==
  • metrics;
  • logs;
  • traces;
  • events. До основних переваг DevOps можна віднести:

У логах можуть бути: конкурентні переваги контейнерів:

Не плутати: deployment коду і міграція бази — різні операції.

Для K2 ERP: DevOps варто розглядати як основу стабільного розвитку системи. Це дає можливість швидше розвивати ERP, стабільніше впроваджувати інтеграції, контролювати production і зменшувати ризики ручних помилок. Найпоширенішим інструментом виступає як Docker. * перевірку залежностей;

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

DevSecOps — це підхід, у якому безпека вбудовується в DevOps-процес із самого початку. CD здатна означати Continuous Delivery або Continuous Deployment. Інтеграційні модулі особливо потребують DevOps-підходу, бо залежать від зовнішніх API, сертифікатів, токенів, форматів, статусів і помилок. Команди спільно відповідають за якість, стабільність, автоматизацію, релізи, моніторинг і швидке виправлення проблем. Він має забезпечити автоматичну збірку, тести, контроль якості, deployment, моніторинг, логування, backup і безпечне керування секретами. У YouTrack можна вести: Backup — це резервне копіювання даних і конфігурацій. # У разі проблем запускається rollback або incident process. Основні поняття SRE:

  • local;
  • development;
  • test;
  • QA;
  • staging;
  • pre-production;
  • production;
  • sandbox;
  • demo. Типовий CI/CD pipeline здатна виглядати так: