„Срушити прод" — сленг израз који означава уношење измена које изазивају квар на продукционом серверу и чине апликацију недоступном за кориснике. Према извештају AWS DevOps 2024, око 65% тимова се бар једном суочило са инцидентом на продукцији изазваним људским фактором. Застој продукције директно утиче на пословне метрике и захтева тренутну реакцију тима.
Главно
Срушити прод је неформална ознака за ситуацију када апликација на продукционом окружењу престане да ради исправно. За разлику од тестног или staging окружења, продукција опслужује стварне кориснике, па сваки квар има критичан значај за бизнис.
Израз „срушити прод" може означавати различите степене озбиљности: од делимичне деградације функционалности до потпуне недоступности услуге. У терминологији ITIL ово се класификује као инцидент (incident) — непланирани прекид или смањење квалитета услуге. Што је већа критичност услуге, тим брже мора да реагује.
Савремене DevOps праксе усмерене су на минимизацију последица падова продукције. Алати попут Datadog, New Relic и Sentry омогућавају праћење стања продукције у реалном времену и аутоматско обавештавање тима о аномалијама.
# Брзо враћање на претходну верзију
kubectl rollout undo deployment/api-server
# Провери статус деплоја
kubectl rollout status deployment/api-server
# Погледај последње логове за анализу грешака
kubectl logs deployment/api-server --tail=100 --since=10m
Овај пример приказује типичне команде за враћање деплоја у Kubernetes. Брзо враћање је први корак при откривању проблема на продукцији, који омогућава обнављање рада услуге за неколико минута.
Анализа више од 500 инцидената на продукцији коју је спровео Stripe 2023. године открила је кључне категорије узрока. Расподела инцидената одражава типичне слабе тачке у процесима развоја и деплоја.
| Узрок | Опис | Удео |
|---|---|---|
| Грешке деплоја | неисправна верзија, погрешне променљиве окружења | 32% |
| Проблеми са БП | покварена миграција, блокада табела | 25% |
| Оптерећење | неочекивани раст саобраћаја, цурење меморије | 18% |
| Конфигурација | погрешне заставице, обрисане тајне | 15% |
| Спољни сервиси | отказ API, проблеми са DNS или CDN | 10% |
Грешке деплоја чине готово трећину свих инцидената. Најчешће се то дешава када се измене деплоју ручно без одговарајуће провере. Аутоматизација деплоја кроз CI/CD цевоводе са вишестепеном провером значајно смањује ризик пада продукције.
Посебну пажњу заслужују проблеми са миграцијама базе података. Неисправна миграција може не само да сруши прод, већ и да доведе до неповратног губитка података. Због тога се миграције покрећу у одвојеном кораку цевовода са обавезним backup-ом пре извршења.
Пад продукције није само технички проблем, већ и пословни инцидент. Сваки минут застоја кошта компанију одређени износ, који зависи од природе услуге. За e-commerce платформе, цена сата застоја може достићи стотине хиљада долара.
Истраживање Gartner 2024 показује да просечна цена минута застоја enterprise апликација износи 5600 долара. Просечан опоравак након инцидента на продукцији је око 90 минута. Застој од 90 минута кошта бизнис више од пола милиона долара.
Поред финансијских губитака, пад продукције наноси штету репутацији компаније. Корисници који су се суочили са недоступношћу услуге могу прећи конкурентима. Посебно су критични инциденти за банкарске и медицинске апликације, где је поузданост кључни захтев.
За тим су последице такође значајне. Након инцидента на продукцији спроводи се postmortem — анализа основних узрока и развој мера превенције. То намеће додатно оптерећење програмерима, посебно дежурним инжењерима (on-call).
Превенција пада продукције заснива се на неколико нивоа заштите. Сваки ниво пресреће одређену класу грешака, не допуштајући им да стигну до крајњих корисника.
Feature flags су један од најефикаснијих алата за превенцију падова. Омогућавају деплој кода на прод у неактивном стању, укључивање за ограничену групу корисника и брзо искључивање при откривању проблема. Платформе попут LaunchDarkly и Split.io пружају готова решења за управљање заставицама.
Мониторинг и алертинг — завршни ниво заштите. Алати попут Prometheus + Grafana или Datadog прикупљају метрике са продукције: latency, error rate, throughput. При прекорачењу прагова активира се алерт и дежурни инжењер добија обавештење. Што тим раније сазна за проблем, мања је штета од инцидента.
Када је пад продукције већ наступио, главни приоритет је обнављање рада услуге. Анализа узрока се спроводи након стабилизације. Типичан процес реаговања укључује следеће кораке.
Први корак — одређивање обима инцидента. Да ли је услуга потпуно недоступна или је деградирао само део функционалности? Колико корисника је погођено? Одговори на ова питања одређују ниво критичности и потребне радње.
Други корак — враћање измена. Ако је инцидент повезан са скорашњим деплојем, најбржи начин опоравка је враћање претходне стабилне верзије. За то се користи команда git revert и поновни деплој претходног артефакта. Враћање не би требало да траје дуже од 10-15 минута.
Трећи корак — комуникација. Обавештавање тима, руководства и, ако је потребно, корисника о проблему и роковима опоравка. За то се користе status page сервиси попут Atlassian Statuspage и канали у Slack или Telegram.
Четврти корак — postmortem. Након опоравка спроводи се анализа основних узрока (RCA) и развијају мере превенције понављања инцидента. Резултати postmortem-а се документују и постају део базе знања тима.
Често постављана питања
То је сленг израз који означава уношење измена које су изазвале квар на продукционом серверу. Као резултат, услуга постаје недоступна или ради неисправно за кориснике. Термин се користи у DevOps култури за означавање критичног инцидента.
Најчешћи узрок су грешке деплоја: погрешне променљиве окружења, неисправна верзија артефакта или недостајуће зависности. На другом месту су проблеми са миграцијама базе података. Трећи по учесталости — оптерећење, када апликација не издржава вршни саобраћај.
За критичне сервисе време реакције не сме бити дуже од 5 минута, а опоравка — не дуже од 60 минута (SLA). За мање критичне системе дозвољено је до 4 сата. Конкретне метрике се утврђују у Service Level Agreement (SLA) и Service Level Objectives (SLO).
Crash — потпуна недоступност услуге, када корисници добијају грешке 500 или веза не успоставља. Погрешно понашање — услуга ради, али су подаци неисправни или је функционалност нарушена. Crash захтева тренутно враћање, погрешно понашање може бити исправљено hotfix-om.
Postmortem укључује: хронологију догађаја, основни узрок (RCA), обим инцидента, радње опоравка и план превенције. Важно је описивати чињенице без оптуживања — у оквиру blameless culture. Резултати се објављују за цео тим.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође