Ang Snapchat ay kilala sa mga tweens at teenager. Ikaw ay malamang na higit sa 25 kung hindi mo malaman kung paano ito gumagana. Ang Snapchat, isa sa pinakasikat na social media application, ay nagbibigay sa mga bata at kabataan kung ano mismo ang gusto nila: isang madaling paraan upang magbahagi ng mga ordinaryong pangyayari habang pinapalabas din silang cool.
Hindi tulad ng Facebook at Twitter, na nagre-record at nag-publish ng lahat ng iyong ginagawa, gumagamit ang Snapchat ng mga mensaheng dapat maglaho (tingnan kung paanong hindi nila ginagawa).
Maraming tungkol sa Snapchat, at kung ikaw ay isang developer, ito ay higit pa. Kaya, ang post na ito ay magbibigay sa iyo ng mataas na antas ng view ng Snapchat disenyo ng sistema at marami pang insight.
pagpapakilala
Ang Snapchat ay nakabase sa US social networking app na nagbibigay-daan sa mga user na kumonekta kaagad, magbahagi ng mga larawan, at higit pa.
- Ang mga mensahe at larawan (o mga snap) ay may 24 na oras na limitasyon sa oras. Hinihikayat ang mga tao na ibahagi ang kanilang mga kuwento sa mga grupo.
- Ang Snap Map ay nagbibigay-daan sa mga user na makita sa isang mapa kung nasaan ang kanilang mga kaibigan.
- Ang mga alaala ay nagpapaalala sa mga user ng mga larawang na-save o ibinahagi nila makalipas ang isang taon.
- Ang Snapchat ay napakapopular sa mga nakababatang henerasyon, lalo na sa mga kabataan. Mayroong 319 milyong aktibong user sa app, at 5.4 bilyong snap ang ipinapadala araw-araw.
Mahahalagang Termino sa Disenyo
Monolithic na Arkitektura – Ang isang single-tiered na application na gumagana nang hiwalay sa iba pang mga application ay kilala bilang monolith (monolithic architecture). Ang isang monolith ay idinisenyo upang isagawa at pangasiwaan ang lahat ng mga aktibidad na kinakailangan upang makumpleto ang isang gawain. Ang application ay gumaganap ng lahat ng mga function mula sa simula hanggang sa katapusan.
Microservices - Ito ay polar na kabaligtaran ng mga monolith. Microservices ay isang diskarte sa arkitektura na nag-aayos ng isang aplikasyon bilang isang koleksyon ng mga serbisyo. Ang mga serbisyong ito ay ginagamit upang kontrolin ang maraming aspeto ng isang application. Nag-order ang isang customer, kinukuha ito ng waiter at inihahatid, at inihahanda ito ng chef. Sa halimbawang ito, ang bawat bahagi ay gumagana nang hiwalay at hiwalay sa iba; walang nakakaalam kung ano mismo ang ginagawa ng iba, at walang sinuman ang may access sa parehong impormasyon.
JSON: Ito ay isang text-based na format na maaaring magamit upang ipakita ang mga JavaScript object, literal, array, at data. Ang format na ito na nakabatay sa teksto ay nilayon na maging simple sa pagbabasa at pagsulat, gayundin sa natutunaw ng software. Ang JSON ay karaniwang ginagamit upang maglipat ng data at impormasyon sa pagitan ng mga server at mga online na application.
Orkestrasyon: Ang pamamaraan ng pag-automate ng maraming operasyon ay kilala bilang orkestrasyon. Kasama sa mga trabahong ito ang computer system at configuration ng software, koordinasyon, at pangangasiwa.
Kahalili: Ang isang proxy ay gumaganap bilang isang tagapamagitan sa pagitan ng isang kliyente na naghahanap ng isang mapagkukunan at ng server na nagbibigay nito.
mata: Ang mesh ng serbisyo ay isang pattern ng arkitektura ng software na nagdaragdag ng layer sa isang layer ng imprastraktura upang payagan ang regulated, napapansin, at secure na komunikasyon sa pagitan ng mga serbisyo sa pamamagitan ng proxy.
Mataas na Antas na Disenyo
Mga Problema sa Monolitik
Nagmula ang Snapchat bilang isang cloud-based na monolith batay sa Google App Engine. Gayunpaman, habang lumalago ang programa sa katanyagan at nakakuha ng mas maraming user at data, naging isyu ang scalability.
Bukod pa rito, sa malaking radius ng pagsabog sa loob ng monolith, mas posible ang mga kaguluhan sa buong system. Ang isa sa mga problema ng Snapchat ay tinukoy bilang isang "trahedya ng mga karaniwang tao," kung saan ang mga tampok ay nakikipagkumpitensya para sa pag-access sa mga mapagkukunan; naglo-load ang mga feature sa oras ng paglulunsad ng app, na nagbibigay-daan sa ilang feature na mag-load nang mas mabilis ngunit ang iba ay mas mabagal na mag-load.
Hinahangad din ng mga inhinyero ang malinaw na visibility, paghihiwalay, at pagmamay-ari ng kanilang mga bahagi mula sa pananaw sa pag-unlad, upang ang serbisyo ay maging flexible at mahusay.
Pagbabagong-anyo
Habang lumalawak ang Snapchat, napagtanto ng kumpanya na kailangan nitong hatiin ang monolitikong imprastraktura nito sa mas maliit, mas mahusay na mga piraso. Upang makapagbigay ng pinababang latency, nagpasya ang organisasyon na bumuo ng disenyong nakabatay sa microservice.
Upang matupad ang mga layuning iyon, pinili ng Snapchat na i-update ang software nito gamit ang Amazon DynamoDB, isang scalable na serbisyo ng database ng NoSQL. Nagawa ng firm na bawasan ang median latency ng 20% bilang resulta ng mga pagsisikap nito.
Ang app ay muling isinulat sa maraming mas maliliit na application ng korporasyon. Nagsimula ang Snapchat sa maraming mga application, kabilang ang isang camera, chat, mga alaala, pag-edit ng larawan, pagkonsumo ng nilalaman, at isang mapa. Bagama't ang pagsasama ng mga programang ito sa isang monolith ay maginhawa para sa mga mamimili, nagdulot ito ng matinding teknikal na isyu sa mga tuntunin ng pagpapanatili ng mahusay na pagganap.
Para sa muling pagsulat, ang korporasyon ay nagtatag ng maraming mga pangunahing patakaran. Huwag mag-preload; ang bawat feature ay dapat na sarili nitong app, at dapat itong mabilis. Itinigil ng Snapchat ang mga pagbabago sa ilang lugar upang paganahin ang muling pagsulat, na ginagawa itong mahigpit na isang teknikal na gawain.
Karagdagang pagsasama ng mga tampok
Ang camera app ng Snapchat ay may mga lente, filter, bitmoji, at kakayahang magdagdag ng mga augmented reality na animation, bukod sa iba pang mga bagay. Binibigyang-daan din ng chat app ng Snapchat ang mga user na mag-imbak ng mga litrato, mag-save ng mga pag-uusap, magdagdag ng mga emoticon, at higit pa.
Ang mapa ng Snapchat, bukod sa iba pang mga bagay, ay nagbibigay-daan sa iyong subaybayan ang mga kaibigan kung gusto nila. Ang mga alaala, pag-edit ng larawan, at pagkonsumo ng nilalaman ay lahat ng hiwalay na Snapchat app na may kanilang mga natatanging kakayahan.
Nagbibigay-daan sa iyo ang mga alaala na mag-imbak o magbago ng mga litrato o video para magamit sa ibang pagkakataon, gayundin ang pag-upload o pagpapadala sa kanila. Magagamit din ng mga user ang pag-edit ng larawan upang mag-cut ng mga pelikula, magdagdag ng text, magdagdag ng mga sticker, at higit pa.
Ang paggamit ng panlabas na content ng Snapchat ay tumutukoy sa kung ano ang ipinapakita nito sa mga user batay sa isang hanay ng mga parameter.
Microservices
Ang programa ay lubos na nakadepende sa JSON upang magsagawa ng mga query sa network sa panahong iyon. Gayunpaman, ang pag-parse ng JSON ay nakakaubos ng oras at hindi epektibo. Gumamit ang Snapchat ng isang sentralisadong network management API upang itago ang paggamit ng JSON bilang isang detalye ng pagpapatupad upang matugunan ang problemang ito.
Ipinakilala ng mga microservice ang mga hamon ng pamamahala ng estado ng aplikasyon, komunikasyon sa serbisyo, at pamamahala ng pagkabigo. Gumamit ang Snapchat ng mga open-source na teknolohiya tulad ng Temporal upang malampasan ang mga paghihirap sa orkestra upang makabuo ng isang malakas at maaasahang sistema.
Bilang resulta, nagpasya ang organisasyon na gumamit ng pattern ng disenyo ng mesh ng serbisyo. Gumamit ang Snapchat ng Envoy, isa pang open-source na tool na nagsisilbing proxy, upang makamit ang pattern na ito. Pinamahalaan ng Envoy ang daloy ng trapiko ng serbisyo sa pamamagitan ng imprastraktura, na nagbibigay sa mga developer ng visibility sa mga potensyal na paghihirap.
Lumikha ang Snapchat ng panloob na app na tinatawag na Switchboard sa loob ng mesh ng serbisyo. Nagsilbi ang Switchboard bilang control panel para sa mga serbisyo ng Snap, na nagpapahintulot sa mga user na ilipat ang trapiko, pamahalaan ang mga dependency ng serbisyo (isang feature na nagbibigay-daan sa isang serbisyo na pamahalaan depende sa kondisyon ng iba), at mag-drain ng mga rehiyon.
Upang gawing simple ang pagiging kumplikado ng mga potensyal na configuration sa loob ng mga serbisyo, ginamit ang Switchboard sa halip na ilantad ang buong Envoy API. Ang Snap ay may karaniwang panloob at rehiyonal na network para sa mga microservice nito salamat sa service mesh.
Ang mga serbisyo sa loob ng parehong rehiyon ay maaaring kumonekta sa isa't isa nang hindi gumagamit ng pampublikong Internet, at walang panlabas na trapiko sa network ang maaaring makipag-ugnayan sa mga panloob na bahagi ng network.
Ang mga Gateway lang ang bibigyan ng pahintulot na ilantad ang kanilang mga sarili sa internet para sa mga kadahilanang pangseguridad. Ang mga gateway ng API, halimbawa, ay maaaring madaling magsilbi bilang mga front door, pagpoproseso ng mga kahilingan mula sa mga kliyente/user at pagruruta sa kanila kasama ng network.
Network at API Gateway
Lahat ng mga query mula sa Snapchat client ay nagmumula sa API Gateway. Gumagamit ito ng parehong larawan ng Envoy at kumokonekta sa parehong Control Plane bilang aming mga panloob na microservice. Binibigyang-daan kami ng aming Control Plane na paganahin ang mga custom na filter ng Envoy.
Ang mga sistema ng pagpapatunay ng Snapchat, pati na rin ang aming mga teknolohiya sa paglilimita sa rate at pag-load ng pag-load, ay pinangangasiwaan ng mga filter na ito. Ginagamit ng Envoy ang Service Mesh upang iruta ang mga kahilingan sa nauugnay na microservice pagkatapos makumpleto ang chain ng filter.
Konklusyon
Niruruta ng API gateway ng Snapchat ang panlabas na trapiko sa maraming functionality ng app. Ang mga kahilingan ng mga user na baguhin ang mga estado ng pagsasaayos ay pinamamahalaan ng mga server, na pagkatapos magbigay ng data at impormasyon pabalik sa maraming serbisyo ng app.
Sa pangkalahatan, ang kasalukuyang disenyo ng Snapchat ay maaaring ihambing sa ilang mga program na tumatakbo sa isang operating system, na sa kasong ito ay ang Snapchat app. Sinubukan kong bigyan ka ng mataas na antas ng pangkalahatang-ideya ng disenyo ng Snapchat system. Umaasa ako na nakita mo itong kapaki-pakinabang.
Mag-iwan ng Sagot