Snapchat သည် ဆယ်ကျော်သက်များနှင့် ဆယ်ကျော်သက်များကြားတွင် လူသိများသည်။ ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာကို သင်မသိနိုင်ရင် 25 နဲ့အထက်ဖြစ်နိုင်ပါတယ်။ ရေပန်းအစားဆုံး ဆိုရှယ်မီဒီယာ အပလီကေးရှင်းများထဲမှ တစ်ခုဖြစ်သည့် Snapchat သည် ကလေးများနှင့် ဆယ်ကျော်သက်များအား ၎င်းတို့လိုချင်သည့်အရာကို အတိအကျ ပေးဆောင်သည်- ၎င်းတို့ကို အေးမြစေသည့်အပြင် သာမန်အဖြစ်အပျက်များကို မျှဝေရန် လွယ်ကူသောနည်းလမ်းဖြစ်သည်။
သင်လုပ်သမျှကို မှတ်တမ်းတင်ပြီး ထုတ်ဝေသည့် Facebook နှင့် Twitter တို့နှင့် မတူဘဲ Snapchat သည် ကွယ်ပျောက်သွားမည့် မက်ဆေ့ချ်များကို အလုပ်ခန့်ထားပါသည် (မည်ကဲ့သို့ မလုပ်သည်ကို ကြည့်ပါ)။
Snapchat အကြောင်း အများကြီးရှိပါတယ်၊ သင်က developer တစ်ယောက်ဆိုရင် ပိုတောင်ကောင်းပါသေးတယ်။ ထို့ကြောင့်၊ ဤပို့စ်သည်သင့်အား Snapchat ၏အဆင့်မြင့်မြင်ကွင်းကိုပေးလိမ့်မည်။ စနစ်ဒီဇိုင်း နှင့် များစွာသော အသိဥာဏ်များ။
နိဒါန္း
Snapchat သည် US အခြေစိုက်ဖြစ်သည်။ လူမှုရေးကွန်ရက် အသုံးပြုသူများကို ချက်ခြင်းချိတ်ဆက်နိုင်စေခြင်း၊ ပုံများကို မျှဝေခြင်းနှင့် အခြားအရာများကို လုပ်ဆောင်နိုင်စေသောအက်ပ်။
- မက်ဆေ့ချ်များနှင့် ပုံများ (သို့မဟုတ် လျှပ်တစ်ပြက်များ) တွင် ၂၄ နာရီ အချိန်ကန့်သတ်ချက်ရှိသည်။ လူများအား ၎င်းတို့၏ ဇာတ်လမ်းများကို အုပ်စုလိုက် မျှဝေရန် အားပေးသည်။
- Snap Map သည် အသုံးပြုသူများအား ၎င်းတို့၏ သူငယ်ချင်းများရှိရာ မြေပုံပေါ်တွင် ကြည့်ရှုနိုင်စေပါသည်။
- အမှတ်တရများသည် တစ်နှစ်အကြာတွင် ၎င်းတို့သိမ်းဆည်းထားသည့် သို့မဟုတ် မျှဝေထားသည့် ဓာတ်ပုံများကို အသုံးပြုသူများအား သတိပေးသည်။
- Snapchat သည် လူငယ်များ အထူးသဖြင့် ဆယ်ကျော်သက်များကြားတွင် အလွန်ရေပန်းစားသည်။ အက်ပ်တွင် အသုံးပြုသူ ၃၁၉ သန်းရှိပြီး နေ့စဉ် ဓာတ်ပုံ ၅.၄ ဘီလီယံ ပေးပို့လျက်ရှိသည်။
အရေးကြီးသော ဒီဇိုင်းစည်းမျဉ်းများ
Monolithic ဗိသုကာ - အခြားအပလီကေးရှင်းများနှင့် သီးခြားလုပ်ဆောင်သည့် တစ်ခုတည်းသော အပလီကေးရှင်းကို monolith (monolithic architecture) ဟုခေါ်သည်။ အလုပ်တစ်ခုပြီးမြောက်ရန် လိုအပ်သော လုပ်ဆောင်မှုများအားလုံးကို လုပ်ဆောင်ရန်နှင့် ကိုင်တွယ်ရန် monolith ကို ဒီဇိုင်းထုတ်ထားသည်။ အပလီကေးရှင်းသည် အစမှအဆုံး လုပ်ဆောင်မှုအားလုံးကို လုပ်ဆောင်သည်။
မိုက်ခရိုန်ဆောင်မှုများ - ၎င်းသည် monolith များနှင့်ဆန့်ကျင်ဘက်ဖြစ်သည်။ မိုက်ခရိုန်ဆောင်မှုများ ဝန်ဆောင်မှုများစုစည်းမှုအဖြစ် အက်ပလီကေးရှင်းကို စုစည်းထားသည့် ဗိသုကာပညာရပ်တစ်ခုဖြစ်သည်။ ဤဝန်ဆောင်မှုများကို အပလီကေးရှင်းတစ်ခု၏ ရှုထောင့်များစွာကို ထိန်းချုပ်ရန်အတွက် အသုံးပြုပါသည်။ ဖောက်သည်က အော်ဒါမှာတယ်၊ စားပွဲထိုးက ယူလာပြီး ပို့ပေးတယ်၊ စားဖိုမှူးက ပြင်ဆင်တယ်။ ဤဥပမာတွင်၊ အစိတ်အပိုင်းတစ်ခုစီသည် အခြားအရာများနှင့် သီးခြားစီလုပ်ဆောင်သည်။ တခြားသူတွေ ဘာတွေလုပ်နေတယ်ဆိုတာ ဘယ်သူမှ အတိအကျ မသိသလို တူညီတဲ့ အချက်အလက်တွေကိုလည်း ဘယ်သူမှ ရယူနိုင်မှာ မဟုတ်ပါဘူး။
JSON: ၎င်းသည် JavaScript အရာဝတ္ထုများ၊ စာသားများ၊ အခင်းအကျင်းများနှင့် ဒေတာများကိုပြသရန် အသုံးပြုနိုင်သည့် စာသားအခြေခံဖော်မတ်တစ်ခုဖြစ်သည်။ ဤစာသားအခြေခံဖော်မတ်သည် ဖတ်ရန်နှင့်ရေးရန် ရိုးရှင်းစေရန် ရည်ရွယ်ပြီး ဆော့ဖ်ဝဲလ်ဖြင့် အစာကြေစေရန် ရည်ရွယ်ပါသည်။ JSON ကို ဆာဗာများနှင့် အွန်လိုင်း အပလီကေးရှင်းများကြား ဒေတာနှင့် အချက်အလက် လွှဲပြောင်းရန် အများအားဖြင့် အသုံးပြုသည်။
orchestration: များစွာသောလုပ်ငန်းဆောင်တာများကို အလိုအလျောက်လုပ်ဆောင်ခြင်းနည်းပညာကို orchestration ဟုခေါ်သည်။ ဤအလုပ်များတွင် ကွန်ပျူတာစနစ်နှင့် ဆော့ဖ်ဝဲဖွဲ့စည်းပုံ၊ ညှိနှိုင်းဆောင်ရွက်ခြင်းနှင့် စီမံခန့်ခွဲရေးတို့ ပါဝင်သည်။
proxy ကို− ပရောက်စီသည် အရင်းအမြစ်ကို ရှာဖွေနေသည့် ကလိုင်းယင့်နှင့် ၎င်းကို ပံ့ပိုးပေးသည့် ဆာဗာကြားတွင် ပေါင်းစပ်တစ်ခုအဖြစ် လုပ်ဆောင်သည်။
meshဝန်ဆောင်မှု mesh သည် proxy မှတဆင့် ဝန်ဆောင်မှုများကြားတွင် ထိန်းချုပ်နိုင်သော၊ မြင်နိုင်သော၊ လုံခြုံသော ဆက်သွယ်မှုများကို ခွင့်ပြုရန် အလွှာတစ်ခုကို အခြေခံအဆောက်အအုံအလွှာတစ်ခုသို့ ပေါင်းထည့်သည့် ဆော့ဖ်ဝဲလ်ဗိသုကာပုံစံတစ်ခုဖြစ်သည်။
အဆင့်မြင့်ဒီဇိုင်း
Monolithic ပြဿနာများ
Snapchat သည် Google App Engine ကိုအခြေခံ၍ cloud-based monolith အဖြစ်စတင်ခဲ့သည်။ သို့သော်လည်း ပရိုဂရမ်သည် လူကြိုက်များလာကာ အသုံးပြုသူများနှင့် ဒေတာများ ပိုမိုရရှိလာသည်နှင့်အမျှ ချဲ့ထွင်နိုင်မှုသည် ပြဿနာတစ်ခု ဖြစ်လာခဲ့သည်။
ထို့အပြင်၊ monolith အတွင်း ကြီးမားသော ပေါက်ကွဲမှု အချင်းဝက်နှင့်အတူ၊ စနစ်တစ်ခုလုံး အနှောင့်အယှက်များ ဖြစ်နိုင်သည်။ Snapchat ၏ ပြဿနာများထဲမှ တစ်ခုသည် အရင်းအမြစ်များကို ရယူရန်အတွက် အင်္ဂါရပ်များ ယှဉ်ပြိုင်နိုင်သည့် "ဘုံများရဲ့ ကြေကွဲစရာ" အဖြစ် သတ်မှတ်ခံခဲ့ရသည်။ အက်ပ်စတင်ချိန်၌ အင်္ဂါရပ်များသည် အချို့သောအင်္ဂါရပ်များကို ပိုမိုမြန်ဆန်စွာ တင်နိုင်စေသော်လည်း အခြားအရာများကို ပိုနှေးစေပါသည်။
ဝန်ဆောင်မှုသည် လိုက်လျောညီထွေရှိပြီး ထိရောက်မှုရှိစေရန် အင်ဂျင်နီယာများသည် ဖွံ့ဖြိုးတိုးတက်မှုရှုထောင့်မှ ၎င်းတို့၏ အစိတ်အပိုင်းများကို ရှင်းရှင်းလင်းလင်းမြင်နိုင်မှု၊ ခွဲခြားမှုနှင့် ပိုင်ဆိုင်မှုတို့ကို ရှာဖွေခဲ့သည်။
ေျပာင္းလဲျခင္း
Snapchat တိုးချဲ့လာသည်နှင့်အမျှ၊ ကုမ္ပဏီသည် ၎င်း၏ monolithic အခြေခံအဆောက်အအုံကို သေးငယ်၍ ပိုမိုထိရောက်သောအပိုင်းများအဖြစ် ခွဲခြမ်းရန် လိုအပ်ကြောင်း ကုမ္ပဏီမှ သဘောပေါက်ခဲ့သည်။ latency လျော့နည်းသွားစေရန်အတွက်၊ အဖွဲ့အစည်းသည် မိုက်ခရိုဝန်ဆောင်မှုကို အခြေခံသည့် ဒီဇိုင်းကို ဖန်တီးရန် ဆုံးဖြတ်ခဲ့သည်။
ထိုပန်းတိုင်များကို ဖြည့်ဆည်းရန်အတွက် Snapchat သည် အရွယ်အစားကြီးနိုင်သော NoSQL ဒေတာဘေ့စ်ဝန်ဆောင်မှုဖြစ်သော Amazon DynamoDB ကို အသုံးပြု၍ ၎င်း၏ဆော့ဖ်ဝဲလ်ကို အပ်ဒိတ်လုပ်ရန် ရွေးချယ်ခဲ့သည်။ ကုမ္ပဏီသည် ၎င်း၏ကြိုးပမ်းမှုများကြောင့် ပျမ်းမျှကြာချိန်ကို 20% လျှော့ချနိုင်ခဲ့သည်။
ကော်ပိုရေးရှင်းမှ app အား သေးငယ်သော အပလီကေးရှင်းများစွာအဖြစ် ပြန်လည်ရေးသားခဲ့သည်။ Snapchat သည် ကင်မရာ၊ ချတ်၊ အမှတ်တရများ၊ ပုံတည်းဖြတ်မှု၊ အကြောင်းအရာသုံးစွဲမှုနှင့် မြေပုံအပါအဝင် အပလီကေးရှင်းများစွာဖြင့် စတင်ခဲ့သည်။ ဤပရိုဂရမ်များကို monolith တစ်ခုတည်းတွင် ပေါင်းစည်းခြင်းသည် စားသုံးသူများအတွက် အဆင်ပြေသော်လည်း၊ စွမ်းဆောင်ရည်ကောင်းကို ထိန်းသိမ်းခြင်းအတွက် ဆိုးရွားသော နည်းပညာဆိုင်ရာ ပြဿနာတစ်ရပ် ဖြစ်လာခဲ့သည်။
ပြန်လည်ရေးသားရန်အတွက် ကော်ပိုရေးရှင်းသည် စည်းမျဉ်းများစွာကို ချမှတ်ခဲ့သည်။ ကြိုတင်မတင်ပါနှင့်။ အင်္ဂါရပ်တစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်အက်ပ်ဖြစ်သင့်ပြီး ၎င်းသည် မြန်ဆန်သင့်သည်။ Snapchat သည် ၎င်းအား တင်းကြပ်စွာ နည်းပညာဆိုင်ရာ အလုပ်တစ်ခုဖြစ်စေရန် နေရာများစွာတွင် ပြုပြင်မွမ်းမံမှုများကို ရပ်တန့်ထားသည်။
နောက်ထပ်အင်္ဂါရပ်များ ပေါင်းစည်းခြင်း။
Snapchat ၏ ကင်မရာအက်ပ်တွင် မှန်ဘီလူးများ၊ စစ်ထုတ်မှုများ၊ bitmojis နှင့် အခြားအရာများကြားတွင် augmented reality animations များကို ထည့်သွင်းနိုင်စွမ်းရှိသည်။ Snapchat ၏ ချက်တင်အက်ပ်သည် သုံးစွဲသူများအား ဓာတ်ပုံများကို သိမ်းဆည်းရန်၊ ဆွေးနွေးပွဲများကို သိမ်းဆည်းရန်၊ အီမိုတီကွန်များ ထည့်ရန်နှင့် အခြားအရာများကို လုပ်ဆောင်ရန်လည်း ခွင့်ပြုထားသည်။
Snapchat ၏မြေပုံသည် အခြားအရာများကြားတွင် သင့်အား သူငယ်ချင်းများအား ၎င်းတို့အလိုရှိပါက စောင့်ကြည့်ရန်ခွင့်ပြုသည်။ အမှတ်တရများ၊ ဓာတ်ပုံတည်းဖြတ်ခြင်းနှင့် အကြောင်းအရာသုံးစွဲမှုအားလုံးသည် ၎င်းတို့၏ထူးခြားသောစွမ်းရည်များဖြင့် သီးခြား Snapchat အက်ပ်များဖြစ်သည်။
အမှတ်တရများသည် ဓာတ်ပုံ သို့မဟုတ် ဗီဒီယိုများကို နောင်အသုံးအတွက် သိမ်းဆည်းရန် သို့မဟုတ် ပြင်ဆင်နိုင်စေသည့်အပြင် ၎င်းတို့ကို အပ်လုဒ်လုပ်ခြင်း သို့မဟုတ် ပေးပို့ခြင်းတို့ ပြုလုပ်နိုင်သည်။ အသုံးပြုသူများသည် ရုပ်ရှင်များကိုဖြတ်တောက်ရန်၊ စာသားထည့်ရန်၊ စတစ်ကာများထည့်ရန်နှင့် အခြားအရာများပြုလုပ်ရန် ရုပ်ပုံတည်းဖြတ်ခြင်းကိုလည်း အသုံးပြုနိုင်သည်။
Snapchat ၏ ပြင်ပအကြောင်းအရာသုံးစွဲမှုသည် ကန့်သတ်ဘောင်အကွာအဝေးအပေါ်အခြေခံ၍ သုံးစွဲသူများကိုပြသသည့်အရာကို ရည်ညွှန်းသည်။
မိုက်ခရိုန်ဆောင်မှုများ
ပရိုဂရမ်သည် ထိုအချိန်တွင် ကွန်ရက်မေးမြန်းချက်များကို လုပ်ဆောင်ရန် JSON ပေါ်တွင် အကျယ်တဝင့်မူတည်ပါသည်။ သို့သော်၊ JSON ကို ပိုင်းခြားစိတ်ဖြာခြင်းသည် အချိန်ကုန်ပြီး ထိရောက်မှု မရှိပေ။ Snapchat သည် ဤပြဿနာကိုဖြေရှင်းရန်အတွက် JSON ၏အသုံးပြုမှုကို အကောင်အထည်ဖော်မှုအသေးစိတ်အဖြစ် ဖုံးကွယ်ရန် ဗဟိုချုပ်ကိုင်ထားသောကွန်ရက်စီမံခန့်ခွဲမှု API ကိုအသုံးပြုခဲ့သည်။
မိုက်ခရိုဆားဗစ်များသည် အက်ပလီကေးရှင်းအခြေအနေစီမံခန့်ခွဲမှု၊ ဝန်ဆောင်မှုဆက်သွယ်ရေးနှင့် ကျရှုံးမှုစီမံခန့်ခွဲမှုဆိုင်ရာ စိန်ခေါ်မှုများကို မိတ်ဆက်ပေးသည်။ Snapchat သည် ခိုင်ခံ့ပြီး အားကိုးထိုက်သော စနစ်တစ်ခုတည်ဆောက်ရန်အတွက် စုစည်းမှုအခက်အခဲများကို ကျော်လွှားရန်အတွက် Temporal ကဲ့သို့သော open-source နည်းပညာများကို အသုံးပြုခဲ့သည်။
ရလဒ်အနေဖြင့် အဖွဲ့အစည်းသည် ဝန်ဆောင်မှုကွက်ဒီဇိုင်းပုံစံကို အသုံးပြုရန် ဆုံးဖြတ်ခဲ့သည်။ Snapchat သည် ဤပုံစံကိုရရှိရန် ပရောက်စီတစ်ခုအဖြစ် လုပ်ဆောင်သည့် အခြား open-source tool ဖြစ်သော Envoy ကို အသုံးပြုခဲ့သည်။ Envoy သည် အခြေခံအဆောက်အအုံများမှတစ်ဆင့် ဝန်ဆောင်မှုအသွားအလာစီးဆင်းမှုကို စီမံခန့်ခွဲခဲ့ပြီး developer များအား ဖြစ်ပေါ်လာနိုင်သည့်အခက်အခဲများကို မြင်နိုင်စွမ်းရှိစေသည်။
Snapchat သည် Service mesh အတွင်း Switchboard ဟုခေါ်သော အတွင်းပိုင်းအက်ပ်တစ်ခုကို ဖန်တီးခဲ့သည်။ Switchboard သည် အသုံးပြုသူများအား အသွားအလာပြောင်းရန်၊ ဝန်ဆောင်မှုမှီခိုမှုများအား စီမံခန့်ခွဲခွင့်ပေးခြင်း (ဝန်ဆောင်မှုတစ်ခုအား အခြားသူများ၏အခြေအနေအပေါ် မူတည်၍ စီမံခန့်ခွဲနိုင်စေမည့် အင်္ဂါရပ်) နှင့် ဒေသများကို စွန့်ထုတ်ရန် ခွင့်ပြုသည့် Snap ဝန်ဆောင်မှုများအတွက် ထိန်းချုပ်မှုအကန့်တစ်ခုအဖြစ် ဆောင်ရွက်ခဲ့သည်။
ဝန်ဆောင်မှုများအတွင်း ဖြစ်နိုင်ချေရှိသော ဖွဲ့စည်းမှုပုံစံများ၏ ရှုပ်ထွေးမှုကို ရိုးရှင်းစေရန်၊ Envoy API တစ်ခုလုံးကို ပြသမည့်အစား Switchboard ကို အသုံးပြုခဲ့သည်။ Snap တွင် ဝန်ဆောင်မှု mesh ကြောင့် ၎င်း၏ မိုက်ခရိုဝန်ဆောင်မှုများအတွက် ဘုံတွင်းနှင့် ဒေသဆိုင်ရာကွန်ရက်တစ်ခုရှိသည်။
တူညီသောဒေသအတွင်းရှိ ဝန်ဆောင်မှုများသည် အများသူငှာအင်တာနက်ကို အသုံးမပြုဘဲ တစ်ခုနှင့်တစ်ခု ချိတ်ဆက်နိုင်ပြီး ပြင်ပကွန်ရက်အသွားအလာမရှိသော အတွင်းကွန်ရက်အစိတ်အပိုင်းများနှင့် ဆက်သွယ်နိုင်သည်။
လုံခြုံရေးအကြောင်းပြချက်ကြောင့် Gateways ကသာ ၎င်းတို့ကိုယ်သူတို့ အင်တာနက်ကို ဖော်ထုတ်ခွင့်ရရှိမည်ဖြစ်သည်။ ဥပမာအားဖြင့် API ဂိတ်ဝေးများသည် အရှေ့ဘက်တံခါးများအဖြစ် အလွယ်တကူ လုပ်ဆောင်နိုင်သည်၊ သုံးစွဲသူများ/အသုံးပြုသူများထံမှ တောင်းဆိုချက်များကို လုပ်ဆောင်ပြီး ၎င်းတို့ကို ကွန်ရက်နှင့်အတူ လမ်းကြောင်းပေးနိုင်သည်။
ကွန်ရက်နှင့် API ဂိတ်ဝေး
Snapchat client မှမေးမြန်းချက်အားလုံး API Gateway မှတဆင့်လာပါသည်။ ၎င်းသည် တူညီသော Envoy ပုံကို အသုံးပြုပြီး ကျွန်ုပ်တို့၏ အတွင်းပိုင်း အသေးစားဝန်ဆောင်မှုများကဲ့သို့ တူညီသော Control Plane သို့ ချိတ်ဆက်သည်။ ကျွန်ုပ်တို့၏ ထိန်းချုပ်ရေးလေယာဉ်သည် ကျွန်ုပ်တို့အား စိတ်ကြိုက် Envoy စစ်ထုတ်မှုများကို ဖွင့်ခွင့်ပြုထားသည်။
Snapchat ၏ အထောက်အထားစိစစ်ခြင်းစနစ်များအပြင် ကျွန်ုပ်တို့၏ နှုန်းထားကန့်သတ်ချက်နှင့် ဝန်ချခြင်းနည်းပညာများကို ဤစစ်ထုတ်မှုများမှ ကိုင်တွယ်ပါသည်။ Envoy သည် စစ်ထုတ်ခြင်းကွင်းဆက်ပြီးပါက သက်ဆိုင်ရာ မိုက်ခရိုဝန်ဆောင်မှုထံ တောင်းဆိုမှုများကို လမ်းကြောင်းပေးရန်အတွက် Service Mesh ကို အသုံးပြုသည်။
ကောက်ချက်
Snapchat ၏ API တံခါးပေါက်သည် အက်ပ်၏ လုပ်ဆောင်နိုင်စွမ်းများစွာဆီသို့ ပြင်ပအသွားအလာကို လမ်းကြောင်းပေးသည်။ ဖွဲ့စည်းမှုအခြေအနေများကို မွမ်းမံရန်အတွက် အသုံးပြုသူများ၏ တောင်းဆိုချက်များကို ဆာဗာများက စီမံခန့်ခွဲပါသည်။ ဒေတာပေးပါ။ နှင့် အက်ပ်၏ မြောက်မြားစွာသော ဝန်ဆောင်မှုများသို့ အချက်အလက်များ ပြန်ပို့ပါ။
ယေဘုယျအားဖြင့်၊ Snapchat ၏ လက်ရှိဒီဇိုင်းသည် လည်ပတ်မှုစနစ်တစ်ခုတည်းတွင် လုပ်ဆောင်နေသည့် ပရိုဂရမ်များစွာနှင့် နှိုင်းယှဉ်နိုင်ပြီး၊ ဤအခြေအနေတွင် Snapchat အက်ပ်ဖြစ်သည်။ Snapchat စနစ်ဒီဇိုင်း၏ မြင့်မားသောအဆင့်ခြုံငုံသုံးသပ်ချက်ကို ပေးဆောင်ရန် အလွန်ကြိုးစားခဲ့ပါသည်။ အသုံးဝင်မယ်လို့ မျှော်လင့်ပါတယ်။
တစ်ဦးစာပြန်ရန် Leave