Skip to content
Barcha maqolalar
Biznesga8 daq

Sayt ishga tushdi. U o‘lib qolmasligi uchun har oy nima qilish kerak

Saytni ishga tushirish marraga yetgandek tuyuladi, lekin backend dasturchi uchun bu start. Men yillar davomida qo‘llab-quvvatlab kelayotgan saytlarimizning server qismini yuritaman va aniq ayta olaman: saytlar xakerlardan emas, ularga qarab turish to‘xtatilganidan o‘ladi.

Mirodil OrtiqovBackend dasturchi

Juma, kechki to‘qqiz. Telegram’da xabar: «Sayt ochilmayapti, brauzer ulanish himoyalanmagan deb yozyapti». Ochaman, sertifikatga qarayman. Bugun soat 18:00 da muddati tugagan.

Bu bizning mijozimiz emas edi, aniqrog‘i, o‘shanda hali bizniki emas edi. Saytni boshqa pudratchi qilgan, sertifikat qo‘lda yangilanardi va buni qiladigan odam allaqachon ketib qolgan. Biz sertifikatni o‘n daqiqada qayta chiqardik va avtomatik yangilanishni sozladik. Lekin juma oqshomi uch soat davomida reklamasi aylanayotgan sayt tashrif buyuruvchilarga qizil ogohlantirish ko‘rsatib turdi.

Bunday hikoyalarni doim eshitaman. Quyida mijozlarimizda bunday bo‘lmasligi uchun nima qilishimizni yozaman.

Nega saytlar «o‘ladi»

Deyarli hech qachon bitta katta falokat bo‘lmaydi. Mayda narsalar to‘planib boradi:

  • sertifikat yangilanmadi;
  • domen uchun to‘lanmadi, chunki eslatma ishdan bo‘shagan xodimning pochtasiga ketgan;
  • serverdagi disk loglar bilan to‘lib, baza yozishni to‘xtatdi;
  • kutubxona ikki yil yangilanmagan, unda zaiflik topildi;
  • ariza formasi bir tahrirdan keyin buzildi va bir oy davomida arizalar yo‘qligini hech kim sezmadi.

Oxirgi band eng yoqimsizi. Sayt tirikdek ko‘rinadi, ochiladi, chiroyli. Shunchaki mijoz olib kelishni to‘xtatgan. Egasi esa «sayt kanal sifatida ishlamaydi» deb o‘ylaydi, holbuki faqat bitta integratsiya buzilgan.

Har oy nima qilamiz

Bizda reglament bor. U zerikarli va uning ma’nosi ham shunda.

  • Har bir formadan sinov arizasini yuborib, u mijozning Telegram guruhiga yetib kelganiga ishonch hosil qilish
  • Bazaning va media fayllarning tungi zaxira nusxalari borligini va bo‘sh emasligini tekshirish
  • Diskdagi bo‘sh joy va loglar hajmiga qarash
  • SSL va domen muddatini tekshirish (30 kun qolganda — xavotir)
  • Xavfsizlik yamoqlari bor bog‘liqliklarni yangilash: Django, npm paketlari, Docker image’lar
  • Asosiy sahifalarni telefonda ko‘zdan kechirish: kontent tahriridan keyin hech narsa siljimadimi
  • Search Console’ni ochish: yangi indekslash xatolari, 404, tushib ketgan sahifalar
  • Analitikaga qarash: odamlar qayerdan keldi, nechta ariza, qayerda pasayish

Bunga saytning hajmiga qarab oyiga ikki soatdan olti soatgacha vaqt ketadi. Ko‘p qismini avtomatlashtirish mumkin, lekin baribir ko‘z bilan qarash kerak.

Sinov arizasi — eng muhimi

Bema’ni eshitiladi, lekin bu birinchi raqamli band. Biz arizani oddiy tashrif buyuruvchi kabi qo‘lda yuboramiz. Kodni tekshirmaymiz, loglarga qaramaymiz, aynan formani to‘ldirib, xabarni kutamiz. Xabar kelmasa, ro‘yxatdagi qolgan hamma narsa kutib turadi.

Hech kim tekshirmagan zaxira nusxalar

Hech qachon tiklab ko‘rilmagan zaxira nusxa — bu umid, zaxira emas. Men cron orqali oylab «muvaffaqiyatli» yaratilgan 0 baytlik arxivlarni ko‘rganman, chunki foydalanuvchida bazani o‘qish huquqi yo‘q edi.

Docker’dagi Django + PostgreSQL uchun bizning minimal variantimiz taxminan shunday:

# har kecha 03:00 da: baza dampi, siqish, 14 kun saqlash
0 3 * * * docker compose exec -T postgres pg_dump -U app app \
  | gzip > /backups/db-$(date +\%F).sql.gz \
  && find /backups -name "db-*.sql.gz" -mtime +14 -delete

Bunga qo‘shimcha ravishda media fayllar (admin panel orqali yuklanadigan rasmlar) alohida sinxronizatsiya qilinadi va bularning hammasining nusxasi boshqa serverda saqlanadi. Zaxira nusxa sayt bilan bitta diskda yotgan bo‘lsa, u sayt bilan birga o‘ladi.

Uzoq loyihalarda bu qanday ko‘rinadi

Eng uzoq davom etayotgan ikki qo‘llab-quvvatlashimiz — Legal Alliance yuridik firmasi sayti va MY5 telekanalining media portali.

2022
shu yildan Legal Alliance’ni yuritamiz
2023
shu yildan MY5’ni yuritamiz
100+
ishga tushgandan keyin MY5’dagi commitlar

