A Snapchat jól ismert a tizenévesek és a tinédzserek körében. Valószínűleg 25 felett vagy, ha nem tudod, hogyan működik. A Snapchat, az egyik legnépszerűbb közösségimédia-alkalmazás, pontosan azt nyújtja a gyerekeknek és a serdülőknek, amit akarnak: egy egyszerű módszer a hétköznapi események megosztására, miközben menőnek tűnik.
A Facebooktól és a Twittertől eltérően, amelyek mindent rögzítenek és közzétesznek, a Snapchat olyan üzeneteket alkalmaz, amelyeknek el kell tűnniük (lásd, hogyan nem).
Sok minden van a Snapchatről, és ha Ön fejlesztő, akkor még több. Tehát ez a bejegyzés magas szintű képet nyújt a Snapchatről rendszertervezés és még sok más meglátás.
Bevezetés
A Snapchat amerikai székhelyű social networking alkalmazás, amely lehetővé teszi a felhasználók számára azonnali csatlakozást, képek megosztását stb.
- Az üzenetek és képek (vagy pillanatfelvételek) 24 órás időkorláttal rendelkeznek. Arra ösztönzi az embereket, hogy csoportokban osszák meg történeteiket.
- A Snap Map lehetővé teszi a felhasználók számára, hogy a térképen lássák, hol vannak barátaik.
- Az emlékek emlékeztetik a felhasználókat az egy évvel később elmentett vagy megosztott fotókra.
- A Snapchat rendkívül népszerű a fiatalabb generációk, különösen a tizenévesek körében. Az alkalmazásnak 319 millió aktív felhasználója van, és naponta 5.4 milliárd pillanatfelvételt küldenek.
Fontos tervezési feltételek
Monolitikus építészet – A más alkalmazásoktól függetlenül működő egyszintű alkalmazásokat monolitnak (monolit architektúrának) nevezzük. A monolitot úgy tervezték, hogy elvégezze és kezelje a feladat elvégzéséhez szükséges összes tevékenységet. Az alkalmazás az elejétől a végéig minden funkciót végrehajt.
Mikro szolgáltatások – A monolitok poláris ellentéte. Mikro szolgáltatások egy olyan építészeti megközelítés, amely az alkalmazást szolgáltatások gyűjteményeként szervezi. Ezeket a szolgáltatásokat egy alkalmazás számos aspektusának vezérlésére használják. A vásárló leadja a rendelést, a pincér átveszi és kiszállítja, a szakács pedig elkészíti. Ebben a példában minden komponens önállóan és a többitől külön működik; senki sem tudja pontosan, mit csinálnak a többiek, és senki sem fér hozzá ugyanazokhoz az információkhoz.
JSON: Ez egy szöveges formátum, amely JavaScript objektumok, literálok, tömbök és adatok megjelenítésére használható. Ennek a szöveges formátumnak az a célja, hogy könnyen olvasható és írható legyen, valamint szoftveresen emészthető legyen. A JSON-t gyakran használják adatok és információk átvitelére a szerverek és az online alkalmazások között.
hangszerelés: A sok művelet automatizálásának technikáját hangszerelésnek nevezik. Ezek a munkák magukban foglalják a számítógépes rendszer- és szoftverkonfigurálást, koordinációt és adminisztrációt.
meghatalmazott: A proxy közvetítőként működik az erőforrást kereső kliens és az azt biztosító szerver között.
Mesh: A szolgáltatásháló egy olyan szoftverarchitektúra minta, amely egy réteget ad az infrastruktúra réteghez, hogy lehetővé tegye a proxyn keresztül szabályozott, megfigyelhető és biztonságos kommunikációt a szolgáltatások között.
Magas szintű tervezés
Monolitikus problémák
A Snapchat a Google App Engine-en alapuló felhőalapú monolitként jött létre. Ahogy azonban a program népszerűsége nőtt, és egyre több felhasználót és adatot szerzett, a méretezhetőség problémává vált.
Ezenkívül a monoliton belüli hatalmas robbanási sugár miatt az egész rendszerre kiterjedő zavarok nagyobbak voltak. A Snapchat egyik problémáját a „közösség tragédiájaként” határozták meg, amelyben a funkciók versengtek az erőforrásokhoz való hozzáférésért; A funkciók az alkalmazás indításakor töltődtek be, így bizonyos funkciók gyorsabban, de a többiek lassabban töltődtek be.
A mérnökök a fejlesztési szempontból is törekedtek az összetevőik egyértelmű láthatóságára, elkülönítésére és tulajdonjogára, hogy a szolgáltatás rugalmas és hatékony legyen.
Átalakítás
Ahogy a Snapchat terjeszkedett, a cég rájött, hogy monolitikus infrastruktúráját kisebb, hatékonyabb darabokra kell bontania. A késleltetés csökkentése érdekében a szervezet úgy döntött, hogy mikroszolgáltatásokon alapuló tervezést dolgoz ki.
E célok elérése érdekében a Snapchat úgy döntött, hogy frissíti szoftverét az Amazon DynamoDB, egy méretezhető NoSQL adatbázis-szolgáltatás segítségével. A cég erőfeszítései eredményeként a medián késleltetést 20%-kal tudta csökkenteni.
Az alkalmazást a vállalat számos kisebb alkalmazásba írta át. A Snapchat számos alkalmazással kezdődött, beleértve a kamerát, a chat-et, az emlékeket, a képszerkesztést, a tartalomfogyasztást és a térképet. Bár ezeknek a programoknak egyetlen monolitba integrálása kényelmes volt a fogyasztók számára, komoly technikai problémát jelentett a jó teljesítmény fenntartása szempontjából.
Az átíráshoz a vállalat számos alapszabályt határozott meg. Ne töltsön be előre; minden funkciónak saját alkalmazásnak kell lennie, és gyorsnak kell lennie. A Snapchat több helyen leállította a módosításokat, hogy lehetővé tegye az újraírást, így ez szigorúan technikai feladat.
További funkciók integrációja
A Snapchat kameraalkalmazása többek között objektívekkel, szűrőkkel, bitmojisokkal, valamint kiterjesztett valóság animációk hozzáadásának lehetőségével rendelkezik. A Snapchat csevegőalkalmazása lehetővé teszi a felhasználók számára fényképek tárolását, beszélgetések mentését, hangulatjelek hozzáadását stb.
A Snapchat térképe többek között lehetővé teszi a haverok megfigyelését, ha akarják. Az emlékek, a képszerkesztés és a tartalomfogyasztás mind-mind különálló Snapchat-alkalmazások egyedi képességeikkel.
Az emlékek lehetővé teszik fényképek vagy videók tárolását vagy módosítását későbbi felhasználás céljából, valamint feltöltését vagy elküldését. A felhasználók képszerkesztést is használhatnak filmek vágására, szöveg hozzáadására, matricák hozzáadására stb.
A Snapchat külső tartalomfogyasztása arra utal, hogy mit mutat a felhasználóknak egy sor paraméter alapján.
Mikro szolgáltatások
A program akkoriban nagymértékben függött a JSON-tól a hálózati lekérdezések végrehajtásához. A JSON elemzése azonban időigényes és nem hatékony. A Snapchat egy központosított hálózatfelügyeleti API-t használt, hogy elfedje a JSON használatát a probléma megoldása érdekében.
A mikroszolgáltatások bemutatják az alkalmazásállapot-kezelés, a szolgáltatáskommunikáció és a hibakezelés kihívásait. A Snapchat nyílt forráskódú technológiákat, például a Temporalt használta a hangszerelési nehézségek leküzdésére, hogy erős és megbízható rendszert hozzon létre.
Ennek eredményeként a szervezet úgy döntött, hogy szolgáltatásháló-tervezési mintát használ. A Snapchat az Envoy-t, egy másik nyílt forráskódú eszközt használta, amely proxyként működik, hogy elérje ezt a mintát. Az Envoy irányította a szolgáltatási forgalom áramlását az infrastruktúrán keresztül, így a fejlesztők rálátást adtak a lehetséges nehézségekre.
A Snapchat létrehozta a Switchboard nevű belső alkalmazást a szolgáltatáshálón belül. A kapcsolótábla a Snap szolgáltatásainak vezérlőpultjaként szolgált, lehetővé téve a felhasználók számára a forgalom átcsoportosítását, a szolgáltatásfüggőségek kezelését (ez a funkció lehetővé teszi, hogy egy szolgáltatást a többiek állapotától függően kezeljenek), és leürítsék a régiókat.
A szolgáltatásokon belüli lehetséges konfigurációk bonyolultságának egyszerűsítése érdekében a Switchboardot a teljes Envoy API nyilvánosságra hozatala helyett használták. A Snap a szervizhálónak köszönhetően közös belső és regionális hálózattal rendelkezik mikroszolgáltatásaihoz.
Az azonos régión belüli szolgáltatások a nyilvános internet használata nélkül is kapcsolódhatnak egymással, és a külső hálózati forgalom sem tudott kommunikálni a belső hálózati részekkel.
Csak az átjárók lennének jogosultak biztonsági okokból kitenni magukat az internetnek. Az API-átjárók például könnyen bejárati ajtóként szolgálhatnak, feldolgozhatják az ügyfelek/felhasználók kéréseit, és a hálózattal együtt irányíthatják őket.
Hálózati és API-átjáró
A Snapchat klienstől érkező összes lekérdezés az API-átjárón keresztül érkezik. Ugyanazt az Envoy képet használja, és ugyanahhoz a vezérlősíkhoz csatlakozik, mint a belső mikroszolgáltatásaink. Vezérlősíkunk lehetővé teszi az egyéni Envoy szűrők engedélyezését.
A Snapchat hitelesítési rendszereit, valamint sebességkorlátozó és terheléscsökkentési technológiáinkat ezek a szűrők kezelik. Az Envoy a Service Mesh segítségével irányítja a kéréseket a megfelelő mikroszolgáltatáshoz, miután a szűrőlánc befejeződött.
Következtetés
A Snapchat API-átjárója a külső forgalmat az alkalmazás számos funkciójához irányítja. A felhasználók konfigurációs állapotok módosítására irányuló kéréseit a szerverek kezelik, amelyek azután adatokat szolgáltatni és információkat küldhet vissza az alkalmazás számos szolgáltatásához.
Összességében a Snapchat jelenlegi dizájnja több, egyetlen operációs rendszeren futó programhoz hasonlítható, amely jelen esetben a Snapchat alkalmazás. Nagyon igyekeztem, hogy magas szintű áttekintést nyújtsak a Snapchat rendszer kialakításáról. Remélem hasznosnak találtad.
Hagy egy Válaszol