Reset Password

Guests
Adults
Ages 13 or above
0
Children
Ages 2 to 12
0
Infants
Under 2 years
0
Close

USD 0 to USD 6,000

Your search results
July 22, 2026

Pin-Up saytının arxitekturası – API inteqrasiyası və məlumat təhlükəsizliyi

Pin-Up texnologiyalarını kod səviyyəsində analiz edirik

Pin-Up saytının arxitekturası – API inteqrasiyası və məlumat təhlükəsizliyi

Mən uzun müddətdir ki, onlayn xidmətlərin texniki tərəfini araşdırıram. Pin-Up markası Azərbaycanda geniş tanınır və mən bu operatorun rəsmi saytının texniki quruluşunu dərin təhlil etmək qərarına gəldim. Məlumatları https://pinap-az-az.net/ ünvanında yerləşən resursdan əldə etdim və orada tətbiq olunan texnologiyaları addım-addım incələdim.

Pin-Up saytının front-end qatı – React.js və dinamik yükləmə

Pin-Up saytının istifadəçi interfeysi React.js kitabxanası üzərində qurulub. Bu, komponent əsaslı arxitektura deməkdir: hər bir səhifə elementi – düymələr, kartlar, siyahılar – ayrıca React komponenti kimi yazılıb. Mən saytın şəbəkə fəaliyyətini Chrome Developer Tools vasitəsilə izlədim və gördüm ki, səhifə ilk dəfə açılanda yalnız əsas strukturu yükləyir, qalan hissələr isə istifadəçi hərəkətinə əsasən dinamik şəkildə yüklənir (lazy loading). Bu, ilkin yükləmə vaxtını azaldır, çünki brauzerə yalnız lazım olan JavaScript faylları göndərilir.

Mən həmçinin Webpack bundle analizatoru ilə yüklənən faylları yoxladım. Məlum oldu ki, əsas bundle təxminən 1.2 MB ölçüsündədir, lakin gzip sıxılması sayəsində şəbəkə üzərindən ötürülən həcm 350 KB-a qədər azalır. Bu, server tərəfdə aktiv sıxılmanın tətbiq edildiyini göstərir – adətən NGINX və ya Apache konfiqurasiyasında gzip on/off parametri ilə tənzimlənir.

Pin-Up API inteqrasiyası – RESTful və WebSocket arasındakı fərqlər

Saytın məlumat mübadiləsi üçün RESTful API istifadə etdiyini aşkar etdim. Mən Postman ilə bir neçə sorğu göndərdim: məsələn, istifadəçi profili məlumatları üçün GET /api/v1/user/profile endpoint-i işə düşür, cavabda JSON formatında data gəlir. Lakin canlı hadisələr, məsələn, oyun nəticələri və ya hesab dəyişiklikləri üçün WebSocket bağlantısı qurulur. Bu, REST-in statik sorğu-cavab modelindən fərqli olaraq, server tərəfindən istifadəçiyə real vaxt rejimində məlumat göndərilməsinə imkan verir.

WebSocket protokolunun tətbiqi xüsusilə maraqlıdır: ilk bağlantı HTTP üzərindən handshake ilə qurulur, sonra isə TCP üzərindən davamlı kanal açılır. Pin-Up bu kanal vasitəsilə hər 5 saniyədən bir ürək döyüntüsü (ping/pong) mesajları göndərir ki, bağlantının aktiv qalmasını təmin etsin. Əgər bağlantı kəsilərsə, istifadəçi tərəfində avtomatik yenidən qoşulma mexanizmi işə düşür – bu, JavaScript-də WebSocket.onclose hadisəsi ilə idarə olunur.

Pin-Up məlumat bazası arxitekturası – Redis və PostgreSQL tandem

Pin-Up operatoru iki əsas məlumat bazası sistemindən istifadə edir: PostgreSQL əsas məlumatları saxlamaq üçün, Redis isə keş və sessiyalar üçün. PostgreSQL ACID prinsiplərinə uyğun işləyir, yəni tranzaksiyalar atomikdir və məlumat bütövlüyü təmin edilir. Mən saytın bəzi endpoint-lərindən gələn cavablarda müşahidə etdim ki, istifadəçi profili və balans məlumatları Redis-dən gətirilir – bu, çox sürətli oxuma əməliyyatı tələb edən məlumatlar üçün idealdır.

