Snapchat yeniyetmələr və yeniyetmələr arasında yaxşı tanınır. Bunun necə işlədiyini başa düşə bilmirsinizsə, yəqin ki, 25 yaşdan yuxarısınız. Ən populyar sosial media tətbiqlərindən biri olan Snapchat uşaqlar və yeniyetmələrə tam olaraq istədiklərini təmin edir: adi hadisələri paylaşmaq və eyni zamanda onları gözəl göstərmək üçün asan üsul.
Etdiyiniz hər şeyi qeyd edən və dərc edən Facebook və Twitter-dən fərqli olaraq, Snapchat yox olması lazım olan mesajlardan istifadə edir (necə etmədiyinə baxın).
Snapchat haqqında çox şey var və əgər siz bir tərtibatçısınızsa, bu daha da çoxdur. Beləliklə, bu yazı sizə Snapchat-ın yüksək səviyyəli görünüşünü verəcəkdir sistem dizaynı və daha çox anlayışlar.
giriş
Snapchat ABŞ mərkəzlidir sosial şəbəkə istifadəçilərə dərhal əlaqə saxlamağa, şəkilləri paylaşmağa və s. imkan verən proqram.
- Mesajlar və şəkillər (və ya snaps) üçün 24 saat vaxt məhdudiyyəti var. İnsanları qruplarda hekayələrini paylaşmağa təşviq edir.
- Snap Map istifadəçilərə dostlarının harada olduğunu xəritədə görməyə imkan verir.
- Xatirələr istifadəçilərə bir il sonra saxladıqları və ya paylaşdıqları fotoşəkilləri xatırladır.
- Snapchat gənc nəsillər, xüsusən də yeniyetmələr arasında son dərəcə populyardır. Tətbiqdə 319 milyon aktiv istifadəçi var və hər gün 5.4 milyard snap göndərilir.
Mühüm Dizayn Şərtləri
Monolit Memarlıq – Digər tətbiqlərdən asılı olmayaraq fəaliyyət göstərən bir səviyyəli proqram monolit (monolitik arxitektura) kimi tanınır. Monolit bir tapşırığı yerinə yetirmək üçün tələb olunan bütün fəaliyyətləri yerinə yetirmək və idarə etmək üçün nəzərdə tutulmuşdur. Tətbiq əvvəldən axıra qədər bütün funksiyaları yerinə yetirir.
Mikro xidmətlər – Monolitlərin qütblü əksidir. Mikro xidmətlər tətbiqi xidmətlər toplusu kimi təşkil edən memarlıq yanaşmasıdır. Bu xidmətlər tətbiqin bir çox aspektlərinə nəzarət etmək üçün istifadə olunur. Müştəri sifariş verir, ofisiant götürüb çatdırır, aşpaz hazırlayır. Bu nümunədə hər bir komponent müstəqil və digərlərindən ayrı fəaliyyət göstərir; heç kim başqalarının nə etdiyini dəqiq bilmir və heç kimin eyni məlumatlara çıxışı yoxdur.
JSON: JavaScript obyektlərini, hərfləri, massivləri və verilənləri göstərmək üçün istifadə edilə bilən mətn əsaslı formatdır. Bu mətn əsaslı formatın sadə oxunması və yazılması, həmçinin proqram təminatı tərəfindən həzm oluna bilməsi nəzərdə tutulub. JSON adətən serverlər və onlayn proqramlar arasında məlumat və məlumat ötürmək üçün istifadə olunur.
Orkestr: Bir çox əməliyyatların avtomatlaşdırılması texnikası orkestrasiya kimi tanınır. Bu işlərə kompüter sistemi və proqram təminatı konfiqurasiyası, koordinasiya və idarəetmə daxildir.
Proxy: Proksi resurs axtaran müştəri ilə onu təmin edən server arasında keçid rolunu oynayır.
Ilgək: Xidmət şəbəkəsi proksi vasitəsilə xidmətlər arasında tənzimlənən, müşahidə oluna bilən və təhlükəsiz ünsiyyətə imkan vermək üçün infrastruktur qatına təbəqə əlavə edən proqram arxitekturası nümunəsidir.
Yüksək Səviyyəli Dizayn
Monolitik problemlər
Snapchat Google App Engine əsasında bulud əsaslı monolit kimi yaranmışdır. Bununla belə, proqramın populyarlığı artdıqca və daha çox istifadəçi və məlumat əldə etdikcə, miqyaslılıq problemə çevrildi.
Bundan əlavə, monolit daxilində böyük bir partlayış radiusu ilə sistem miqyasında pozuntular daha çox mümkün idi. Snapchat-ın problemlərindən biri xüsusiyyətlərin resurslara çıxış üçün yarışdığı “ortaqların faciəsi” kimi müəyyən edildi; funksiyalar proqramın işə salınma vaxtında yüklənirdi ki, bu da müəyyən funksiyaların daha sürətli, digərlərinin isə daha yavaş yüklənməsinə imkan verirdi.
Mühəndislər, həmçinin xidmətin çevik və səmərəli ola bilməsi üçün inkişaf nöqteyi-nəzərindən onların komponentlərinin aydın görünməsi, ayrılması və sahibliyi axtarıblar.
Transformasiya
Snapchat genişləndikcə firma monolit infrastrukturunu daha kiçik, daha səmərəli parçalara bölmək lazım olduğunu başa düşdü. Azaldılmış gecikmə müddətini təmin etmək üçün təşkilat mikroservislərə əsaslanan dizayn hazırlamağa qərar verdi.
Bu məqsədlərə çatmaq üçün Snapchat, genişləndirilə bilən NoSQL verilənlər bazası xidməti olan Amazon DynamoDB-dən istifadə edərək proqram təminatını yeniləməyi seçdi. Firma səyləri nəticəsində orta gecikməni 20% azalda bildi.
Tətbiq korporasiya tərəfindən çoxsaylı kiçik proqramlara yenidən yazılmışdır. Snapchat kamera, söhbət, xatirələr, şəkil redaktəsi, məzmun istehlakı və xəritə daxil olmaqla çoxsaylı tətbiqlərlə başladı. Bu proqramların vahid monolitə inteqrasiyası istehlakçılar üçün əlverişli olsa da, yaxşı performansı saxlamaq baxımından ciddi texniki problem yaradırdı.
Yenidən yazmaq üçün korporasiya bir çox əsas qaydalar təyin etdi. Əvvəlcədən yükləməyin; hər bir xüsusiyyət öz proqramı olmalıdır və sürətli olmalıdır. Snapchat, yenidən yazmağı təmin etmək üçün bir neçə yerdə dəyişiklikləri dayandırdı və bu, ciddi şəkildə texniki vəzifəyə çevrildi.
Əlavə funksiyaların inteqrasiyası
Snapchat-ın kamera proqramında linzalar, filtrlər, bitmojilər və başqa şeylər arasında əlavə reallıq animasiyaları əlavə etmək imkanı var. Snapchat-ın söhbət proqramı həmçinin istifadəçilərə fotoşəkilləri saxlamağa, danışıqları yadda saxlamağa, ifadələr əlavə etməyə və s. imkan verir.
Snapchat-ın xəritəsi, başqa şeylər arasında, dostlarınız istəsələr, onlara nəzarət etməyə imkan verir. Xatirələr, fotoşəkillərin redaktəsi və məzmun istehlakı unikal imkanları olan ayrı Snapchat proqramlarıdır.
Xatirələr sizə fotoşəkilləri və ya videoları sonradan istifadə etmək üçün saxlamaq və ya dəyişdirmək, həmçinin onları yükləmək və ya göndərmək imkanı verir. İstifadəçilər həmçinin filmləri kəsmək, mətn əlavə etmək, stikerlər əlavə etmək və s. üçün şəkil redaktəsindən istifadə edə bilərlər.
Snapchat-ın xarici məzmun istehlakı bir sıra parametrlər əsasında istifadəçilərə göstərdiyinə aiddir.
Mikro xidmətlər
Proqram o zaman şəbəkə sorğularını yerinə yetirmək üçün JSON-dan çox asılı idi. Bununla belə, JSON-un təhlili vaxt aparan və səmərəsiz idi. Snapchat bu problemi həll etmək üçün tətbiq detalı kimi JSON istifadəsini maskalamaq üçün mərkəzləşdirilmiş şəbəkə idarəetmə API-dən istifadə etdi.
Mikroservislər tətbiq vəziyyətinin idarə edilməsi, xidmət rabitəsi və uğursuzluqların idarə edilməsi problemlərini təqdim edir. Snapchat güclü və etibarlı sistem qurmaq üçün orkestrləşmə çətinliklərini aradan qaldırmaq üçün Temporal kimi açıq mənbəli texnologiyalardan istifadə etdi.
Nəticədə təşkilat bir xidmət şəbəkəsi dizayn nümunəsindən istifadə etmək qərarına gəldi. Snapchat bu nümunəyə nail olmaq üçün proxy kimi çıxış edən başqa bir açıq mənbəli vasitə olan Envoy-dan istifadə etdi. Elçi infrastruktur vasitəsilə xidmət trafikinin axınını idarə etdi və tərtibatçılara potensial çətinlikləri görmə imkanı verdi.
Snapchat xidmət şəbəkəsi daxilində Switchboard adlı daxili proqram yaratdı. Kommutator Snap xidmətləri üçün idarəetmə paneli rolunu oynayıb, istifadəçilərə trafiki dəyişməyə, xidmətdən asılılıqları idarə etməyə (bir xidmətin digərlərinin vəziyyətindən asılı olaraq idarə olunmasına imkan verən xüsusiyyət) və bölgələri boşaltmağa imkan verirdi.
Xidmətlər daxilində potensial konfiqurasiyaların mürəkkəbliyini sadələşdirmək üçün bütün Envoy API-ni ifşa etmək əvəzinə Kommutatordan istifadə edilmişdir. Snap, xidmət şəbəkəsi sayəsində mikroservisləri üçün ümumi daxili və regional şəbəkəyə malikdir.
Eyni regiondaxili xidmətlər ictimai İnternetdən istifadə etmədən bir-biri ilə əlaqə saxlaya bilər və heç bir xarici şəbəkə trafiki daxili şəbəkə hissələri ilə əlaqə saxlaya bilməz.
Yalnız Şlüzlər təhlükəsizlik səbəbi ilə özlərini internetə çıxarmaq səlahiyyətinə malik olacaqlar. Məsələn, API şlüzləri asanlıqla ön qapı kimi xidmət edə bilər, müştərilərin/istifadəçilərin sorğularını emal edə və onları şəbəkə ilə birlikdə yönləndirə bilər.
Şəbəkə və API Gateway
Snapchat müştərisindən bütün sorğular API Gateway vasitəsilə gəlir. O, eyni Elçi təsvirindən istifadə edir və daxili mikroservislərimizlə eyni İdarəetmə Planına qoşulur. İdarəetmə Təyyarəmiz bizə xüsusi Elçi filtrlərini işə salmağa imkan verir.
Snapchat-ın autentifikasiya sistemləri, həmçinin sürəti məhdudlaşdıran və yük atma texnologiyalarımız bu filtrlər tərəfindən idarə olunur. Elçi filtr zənciri tamamlandıqdan sonra sorğuları müvafiq mikroxidmətə yönləndirmək üçün Service Mesh-dən istifadə edir.
Nəticə
Snapchat-ın API şlüzü xarici trafiki tətbiqin bir çox funksiyalarına istiqamətləndirir. İstifadəçilərin konfiqurasiya vəziyyətlərini dəyişdirmək üçün sorğuları serverlər tərəfindən idarə olunur, sonra hansı məlumatları təmin etmək və proqramın çoxsaylı xidmətlərinə məlumat.
Ümumilikdə, Snapchat-ın hazırkı dizaynını bir əməliyyat sistemində işləyən bir neçə proqramla müqayisə etmək olar ki, bu da Snapchat proqramıdır. Mən sizə Snapchat sistem dizaynının yüksək səviyyəli icmalını təqdim etmək üçün çox çalışdım. Ümid edirəm faydalı tapdınız.
Cavab yaz