Snapchat კარგად არის ცნობილი თინეიჯერებსა და მოზარდებში. ალბათ 25 წელზე მეტი ხარ, თუ ვერ ხვდები როგორ მუშაობს. Snapchat, სოციალური მედიის ერთ-ერთი ყველაზე პოპულარული აპლიკაცია, ბავშვებსა და მოზარდებს აძლევს ზუსტად იმას, რაც მათ სურთ: მარტივი მეთოდი ჩვეულებრივი მოვლენების გასაზიარებლად და ამავე დროს, მათ ლამაზად აქცევს.
განსხვავებით Facebook-ისა და Twitter-ისგან, რომლებიც ჩაწერენ და აქვეყნებენ ყველაფერს, რასაც აკეთებთ, Snapchat იყენებს შეტყობინებებს, რომლებიც უნდა გაქრეს (იხილეთ, როგორ არ ქრება).
Snapchat-ის შესახებ ბევრი რამ არის და თუ დეველოპერი ხართ, ეს კიდევ უფრო მეტია. ასე რომ, ეს პოსტი მოგცემთ Snapchat-ის მაღალი დონის ხედს სისტემის დიზაინი და ბევრად მეტი შეხედულება.
შესავალი
Snapchat არის აშშ-ში დაფუძნებული სოციალური ქსელის აპლიკაცია, რომელიც მომხმარებლებს საშუალებას აძლევს დაუყოვნებლივ დაუკავშირდნენ, გააზიარონ სურათები და სხვა.
- შეტყობინებებსა და სურათებს (ან კადრებს) აქვს 24-საათიანი ვადა. წაახალისებს ადამიანებს, გაუზიარონ თავიანთი ისტორიები ჯგუფებში.
- Snap Map საშუალებას აძლევს მომხმარებლებს დაინახონ რუკაზე, სად არიან მათი მეგობრები.
- მოგონებები მომხმარებლებს ახსენებს მათ მიერ შენახულ ან გაზიარებულ ფოტოებს ერთი წლის შემდეგ.
- Snapchat ძალიან პოპულარულია ახალგაზრდა თაობებში, განსაკუთრებით მოზარდებში. აპლიკაციაში 319 მილიონი აქტიური მომხმარებელია და ყოველდღიურად 5.4 მილიარდი სნეი იგზავნება.
დიზაინის მნიშვნელოვანი პირობები
მონოლითური არქიტექტურა – ერთსაფეხურიანი აპლიკაცია, რომელიც მუშაობს სხვა აპლიკაციებისგან დამოუკიდებლად, ცნობილია როგორც მონოლითი (მონოლითური არქიტექტურა). მონოლითი შექმნილია დავალების შესასრულებლად საჭირო ყველა აქტივობის შესასრულებლად და გასატარებლად. აპლიკაცია ასრულებს ყველა ფუნქციას თავიდან ბოლომდე.
მიკროსერვისი - მონოლითების პოლარული საპირისპიროა. მიკროსერვისი არის არქიტექტურული მიდგომა, რომელიც აწყობს აპლიკაციას, როგორც სერვისების კოლექციას. ეს სერვისები გამოიყენება აპლიკაციის მრავალი ასპექტის გასაკონტროლებლად. მომხმარებელი დებს შეკვეთას, მიმტანი იღებს მას და აწვდის მას, შეფ-მზარეული კი ამზადებს. ამ მაგალითში თითოეული კომპონენტი ფუნქციონირებს დამოუკიდებლად და სხვებისგან განცალკევებით; არავინ იცის ზუსტად რას აკეთებენ სხვები და არავის აქვს წვდომა იმავე ინფორმაციაზე.
JSON: ეს არის ტექსტზე დაფუძნებული ფორმატი, რომელიც შეიძლება გამოყენებულ იქნას JavaScript ობიექტების, ლიტერალების, მასივების და მონაცემების საჩვენებლად. ტექსტზე დაფუძნებული ეს ფორმატი განკუთვნილია იყოს მარტივი წასაკითხად და ჩასაწერად, ასევე პროგრამული უზრუნველყოფის საშუალებით. JSON ჩვეულებრივ გამოიყენება მონაცემთა და ინფორმაციის გადასაცემად სერვერებსა და ონლაინ აპლიკაციებს შორის.
ორკესტრირება: მრავალი ოპერაციის ავტომატიზაციის ტექნიკა ცნობილია როგორც ორკესტრაცია. ეს სამუშაოები მოიცავს კომპიუტერული სისტემის და პროგრამული უზრუნველყოფის კონფიგურაციას, კოორდინაციას და ადმინისტრირებას.
Proxy: პროქსი მოქმედებს როგორც შუამავალი კლიენტს შორის, რომელიც ეძებს რესურსს და სერვერს, რომელიც უზრუნველყოფს მას.
Mesh: სერვისული ქსელი არის პროგრამული უზრუნველყოფის არქიტექტურის ნიმუში, რომელიც ამატებს ფენას ინფრასტრუქტურის ფენას, რათა უზრუნველყოს რეგულირებადი, დაკვირვებადი და უსაფრთხო კომუნიკაცია სერვისებს შორის პროქსის მეშვეობით.
მაღალი დონის დიზაინი
მონოლითური პრობლემები
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 სერვისის ქსელში. Switchboard ემსახურებოდა Snap-ის სერვისების მართვის პანელს, რომელიც მომხმარებლებს საშუალებას აძლევდა გადაიტანონ ტრაფიკი, მართონ სერვისის დამოკიდებულებები (მახასიათებელი, რომელიც საშუალებას აძლევს ერთი სერვისის მართვას სხვების მდგომარეობაზე დამოკიდებული) და რეგიონების გადინებას.
სერვისებში პოტენციური კონფიგურაციების სირთულის გასამარტივებლად, Switchboard გამოიყენეს მთელი Envoy API-ის გამოვლენის ნაცვლად. Snap-ს აქვს საერთო შიდა და რეგიონალური ქსელი მიკროსერვისებისთვის, სერვისის ქსელის წყალობით.
იმავე რეგიონში არსებულ სერვისებს შეეძლოთ ერთმანეთთან დაკავშირება საჯარო ინტერნეტის გამოყენების გარეშე და ვერც ერთი გარე ქსელის ტრაფიკი ვერ დაუკავშირდა შიდა ქსელის ნაწილებს.
მხოლოდ Gateways-ს ექნება უფლება, გაამჟღავნოს თავი ინტერნეტში უსაფრთხოების მიზეზების გამო. მაგალითად, API კარიბჭეები შეიძლება ადვილად ემსახურებოდეს წინა კარებს, კლიენტების/მომხმარებლების მოთხოვნების დამუშავებას და მათ ქსელთან ერთად მარშრუტიზაციას.
ქსელი და API კარიბჭე
Snapchat კლიენტის ყველა მოთხოვნა მოდის API Gateway-ის მეშვეობით. ის იყენებს იგივე Envoy-ის სურათს და უკავშირდება იმავე საკონტროლო თვითმფრინავს, როგორც ჩვენი შიდა მიკროსერვისები. ჩვენი საკონტროლო თვითმფრინავი საშუალებას გვაძლევს ჩართოთ მორგებული Envoy ფილტრები.
Snapchat-ის ავთენტიფიკაციის სისტემები, ისევე როგორც ჩვენი სიჩქარის შეზღუდვისა და დატვირთვის შემცირების ტექნოლოგიები, დამუშავებულია ამ ფილტრებით. Envoy იყენებს Service Mesh-ს ფილტრის ჯაჭვის დასრულების შემდეგ მოთხოვნები შესაბამის მიკროსერვისში გადასატანად.
დასკვნა
Snapchat-ის API კარიბჭე მარშრუტებს გარე ტრაფიკს აპლიკაციის მრავალ ფუნქციამდე. მომხმარებლების მოთხოვნები კონფიგურაციის მდგომარეობის შესაცვლელად იმართება სერვერების მიერ, რომლებიც შემდეგ მონაცემების მიწოდება და ინფორმაციის დაბრუნება აპლიკაციის მრავალრიცხოვან სერვისებზე.
საერთო ჯამში, Snapchat-ის ამჟამინდელი დიზაინი შეიძლება შევადაროთ რამდენიმე პროგრამას, რომელიც მუშაობს ერთ ოპერაციულ სისტემაზე, რომელიც ამ შემთხვევაში არის Snapchat აპი. მე ძალიან ვცდილობდი მოგაწოდოთ Snapchat სისტემის დიზაინის მაღალი დონის მიმოხილვა. იმედი მაქვს, რომ თქვენთვის სასარგებლო აღმოჩნდა.
დატოვე პასუხი