Vibecoding · 20-dars · 9-sinf (Kulminatsiya & Demo Day)
Fan: Vibecoding · Prodaction & DevOps
Kohorta: 9-sinf Junior Vibecoder
Hafta: 4 (4-soat · Final)
Full-Stack Deploy va Demo Day: Prodaction Muhandislik
Biz Docker bilan konteynerladik, PostgreSQL relyatsion arxitekturasini qurdik va vebhooklar orqali real-vaqt integratsiyasini yaratdik. Bugun butun tizimni yagona Docker Compose orqali bulutga chiqaramiz, Nginx Reverse Proxy va SSL (HTTPS) bilan qulflaymiz hamda 90 soniyalik Jonli Demo Day o'tkazib, haqiqiy loyihangizni internet auditoriyasiga taqdim etasiz!
3 qatlamli sanoat arxitekturasi
Sanoat Standartidagi 3 Qatlamli Bulut Tizimi
Arxitektura Zanjiri (Tashqaridan Ichkariga)
1. Kirish darvozasi (Port 443 HTTPS): Internet trafigi to'g'ridan-to'g'ri Nginx ga keladi. SSL sertifikati shifrlashni shu yerda yechadi (SSL Termination).
2. Veb-xizmat (Node.js Container): Nginx ichki tarmoq orqali so'rovni Node ilovaga yo'naltiradi (`proxy_pass http://web:3000`).
3. Baza qatlami (PostgreSQL Container): Baza porti (5432) internetga mutlaqo ochilmaydi! Unga faqat web konteyner kira oladi.
Nega Node.js To'g'ridan-To'g'ri Ochilmaydi?
Privileged Ports: 80 va 443 portlarni ochish uchun Node ilovani `root` huquqi bilan ishga tushirish kerak bo'ladi — bu kiber-falokat!
Statik fayllar: Nginx rasmlar, CSS va JS fayllarni Node.js ga qaraganda 10 barobar tezroq va keshlab uzatadi.
DDoS va Rate Limiting: Nginx sekundiga 100 ta so'rov yuborgan botlarni Node.js ga yetkazmasdanoq bloklaydi.
Ko'p servisli tizim
Docker Compose: Butun Tizimni Bitta Buyruqda Ko'tarish
# docker-compose.yml
version: '3.8'
services:
web:
build: .
restart: always
environment:
- DATABASE_URL=postgres://user:pass@db:5432/production_db
- PORT=3000
depends_on:
db:
condition: service_healthy
networks:
- internal-net
db:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: production_db
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d production_db"]
interval: 5s
timeout: 5s
retries: 5
networks:
- internal-net
volumes:
pgdata:
networks:
internal-net:
driver: bridge
Kritik Muhandislik Nuqtalari
depends_on + condition: Veb-xizmat baza to'liq yuklanib, `healthy` holatga o'tmaguncha start olmaydi (Crash oldi olinadi).
Doimiy Xotira (Volumes): Baza konteyneri o'chib qayta yaratilsa ham, `pgdata` jildi barcha jadvallarni saqlab qoladi.
Yopiq Tarmoq (bridge): `db` portlari `ports` qismida ko'rsatilmagan — tashqi dunyodan xaker unga ulana olmaydi.
Xavfsiz darvoza
Nginx Konfiguratsiyasi va Bepul SSL (Let's Encrypt)
# /etc/nginx/sites-available/cyber-app
server {
listen 80;
server_name api.target.uz;
# Barcha HTTP so'rovlarni majburiy HTTPS ga yo'naltirish
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name api.target.uz;
ssl_certificate /etc/letsencrypt/live/api.target.uz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.target.uz/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Certbot va Avtomatik Yangilanish
1 ta buyruq bilan SSL: `sudo certbot --nginx -d api.target.uz` buyrug'i Let's Encrypt dan bepul rasmiy SSL oladi.
Avtomatik uzaytirish: Certbot har 60 kunda sertifikatni o'zi tekshiradi va yangilaydi (`certbot renew --dry-run`).
X-Real-IP sarlavhasi: Mijozning haqiqiy IP manzilini Nginx orqali Node.js ga xavfsiz yetkazadi.
Uzluksiz xizmat
Zero-Downtime Deploy: Foydalanuvchi Sezmagan Yangilanish
Eski Usul (Downtime va Zararlar)
Serverni o'chirish: Yangi kod chiqqanda `kill node` qilinadi. Sayt 2 daqiqaga ochilmay qoladi (`502 Bad Gateway`).
Chala tranzaksiyalar: Shu 2 daqiqa ichida to'lov qilayotgan mijozlarning puli yo'qoladi yoki muzlab qoladi.
Prodaction Usul (Rolling Update)
1. Orqa fonda yangi build: `docker compose build` yangi imagini fonda sokin tayyorlaydi.
2. Yangi konteynerni ko'tarish: Yangi versiya ishga tushib, sog'lomlik testidan (`healthcheck`) o'tadi.
3. Trafigi almashtirish: Yangi konteyner tayyor bo'lgandagina Nginx trafigi unga buriladi, eski konteyner to'xtatiladi.
Natija: 0 millisekund uzilish. Foydalanuvchi yangilanish bo'lganini mutlaqo sezmaydi!
Tizim telemetriyasi
Kiber-Kuzatuv: Jonli Loglar va Resurs Nazorati
# 1. Barcha servislarning jonli loglarini kuzatish
docker compose logs -f --tail 50
# 2. Resurslar sarfini real vaqtda ko'rish (CPU, RAM, Tarmoq)
docker stats --no-stream
# 3. Server sog'ligini tekshiruvchi HTTP endpoint
curl -I https://api.target.uz/api/health
# HTTP/2 200 OK
# Content-Type: application/json
# {"status":"UP","uptime":1420,"db":"connected"}
# 4. Buzilgan konteynerlarni avtomatik qayta ko'tarish
# docker-compose.yml dagi `restart: unless-stopped` qoidasi
3 Ta Oltin Monitoring Qoidasi
Hech qachon 'ko'r' ishlamang: Loglarsiz server — chiroqsiz tunda haydalayotgan avtomobil kabidir.
Structured JSON Logs: Loglarni matn emas, JSON ko'rinishida yozing (vaqt, daraja, so'rov_id, foydalanuvchi_id).
Health Endpoint majburiy: `/api/health` bazaga ulanishni va xotira holatini har 10 soniyada tekshirib turishi shart.
90 soniyalik qat'iy standart
Demo Day Qoidasi: 90 Soniyada Dunyoni Hayratda Qoldirish
90 Soniyaning Daqiqali Rejasi
00–15s · Muammo (The Hook): O'zbekistonda/dunyoda qanday og'riqli muammo bor? Sanoat nima uchun qiynalmoqda?
15–45s · Jonli Namoyish (Live Demo): Saytni oching! Auditoriya telefonida QR kodni skanerlab ko'rsin. Haqiqiy ma'lumot kiriting.
45–70s · Muhandislik Steki (Under the Hood): Docker konteynerlar, PostgreSQL bazasi, Webhook va Nginx SSL qanday ishlayotganini ko'rsating.
70–90s · Xulosa va Kelajak (Call to Action): Loyihaning keyingi qadami nima? Tomoshabinlar savoliga 1 ta kuchli yakun.
Demo Dayda Taqiqlanadi va Talab Qilinadi
❌ Taqiqlanadi: Slaydlardan matn o'qish, 'Mening kompyuterimda ishlayotgandi' deb bahona qilish.
❌ Taqiqlanadi: Ishlamaydigan tugmani bosib tushuntirib o'tirish. Faqat jonli, tekshirilgan funksiya ko'rsatiladi.
✅ Talab qilinadi: Kiber-ishonch, aniq ovoz, ekranda jonli ishlayotgan internetdagi URL manzil.
Jonli efir oldidan
Prodaction Checklist: Jonli Taqdimot Oldidan Tekshiruv
5 Bosqichli Kiber-Tekshiruv
1. HTTPS Yashil Qulf: Brauzerda qizil xatolik yo'qligini, SSL sertifikati yashil turganini tekshiring.
2. QR Kod Tayyor: Ekrandagi QR kod to'g'ri ishlab chiqarish manziliga olib borishini telefoningizda sinab ko'ring.
3. Baza Ma'lumotlari Toza: Sinov paytida kiritilgan 'asdasd' kabi test ma'lumotlarni o'chirib, chiroyli demo holatga keltiring.
4. /health Javob Beradi: `curl` orqali xizmat statusi 200 OK qaytarayotganini ko'ring.
5. Zaxira Reja (Backup): Agar internet uzilsa, mahalliy Docker konteyneringiz ham tayyor tursin.
Auditoriya Baholashi Mezonlari
Tezlik va Javob Berish: Sayt sahifalari necha millisekundda yuklanmoqda?
Dizayn va Qulaylik: Target School dizayn tizimi (Navy, Oq, Qizil) qoidalari saqlanganmi?
Muhandislik Chuqurligi: Savollarga qanchalik professional javob berildi?
12 daqiqalik laboratoriya
Amaliy Missiya: Tizimni Deploy Qilish va QR Kod Tayyorlash
Missiya vazifalari
1. Compose Ishga Tushirish: `docker compose up -d --build` bilan butun stekni fonda ko'taring.
2. Telemetriya Tekshiruvi: `docker compose ps` va `curl http://localhost:3000/api/health` bilan tekshiring.
3. QR Kod Generatsiya: Saytingiz URL manzili uchun QR kod yarating va ekranga chiqaring.
4. 90 Soniyalik Nutq Tayyorlash: Ish varaqasidagi 4 qismdan iborat pitch rejasini to'ldiring.
Ish Maydoni Ko'rsatmalari
Terminal: Konteynerlar loglarini `docker compose logs -f` bilan ochiq tuting.
Qog'oz varaqa: Barcha URL, konteyner ID va nutq rejasini ish varaqasiga yozing.
Mustaqil tayyorgarlik
Laboratoriya Ishi: 12 Daqiqa
12:00
Boshlash
Pauza
Qaytarish
Stekni ko'taring, sog'lomlikni tekshiring, QR kodni tayyorlang va 90 soniyalik nutqingizni sinab ko'ring.
Jonli himoya bosqichi
Sahna Sizniki: 90 Soniyalik Jonli Demo Day
Taqdimotchi uchun 4 Qadam
1. Ekranga loyihani chiqaring: Sayt ochiq tursin, brauzer konsoli toza bo'lsin.
2. QR kodni ko'rsating: Hakamlar va o'rtoqlaringiz telefonida ochib ko'rishsin.
3. Bosh vazifani bajaring: Saytingizdagi eng asosiy imkoniyatni jonli ko'rsating (Xarid, Buyurtma, AI tahlil).
4. 90 soniyada to'xtang: Vaqt tugaganda to'xtash — professional muhandislik intizomi belgisidir.
Hakamlar va Auditoriya Savollari
"Server qulab qolsa ma'lumotlar saqlanib qoladimi?" — Docker volumes va PostgreSQL javobi.
"Soxta so'rovlardan qanday himoyalangansiz?" — HMAC SHA-256 va Prepared Statements javobi.
"Nega aynan shu arxitektura tanlandi?" — Unumdorlik va kengayuvchanlik asoslari.
1-Chorak yakuni va baholash
1-Chorak G'alabasi va Baholash Mezoni (10 Ball)
1-Chorakda Siz Nimalarga Erishdingiz?
Frontend va UI/UX: Semantik HTML, Zamonaviy CSS, Flexbox, Grid va Moslashuvchan dizayn.
Backend va API: REST API, JSON, Asinxron JavaScript va Doimiy xotira (LocalStorage).
Git va Kiber-Hamkorlik: Commit, Branch, Merge Konfliktlari, Pull Request va CI/CD Actions.
DevOps va Ma'lumotlar: Docker konteynerlar, PostgreSQL, SQL xavfsizligi, Webhooklar va Deploy.
10 Ballik Baholash Mezoni
2 ball: 3 qatlamli arxitektura va Nginx Reverse Proxy tushunchasi.
3 ball: To'g'ri sozlangan `docker-compose.yml` va Healthcheck.
3 ball: Jonli ishlayotgan HTTPS xizmati va QR kod integratsiyasi.
2 ball: 90 soniyalik intizomli va ishonchli Demo Day nutqi.