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

Хмара Azure та DevOps

Інфраструктура як код, пайплайни, що розгортають зміни кілька разів на день, базовий рівень безпеки за принципом «заборонено за замовчуванням» і рахунок, який лишається передбачуваним. Так ми будуємо хмарну інфраструктуру і так ведемо власну.

Із чого складається робота з DevOps

  • Пайплайни. Збірка, тести, перевірка безпеки й розгортання в GitHub Actions, з федеративними обліковими даними замість збережених секретів і з кожною дією, закріпленою за хешем.
  • Інфраструктура як код. Terraform для всього; зміни перевіряються як план до застосування, а виявлення дрейфу за розкладом повідомляє, що хтось змінив уручну.
  • Доставка змін бази даних. Зміни схеми у вигляді версійованих міграцій, що виконуються в пайплайні, тому розгортання коду без відповідної схеми просто неможливе.
  • Моніторинг і сповіщення. Логи, метрики й трасування в одному робочому просторі, а сповіщення доходять до людини лише тоді, коли розробник може на них відреагувати.
  • Контроль витрат. Рівні ресурсів, підібрані за потребою, оплата за споживанням там, де навантаження стрибкоподібне, і щомісячний рахунок, який хтось справді читає.

Чим ми користуємося

Кожен ресурс описано в Terraform і розгортається з GitHub Actions із федеративними обліковими даними. Нічого не накликується вручну в порталі, ні в нашій інфраструктурі, ні у вашій.

  • Обчислення

    Azure Functions на ізольованому воркері .NET 10 для API і 40 запланованих завдань; Container Apps Jobs виконують розгортання баз даних і міграції EF Core.

  • Дані

    Azure SQL із безпекою на рівні рядків і стовпцями Always Encrypted під ключами, якими керує клієнт, у Key Vault; Blob Storage для документів і підписаних PDF.

  • Фронтенд

    Два Static Web Apps: портал і цей сайт; обидва працюють зі строгою Content Security Policy і попередньо рендеряться там, де пошуковим роботам потрібен HTML.

  • Ідентифікація

    Entra ID для людей і груп, керовані ідентичності, призначені користувачем, для кожного навантаження, OIDC з GitHub Actions. Жодних довгоживучих облікових даних у пайплайні.

  • Спостережуваність

    Application Insights і Log Analytics із правилами сповіщень, які надходять команді як повідомлення в Teams. Сповіщеннями стають лише сигнали, на які розробник може відреагувати.

  • Управління та контроль

    Політики груп ресурсів, блокування керування, захист від остаточного видалення (purge protection) і параметри діагностики; усе описано в Terraform, а біля кожного правила вказано причину.

Дисципліна витрат

Наші інженерні принципи розставляють пріоритети в чіткому порядку: спершу вартість, потім безпека, потім сучасність, потім продуктивність. Стеля витрат визначається ще до того, як накреслено архітектуру, і кожне рішення звіряється з нею. На практиці це означає оплату за споживанням замість серверів, що працюють постійно, там, де навантаження стрибкоподібне; рівень бази даних, підібраний за потребою, а не той, який радить вендор; і сповіщення, побудовані на сервісах, що вже є в підписці, а не на платному продукті для чергувань.

Базовий рівень безпеки

  • Брандмауери за замовчуванням забороняють усе; до SQL можна звернутися лише з підмережі Functions.
  • Секрети зберігаються лише в Key Vault і читаються через керовані ідентичності.
  • Стовпці з персональними та фінансовими даними захищені Always Encrypted, тому навіть адміністратор бази даних не може їх прочитати.
  • Actions і образи контейнерів закріплені за хешем; оновлення залежностей надходять у вигляді pull request, які проходять перевірку, а попередження безпеки (security advisory) безумовно означає оновлення.
  • CodeQL запускається при кожному push, плани Terraform перевіряються перед застосуванням, а дрейф виявляється за розкладом.

Наш досвід у хмарі

Понад 20 побудованих CI/CD-пайплайнів, релізи раз на два тижні перетворено на щоденні розгортання, час випуску релізу скорочено з чотирьох годин до 25 хвилин, витрати на Azure зменшено на 30% на одній платформі. Цифри з історії наших проєктів.

Наймаємо під це, а не імпровізуємо

На роль DevOps ми наймаємо цілеспрямовано: в історії наших вакансій є DevOps-інженер і окремий технічний інтерв'юер з DevOps, тож кандидатів оцінює той, хто сам виконує цю роботу, а не універсал, який читає чек-лист.

Хочете мати інфраструктуру Azure в коді й менший рахунок?

Надішліть доступ лише для читання до вашої підписки або опис того, що де працює. Протягом одного робочого дня ви отримаєте письмовий аналіз і план.