Snapchat on tuttu nuorten ja teini-ikäisten keskuudessa. Olet luultavasti yli 25-vuotias, jos et ymmärrä, miten se toimii. Snapchat, yksi suosituimmista sosiaalisen median sovelluksista, tarjoaa lapsille ja nuorille juuri sitä, mitä he haluavat: helpon tavan jakaa tavallisia tapahtumia ja saada ne näyttämään siistiltä.
Toisin kuin Facebook ja Twitter, jotka tallentavat ja julkaisevat kaiken tekemäsi, Snapchat käyttää viestejä, joiden oletetaan katoavan (katso kuinka ne eivät katoa).
Snapchatissa on paljon, ja jos olet kehittäjä, se on vielä enemmän. Joten tämä viesti antaa sinulle korkean tason kuvan Snapchatista Järjestelmäsuunnittelu ja paljon muuta oivallusta.
esittely
Snapchat on yhdysvaltalainen sosiaalinen verkostoituminen sovellus, jonka avulla käyttäjät voivat muodostaa yhteyden välittömästi, jakaa kuvia ja paljon muuta.
- Viesteillä ja kuvilla (tai kuvilla) on 24 tunnin aikaraja. Kannustaa ihmisiä jakamaan tarinansa ryhmissä.
- Snap Mapin avulla käyttäjät voivat nähdä kartalta, missä heidän kaverinsa ovat.
- Muistot muistuttavat käyttäjiä kuvista, jotka he ovat tallentaneet tai jakaneet vuoden kuluttua.
- Snapchat on erittäin suosittu nuorempien sukupolvien, erityisesti teini-ikäisten, keskuudessa. Sovelluksella on 319 miljoonaa aktiivista käyttäjää, ja päivittäin lähetetään 5.4 miljardia snapsia.
Tärkeät suunnitteluehdot
Monoliittinen arkkitehtuuri – Yksitasoista sovellusta, joka toimii muista sovelluksista riippumatta, kutsutaan monoliitiksi (monoliittinen arkkitehtuuri). Monoliitti on suunniteltu suorittamaan ja käsittelemään kaikkia tehtävän suorittamiseen tarvittavia toimintoja. Sovellus suorittaa kaikki toiminnot alusta loppuun.
mikro Palvelut – Se on monoliittien vastakohta. mikro Palvelut on arkkitehtoninen lähestymistapa, joka järjestää sovelluksen palvelukokoelmaksi. Näitä palveluita käytetään monien sovelluksen osien ohjaamiseen. Asiakas tekee tilauksen, tarjoilija ottaa sen ja toimittaa sen ja kokki valmistaa sen. Tässä esimerkissä jokainen komponentti toimii itsenäisesti ja erillään muista; kukaan ei tiedä tarkalleen mitä muut tekevät, eikä kenelläkään ole pääsyä samoihin tietoihin.
JSON: Se on tekstipohjainen muoto, jota voidaan käyttää JavaScript-objektien, literaalien, taulukoiden ja tietojen näyttämiseen. Tämä tekstipohjainen muoto on tarkoitettu helposti luettavaksi ja kirjoitettavaksi sekä ohjelmiston sulavaksi. JSON:ia käytetään yleisesti tiedon siirtämiseen palvelimien ja verkkosovellusten välillä.
orkestrointi: Monien toimintojen automatisointitekniikka tunnetaan orkestroinnina. Näihin tehtäviin kuuluu tietokonejärjestelmien ja ohjelmistojen konfigurointi, koordinointi ja hallinto.
Valtakirja: Välityspalvelin toimii välittäjänä resurssia etsivän asiakkaan ja sen tarjoavan palvelimen välillä.
verkko: Palveluverkko on ohjelmistoarkkitehtuurimalli, joka lisää infrastruktuurikerrokseen kerroksen mahdollistaakseen säädellyn, havaittavan ja suojatun viestinnän palveluiden välillä välityspalvelimen kautta.
Korkean tason suunnittelu
Monoliittiset ongelmat
Snapchat syntyi pilvipohjaisena monoliittina, joka perustuu Google App Engineen. Ohjelman suosion kasvaessa ja käyttäjiä ja dataa kasvaessa skaalautumisesta tuli kuitenkin ongelma.
Lisäksi, kun monoliitin sisällä oli valtava räjähdyssäde, järjestelmän laajuiset häiriöt olivat mahdollisia. Yksi Snapchatin ongelmista määriteltiin "yhteisten tragediaksi", jossa ominaisuudet kilpailivat pääsystä resursseihin; ominaisuudet latautuivat sovelluksen käynnistyshetkellä, jolloin tietyt ominaisuudet latautuivat nopeammin, mutta toiset latautuivat hitaammin.
Insinöörit etsivät myös selkeää näkyvyyttä, erottelua ja komponenttien omistajuutta kehittämisen näkökulmasta, jotta palvelu olisi joustavaa ja tehokasta.
Muutos
Snapchatin laajentuessa yritys tajusi, että sen monoliittinen infrastruktuuri oli hajotettava pienempiin, tehokkaampiin osiin. Viiveen pienentämiseksi organisaatio päätti kehittää mikropalvelupohjaisen suunnittelun.
Näiden tavoitteiden saavuttamiseksi Snapchat päätti päivittää ohjelmistonsa Amazon DynamoDB:n avulla, skaalautuvalla NoSQL-tietokantapalvelulla. Yritys pystyi vähentämään mediaaniviivettä 20 % ponnistelujensa ansiosta.
Yritys kirjoitti sovelluksen uudelleen lukuisiin pienempiin sovelluksiin. Snapchat alkoi lukuisilla sovelluksilla, mukaan lukien kamera, chat, muistot, kuvien muokkaus, sisällönkulutus ja kartta. Vaikka näiden ohjelmien yhdistäminen yhdeksi monoliitiksi oli kuluttajien kannalta kätevää, se aiheutti vakavan teknisen ongelman hyvän suorituskyvyn ylläpitämisessä.
Uudelleenkirjoitusta varten yhtiö vahvisti monia perussääntöjä. Älä esilataa; jokaisen ominaisuuden tulee olla oma sovellus ja sen tulee olla nopea. Snapchat pysäytti muutokset useissa paikoissa mahdollistaakseen uudelleenkirjoituksen, mikä teki siitä puhtaasti teknisen tehtävän.
Lisäominaisuuksien integrointi
Snapchatin kamerasovelluksessa on muun muassa linssejä, suodattimia, bitmojia ja mahdollisuus lisätä lisätyn todellisuuden animaatioita. Snapchatin chat-sovelluksen avulla käyttäjät voivat myös tallentaa valokuvia, tallentaa keskusteluja, lisätä hymiöitä ja paljon muuta.
Snapchatin kartan avulla voit muun muassa seurata kavereita, jos he niin haluavat. Muistot, valokuvien muokkaus ja sisällön kulutus ovat kaikki erillisiä Snapchat-sovelluksia ainutlaatuisine ominaisuuksineen.
Muistojen avulla voit tallentaa tai muokata valokuvia tai videoita myöhempää käyttöä varten sekä ladata tai lähettää niitä. Käyttäjät voivat myös leikata elokuvia, lisätä tekstiä, lisätä tarroja ja käyttää kuvanmuokkausta.
Snapchatin ulkoinen sisällönkulutus viittaa siihen, mitä se näyttää käyttäjille useiden parametrien perusteella.
mikro Palvelut
Ohjelma riippui laajasti JSON:ista verkkokyselyjen suorittamisessa tuolloin. JSONin jäsentäminen oli kuitenkin aikaa vievää ja tehotonta. Snapchat käytti keskitettyä verkonhallintasovellusliittymää peittämään JSON:n käytön toteutusyksityiskohtana tämän ongelman ratkaisemiseksi.
Mikropalvelut esittelevät sovellusten tilanhallinnan, palveluviestinnän ja vianhallinnan haasteet. Snapchat käytti avoimen lähdekoodin teknologioita, kuten Temporal, voittamaan orkestrointivaikeudet rakentaakseen vahvan ja luotettavan järjestelmän.
Tämän seurauksena organisaatio päätti käyttää palveluverkkojen suunnittelumallia. Snapchat käytti Envoyta, toista avoimen lähdekoodin työkalua, joka toimii välityspalvelimena, saavuttaakseen tämän mallin. Envoy hallitsi palveluliikenteen sujuvuutta infrastruktuurin kautta, mikä antoi kehittäjille näkyvyyttä mahdollisiin vaikeuksiin.
Snapchat loi sisäisen sovelluksen nimeltä Switchboard palveluverkkoon. Switchboard toimi ohjauspaneelina Snapin palveluille, jolloin käyttäjät voivat siirtää liikennettä, hallita palveluriippuvuuksia (ominaisuus, jonka avulla yhtä palvelua voidaan hallita muiden kunnosta riippuen) ja tyhjentää alueita.
Palvelujen mahdollisten konfiguraatioiden monimutkaisuuden yksinkertaistamiseksi Switchboardia käytettiin sen sijaan, että paljastettiin koko Envoy API. Snapilla on yhteinen sisäinen ja alueellinen verkko mikropalveluilleen palveluverkon ansiosta.
Palvelut saman alueen sisällä voisivat olla yhteydessä toisiinsa käyttämättä julkista Internetiä, eikä ulkopuolinen verkkoliikenne pystyisi kommunikoimaan sisäisten verkon osien kanssa.
Vain yhdyskäytävällä olisi oikeus altistaa itsensä Internetille turvallisuussyistä. API-yhdyskäytävät voivat esimerkiksi toimia helposti etuovina, jotka käsittelevät asiakkaiden/käyttäjien pyyntöjä ja reitittävät ne verkon mukana.
Verkko- ja API-yhdyskäytävä
Kaikki Snapchat-asiakassovelluksen kyselyt tulevat API Gatewayn kautta. Se käyttää samaa Envoy-kuvaa ja muodostaa yhteyden samaan ohjaustasoon kuin sisäiset mikropalvelumme. Ohjaustasollamme voimme ottaa käyttöön mukautettuja Envoy-suodattimia.
Nämä suodattimet käsittelevät Snapchatin todennusjärjestelmiä sekä nopeudenrajoitus- ja kuormitusteknologiamme. Envoy käyttää Service Meshiä pyyntöjen reitittämiseen asiaankuuluvaan mikropalveluun, kun suodatinketju on valmis.
Yhteenveto
Snapchatin API-yhdyskäytävä reitittää ulkoisen liikenteen sovelluksen moniin toimintoihin. Palvelimet hallitsevat käyttäjien pyyntöjä muuttaa konfiguraatiotiloja, jotka sitten antaa tietoja ja tiedot takaisin sovelluksen lukuisiin palveluihin.
Kaiken kaikkiaan Snapchatin nykyistä suunnittelua voidaan verrata useisiin ohjelmiin, jotka toimivat yhdessä käyttöjärjestelmässä, joka tässä tapauksessa on Snapchat-sovellus. Yritin kovasti tarjota sinulle korkean tason yleiskatsauksen Snapchat-järjestelmän suunnittelusta. Toivottavasti pidit siitä hyödyllisenä.
Jätä vastaus