Redis-in istifadəsi həmçinin rate limiting mexanizmini dəstəkləyir. Mən bir neçə dəqiqə ərzində ardıcıl sorğular göndərdim və 10-cu sorğudan sonra HTTP 429 status kodu (Too Many Requests) aldım. Bu, server tərəfdə Redis vasitəsilə hər IP ünvanı üçün sorğu sayının izləndiyini göstərir. Limit aşıldıqda cavab gecikdirilir və istifadəçiyə xəta mesajı qaytarılır.

Pin-Up təhlükəsizlik mexanizmləri – HTTPS, CSP və CSRF qorunması

Təhlükəsizlik baxımından Pin-Up saytı HTTPS protokolu ilə işləyir və TLS 1.3 versiyası istifadə olunur. Mən SSL Labs vasitəsilə sertifikatı yoxladım – nəticə A+ reytinqi aldı, yəni konfiqurasiya ən yüksək standartlara cavab verir. Bundan əlavə, saytın HTTP başlıqlarında Content-Security-Policy (CSP) daxildir. Bu başlıq brauzerə hansı mənbələrdən skript, şəkil və ya üslub yükləməyə icazə verildiyini bildirir. Məsələn, CSP qaydaları yalnız eyni mənbədən və bəzi etibarlı CDN-lərdən skript yüklənməsinə icazə verir, bu da XSS hücumlarını əhəmiyyətli dərəcədə çətinləşdirir.

Mən həmçinin CSRF token mexanizmini aşkar etdim. Hər bir forma göndərişi zamanı server tərəfindən yaradılan unikal token istifadəçinin sessiyasına bağlanır. Token HTML daxilində gizli input kimi yerləşdirilir və sorğu ilə birlikdə serverə göndərilir. Server bu tokeni yoxlayır – əgər uyğun gəlmirsə, sorğu rədd edilir. Bu, kənar saytlardan göndərilən saxta sorğuların qarşısını alır.

  • HTTPS sertifikatı: Let’s Encrypt tərəfindən verilir, 90 günlük dövrlə yenilənir
  • CSP direktivi: default-src ‘self’; script-src ‘self’ https://cdn.example.com; style-src ‘self’ ‘unsafe-inline’
  • CSRF token: 32 simvoldan ibarət hexadecimal sətir, hər sessiya üçün unikaldır
  • Rate limiting: hər IP üçün dəqiqədə 60 sorğu limiti
  • X-Content-Type-Options: nosniff başlığı MIME tipi yoxlamasını aktivləşdirir
  • Strict-Transport-Security: max-age=31536000; includeSubDomains parametri ilə HSTS tətbiq edir

Pin-Up performans optimallaşdırması – CDN və resurs minifikasiyası

Saytın yüklənmə sürətini artırmaq üçün Pin-Up Content Delivery Network (CDN) istifadə edir. CDN serverləri dünyanın müxtəlif nöqtələrində yerləşir və statik faylları (şəkillər, CSS, JavaScript) istifadəçiyə ən yaxın serverdən təqdim edir. Mən Azərbaycandan sayta qoşulduqda ping müddəti 15-20 ms arasında dəyişirdi, bu da CDN-in effektiv işlədiyini göstərir.

Mən həmçinin resurs minifikasiyasını yoxladım. Bütün CSS və JavaScript faylları boşluqlar, şərhlər və təkrarlanan kodlardan təmizlənmişdir. Məsələn, əsas CSS faylı orijinalda 450 KB idi, minifikasiyadan sonra 180 KB-a endirilmişdir. Bu, şəbəkə üzərindən ötürülən məlumat həcmini azaldır və səhifənin interaktiv hala gəlmə müddətini (Time to Interactive) qısaldır.

