Snapchat kasohor diantara rumaja sareng rumaja. Anjeun meureun di luhur 25 lamun teu bisa angka kaluar kumaha gawéna. Snapchat, salah sahiji aplikasi média sosial anu pang populerna, nyayogikeun budak sareng rumaja naon anu dipikahoyong: cara anu gampang pikeun ngabagi kajadian biasa bari ogé ngajantenkeun aranjeunna katingali keren.
Beda sareng Facebook sareng Twitter, anu ngarékam sareng nyebarkeun sadaya anu anjeun laksanakeun, Snapchat nganggo pesen anu sakuduna ngaleungit (tingali kumaha henteu).
Aya seueur ngeunaan Snapchat, sareng upami anjeun pamekar éta langkung seueur. Janten, tulisan ieu bakal masihan anjeun pandangan tingkat luhur Snapchat rarancang sistem sareng seueur deui wawasan.
perkenalan
Snapchat mangrupikeun basis AS jejaring sosial aplikasi nu ngidinan pamaké nyambung langsung, babagi gambar, sareng nu sanesna.
- Pesen sareng gambar (atanapi jepret) gaduh wates waktos 24 jam. Nyorong jalma pikeun ngabagi carita dina grup.
- Snap Map ngamungkinkeun pamaké pikeun ningali dina peta dimana babaturanana.
- Kenangan ngingetkeun pangguna kana poto anu disimpen atanapi dibagikeun sataun saatosna.
- Snapchat populer pisan sareng generasi ngora, khususna rumaja. Aya 319 juta pangguna aktip dina aplikasi, sareng 5.4 milyar snaps dikirim unggal dinten.
Sarat Desain penting
Arsitéktur Monolithic - Aplikasi tingkat tunggal anu beroperasi sacara mandiri tina aplikasi anu sanés katelah monolith (arsitektur monolitik). Monolith dirancang pikeun ngalakukeun sareng nanganan sadaya kagiatan anu diperyogikeun pikeun ngarengsekeun tugas. Aplikasi ngalaksanakeun sagala fungsi ti mimiti nepi ka ahir.
Microservices - Ieu polar sabalikna tina monoliths. Microservices mangrupa pendekatan arsitéktur nu organizes hiji aplikasi salaku kumpulan jasa. Ladenan ieu dianggo pikeun ngadalikeun seueur aspék aplikasi. A customer nempatkeun hiji pesenan, palayan nyokot eta sarta delivers eta, sarta kang Oki a prepares eta. Dina conto ieu, unggal komponén fungsina sacara mandiri sareng misah ti anu sanés; teu aya anu terang naon anu dilakukeun ku batur, sareng teu aya anu ngagaduhan aksés kana inpormasi anu sami.
JSON: Ieu mangrupakeun format dumasar-téks nu bisa dipaké pikeun nembongkeun objék JavaScript, literals, arrays, sarta data. Format dumasar téks ieu dimaksudkeun pikeun saderhana maca sareng nyerat, ogé tiasa dicerna ku parangkat lunak. JSON biasana dianggo pikeun mindahkeun data sareng inpormasi antara server sareng aplikasi online.
Orkestra: Téhnik ngajadikeun otomatis seueur operasi katelah orkestrasi. Proyék ieu kalebet sistem komputer sareng konfigurasi parangkat lunak, koordinasi, sareng administrasi.
proxy: A proxy tindakan minangka go-antara antara hiji klien pilari sumberdaya jeung server nu nyadiakeun eta.
bolong: Bolong jasa mangrupikeun pola arsitektur parangkat lunak anu nambihan lapisan kana lapisan infrastruktur pikeun ngamungkinkeun komunikasi anu diatur, tiasa diobservasi, sareng aman antara jasa ngalangkungan proxy.
Desain Tingkat Luhur
Masalah Monolithic
Snapchat asalna salaku monolith dumasar-awan dumasar kana Google App Engine. Nanging, nalika program éta janten popularitas sareng nampi langkung seueur pangguna sareng data, skalabilitas janten masalah.
Salaku tambahan, kalayan radius ledakan anu ageung dina monolith, gangguan di sakumna sistem langkung mungkin. Salah sahiji masalah Snapchat didefinisikeun salaku "tragedi tina commons," nu fitur competed pikeun aksés ka sumberdaya; fitur ieu dimuat dina waktu peluncuran aplikasi, sahingga sababaraha fitur pikeun muka leuwih gancang tapi nu sejen ngamuat leuwih laun.
Insinyur ogé milarian pisibilitas anu jelas, pamisahan, sareng kapamilikan komponénna tina sudut pandang pamekaran, ku kituna jasa éta tiasa fleksibel sareng éfisién.
transformasi
Nalika Snapchat ngalegaan, perusahaan sadar yén éta kedah ngarobih infrastruktur monolitik na janten potongan anu langkung alit, langkung efisien. Dina raraga nyadiakeun turun latency, organisasi mutuskeun pikeun ngembangkeun desain basis microservices.
Pikeun minuhan tujuan éta, Snapchat milih pikeun ngapdet parangkat lunakna nganggo Amazon DynamoDB, layanan database NoSQL anu tiasa skala. Firma éta tiasa ngirangan latency median ku 20% salaku hasil tina usahana.
Aplikasi ieu ditulis deui kana sababaraha aplikasi anu langkung alit ku perusahaan. Snapchat dimimitian ku seueur aplikasi, kalebet kaméra, obrolan, kenangan, ngedit gambar, konsumsi kontén, sareng peta. Sanaos ngahijikeun program-program ieu kana monolit tunggal éta merenah pikeun konsumén, éta nyababkeun masalah téknis anu parah dina hal ngajaga kinerja anu saé.
Pikeun nulis balik a, korporasi ngadegkeun loba aturan dasar. Ulah preload; unggal fitur kudu aplikasi sorangan, sarta kudu gancang. Snapchat ngeureunkeun modifikasi di sababaraha tempat pikeun ngaktifkeun nulis balik, sahingga janten tugas téknis.
integrasi fitur tambahan
Aplikasi kaméra Snapchat ngagaduhan lénsa, saringan, bitmojis, sareng kamampuan pikeun nambihan animasi realitas anu ditambah, diantara anu sanésna. Aplikasi obrolan Snapchat ogé ngamungkinkeun pamaké pikeun nyimpen poto, nyimpen ceramah, nambihan émotikon, sareng seueur deui.
Peta Snapchat, antara séjén, ngamungkinkeun anjeun ngawas babaturan upami aranjeunna hoyong anjeun. Kenangan, éditan poto, sareng konsumsi eusi mangrupikeun aplikasi Snapchat anu misah sareng kamampuan unikna.
Kenangan ngamungkinkeun anjeun pikeun nyimpen atanapi ngarobih poto atanapi pidéo pikeun dianggo engké, ogé unggah atanapi kirimkeunana. Pamaké ogé tiasa ngagunakeun éditan gambar pikeun motong pilem, nambihan téks, nambihan stiker, sareng seueur deui.
Konsumsi eusi éksternal Snapchat nujul kana naon anu ditingalikeun ka pangguna dumasar kana sajumlah parameter.
Microservices
Program éta gumantung pisan kana JSON pikeun ngalakukeun pamundut jaringan dina waktos éta. Sanajan kitu, parsing JSON éta waktu-consuming tur teu episien. Snapchat nganggo API manajemén jaringan terpusat pikeun masker panggunaan JSON salaku jéntré palaksanaan pikeun ngatasi masalah ieu.
Microservices ngenalkeun tantangan manajemén kaayaan aplikasi, komunikasi jasa, sareng manajemén kagagalan. Snapchat ngagunakeun téknologi open-source sapertos Temporal pikeun ngatasi kasusah orkestrasi pikeun ngawangun sistem anu kuat sareng diandelkeun.
Hasilna, organisasi mutuskeun pikeun ngagunakeun pola desain bolong jasa. Snapchat nganggo Envoy, alat open-source sanés anu bertindak salaku proxy, pikeun ngahontal pola ieu. Utusan ngatur aliran lalu lintas jasa ngaliwatan infrastruktur, masihan pamekar pisibilitas kana poténsi kasusah.
Snapchat nyiptakeun aplikasi internal anu disebut Switchboard dina bolong jasa. Switchboard dilayanan salaku panel kontrol pikeun jasa Snap, ngamungkinkeun pamaké pikeun mindahkeun lalulintas, ngatur dependensi jasa (fitur anu ngamungkinkeun hiji layanan bisa diatur gumantung kana kaayaan batur), sarta wewengkon solokan.
Pikeun nyederhanakeun pajeulitna konfigurasi poténsial dina jasa, Switchboard dianggo tibatan ngalaan sakabeh API Envoy. Snap gaduh jaringan internal sareng régional umum pikeun layanan mikro na berkat bolong jasa.
Ladenan di jero wilayah anu sami tiasa nyambung ka anu sanés tanpa nganggo Internét umum, sareng henteu aya lalu lintas jaringan éksternal anu tiasa komunikasi sareng bagian jaringan internal.
Ngan Gateways bakal otorisasi pikeun ngalaan diri ka internét kusabab alesan kaamanan. Gerbang API, contona, tiasa gampang janten panto hareup, ngolah pamundut ti klien / pangguna sareng routing aranjeunna sareng jaringan.
Jaringan & API Gateway
Sadaya patarosan ti klien Snapchat datangna ngaliwatan API Gateway. Éta ngagunakeun gambar Utusan anu sami sareng nyambung ka Pesawat Kontrol anu sami sareng jasa mikro internal urang. Pesawat Kontrol kami ngamungkinkeun urang ngaktipkeun saringan Utusan khusus.
Sistem auténtikasi Snapchat, kitu ogé téknologi ngabatesan laju sareng beban beban, diurus ku saringan ieu. Utusan ngagunakeun Service Mesh pikeun rute requests ka microservice relevan sanggeus ranté filter geus réngsé.
kacindekan
Gerbang API Snapchat ngarutekeun lalu lintas éksternal kana seueur fungsionalitas aplikasi. Paménta pangguna pikeun ngarobih kaayaan konfigurasi diurus ku server, anu teras nyadiakeun data sareng inpormasi deui kana seueur jasa aplikasi.
Gemblengna, desain Snapchat ayeuna tiasa dibandingkeun sareng sababaraha program anu dijalankeun dina sistem operasi tunggal, anu dina hal ieu mangrupikeun aplikasi Snapchat. Kuring nyobian pisan pikeun masihan anjeun tinjauan tingkat luhur ngeunaan desain sistem Snapchat. Kuring miharep anjeun kapanggih eta mangpaat.
Leave a Reply