Snapchat нь өсвөр насныхан болон өсвөр насныхны дунд алдартай. Хэрэв та энэ нь хэрхэн ажилладагийг ойлгохгүй байгаа бол та 25-аас дээш настай байх магадлалтай. Сошиал медиагийн хамгийн алдартай програмуудын нэг болох Snapchat нь хүүхэд, өсвөр насныханд яг хүссэн зүйлийг нь өгдөг: энгийн тохиолдлуудыг хуваалцахын зэрэгцээ тэднийг сайхан харагдуулах хялбар арга юм.
Таны хийж буй бүх зүйлийг бичиж, нийтэлдэг Facebook, Twitter-ээс ялгаатай нь Snapchat нь алга болох ёстой мессежүүдийг ашигладаг (тэдгээр нь хэрхэн алга болохыг харна уу).
Snapchat-ийн талаар маш их зүйл байдаг бөгөөд хэрэв та хөгжүүлэгч бол бүр ч илүү юм. Тиймээс энэ нийтлэл нь танд Snapchat-ийн өндөр түвшний үзэл бодлыг өгөх болно системийн дизайн болон бусад олон ойлголт.
Оршил
Snapchat нь АНУ-д байрладаг олон нийтийн сүлжээ Хэрэглэгчдэд нэн даруй холбогдох, зураг хуваалцах болон бусад зүйлийг хийх боломжийг олгодог програм.
- Мессеж, зураг (эсвэл агшин зуур) нь 24 цагийн хязгаартай. Хүмүүсийг бүлгээрээ түүхээ хуваалцахыг урамшуулдаг.
- Snap Map нь хэрэглэгчдэд найз нөхдийнхөө хаана байгааг газрын зураг дээрээс харах боломжийг олгодог.
- Дурсамж нь хэрэглэгчдэд жилийн дараа хадгалсан эсвэл хуваалцсан зургаа сануулдаг.
- Snapchat нь залуу үеийнхэн, ялангуяа өсвөр насныхны дунд маш их алдартай. Аппликейшн дээр 319 сая идэвхтэй хэрэглэгч байгаа бөгөөд өдөр бүр 5.4 тэрбум snap илгээгддэг.
Загварын чухал нөхцлүүд
Монолит архитектур – Бусад хэрэглээнээс хамааралгүй ажилладаг нэг шатлалт программыг цул (монолит архитектур) гэж нэрлэдэг. Монолит нь аливаа ажлыг гүйцэтгэхэд шаардлагатай бүх үйл ажиллагааг гүйцэтгэх, зохицуулах зориулалттай. Програм нь эхнээс нь дуустал бүх функцийг гүйцэтгэдэг.
Microservices – Цул чулуунуудын эсрэг туйл. Microservices нь программыг үйлчилгээний цуглуулга болгон зохион байгуулдаг архитектурын арга юм. Эдгээр үйлчилгээг програмын олон талыг хянахад ашигладаг. Үйлчлүүлэгч захиалгаа өгч, зөөгч авч хүргэж, тогооч бэлддэг. Энэ жишээнд бүрэлдэхүүн хэсэг тус бүр нь бие даасан, бусдаас тусад нь ажилладаг; бусад нь яг юу хийж байгааг хэн ч мэдэхгүй, хэн ч ижил мэдээлэл авах боломжгүй.
JSON: Энэ нь JavaScript объект, литерал, массив, өгөгдлийг харуулахад ашиглаж болох текстэд суурилсан формат юм. Текстэд суурилсан энэхүү формат нь унших, бичихэд хялбар байхаас гадна програм хангамжид шингэцтэй байх зорилготой юм. JSON нь сервер болон онлайн програмуудын хооронд өгөгдөл, мэдээлэл дамжуулахад ихэвчлэн ашиглагддаг.
Найрал хөгжим: Олон үйлдлийг автоматжуулах арга техникийг найрал хөгжим гэж нэрлэдэг. Эдгээр ажилд компьютерийн систем, програм хангамжийн тохиргоо, зохицуулалт, удирдлага орно.
Прокси: Прокси нь нөөц хайж буй үйлчлүүлэгч болон түүнийг хангадаг серверийн хооронд холбогч үүрэг гүйцэтгэдэг.
Mesh: Үйлчилгээний сүлжээ нь дэд бүтцийн давхаргад давхаргыг нэмдэг программ хангамжийн архитектурын загвар бөгөөд прокси-ээр дамжуулан үйлчилгээнүүдийн хооронд зохицуулалттай, ажиглагдаж болохуйц, аюулгүй харилцаа холбоо тогтоох боломжийг олгодог.
Өндөр түвшний дизайн
Монолит асуудлууд
Snapchat нь Google App Engine дээр суурилсан үүлд суурилсан цул хэлбэрээр үүссэн. Гэсэн хэдий ч, энэ програм нь алдар нэр нь өсөж, илүү олон хэрэглэгч, мэдээлэл олж авснаар өргөтгөх чадвар нь асуудал болсон.
Нэмж дурдахад цул доторх асар том дэлбэрэлтийн радиустай тул системийн хэмжээнд эвдрэл гарах магадлал өндөр байв. Snapchat-ийн асуудлуудын нэг нь "нийтлэг байдлын эмгэнэл" гэж тодорхойлсон бөгөөд үүнд онцлог шинж чанарууд нь нөөцөд хандахын тулд өрсөлдсөн; функцууд програмыг эхлүүлэх үед ачаалагдаж байсан нь зарим функцийг илүү хурдан ачаалах боловч бусад нь удаан ачаалах боломжийг олгосон.
Инженерүүд мөн үйлчилгээний уян хатан, үр ашигтай байхын тулд хөгжүүлэлтийн үүднээс тэдгээрийн бүрэлдэхүүн хэсгүүдийн тодорхой харагдах байдал, тусгаарлалт, өмчлөлийг эрэлхийлсэн.
Хувиргах
Snapchat өргөжин тэлэхийн хэрээр тус компани цул дэд бүтцээ жижиг, илүү үр ашигтай хэсгүүдэд хуваах шаардлагатайг ойлгосон. Хоцролтыг багасгахын тулд байгууллага нь бичил үйлчилгээнд суурилсан загварыг боловсруулахаар шийдсэн.
Эдгээр зорилгыг биелүүлэхийн тулд Snapchat программ хангамжаа Amazon DynamoDB, өргөтгөх боломжтой NoSQL мэдээллийн сангийн үйлчилгээг ашиглан шинэчлэхээр сонгосон. Пүүс хүчин чармайлтынхаа үр дүнд дундаж хоцролтыг 20% бууруулж чадсан.
Тус корпораци нь уг програмыг олон тооны жижиг програмууд болгон дахин бичсэн. Snapchat нь камер, чат, дурсамж, зураг засварлах, агуулгын хэрэглээ, газрын зураг гэх мэт олон программуудыг ашиглаж эхэлсэн. Хэдийгээр эдгээр программуудыг нэг цул болгон нэгтгэх нь хэрэглэгчдэд тохиромжтой байсан ч сайн гүйцэтгэлийг хадгалахад техникийн ноцтой асуудал үүсгэсэн.
Дахин бичихийн тулд корпораци олон үндсэн дүрмийг тогтоосон. Урьдчилан ачаалах хэрэггүй; онцлог бүр өөрийн гэсэн програм байх ёстой бөгөөд энэ нь хурдан байх ёстой. Snapchat дахин бичихийг идэвхжүүлэхийн тулд хэд хэдэн газарт өөрчлөлт оруулахаа зогсоож, үүнийг техникийн ажил болгожээ.
Нэмэлт функцуудыг нэгтгэх
Snapchat-ийн камерын аппликейшн нь линз, шүүлтүүр, битможи болон бусад зүйлсээс гадна бодит байдлын нэмэгдүүлсэн анимейшн нэмэх чадвартай. Snapchat-ийн чат програм нь мөн хэрэглэгчдэд гэрэл зураг хадгалах, яриа хадгалах, эмотикон нэмэх гэх мэт боломжийг олгодог.
Snapchat-ийн газрын зураг нь бусад зүйлсээс гадна найз нөхдөө хүсвэл тэднийг хянах боломжийг олгодог. Дурсамж, зураг засварлах, агуулгын хэрэглээ зэрэг нь өвөрмөц чадвартай, тусдаа Snapchat програмууд юм.
Дурсамж нь гэрэл зураг, видеог хадгалах, өөрчлөх, дараа нь ашиглах, байршуулах, илгээх боломжийг олгодог. Хэрэглэгчид зураг засварлах аргыг ашиглан кино тайрах, текст нэмэх, наалт нэмэх гэх мэт олон зүйлийг хийх боломжтой.
Snapchat-ийн гадаад контентын хэрэглээ нь олон тооны параметр дээр үндэслэн хэрэглэгчдэд үзүүлж буй зүйлийг илэрхийлдэг.
Microservices
Тухайн үед сүлжээний асуулгыг гүйцэтгэхийн тулд программ нь JSON-ээс ихээхэн хамааралтай байсан. Гэсэн хэдий ч JSON-г задлан шинжлэх нь цаг хугацаа их шаарддаг бөгөөд үр ашиггүй байсан. Snapchat нь төвлөрсөн сүлжээний удирдлагын API-г ашиглан JSON-ийг энэ асуудлыг шийдвэрлэхийн тулд хэрэгжүүлэлтийн дэлгэрэнгүй болгон ашиглахыг далдалсан.
Бичил үйлчилгээ нь хэрэглээний төлөвийн удирдлага, үйлчилгээний харилцаа холбоо, алдааны менежментийн сорилтуудыг танилцуулдаг. Snapchat нь хүчирхэг, найдвартай системийг бий болгохын тулд зохион байгуулалтын хүндрэлийг даван туулахын тулд Temporal зэрэг нээлттэй эхийн технологийг ашигласан.
Үүний үр дүнд байгууллага нь үйлчилгээний торон дизайны загварыг ашиглахаар шийдсэн. Энэ загварт хүрэхийн тулд Snapchat нь прокси үүрэг гүйцэтгэдэг өөр нэг нээлттэй эх сурвалж болох Envoy хэрэгслийг ашигласан. Элч дэд бүтцээр дамжуулан үйлчилгээний урсгалын урсгалыг удирдаж, хөгжүүлэгчдэд учирч болзошгүй хүндрэлийг харуулах боломжийг олгосон.
Snapchat нь үйлчилгээний сүлжээн дотор Switchboard нэртэй дотоод програмыг бүтээжээ. Switchboard нь Snap-ийн үйлчилгээний хяналтын самбар болж, хэрэглэгчдэд траффик шилжүүлэх, үйлчилгээний хамаарлыг удирдах (бусдын нөхцөл байдлаас шалтгаалан нэг үйлчилгээг удирдах боломжийг олгодог онцлог) болон бүс нутгийг зайлуулах боломжийг олгодог.
Үйлчилгээн дэх боломжит тохиргооны нарийн төвөгтэй байдлыг хялбарчлахын тулд Envoy API-г бүхэлд нь харуулахын оронд Switchboard-ийг ашигласан. Snap нь үйлчилгээний торны ачаар микро үйлчилгээндээ зориулж нийтлэг дотоод болон бүс нутгийн сүлжээтэй байдаг.
Нэг бүс доторх үйлчилгээнүүд нь нийтийн интернет ашиглахгүйгээр өөр хоорондоо холбогдож болох ба ямар ч гадаад сүлжээний траффик дотоод сүлжээний хэсгүүдтэй холбогдож чадахгүй.
Зөвхөн гарцууд аюулгүй байдлын үүднээс интернетэд өөрийгөө харуулах эрхтэй. Жишээлбэл, API гарцууд нь үйлчлүүлэгч/хэрэглэгчийн хүсэлтийг боловсруулж, сүлжээний хамт чиглүүлж, урд хаалга болж чаддаг.
Сүлжээ ба API гарц
Snapchat клиентээс ирсэн бүх асуултууд API Gateway-ээр дамжин ирдэг. Энэ нь ижил Envoy дүрсийг ашигладаг бөгөөд манай дотоод бичил үйлчилгээтэй ижил Control Plane-д холбогддог. Манай хяналтын онгоц нь захиалгат элч шүүлтүүрийг идэвхжүүлэх боломжийг бидэнд олгодог.
Snapchat-ийн нэвтрэлт таних систем, түүнчлэн манай хурдыг хязгаарлах, ачааллыг бууруулах технологиуд эдгээр шүүлтүүрээр зохицуулагддаг. Элч нь шүүлтүүрийн сүлжээ дууссаны дараа холбогдох бичил үйлчилгээ рүү хүсэлтийг чиглүүлэхийн тулд Service Mesh-ийг ашигладаг.
Дүгнэлт
Snapchat-ийн API гарц нь гадаад урсгалыг програмын олон функц руу чиглүүлдэг. Хэрэглэгчдийн тохиргооны төлөвийг өөрчлөх хүсэлтийг серверүүд удирддаг бөгөөд дараа нь өгөгдөл өгөх мөн програмын олон тооны үйлчилгээнүүдийн мэдээлэл.
Ерөнхийдөө Snapchat-ийн одоогийн загварыг нэг үйлдлийн систем дээр ажилладаг хэд хэдэн програмтай харьцуулж болох бөгөөд энэ нь Snapchat програм юм. Би танд Snapchat системийн дизайны талаар өндөр түвшний тойм өгөхийг маш их хичээсэн. Танд хэрэг болсон гэж найдаж байна.
хариу үлдээх