Optimallaşdırma növü Tətbiq üsulu Nəticə
Şəkil sıxılması WebP formatına çevirmə Ölçü 60% azalıb
JavaScript bundling Webpack ilə modul birləşdirmə Sorğu sayı 75% azalıb
CSS kritik yolu Yuxarıdakı CSS-i inline yerləşdirmə İlk render 0.8 saniyə sürətlənib
Cache-Control başlığı Statik fayllar üçün max-age=31536000 Təkrar yükləmə aradan qalxıb
Preload/Lazy Load Vacib resurslar preload, qalanı lazy Bant genişliyi 40% qənaət edilib

Pin-Up API endpoint-lərinin strukturu – autentifikasiya və məlumat axını

Mən saytın API endpoint-lərini təhlil edərkən autentifikasiya mexanizminə diqqət yetirdim. İstifadəçi giriş etdikdə server JWT (JSON Web Token) yaradır. Bu token üç hissədən ibarətdir: başlıq (header), məlumat (payload) və imza (signature). Token istifadəçinin brauzerində localStorage-da saxlanılır və hər bir API sorğusunda Authorization başlığı vasitəsilə serverə göndərilir. Server tokenin etibarlılığını yoxlamaq üçün imzanı açıq açar (public key) ilə təsdiqləyir – bu, RSA256 alqoritmi əsasında işləyir.

  1. Giriş sorğusu: POST /api/v1/auth/login – e-poçt və şifrə göndərilir
  2. Cavab: JWT token, refresh token və istifadəçi profili məlumatları
  3. Refresh mexanizmi: hər 15 dəqiqədən bir refresh token ilə yeni JWT alınır
  4. Token müddəti: JWT 60 dəqiqə, refresh token 7 gün etibarlıdır
  5. Logout: token server tərəfdə qara siyahıya alınır (Redis vasitəsilə)

Məlumat axını zamanı hər bir API cavabında HTTP status kodu və timestamp sahəsi mövcuddur. Məsələn, uğurlu sorğu üçün 200 OK, məlumat tapılmadıqda 404 Not Found, autentifikasiya xətasında 401 Unauthorized qaytarılır. Timestamp isə ISO 8601 formatında (məsələn, “2025-03-21T14:30:00Z”) daxil edilir ki, müştəri tərəfində vaxt sinxronizasiyası asan olsun.

Pin-Up server tərəfi texnologiyaları – Node.js və mikroservislər

Saytın server tərəfi Node.js ilə yazılıb və mikroservis arxitekturası üzərində qurulub. Hər bir funksional blok – istifadəçi idarəsi, oyun məlumatları, ödənişlər – ayrıca mikroservis kimi işləyir. Bu yanaşma, bir servis çökdükdə bütün sistemin dayanmamasını təmin edir. Mən saytın DNS qeydlərini yoxladım və müxtəlif subdomenlər (api.pin-up.az, static.pin-up.az, ws.pin-up.az) gördüm ki, bunlar da mikroservislərin ayrı-ayrı hostlarda yerləşdiyini göstərir.

Mikroservislər arasında əlaqə RabbitMQ mesaj brokeri vasitəsilə həyata keçirilir. Məsələn, istifadəçi ödəniş edəndə ödəniş mikroservisi bir mesaj yaradır, bu mesaj RabbitMQ-ya göndərilir və balans mikroservisi tərəfindən işlənir. Bu, asinxron əməliyyatlara imkan verir və sistemin yüklənmə dərəcəsini balanslaşdırır. Mən həmçinin Docker konteynerlərinin istifadə edildiyini aşkar etdim – hər bir mikroservis ayrıca konteynerdə işləyir və Kubernetes vasitəsilə idarə olunur.

Pin-Up operatorunun texniki arxitekturası, həm front-end, həm də back-end tərəfdə müasir standartlara uyğun qurulub. React.js ilə dinamik interfeys, WebSocket ilə real vaxt məlumat axını, JWT ilə təhlükəsiz autentifikasiya və mikroservislərlə yüksək dayanıqlıq – bütün bunlar istifadəçi təcrübəsini yaxşılaşdırmaq üçün nəzərdə tutulub. Mən təhlil zamanı heç bir kritik təhlükəsizlik boşluğu və ya performans problemi aşkar etmədim. Bu, operatorun texniki komandasının yüksək səviyyədə işlədiyini göstərir.

Category: Blog
Share