Ang Snapchat ilado kaayo sa mga tweens ug mga tin-edyer. Tingali labaw ka sa 25 kung dili nimo mahibal-an kung giunsa kini molihok. Ang Snapchat, usa sa labing inila nga aplikasyon sa social media, naghatag sa mga bata ug mga tin-edyer sa eksakto kung unsa ang ilang gusto: usa ka dali nga pamaagi sa pagpaambit sa mga ordinaryo nga panghitabo samtang gihimo usab kini nga cool.
Dili sama sa Facebook ug Twitter, nga nagrekord ug nagmantala sa tanan nimong gibuhat, ang Snapchat naggamit sa mga mensahe nga kinahanglan nga mawala (tan-awa kung giunsa kini dili).
Adunay daghan bahin sa Snapchat, ug kung ikaw usa ka developer labi pa kini. Mao nga, kini nga post maghatag kanimo usa ka taas nga lebel nga pagtan-aw sa Snapchat disenyo sa sistema ug daghan pang mga insight.
Pasiuna
Ang Snapchat kay nakabase sa US social networking app nga nagtugot sa mga tiggamit sa pagkonektar dayon, pagpaambit sa mga hulagway, ug uban pa.
- Ang mga mensahe ug mga hulagway (o mga snap) adunay 24-oras nga limitasyon sa panahon. Awhaga ang mga tawo sa pagpaambit sa ilang mga istorya sa mga grupo.
- Ang Snap Map nagtugot sa mga tiggamit sa pagtan-aw sa usa ka mapa kung asa ang ilang mga higala.
- Ang mga handumanan nagpahinumdom sa mga tiggamit sa mga litrato nga ilang gitipigan o gipaambit usa ka tuig ang milabay.
- Ang Snapchat labi ka sikat sa mga batan-on nga henerasyon, labi na sa mga tin-edyer. Adunay 319 ka milyon nga aktibo nga tiggamit sa app, ug 5.4 ka bilyon nga snap ang ipadala kada adlaw.
Importante nga mga Termino sa Disenyo
Monolithic nga Arkitektura – Usa ka single-tiered nga aplikasyon nga naglihok nga independente sa ubang mga aplikasyon nailhan nga monolith (monolithic architecture). Ang monolith gidesinyo sa pagbuhat ug pagdumala sa tanang mga kalihokan nga gikinahanglan aron makompleto ang usa ka buluhaton. Ang aplikasyon naghimo sa tanan nga mga gimbuhaton gikan sa sinugdanan hangtod sa katapusan.
Microservices – Kini polar atbang sa monoliths. Microservices usa ka pamaagi sa arkitektura nga nag-organisar sa usa ka aplikasyon ingon usa ka koleksyon sa mga serbisyo. Kini nga mga serbisyo gigamit aron makontrol ang daghang mga aspeto sa usa ka aplikasyon. Ang usa ka kustomer nag-order, usa ka waiter ang nagkuha niini ug naghatud niini, ug usa ka chef ang nag-andam niini. Niini nga pananglitan, ang matag component naglihok nga independente ug lahi gikan sa uban; walay usa nga nahibal-an kung unsa ang gibuhat sa uban, ug walay usa nga adunay access sa parehas nga kasayuran.
JSON: Kini usa ka text-based nga format nga magamit sa pagpakita sa JavaScript nga mga butang, literal, arrays, ug data. Kini nga text-based nga format gituyo nga sayon basahon ug isulat, ingon man matunaw sa software. Ang JSON kasagarang gigamit sa pagbalhin sa datos ug impormasyon tali sa mga server ug mga aplikasyon sa online.
Pagsagop: Ang teknik sa pag-automate sa daghang mga operasyon nailhan nga orkestra. Kini nga mga trabaho naglakip sa sistema sa kompyuter ug pag-configure sa software, koordinasyon, ug pagdumala.
Proxy: Ang usa ka proxy naglihok isip usa ka tigpataliwala tali sa usa ka kliyente nga nangita alang sa usa ka kapanguhaan ug sa server nga naghatag niini.
mata sa baling: Ang service mesh kay usa ka software architecture pattern nga nagdugang ug layer sa infrastructure layer aron tugotan ang regulated, observable, ug secure nga komunikasyon tali sa mga serbisyo pinaagi sa proxy.
Taas nga lebel nga Disenyo
Mga Problema sa Monolithic
Ang Snapchat naggikan isip usa ka cloud-based monolith base sa Google App Engine. Bisan pa, samtang ang programa nagdako sa pagkapopular ug nakakuha daghang mga tiggamit ug datos, ang pagka-scalability nahimong usa ka isyu.
Dugang pa, sa usa ka dako nga radius sa pagbuto sa sulod sa monolith, ang mga kasamok sa tibuuk nga sistema mas posible. Usa sa mga problema sa Snapchat gihubit nga usa ka "trahedya sa mga komon," diin ang mga bahin nakigkompetensya alang sa pag-access sa mga kapanguhaan; Nag-load ang mga feature sa oras sa paglusad sa app, nga nagtugot sa pipila ka feature nga mas paspas nga mag-load apan ang uban mas hinay nga mag-load.
Gipangita usab sa mga inhenyero ang tin-aw nga panan-aw, pagkabulag, ug pagpanag-iya sa ilang mga sangkap gikan sa punto sa pag-uswag, aron ang serbisyo mahimo’g flexible ug episyente.
kausaban
Samtang nagkalapad ang Snapchat, nahibal-an sa kompanya nga kinahanglan nga gub-on ang monolitikong imprastraktura sa mas gagmay, labi ka episyente nga mga piraso. Aron mahatagan ang pagkunhod sa latency, nakahukom ang organisasyon nga maghimo usa ka disenyo nga nakabase sa microservice.
Aron matuman ang mga katuyoan, gipili sa Snapchat nga i-update ang software niini gamit ang Amazon DynamoDB, usa ka scalable nga serbisyo sa database sa NoSQL. Ang kompanya nakahimo sa pagpakunhod sa median latency sa 20% isip resulta sa mga paningkamot niini.
Gisulat pag-usab ang app sa daghang gagmay nga mga aplikasyon sa korporasyon. Nagsugod ang Snapchat sa daghang mga aplikasyon, lakip ang usa ka camera, chat, mga panumduman, pag-edit sa litrato, pagkonsumo sa sulud, ug usa ka mapa. Bisan kung ang pag-integrate niini nga mga programa ngadto sa usa ka monolith sayon alang sa mga konsumedor, kini nagpakita sa usa ka grabe nga teknikal nga isyu sa mga termino sa pagmintinar sa maayo nga performance.
Alang sa usa ka pagsulat pag-usab, ang korporasyon nagtukod og daghang mga lagda. Ayaw preload; ang matag bahin kinahanglan nga adunay kaugalingon nga app, ug kini kinahanglan nga dali. Gipahunong sa Snapchat ang mga pagbag-o sa daghang mga lugar aron mahimo ang pagsulat pag-usab, nga gihimo kini nga usa ka teknikal nga buluhaton.
Dugang nga mga bahin integration
Ang camera app sa Snapchat adunay mga lente, mga filter, bitmojis, ug ang abilidad sa pagdugang sa augmented reality animation, ug uban pang mga butang. Gitugotan usab sa chat app sa Snapchat ang mga tiggamit sa pagtipig sa mga litrato, pagtipig sa mga pakigpulong, pagdugang mga emoticon, ug uban pa.
Ang mapa sa Snapchat, taliwala sa ubang mga butang, nagtugot kanimo sa pag-monitor sa mga higala kung gusto nimo. Ang mga panumduman, pag-edit sa litrato, ug pagkonsumo sa sulud tanan bulag nga Snapchat apps nga adunay ilang talagsaon nga mga kapabilidad.
Gitugotan ka sa mga panumduman nga magtipig o magbag-o sa mga litrato o video para magamit sa ulahi, ingon usab i-upload o ipadala kini. Ang mga tiggamit mahimo usab nga mogamit sa pag-edit sa litrato aron maputol ang mga pelikula, pagdugang teksto, pagdugang mga sticker, ug uban pa.
Ang pagkonsumo sa sulud sa gawas sa Snapchat nagtumong sa kung unsa ang gipakita sa mga tiggamit base sa lainlaing mga parameter.
Microservices
Ang programa nagdepende pag-ayo sa JSON aron mahimo ang mga pangutana sa network sa panahon. Bisan pa, ang pag-parse sa JSON nag-usik sa oras ug dili epektibo. Gigamit sa Snapchat ang usa ka sentralisado nga API sa pagdumala sa network aron itago ang paggamit sa JSON ingon usa ka detalye sa pagpatuman aron masulbad kini nga problema.
Gipaila sa mga microservice ang mga hagit sa pagdumala sa estado sa aplikasyon, komunikasyon sa serbisyo, ug pagdumala sa kapakyasan. Gigamit sa Snapchat ang mga teknolohiya nga bukas nga gigikanan sama sa Temporal aron mabuntog ang mga kalisud sa orkestra aron makatukod usa ka lig-on ug kasaligan nga sistema.
Ingon usa ka sangputanan, ang organisasyon nakahukom nga mogamit usa ka pattern sa disenyo sa mesh sa serbisyo. Gigamit sa Snapchat ang Envoy, laing open-source nga himan nga naglihok isip proxy, aron makab-ot kini nga sumbanan. Gidumala sa Envoy ang dagan sa trapiko sa serbisyo pinaagi sa imprastraktura, nga naghatag panan-aw sa mga developer sa mga potensyal nga kalisud.
Naghimo ang Snapchat og internal nga app nga gitawag og Switchboard sulod sa service mesh. Ang Switchboard nagsilbi nga control panel para sa mga serbisyo ni Snap, nga nagtugot sa mga tiggamit sa pagbalhin sa trapiko, pagdumala sa mga dependency sa serbisyo (usa ka bahin nga nagtugot sa usa ka serbisyo nga madumala depende sa kahimtang sa uban), ug pag-drayb sa mga rehiyon.
Aron pasimplehon ang pagkakomplikado sa mga potensyal nga pag-configure sa sulod sa mga serbisyo, gigamit ang Switchboard imbis nga ibutyag ang tibuuk nga Envoy API. Ang Snap adunay komon nga internal ug rehiyonal nga network alang sa mga microservice niini salamat sa service mesh.
Ang mga serbisyo sa sulod sa parehas nga rehiyon mahimong magkonektar sa usag usa nga wala gigamit ang publiko nga Internet, ug wala’y trapiko sa gawas sa network nga makakomunikar sa mga bahin sa internal nga network.
Ang mga Gateway ra ang gitugotan nga ibutyag ang ilang kaugalingon sa internet alang sa mga hinungdan sa seguridad. Ang mga ganghaan sa API, pananglitan, mahimong dali nga magsilbi nga mga pultahan sa atubangan, pagproseso sa mga hangyo gikan sa mga kliyente / tiggamit ug pag-ruta kanila kauban ang network.
Network ug API Gateway
Ang tanan nga mga pangutana gikan sa kliyente sa Snapchat moabut pinaagi sa API Gateway. Gigamit niini ang parehas nga imahe sa Envoy ug nagkonektar sa parehas nga Control Plane sama sa among mga internal nga microservice. Gitugotan kami sa among Control Plane nga ma-enable ang custom nga mga filter sa Envoy.
Ang mga sistema sa pag-authenticate sa Snapchat, ingon man ang among mga teknolohiya sa paglimite sa rate ug pag-ula sa load, gidumala sa kini nga mga pagsala. Gigamit sa Envoy ang Service Mesh aron maruta ang mga hangyo sa may kalabotan nga microservice pagkahuman makompleto ang kadena sa filter.
Panapos
Ang agianan sa API sa Snapchat nag-ruta sa gawas nga trapiko sa daghang mga gamit sa app. Ang mga hangyo sa mga tiggamit nga usbon ang mga estado sa pag-configure gidumala sa mga server, nga unya paghatag og datos ug impormasyon balik sa daghang mga serbisyo sa app.
Sa kinatibuk-an, ang karon nga disenyo sa Snapchat mahimong itandi sa daghang mga programa nga nagdagan sa usa ka operating system, nga sa kini nga kaso mao ang Snapchat app. Gisulayan nako pag-ayo ang paghatag kanimo usa ka taas nga lebel nga kinatibuk-ang pagtan-aw sa disenyo sa sistema sa Snapchat. Nanghinaut ko nga imong nakita nga kini mapuslanon.
Leave sa usa ka Reply