Хмара 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 в коді й менший рахунок?
Надішліть доступ лише для читання до вашої підписки або опис того, що де працює. Протягом одного робочого дня ви отримаєте письмовий аналіз і план.