Snapchat е добро познат меѓу тинејџерите и тинејџерите. Веројатно сте над 25 години ако не можете да сфатите како функционира. Snapchat, една од најпопуларните апликации за социјални медиуми, им овозможува на децата и адолесцентите токму она што го сакаат: лесен метод за споделување обични појави, а истовремено правејќи ги да изгледаат кул.
За разлика од Фејсбук и Твитер, кои снимаат и објавуваат сè што правите, Snapchat користи пораки кои би требало да исчезнат (видете како не го прават тоа).
Има многу за Snapchat, а ако сте програмер, тоа е уште повеќе. Значи, оваа објава ќе ви даде приказ на високо ниво на Snapchat дизајн на системот и многу повеќе сознанија.
Вовед
Snapchat е со седиште во САД социјална мрежа апликација која им овозможува на корисниците веднаш да се поврзат, да споделуваат слики и многу повеќе.
- Пораките и сликите (или снимките) имаат временско ограничување од 24 часа. Ги охрабрува луѓето да ги споделуваат своите приказни во групи.
- Snap Map им овозможува на корисниците да видат на мапа каде се нивните пријатели.
- Спомените ги потсетуваат корисниците на фотографиите што ги зачувале или споделиле една година подоцна.
- Snapchat е исклучително популарен кај помладите генерации, особено кај тинејџерите. Има 319 милиони активни корисници на апликацијата, а секој ден се испраќаат 5.4 милијарди снимки.
Важни услови за дизајн
Монолитна архитектура – Едностепената апликација која работи независно од другите апликации е позната како монолит (монолитна архитектура). Монолитот е дизајниран за извршување и справување со сите активности потребни за да се заврши задачата. Апликацијата ги извршува сите функции од почеток до крај.
Микро услуги – Тоа е поларна спротивност на монолитите. Микро услуги е архитектонски пристап кој организира апликација како збирка на услуги. Овие услуги се користат за контрола на многу аспекти на апликацијата. Муштерија прави нарачка, келнер ја зема и ја доставува, а готвач ја подготвува. Во овој пример, секоја компонента функционира независно и одделно од другите; никој не знае што точно прават другите, и никој нема пристап до истите информации.
JSON: Тоа е формат базиран на текст кој може да се користи за прикажување на JavaScript објекти, буквали, низи и податоци. Овој формат базиран на текст е наменет да биде едноставен за читање и пишување, како и да биде сварлив со софтвер. JSON најчесто се користи за пренос на податоци и информации помеѓу сервери и онлајн апликации.
Оркестрација: Техниката на автоматизирање на многу операции е позната како оркестрација. Овие работни места вклучуваат конфигурација на компјутерски систем и софтвер, координација и администрација.
Меѓу: Прокси делува како посредник помеѓу клиентот кој бара ресурс и серверот што го обезбедува.
Решетката: Сервисната мрежа е шема на софтверска архитектура која додава слој на слојот на инфраструктурата за да овозможи регулирана, забележлива и безбедна комуникација помеѓу услугите преку прокси.
Дизајн на високо ниво
Монолитни проблеми
Snapchat потекнува како монолит базиран на облак базиран на Google App Engine. Меѓутоа, како што програмата растеше во популарност и добиваше повеќе корисници и податоци, приспособливоста стана проблем.
Дополнително, со огромен радиус на експлозија во монолитот, пореметувања низ целиот систем беа повозможни. Еден од проблемите на Snapchat беше дефиниран како „трагедија на заедничките работи“, во која карактеристиките се натпреваруваа за пристап до ресурсите; функциите се вчитуваа во времето на стартување на апликацијата, овозможувајќи одредени функции да се вчитуваат побрзо, но другите да се вчитуваат побавно.
Инженерите, исто така, бараа јасна видливост, одвојување и сопственост на нивните компоненти од развојна гледна точка, за да може услугата да биде флексибилна и ефикасна.
Трансформација
Како што се ширеше Snapchat, компанијата сфати дека треба да ја разложи својата монолитна инфраструктура на помали, поефикасни делови. Со цел да обезбеди намалена латентност, организацијата одлучи да развие дизајн заснован на микросервис.
За да ги исполни тие цели, Snapchat одлучи да го ажурира својот софтвер користејќи Amazon DynamoDB, скалабилна услуга за база на податоци NoSQL. Фирмата успеа да ја намали средната латентност за 20% како резултат на нејзините напори.
Апликацијата беше препишана во бројни помали апликации од корпорацијата. Snapchat започна со бројни апликации, вклучувајќи камера, разговор, мемории, уредување слики, потрошувачка на содржина и мапа. Иако интегрирањето на овие програми во еден монолит беше погодно за потрошувачите, тоа претставува сериозен технички проблем во смисла на одржување на добри перформанси.
За препишување, корпорацијата воспостави многу основни правила. Не вчитајте однапред; секоја функција треба да биде своја апликација и треба да биде брза. Snapchat ги запре модификациите на неколку места за да овозможи препишување, што го прави строго техничка задача.
Интеграција на дополнителни функции
Апликацијата за камера на Snapchat има леќи, филтри, битмоџи и можност за додавање анимации со проширена реалност, меѓу другото. Апликацијата за разговор на Snapchat исто така им овозможува на корисниците да складираат фотографии, да зачувуваат разговори, да додаваат емотикони и многу повеќе.
Мапата на Snapchat, меѓу другото, ви овозможува да ги следите пријателите доколку тие тоа го сакаат. Сеќавањата, уредувањето фотографии и потрошувачката на содржина се посебни Snapchat апликации со нивните уникатни способности.
Мемориите ви дозволуваат да складирате или менувате фотографии или видеа за подоцнежна употреба, како и да ги прикачувате или испраќате. Корисниците можат да користат и уредување слики за да сечат филмови, да додаваат текст, да додаваат налепници и многу повеќе.
Потрошувачката на надворешна содржина на Snapchat се однесува на она што им го покажува на корисниците врз основа на низа параметри.
Микро услуги
Програмата многу зависеше од JSON за извршување на мрежни прашања во тоа време. Сепак, парсирањето на JSON одземаше време и неефикасно. Snapchat користеше централизирано API за управување со мрежата за да ја прикрие употребата на JSON како детал за имплементација за да се справи со овој проблем.
Микросервисите ги воведуваат предизвиците на управувањето со состојбата на апликацијата, сервисната комуникација и управувањето со неуспеси. Snapchat користеше технологии со отворен код како Temporal за да ги надмине тешкотиите во оркестрацијата со цел да изгради силен и сигурен систем.
Како резултат на тоа, организацијата одлучи да користи шема за дизајн на сервисна мрежа. Snapchat користеше Envoy, друга алатка со отворен код што делува како прокси, за да ја постигне оваа шема. Envoy управуваше со протокот на услужен сообраќај преку инфраструктурата, давајќи им на програмерите видливост за потенцијалните тешкотии.
Snapchat создаде внатрешна апликација наречена Switchboard во рамките на сервисната мрежа. Разводната табла служеше како контролна табла за услугите на Snap, дозволувајќи им на корисниците да го менуваат сообраќајот, да управуваат со зависностите на услугите (функција што овозможува управување со една услуга во зависност од состојбата на другите) и да ги испуштаат регионите.
За да се поедностави сложеноста на потенцијалните конфигурации во рамките на услугите, се користеше Switchboard наместо да се открие целото Envoy API. Snap има заедничка внатрешна и регионална мрежа за своите микроуслуги благодарение на сервисната мрежа.
Услугите во истиот регион би можеле да се поврзат една со друга без користење на јавен интернет и ниту еден надворешен мрежен сообраќај не може да комуницира со внатрешните мрежни делови.
Само Gateways ќе бидат овластени да се изложуваат на интернет од безбедносни причини. Портите на API, на пример, може лесно да служат како влезни врати, да обработуваат барања од клиенти/корисници и да ги насочуваат заедно со мрежата.
Портал на мрежа и API
Сите прашања од клиентот Snapchat доаѓаат преку API Gateway. Ја користи истата слика на Envoy и се поврзува со истата контролна рамнина како и нашите внатрешни микросервиси. Нашиот контролен план ни овозможува да ги овозможиме приспособените филтри на Емисијата.
Овие филтри се управуваат со системите за автентикација на Snapchat, како и со нашите технологии за ограничување на стапката и намалување на оптоварувањето. Envoy користи Service Mesh за да ги насочува барањата до соодветната микросервис откако ќе заврши синџирот на филтри.
Заклучок
Портата API на Snapchat го насочува надворешниот сообраќај до многуте функционалности на апликацијата. Барањата на корисниците за менување на конфигурациските состојби се управувани од сервери, кои потоа обезбеди податоци и информации назад до бројните услуги на апликацијата.
Генерално, сегашниот дизајн на Snapchat може да се спореди со неколку програми што работат на еден оперативен систем, кој во овој случај е апликацијата Snapchat. Се обидов многу да ви дадам преглед на високо ниво на дизајнот на системот Snapchat. Се надевам дека ви беше корисно.
Оставете Одговор