Legal Alliance — backendda DRF va Celery bilan Django, frontendda Nuxt 3. U yerda saytdan tashqari yangiliklar, video, qidiruv, kompaniya tarixi bor va bularning hammasini yuristlar muntazam yangilab turadi. Qo‘llab-quvvatlashning asosiy ishi — xatolar emas, mayda vazifalar: yangi amaliyot bo‘limi, formani tuzatish, jamoani yangilash. Bunga yuqoridagi ro‘yxatdagi o‘sha zerikarli bandlar qo‘shiladi.

MY5 — mamlakatdagi eng yirik oilaviy telekanallardan biri. Ko‘rsatuvlar dasturi, seriallar, shoular, blog, vakansiyalar. Bu yerda yuklama muhim: kanal auditoriyasi katta, efirlar va anonslardan keyin trafik to‘lqin-to‘lqin bo‘lib keladi va server bu to‘lqinlarga bardosh berishi kerak.

MY5 saytining bosh sahifasi
my5.media: ko‘rsatuvlar dasturi, seriallar, shoular — kontent har kuni yangilanadi

Bizda qo‘llab-quvvatlashning yillik sikli taxminan shunday:

  1. Har kecha
    Baza va medianing avtomatik zaxira nusxalari, har bir-ikki daqiqada sayt mavjudligini tekshirish
  2. Har hafta
    Backend loglaridagi xatolarni ko‘rib chiqish, so‘rovlar bo‘yicha mayda tuzatishlar
  3. Har oy
    Yuqoridagi ro‘yxat: arizalar, zaxira, disk, SSL, yangilanishlar, Search Console
  4. Har chorak
    Zaxiradan o‘quv tiklash, tezlikni tekshirish, kirish huquqlarini qayta ko‘rib chiqish
  5. Yiliga bir marta
    Asosiy versiyalarni yangilash (Python, Django, Node), domenni uzaytirish, mijoz bilan sayt keyingi yili nimalarni qila olishi kerakligi haqida suhbat

Monitoring: mijozdan oldin bilish

Qo‘llab-quvvatlashdagi pudratchi bilan bo‘lishi mumkin bo‘lgan eng yomon narsa — sayt tushganini unga mijoz xabar qilishi. Demak, biz uxlab qolganmiz.

Minimal monitoring deyarli bepul. Tashqi servis har bir-ikki daqiqada bosh sahifani ochadi va u javob bermasa yoki xato bilan javob bersa, ishchi Telegram chatimizga yozadi. Backend uchun Django xatolarini alohida kanalga yig‘amiz, biror narsa 500 xatolarni yog‘dirayotgan bo‘lsa, ko‘rib turish uchun.

Alohida — «jim» muammolar. Sayt ochilishi mumkin, lekin shu bilan birga:

  • Celery worker tushib qolgan va xatlar yoki bildirishnomalar ketmayapti;
  • vazifalar navbati o‘syapti;
  • API javob beryapti, lekin filtr buzilgani uchun bo‘sh ro‘yxatlar qaytaryapti.

Bunday narsalarga oddiy tekshiruvlar qo‘yamiz: faqat «tirikmi» emas, «ishlayaptimi» ni ham tekshiradigan health endpoint. Bu bir necha o‘n qator kod, lekin u bizni ko‘plab yoqimsiz yozishmalardan qutqargan.

Kontent va analitika ham qo‘llab-quvvatlash

Bir yil yangilanmagan, texnik jihatdan soz sayt ham o‘ladi, faqat sekinroq. Tashrif buyuruvchi ikki yil oldingi yangilikni ko‘rib, tabni yopadi. Google hech narsa o‘zgarmayotganini ko‘rib, saytni kamroq ko‘rsatadi.

Biz mijozlar uchun kontent yozmaymiz, lekin oyda bir marta analitikani ular bilan birga ko‘ramiz. Yigirma sahifalik hisobot emas, uchta savol: qancha odam keldi, qanchasi ariza qoldirdi, qaysi sahifa yomonlashdi. Ba’zan hamma asosiy deb hisoblagan bo‘limni hech kim ochmayotganini sezish uchun shu yetarli.

Asosiy tekshiruvni o‘zingiz qilmoqchi bo‘lsangiz, bizda texnik SEO audit ro‘yxati bor, undagi ko‘p bandlar oylik qo‘llab-quvvatlash bilan kesishadi.

Saytni o‘zingiz qo‘llab-quvvatlay olasizmi

Jamoada serverni tushunadigan odam bo‘lsa, ha. Qolgan hamma narsani pudratchiga bersangiz ham, men uchta narsani o‘zimda qoldirardim:

  1. Domen va hosting kompaniya nomiga rasmiylashtirilgan, loginlar sizda.
  2. Uzaytirish haqidagi eslatmalar xodimning shaxsiy pochtasiga emas, umumiy manzilga yoki chatga keladi.
  3. Oyda bir marta jamoangizdan kimdir o‘zi sinov arizasini yuboradi.

Bunday odam bo‘lmasa, pudratchidagi qo‘llab-quvvatlash hammasi buzilgandan keyin saytni bir marta tiklashdan arzonroq tushadi. Tajribamga ko‘ra, normal zaxira nusxalari bo‘lmagan va qanday tuzilganini hech kim eslamaydigan «o‘lgan» saytni tuzatish bir necha yillik xotirjam qo‘llab-quvvatlash narxiga teng.

Shu yillardagi shaxsiy xulosam oddiy: yaxshi qo‘llab-quvvatlash ko‘zga tashlanmaydi. Mijoz bizni faqat biror narsa qo‘shmoqchi bo‘lganida eslasa, demak, hammasini to‘g‘ri qilyapmiz.

Vazifa bormi? Yozing — muhokama qilamiz.

Telegram’da to‘g‘ridan-to‘g‘ri studiya asoschisiga yozing. Nima kerakligini ikki og‘iz so‘z bilan ayting — savollar va taxminiy baho bilan javob beramiz.