Snapchat មានភាពល្បីល្បាញក្នុងចំណោម tweens និងក្មេងជំទង់។ អ្នកប្រហែលជាមានអាយុលើសពី 25 ឆ្នាំ ប្រសិនបើអ្នកមិនអាចដឹងថាតើវាដំណើរការយ៉ាងដូចម្តេច។ Snapchat ដែលជាកម្មវិធីប្រព័ន្ធផ្សព្វផ្សាយសង្គមដ៏ពេញនិយមបំផុតមួយ ផ្តល់ឱ្យកុមារ និងក្មេងជំទង់នូវអ្វីដែលពួកគេចង់បាន៖ វិធីសាស្រ្តងាយស្រួលក្នុងការចែករំលែកការកើតឡើងធម្មតា ខណៈពេលដែលធ្វើឱ្យពួកគេមើលទៅឡូយផងដែរ។
មិនដូច Facebook និង Twitter ដែលកត់ត្រា និងផ្សព្វផ្សាយអ្វីគ្រប់យ៉ាងដែលអ្នកធ្វើ Snapchat ប្រើសារដែលសន្មត់ថាបាត់ (មើលពីរបៀបដែលពួកគេធ្វើមិនបាន)។
មានច្រើនណាស់អំពី Snapchat ហើយប្រសិនបើអ្នកជាអ្នកអភិវឌ្ឍន៍វារឹតតែច្រើន។ ដូច្នេះ ការបង្ហោះនេះនឹងផ្តល់ឱ្យអ្នកនូវទិដ្ឋភាពកម្រិតខ្ពស់នៃ Snapchat ការរចនាប្រព័ន្ធ និងការយល់ដឹងជាច្រើនទៀត។
សេចក្តីផ្តើម
Snapchat មានមូលដ្ឋាននៅសហរដ្ឋអាមេរិក បណ្តាញសង្គម កម្មវិធីដែលអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់ភ្ជាប់ភ្លាមៗ ចែករំលែករូបភាព និងអ្វីៗជាច្រើនទៀត។
- សារ និងរូបភាព (ឬខ្ទាស់) មានពេលវេលាកំណត់ 24 ម៉ោង។ លើកទឹកចិត្តមនុស្សឱ្យចែករំលែករឿងរបស់ពួកគេជាក្រុម។
- Snap Map អនុញ្ញាតឱ្យអ្នកប្រើប្រាស់មើលឃើញនៅលើផែនទីដែលមិត្តភ័ក្តិរបស់ពួកគេនៅ។
- ការចងចាំរំលឹកអ្នកប្រើប្រាស់អំពីរូបថតដែលពួកគេរក្សាទុក ឬចែករំលែកមួយឆ្នាំក្រោយ។
- Snapchat គឺជាការពេញនិយមយ៉ាងខ្លាំងពីក្មេងជំនាន់ក្រោយ ជាពិសេសយុវវ័យ។ មានអ្នកប្រើប្រាស់សកម្ម 319 លាននាក់នៅលើកម្មវិធី ហើយ 5.4 ពាន់លានរូបថតត្រូវបានផ្ញើជារៀងរាល់ថ្ងៃ។
លក្ខខណ្ឌសំខាន់នៃការរចនា
ស្ថាបត្យកម្ម Monolithic - កម្មវិធីតែមួយជាន់ដែលដំណើរការដោយឯករាជ្យពីកម្មវិធីផ្សេងទៀតត្រូវបានគេស្គាល់ថាជា monolith (ស្ថាបត្យកម្ម monolithic) ។ Monolith ត្រូវបានរចនាឡើងដើម្បីអនុវត្ត និងដោះស្រាយរាល់សកម្មភាពដែលត្រូវការដើម្បីបំពេញកិច្ចការមួយ។ កម្មវិធីអនុវត្តមុខងារទាំងអស់ពីដើមដល់ចប់។
Microservices - វាប៉ូលទល់មុខ monoliths ។ Microservices គឺជាវិធីសាស្រ្តស្ថាបត្យកម្មដែលរៀបចំកម្មវិធីជាបណ្តុំនៃសេវាកម្ម។ សេវាកម្មទាំងនេះត្រូវបានប្រើដើម្បីគ្រប់គ្រងទិដ្ឋភាពជាច្រើននៃកម្មវិធីមួយ។ អតិថិជនធ្វើការបញ្ជាទិញ អ្នករត់តុយកវា ហើយប្រគល់វា ហើយមេចុងភៅរៀបចំវា។ ក្នុងឧទាហរណ៍នេះ សមាសធាតុនីមួយៗដំណើរការដោយឯករាជ្យ និងដាច់ដោយឡែកពីផ្នែកផ្សេងៗ។ គ្មាននរណាម្នាក់ដឹងច្បាស់ថាអ្នកផ្សេងទៀតកំពុងធ្វើអ្វីនោះទេ ហើយគ្មាននរណាម្នាក់អាចទទួលបានព័ត៌មានដូចគ្នានោះទេ។
JSON៖ វាជាទម្រង់អត្ថបទដែលអាចប្រើដើម្បីបង្ហាញវត្ថុ JavaScript, ព្យញ្ជនៈ, អារេ និងទិន្នន័យ។ ទម្រង់ដែលមានមូលដ្ឋានលើអត្ថបទនេះគឺមានគោលបំណងសាមញ្ញក្នុងការអាន និងសរសេរ ក៏ដូចជាអាចរំលាយបានដោយកម្មវិធី។ JSON ត្រូវបានគេប្រើជាទូទៅដើម្បីផ្ទេរទិន្នន័យ និងព័ត៌មានរវាងម៉ាស៊ីនមេ និងកម្មវិធីអនឡាញ។
Orchestration៖ បច្ចេកទេសនៃការធ្វើស្វ័យប្រវត្តិកម្មជាច្រើនត្រូវបានគេស្គាល់ថាជា orchestration ។ ការងារទាំងនេះរួមមានប្រព័ន្ធកុំព្យូទ័រ និងការកំណត់រចនាសម្ព័ន្ធកម្មវិធី ការសម្របសម្រួល និងការគ្រប់គ្រង។
ប្រូកស៊ី៖ ប្រូកស៊ីដើរតួជាទំនាក់ទំនងរវាងម៉ាស៊ីនភ្ញៀវដែលកំពុងស្វែងរកធនធាន និងម៉ាស៊ីនមេដែលផ្តល់វា។
ការប្រទាក់៖ សំណាញ់សេវាគឺជាគំរូស្ថាបត្យកម្មកម្មវិធីដែលបន្ថែមស្រទាប់មួយទៅស្រទាប់ហេដ្ឋារចនាសម្ព័ន្ធ ដើម្បីអនុញ្ញាតឱ្យទំនាក់ទំនងដែលបានគ្រប់គ្រង សង្កេតបាន និងមានសុវត្ថិភាពរវាងសេវាកម្មតាមរយៈប្រូកស៊ី។
ការរចនាកម្រិតខ្ពស់
បញ្ហា Monolithic
Snapchat មានដើមកំណើតជា cloud-based monolith ផ្អែកលើ Google App Engine ។ ទោះជាយ៉ាងណាក៏ដោយ ដោយសារកម្មវិធីនេះកាន់តែមានប្រជាប្រិយភាព និងទទួលបានអ្នកប្រើប្រាស់ និងទិន្នន័យកាន់តែច្រើន ការធ្វើមាត្រដ្ឋានបានក្លាយជាបញ្ហា។
លើសពីនេះទៀត ជាមួយនឹងកាំផ្ទុះដ៏ធំនៅក្នុង monolith ការរំខាននៃប្រព័ន្ធគឺអាចធ្វើទៅបានកាន់តែច្រើន។ បញ្ហាមួយរបស់ Snapchat ត្រូវបានកំណត់ថាជា "សោកនាដកម្មនៃមនុស្សទូទៅ" ដែលលក្ខណៈពិសេសបានប្រកួតប្រជែងសម្រាប់ការចូលប្រើធនធាន។ មុខងារកំពុងផ្ទុកនៅពេលចាប់ផ្តើមកម្មវិធី ដែលអនុញ្ញាតឱ្យមុខងារមួយចំនួនផ្ទុកលឿនជាងមុន ប៉ុន្តែមុខងារផ្សេងទៀតផ្ទុកយឺតជាង។
វិស្វករក៏បានស្វែងរកការមើលឃើញច្បាស់លាស់ ការបំបែក និងកម្មសិទ្ធិនៃសមាសធាតុរបស់ពួកគេពីទស្សនៈនៃការអភិវឌ្ឍន៍ ដូច្នេះសេវាកម្មអាចបត់បែនបាន និងមានប្រសិទ្ធភាព។
ការផ្លាស់ប្តូរ
នៅពេលដែល Snapchat បានពង្រីក ក្រុមហ៊ុនបានដឹងថាវាត្រូវការបំបែកហេដ្ឋារចនាសម្ព័ន្ធ monolithic របស់ខ្លួនទៅជាបំណែកតូចៗដែលមានប្រសិទ្ធភាពជាង។ ដើម្បីផ្តល់នូវការថយចុះភាពយឺតយ៉ាវ អង្គការបានសម្រេចចិត្តបង្កើតការរចនាដែលផ្អែកលើសេវាមីក្រូ។
ដើម្បីបំពេញគោលដៅទាំងនោះ Snapchat បានជ្រើសរើសធ្វើបច្ចុប្បន្នភាពកម្មវិធីរបស់ខ្លួនដោយប្រើ Amazon DynamoDB ដែលជាសេវាកម្មមូលដ្ឋានទិន្នន័យ NoSQL ដែលអាចធ្វើមាត្រដ្ឋានបាន។ ក្រុមហ៊ុនអាចកាត់បន្ថយភាពយឺតយ៉ាវជាមធ្យមបាន 20% ដែលជាលទ្ធផលនៃកិច្ចខិតខំប្រឹងប្រែងរបស់ខ្លួន។
កម្មវិធីនេះត្រូវបានសរសេរឡើងវិញទៅក្នុងកម្មវិធីតូចៗជាច្រើនដោយសាជីវកម្ម។ Snapchat បានចាប់ផ្តើមជាមួយនឹងកម្មវិធីជាច្រើន រួមទាំងកាមេរ៉ា ការជជែក ការចងចាំ ការកែរូបភាព ការប្រើប្រាស់ខ្លឹមសារ និងផែនទី។ ទោះបីជាការរួមបញ្ចូលកម្មវិធីទាំងនេះទៅក្នុង monolith តែមួយគឺងាយស្រួលសម្រាប់អ្នកប្រើប្រាស់ក៏ដោយ វាបានបង្កបញ្ហាបច្ចេកទេសធ្ងន់ធ្ងរទាក់ទងនឹងការរក្សាដំណើរការល្អ។
សម្រាប់ការសរសេរឡើងវិញ សាជីវកម្មបានបង្កើតច្បាប់មូលដ្ឋានជាច្រើន។ កុំផ្ទុកជាមុន; មុខងារនីមួយៗគួរតែជាកម្មវិធីរបស់វាផ្ទាល់ ហើយវាគួរតែលឿន។ Snapchat បានបញ្ឈប់ការកែប្រែនៅកន្លែងជាច្រើនដើម្បីបើកការសរសេរឡើងវិញ ដែលធ្វើឱ្យវាក្លាយជាកិច្ចការបច្ចេកទេសយ៉ាងតឹងរ៉ឹង។
ការរួមបញ្ចូលមុខងារបន្ថែម
កម្មវិធីកាមេរ៉ារបស់ Snapchat មានកញ្ចក់ តម្រង ប៊ីតម៉ូជី និងសមត្ថភាពក្នុងការបន្ថែមចលនាការពិតបន្ថែម ក្នុងចំណោមរបស់ផ្សេងៗទៀត។ កម្មវិធីជជែករបស់ Snapchat ក៏អនុញ្ញាតឱ្យអ្នកប្រើប្រាស់រក្សាទុករូបថត រក្សាទុកការពិភាក្សា បន្ថែមសញ្ញាអារម្មណ៍ និងច្រើនទៀត។
ផែនទីរបស់ Snapchat ក្នុងចំណោមរបស់ផ្សេងទៀត អនុញ្ញាតឱ្យអ្នកត្រួតពិនិត្យមិត្តភ័ក្តិ ប្រសិនបើពួកគេចង់ឱ្យអ្នក។ ការចងចាំ ការកែរូបថត និងការប្រើប្រាស់ខ្លឹមសារ គឺជាកម្មវិធី Snapchat ដាច់ដោយឡែក ដែលមានសមត្ថភាពពិសេសរបស់ពួកគេ។
ការចងចាំអនុញ្ញាតឱ្យអ្នករក្សាទុក ឬកែប្រែរូបថត ឬវីដេអូសម្រាប់ប្រើប្រាស់នៅពេលក្រោយ ក៏ដូចជាបង្ហោះ ឬផ្ញើពួកវាផងដែរ។ អ្នកប្រើប្រាស់ក៏អាចប្រើប្រាស់ការកែរូបភាពដើម្បីកាត់តខ្សែភាពយន្ត បន្ថែមអត្ថបទ បន្ថែមស្ទីគ័រ និងអ្វីៗជាច្រើនទៀត។
ការប្រើប្រាស់មាតិកាខាងក្រៅរបស់ Snapchat សំដៅទៅលើអ្វីដែលវាបង្ហាញអ្នកប្រើប្រាស់ដោយផ្អែកលើជួរនៃប៉ារ៉ាម៉ែត្រ។
Microservices
កម្មវិធីនេះពឹងផ្អែកយ៉ាងទូលំទូលាយលើ JSON ដើម្បីអនុវត្តសំណួរបណ្តាញនៅពេលនោះ។ ទោះយ៉ាងណាក៏ដោយ ការញែក JSON គឺចំណាយពេលច្រើន និងគ្មានប្រសិទ្ធភាព។ Snapchat បានប្រើ API គ្រប់គ្រងបណ្តាញកណ្តាល ដើម្បីបិទបាំងការប្រើប្រាស់ JSON ជាព័ត៌មានលម្អិតនៃការអនុវត្ត ដើម្បីដោះស្រាយបញ្ហានេះ។
Microservices ណែនាំពីបញ្ហាប្រឈមនៃការគ្រប់គ្រងរដ្ឋកម្មវិធី ការទំនាក់ទំនងសេវាកម្ម និងការគ្រប់គ្រងបរាជ័យ។ Snapchat បានប្រើបច្ចេកវិទ្យាប្រភពបើកចំហដូចជា Temporal ដើម្បីជម្នះការលំបាកក្នុងការ orchestration ដើម្បីបង្កើតប្រព័ន្ធរឹងមាំ និងអាចទុកចិត្តបាន។
ជាលទ្ធផល អង្គការបានសម្រេចចិត្តប្រើគំរូរចនាសំណាញ់សេវាកម្ម។ Snapchat បានប្រើ Envoy ដែលជាឧបករណ៍ប្រភពបើកចំហមួយផ្សេងទៀតដែលដើរតួជាប្រូកស៊ី ដើម្បីសម្រេចបាននូវគំរូនេះ។ បេសកជនបានគ្រប់គ្រងលំហូរនៃចរាចរណ៍សេវាកម្មតាមរយៈហេដ្ឋារចនាសម្ព័ន្ធ ដោយផ្តល់ឱ្យអ្នកអភិវឌ្ឍន៍មើលឃើញនូវការលំបាកដែលអាចកើតមាន។
Snapchat បានបង្កើតកម្មវិធីខាងក្នុងមួយហៅថា Switchboard នៅក្នុងសេវាសំណាញ់។ Switchboard បានបម្រើការជាផ្ទាំងបញ្ជាសម្រាប់សេវាកម្មរបស់ Snap ដែលអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់ផ្លាស់ប្តូរចរាចរណ៍ គ្រប់គ្រងភាពអាស្រ័យនៃសេវាកម្ម (លក្ខណៈពិសេសដែលអនុញ្ញាតឱ្យសេវាកម្មមួយត្រូវបានគ្រប់គ្រងអាស្រ័យលើលក្ខខណ្ឌរបស់អ្នកដទៃ) និងតំបន់បង្ហូរ។
ដើម្បីសម្រួលភាពស្មុគស្មាញនៃការកំណត់សក្តានុពលនៅក្នុងសេវាកម្ម Switchboard ត្រូវបានប្រើប្រាស់ជំនួសឱ្យការបង្ហាញ Envoy API ទាំងមូល។ Snap មានបណ្តាញខាងក្នុង និងតំបន់ទូទៅសម្រាប់សេវាមីក្រូរបស់វា ដោយសារបណ្តាញសេវា។
សេវាកម្មនៅក្នុងតំបន់តែមួយអាចភ្ជាប់គ្នាទៅវិញទៅមកដោយមិនប្រើអ៊ីនធឺណិតសាធារណៈ ហើយគ្មានចរាចរណ៍បណ្តាញខាងក្រៅអាចទាក់ទងជាមួយផ្នែកបណ្តាញខាងក្នុងបានទេ។
មានតែ Gateways ប៉ុណ្ណោះដែលត្រូវបានអនុញ្ញាតឱ្យបង្ហាញខ្លួនទៅកាន់អ៊ីនធឺណិតសម្រាប់ហេតុផលសុវត្ថិភាព។ ជាឧទាហរណ៍ API gateways អាចបម្រើជាទ្វារខាងមុខបានយ៉ាងងាយស្រួល ដំណើរការសំណើពីអតិថិជន/អ្នកប្រើប្រាស់ និងបញ្ជូនវាទៅជាមួយបណ្តាញ។
បណ្តាញ និង API Gateway
សំណួរទាំងអស់ពីអតិថិជន Snapchat មកតាមរយៈ API Gateway ។ វាប្រើរូបភាព Envoy ដូចគ្នា ហើយភ្ជាប់ទៅ Control Plane ដូចគ្នាទៅនឹងសេវាកម្មមីក្រូខាងក្នុងរបស់យើង។ យន្តហោះគ្រប់គ្រងរបស់យើងអនុញ្ញាតឱ្យយើងបើកតម្រងប្រេសិតផ្ទាល់ខ្លួន។
ប្រព័ន្ធផ្ទៀងផ្ទាត់របស់ Snapchat ក៏ដូចជាការកំណត់អត្រាការប្រាក់ និងបច្ចេកវិជ្ជាផ្ទុកទិន្នន័យរបស់យើងត្រូវបានគ្រប់គ្រងដោយតម្រងទាំងនេះ។ បេសកជនប្រើប្រាស់ Service Mesh ដើម្បីបញ្ជូនសំណើទៅកាន់សេវាមីក្រូដែលពាក់ព័ន្ធ បន្ទាប់ពីខ្សែសង្វាក់តម្រងត្រូវបានបញ្ចប់។
សន្និដ្ឋាន
API gateway របស់ Snapchat បញ្ជូនចរាចរខាងក្រៅទៅកាន់មុខងារជាច្រើនរបស់កម្មវិធី។ សំណើរបស់អ្នកប្រើដើម្បីកែប្រែស្ថានភាពកំណត់រចនាសម្ព័ន្ធត្រូវបានគ្រប់គ្រងដោយម៉ាស៊ីនមេ ដែលបន្ទាប់មក ផ្តល់ទិន្នន័យ និងព័ត៌មានត្រឡប់ទៅសេវាកម្មជាច្រើនរបស់កម្មវិធី។
សរុបមក ការរចនាបច្ចុប្បន្នរបស់ Snapchat អាចប្រៀបធៀបទៅនឹងកម្មវិធីជាច្រើនដែលដំណើរការលើប្រព័ន្ធប្រតិបត្តិការតែមួយ ដែលក្នុងករណីនេះគឺជាកម្មវិធី Snapchat ។ ខ្ញុំបានព្យាយាមយ៉ាងខ្លាំងដើម្បីផ្តល់ឱ្យអ្នកនូវទិដ្ឋភាពទូទៅកម្រិតខ្ពស់នៃការរចនាប្រព័ន្ធ Snapchat ។ ខ្ញុំសង្ឃឹមថាអ្នកបានរកឃើញវាមានប្រយោជន៍។
សូមផ្ដល់យោបល់