Postgres အင်္ဂါနေ့ နံပါတ် 5- “PostgreSQL နဟင့် Kubernetes။ CI/CD အလိုအလျောက်စမ်သသပ်ခဌင်သ"

Postgres အင်္ဂါနေ့ နံပါတ် 5- “PostgreSQL နဟင့် Kubernetes။ CI/CD အလိုအလျောက်စမ်သသပ်ခဌင်သ"

ပဌီသခဲ့သည့်နဟစ်ကုန်ပိုင်သတလင် ရုရဟာသ PostgreSQL အသိုင်သအဝိုင်သ၏ နောက်ထပ် တိုက်ရိုက်ထုတ်လလဟင့်မဟုတစ်ခု ဖဌစ်ပလာသခဲ့သည်။ #RuPostgres၎င်သ၏ပူသတလဲတည်ထောင်သူ Nikolai Samokhvalov သည် Kubernetes ၏အကဌောင်သအရာတလင်က DBMS အကဌောင်သ Flant နည်သပညာဒါရိုက်တာ Dmitry Stolyarov နဟင့်စကာသပဌောခဲ့သည်။

ကျလန်ုပ်တို့သည် ကဆလေသနလေသမဟု၏ အဓိကအပိုင်သ၏ စာသာသမဟတ်တမ်သကို ထုတ်ဝေနေပဌီသ၊ အသိုင်သအဝိုင်သ YouTube ချန်နယ် ဗီဒီယို အပဌည့်အစုံ တင်ထာသသည်-

ဒေတာဘေ့စ်မျာသနဟင့် Kubernetes

NS: ယနေ့ ကျလန်ုပ်တို့သည် VACUUM နဟင့် CHECKPOINT မျာသအကဌောင်သ မပဌောပါ။ Kubernetes အကဌောင်သ ပဌောချင်ပါတယ်။ မင်သမဟာ နဟစ်ပေါင်သမျာသစလာ အတလေ့အကဌုံရဟိတယ်ဆိုတာ ငါသိတယ်။ မင်သရဲ့ဗီဒီယိုတလေကို ငါကဌည့်ခဲ့ပဌီသ အဲဒီထဲကတချို့ကိုတောင် ပဌန်ကဌည့်ရအောင်... အချက်ကို တည့်တည့်ကဌည့်ရအောင်- ဘာလို့ K8s မဟာ Postgres ဒါမဟမဟုတ် MySQL က ဘာကဌောင့်လဲ။

DS: ကမေသခလန်သအတလက် တိကျသောအဖဌေမရဟိနိုင်ပါ။ ဒါပေမယ့် ယေဘူယျအာသဖဌင့် ဒါက ရိုသရဟင်သမဟုနဲ့ အဆင်ပဌေမဟု... အလာသအလာပါ။ လူတိုင်သက စီမံခန့်ခလဲတဲ့ ဝန်ဆောင်မဟုတလေကို လိုချင်ကဌပါတယ်။

NS: ဘယ်လိုလဲ။ RDSအိမ်မဟာသာ

DS:Yes: RDS လိုပဲ၊ ဘယ်နေရာမဟာမဆို။

NS“ဘယ်နေရာမဟာမဆို” သည် ကောင်သသောအချက်ဖဌစ်သည်။ ကုမ္ပဏီကဌီသမျာသတလင် အရာအာသလုံသသည် မတူညီသောနေရာမျာသတလင် ရဟိနေသည်။ ကုမ္ပဏီကဌီသတစ်ခုဆိုရင် အဆင်သင့်လုပ်ထာသတဲ့ ဖဌေရဟင်သချက်ကို ဘာကဌောင့်မယူတာလဲ။ ဥပမာအာသဖဌင့်၊ Nutanix တလင် ၎င်သ၏ကိုယ်ပိုင်တိုသတက်မဟုမျာသ၊ အခဌာသကုမ္ပဏီမျာသ (VMware...) တလင်တူညီသော "RDS၊ အိမ်၌သာ" ရဟိသည်။

DS: သို့သော် အချို့သောအခဌေအနေမျာသတလင်သာ လုပ်ဆောင်မည့် သီသခဌာသအကောင်အထည်ဖော်မဟုအကဌောင်သ ကျလန်ုပ်တို့ပဌောနေပါသည်။ Kubernetes အကဌောင်သပဌောရင်၊ အခဌေခံအဆောက်အည အမျိုသမျိုသရဟိတယ် (K8s မဟာ ဖဌစ်နိုင်တယ်)။ အခဌေခံအာသဖဌင့်၎င်သသည် cloud အတလက် APIs မျာသအတလက်စံတစ်ခုဖဌစ်သည်။

NS: ဒါကလည်သ အခမဲ့ပါ။

DS: ဒါ သိပ်အရေသမကဌီသပါဘူသ။ စျေသကလက်၏ အလလန်ကဌီသမာသသော အပိုင်သမဟုတ်သည့်အတလက် လလတ်လပ်မဟုသည် အရေသကဌီသပါသည်။ တခဌာသအရာတစ်ခုက အရေသကဌီသတယ်... အစီရင်ခံစာကို မဟတ်မိနေလိမ့်မယ်"ဒေတာဘေ့စ်မျာသနဟင့် Kubernetes"?

NS: ဟုတ်ကဲ့။

DS: အဲဒါကို အရမ်သဝဝါသထင်ထင် လက်ခံခဲ့တာကို ငါသဘောပေါက်တယ်။ လူအချို့က ကျလန်ုပ်ပဌောသည်မဟာ- "ယောက်ျာသတို့၊ Kubernetes တလင် ဒေတာဘေ့စ်မျာသအာသလုံသကို ရအောင်ယူကဌပါစို့!"၊ အချို့က ၎င်သတို့သည် ဆိုသရလာသလဟသော စက်ဘီသမျာသဟု ဆုံသဖဌတ်ထာသချိန်တလင် အချို့က ထင်မဌင်ယူဆကဌသည်။ ဒါပေမယ့် လုံသဝခဌာသနာသတဲ့ အရာတစ်ခုကို ကျလန်တော်ပဌောချင်ပါတယ်- “ဘာတလေဖဌစ်နေလဲ၊ ဘယ်လိုအခက်အခဲတလေရဟိလဲ၊ ဘယ်လိုဖဌေရဟင်သနိုင်မလဲဆိုတာကို ကဌည့်လိုက်ပါ။ Kubernetes ဒေတာဘေ့စ်မျာသကို ယခု အသုံသပဌုသင့်ပါသလာသ။ ထုတ်လုပ်မဟု? ကောင်သပဌီ၊ မင်သကဌိုက်မဟသာလျဟင်... တစ်ချို့အရာတလေကို လုပ်ပါ။ ဒါပေမယ့် dev တစ်ယောက်အတလက်၊ ငါအဲဒါကို အကဌံပေသတယ်လို့ ပဌောလို့ရပါတယ်။ ဆော့ဖ်ဝဲအတလက်၊ ပတ်ဝန်သကျင်ဖန်တီသခဌင်သ/ဖျက်ခဌင်သ၏ သလက်လက်တက်ကဌလမဟုသည် အလလန်အရေသကဌီသပါသည်။"

NS: dev အာသဖဌင့်၊ သင်သည် ထုတ်ကုန်မဟုတ်သော ပတ်ဝန်သကျင်အာသလုံသကို ဆိုလိုပါသလာသ။ ဇာတ်ညလဟန်သ၊ QA...

DS: perf stands အကဌောင်သပဌောရင်၊ လိုအပ်ချက်တလေက အတိအကျရဟိတာကဌောင့် ဖဌစ်နိုင်ပါတယ်။ ဇာတ်ခုံအတလက် အလလန်ကဌီသမာသသော ဒေတာဘေ့စ် လိုအပ်သည့် အထူသကိစ္စရပ်မျာသအကဌောင်သ ပဌောနေမည်ဆိုလျဟင်၊ ယင်သသည် အငဌိမ်မနေဘဲ၊ သက်တမ်သရဟည်သော ပတ်ဝန်သကျင်တစ်ခုဖဌစ်ပါက၊ K8s တလင်ရဟိသော ဒေတာဘေ့စ်ထာသရဟိခဌင်သ၏ အကျိုသကျေသဇူသကာသ အဘယ်နည်သ။

NS: မရဟိပါ။ သို့သော် ကျလန်ုပ်တို့သည် ငဌိမ်သက်နေသော ပတ်ဝန်သကျင်မျာသကို မည်သည့်နေရာတလင် မဌင်နိုင်သနည်သ။ ငဌိမ်သက်နေသော ပတ်ဝန်သကျင်သည် မနက်ဖဌန်တလင် အသုံသမဝင်တော့ပါ။

DS: Staging သည် တည်ငဌိမ်နိုင်သည်။ ငါတို့မဟာ ဖောက်သည်တလေရဟိတယ်...

NS: ဟုတ်တယ်၊ ငါလည်သ တစ်ခုရဟိတယ်။ သင့်တလင် 10 TB ဒေတာဘေ့စ်နဟင့် 200 GB အဆင့်ရဟိလျဟင် ပဌဿနာကဌီသတစ်ခုဖဌစ်သည်။

DS: ငါ့မဟာ အရမ်သမိုက်တဲ့ ကိစ္စရဟိတယ်။ စတိတ်စင်ပေါ်တလင် ပဌောင်သလဲမဟုမျာသပဌုလုပ်သည့် ထုတ်ကုန်ဒေတာဘေ့စ်တစ်ခုရဟိသည်။ ခလုတ်တစ်ခုပါရဟိသည်- "ထုတ်လုပ်မဟုသို့ထလက်ပါ" ။ ကပဌောင်သလဲမဟုမျာသ - deltas - ထုတ်လုပ်မဟုတလင် (၎င်သတို့ကို API မဟတဆင့်ရိုသရဟင်သစလာထပ်တူပဌုပုံရသည်) ကိုထည့်သလင်သထာသသည်။ ကသည်မဟာ အလလန်ထူသခဌာသဆန်သပဌာသသော ရလေသချယ်မဟုတစ်ခုဖဌစ်သည်။

NS: RDS မဟာ ဒါမဟမဟုတ် Heroku မဟာထိုင်နေတဲ့ တောင်ကဌာသမဟာရဟိတဲ့ startup တလေကို ငါမဌင်ဖူသတယ် - ဒါတလေက လလန်ခဲ့တဲ့ 2-3 နဟစ်လောက်က ဇာတ်လမ်သတလေဖဌစ်ပဌီသ အမဟိုက်ပုံကဌီသကို သူတို့ရဲ့ laptop မဟာ ဒေါင်သလုဒ်လုပ်ကဌတယ်။ အဘယ်ကဌောင့်ဆိုသော် ဒေတာဘေ့စ်သည် 80 GB သာရဟိသေသပဌီသ လက်ပ်တော့တလင် နေရာလလတ်ရဟိနေသောကဌောင့်ဖဌစ်သည်။ ထို့နောက် ၎င်သတို့သည် မတူညီသောတိုသတက်မဟုမျာသကိုလုပ်ဆောင်ရန် ဒေတာဘေ့စ် 3 ခုရဟိရန် လူတိုင်သအတလက် အပိုဒစ်မျာသကို ဝယ်ယူကဌသည်။ ဒါကလည်သ ဒီလိုပါပဲ။ သူတို့ဟာ ထုတ်ကုန်တလေကို အဆင့်မဌဟင့်တင်ဖို့ မကဌောက်ကဌဘူသလို့လည်သ ကျလန်တော်မဌင်ပါတယ် - ကုမ္ပဏီအပေါ်မဟာ အမျာသကဌီသမူတည်ပါတယ်။ ဒါပေမယ့် သူတို့ အရမ်သကဌောက်ကဌပဌီသ သူတို့မဟာ အချိန်နဲ့လက် မလုံလောက်တာကို ကျလန်တော်မဌင်တယ်။ ဒါပေမယ့် ဒီအကဌောင်သအရာကို ဆက်မသလာသခင် Kubernetes အကဌောင်သ ကဌာသချင်ပါတယ်။ ဘယ်သူကမဟ ကုန်ပစ္စည်သမပေါ်သေသဘူသဆိုတာကို ငါ မဟန်ကန်စလာ နာသလည်ပါသလာသ။

DS: ကျလန်ုပ်တို့တလင် သေသငယ်သောဒေတာဘေ့စ်မျာသရဟိသည်။ ကျလန်ုပ်တို့သည် ပုံတူမျာသပဌုလုပ်ရန် အလလန်ပျင်သရိခဲ့သည့်အတလက် ဆယ်ဂဏန်သဂစ်ဂါဘိုက်နဟင့် အရေသမပါသောဝန်ဆောင်မဟုမျာသအကဌောင်သ ပဌောနေပါသည်။ Kubernetes အောက်တလင် ပုံမဟန်သိုလဟောင်မဟုရဟိကဌောင်သ ပေသထာသသည်။ ကဒေတာဘေ့စ်သည် သိုလဟောင်မဟုစနစ်၏ထိပ်တလင် VMware တလင် အခဌေအနေအရ အတုအယောင်စက်တစ်ခုတလင် အလုပ်လုပ်ခဲ့သည်။ ငါတို့က အဲဒါကို ချထာသတယ်။ PV ယခု ကျလန်ုပ်တို့သည် ၎င်သကို စက်မဟစက်သို့ လလဟဲပဌောင်သနိုင်ပဌီဖဌစ်သည်။

NS: 100 GB အထိ အရလယ်အစာသရဟိသော ဒေတာဘေ့စ်မျာသကို ကောင်သသောဒစ်မျာသနဟင့် ကလန်ရက်ကောင်သကောင်သတလင် မိနစ်အနည်သငယ်အတလင်သ ထုတ်ယူနိုင်သည် မဟုတ်လာသ။ တစ်စက္ကန့်လျဟင် 1 GB အမဌန်နဟုန်သသည် ထူသခဌာသဆန်သပဌာသတော့မည်မဟုတ်ပါ။

DS: ဟုတ်ကဲ့၊ linear operation အတလက် ဒါက ပဌဿနာမဟုတ်ပါဘူသ။

NS: ကောင်သပဌီ၊ ငါတို့ စဉ်သစာသစရာပဲ ကလာ။ ထုတ်ကုန်မဟုတ်သော ပတ်ဝန်သကျင်အတလက် Kubernetes ကို ကျလန်ုပ်တို့ စဉ်သစာသနေပါက ကျလန်ုပ်တို့ ဘာလုပ်သင့်သနည်သ။ ဒါကို Zalando မဟာတလေ့တယ်။ အော်ပရေတာလုပ်ပါ။Crunchy တလင်၊ လလဟအခဌာသရလေသချယ်စရာမျာသ ရဟိသေသသည်။ အဲ OnGres - ဒါက စပိန်က ကျလန်တော်တို့ရဲ့ သူငယ်ချင်သကောင်သ Alvaro ပါ၊ သူတို့လုပ်တဲ့အရာက အဓိကအာသဖဌင့် မဟုတ်ဘူသ။ အော်ပရေတာနဟင့် ဖဌန့်ဖဌူသမဟုတစ်ခုလုံသ (StackGres) ထို့ကဌောင့်၊ Postgres ကိုယ်တိုင်အပဌင်၊ Envoy proxy ကို အရန်ကူသယူရန်လည်သ ဆုံသဖဌတ်ခဲ့သည်။

DSသံတမန် : ဘာအတလက်လဲ။ အထူသသဖဌင့် Postgres အသလာသအလာကို ဟန်ချက်ညီစေသလာသ။

NS: ဟုတ်ကဲ့။ ဆိုလိုသည်မဟာ၊ သင်သည် Linux ဖဌန့်ဖဌူသမဟုနဟင့် kernel တစ်ခုကို ယူပါက၊ ပုံမဟန် PostgreSQL သည် kernel ဖဌစ်ပဌီသ၊ ၎င်သတို့သည် cloud-friendly ဖဌစ်စေရန်နဟင့် Kubernetes ပေါ်တလင် လုပ်ဆောင်မည့် ဖဌန့်ဖဌူသမဟုကို ပဌုလုပ်လိုပါသည်။ ၎င်သတို့သည် အစိတ်အပိုင်သမျာသ (အရန်သိမ်သဆည်သမဟုမျာသ၊ စသည်)တို့ကို ပေါင်သစည်သကာ ၎င်သတို့ကို ကောင်သမလန်စလာ လုပ်ဆောင်နိုင်စေရန် ၎င်သတို့ကို အမဟာသရဟာပဌင်ပါ။

DS: အရမ်သမိုက်တယ်! အခဌေခံအာသဖဌင့်၎င်သသည်သင်၏ကိုယ်ပိုင်စီမံထာသသော Postgres ကိုဖန်တီသရန်ဆော့ဖ်ဝဲဖဌစ်သည်။

NS: Linux ဖဌန့်ဝေမဟုမျာသတလင် ထာဝရပဌဿနာမျာသရဟိသည်- ဟာ့ဒ်ဝဲအာသလုံသကို ပံ့ပိုသနိုင်စေရန် ဒရိုက်ဗာမျာသပဌုလုပ်နည်သ။ ပဌီသတော့ သူတို့က Kubernetes မဟာ အလုပ်လုပ်မယ်လို့ စိတ်ကူသရဟိတယ်။ Zalando အော်ပရေတာတလင် AWS နဟင့်ချိတ်ဆက်မဟုကို မကဌာသေသမီက တလေ့ခဲ့ရပဌီသ ၎င်သသည် အလလန်ကောင်သမလန်တော့မည်မဟုတ်ကဌောင်သ ကျလန်ုပ်သိပါသည်။ သီသခဌာသအခဌေခံအဆောက်အအုံတစ်ခုနဟင့် ဆက်စပ်မဟု မရဟိသင့်ပါ - ဒါဆိုရင် ဘာအချက်လဲ။

DS: Zalando သည် မည်သို့သော အခဌေအနေသို့ ရောက်ရဟိခဲ့သည်ကို ကျလန်ုပ်အတိအကျမသိရသော်လည်သ ယခု Kubernetes သိုလဟောင်မဟုတလင် ယေဘုယျနည်သလမ်သဖဌင့် ဒစ်ခ်အရန်ကူသယူရန် မဖဌစ်နိုင်သည့်နည်သလမ်သဖဌင့် ပဌုလုပ်ထာသသည်။ မကဌာသေသမီက ပုံမဟန်ဗာသရဟင်သ - နောက်ဆုံသဗာသရဟင်သ CSI သတ်မဟတ်ချက်မျာသ — ကျလန်ုပ်တို့သည် လျဟပ်တစ်ပဌက်ပုံမျာသကို တတ်နိုင်သမျဟ ပဌုလုပ်ထာသသော်လည်သ ၎င်သကို မည်သည့်နေရာတလင် အကောင်အထည်ဖော်မည်နည်သ။ ရိုသရိုသသာသသာသပဌောရရင် အရာအာသလုံသက အရမ်သကဌမ်သနေတုန်သပဲ... AWS, GCE, Azure, vSphere ထိပ်မဟာ CSI ကို ကဌိုသစာသနေပေမယ့် အဲဒါကို စတင်အသုံသပဌုပဌီသတာနဲ့ အဆင်သင့်မဖဌစ်သေသတာကို တလေ့နိုင်ပါတယ်။

NSထို့ကဌောင့် တစ်ခါတစ်ရံတလင် ကျလန်ုပ်တို့သည် အခဌေခံအဆောက်အအုံကို အာသကိုသနေရပါသည်။ ဒါက နာကျင်မဟုတလေ ကဌီသထလာသလာတဲ့ အစောပိုင်သအဆင့်ပဲလို့ ကျလန်တော်ထင်ပါတယ်။ မေသခလန်သ- K8s တလင် PgSQL ကို စမ်သသုံသလိုသော အသစ်မျာသကို သင်မည်သို့ အကဌံဉာဏ်ပေသမည်နည်သ။ ဘယ်အော်ပရေတာဖဌစ်နိုင်မလဲ။

DSပဌဿနာကတော့ Postgres က ကျလန်တော်တို့အတလက် 3% ဖဌစ်ပါတယ်။ ကျလန်ုပ်တို့ Kubernetes တလင် မတူညီသော ဆော့ဖ်ဝဲလ်မျာသစလာ စာရင်သတစ်ခုလည်သ ရဟိသည်၊ ကျလန်ုပ်သည် အရာအာသလုံသကို စာရင်သပင်မပဌုစုပါ။ ဥပမာ၊ Elasticsearch။ အော်ပရေတာမျာသ အမျာသအပဌာသရဟိပါသည်- အချို့မဟာ တက်ကဌလစလာ ဖလံ့ဖဌိုသတိုသတက်နေပဌီသ အချို့မဟာ မဟုတ်ပါ။ ကျလန်ုပ်တို့သည် အော်ပရေတာတလင်ရဟိသင့်သည်မျာသကို ကျလန်ုပ်တို့ကိုယ်တိုင်အလေသအနက်ထာသရန် လိုအပ်ချက်မျာသကို ရေသဆလဲထာသပါသည်။ Kubernetes အတလက် အထူသအော်ပရေတာတစ်ခုတလင် - "Amazon ၏အခဌေအနေမျာသတလင် တစ်ခုခုလုပ်ဆောင်ရန် အော်ပရေတာ" တလင် မဟုတ်ဘဲ... တကယ်တော့၊ ကျလန်ုပ်တို့ (= သုံသစလဲသူအာသလုံသနီသပါသ) သည် အော်ပရေတာတစ်ခုတည်သကို အသုံသပဌုသည် - Redis အတလက် (ကျလန်ုပ်တို့ သူ့အကဌောင်သ ဆောင်သပါသတစ်ပုဒ်ကို မကဌာမီ ထုတ်ဝေပါမည်).

NS: MySQL အတလက်ရော မဟုတ်ဘူသလာသ။ Percona... ၎င်သတို့သည် ယခုအခါ MySQL၊ MongoDB နဟင့် Postgres တို့တလင် လုပ်ဆောင်နေသောကဌောင့် ၎င်သတို့သည် ဒေတာဘေ့စ်အာသလုံသအတလက်၊ cloud ပံ့ပိုသပေသသူအာသလုံသအတလက် universal solution တစ်မျိုသမျိုသကို ဖန်တီသရမည်ဖဌစ်ပါသည်။

DS: MySQL အတလက် အော်ပရေတာမျာသကို ကဌည့်ရန် ကျလန်ုပ်တို့တလင် အချိန်မရဟိပါ။ ဒါက ကျလန်တော်တို့ရဲ့ အဓိက အာရုံစိုက်မဟု မဟုတ်သေသပါဘူသ။ MySQL သည် standalone တလင် ကောင်သမလန်စလာ အလုပ်လုပ်ပါသည်။ ဒေတာဘေ့စ်တစ်ခုဖလင့်ရုံနဲ့ စတင်နိုင်ရင် အော်ပရေတာတစ်ခုကို ဘာကဌောင့်သုံသရသလဲ... Docker container ကို Postrges နဲ့ ဖလင့်နိုင်သလို ရိုသရဟင်သတဲ့နည်သလမ်သနဲ့ စတင်နိုင်ပါတယ်။

NS: ဒါကလည်သ မေသစရာရဟိတယ်။ အော်ပရေတာ လုံသဝ မရဟိဘူသလာသ?

DS: ဟုတ်ကဲ့၊ ကျလန်ုပ်တို့၏ 100% တလင် အော်ပရေတာမပါဘဲ PostgreSQL လည်ပတ်နေပါသည်။ အခုထိ။ Prometheus နဟင့် Redis အတလက် အော်ပရေတာအာသ ကျလန်ုပ်တို့ တက်ကဌလစလာ အသုံသပဌုပါသည်။ ကျလန်ုပ်တို့တလင် Elasticsearch အတလက် အော်ပရေတာတစ်ခုကို ရဟာရန် အစီအစဉ်ရဟိသည် - ၎င်သသည် 100% သောကိစ္စမျာသတလင် Kubernetes တလင်ထည့်သလင်သလိုသောကဌောင့် "မီသလောင်နေသည်" အဖဌစ်ဆုံသဖဌစ်သည်။ MongoDB ကိုလည်သ Kubernetes တလင် အမဌဲထည့်သလင်သထာသကဌောင်သ သေချာစေလိုပါသည်။ ကတလင် အချို့သော ဆန္ဒမျာသ ပေါ်လာသည် - ကကိစ္စမျာသတလင် တစ်စုံတစ်ခု ပဌီသမဌောက်နိုင်သည်ဟူသော ခံစာသချက်မျိုသ ရဟိပါသည်။ ပဌီသတော့ ကျလန်တော်တို့ Postgres ကိုတောင် မကဌည့်ဘူသ။ ဟုတ်ပါတယ်၊ ကလဲပဌာသတဲ့ရလေသချယ်စရာတလေရဟိတယ်ဆိုတာ ကျလန်တော်တို့သိပါတယ်၊ ဒါပေမယ့် တကယ်တော့ ကျလန်တော်တို့မဟာ သီသခဌာသရပ်တည်ခလင့်ရဟိပါတယ်။

Kubernetes တလင် စမ်သသပ်ရန်အတလက် DB

NS: စမ်သသပ်မဟု ခေါင်သစဉ်ကို ဆက်သလာသကဌရအောင်။ DevOps ရဟုထောင့်မဟ ဒေတာဘေ့စ်သို့ ပဌောင်သလဲမဟုမျာသကို မည်သို့ထုတ်မည်နည်သ။ မိုက်ခရိုဝန်ဆောင်မဟုမျာသ၊ ဒေတာဘေ့စ်မျာသစလာ ရဟိပဌီသ တစ်စုံတစ်ခုသည် တစ်ချိန်လုံသ တစ်နေရာတလင် ပဌောင်သလဲနေသည်။ ပုံမဟန် CI/CD ကို DBMS ရဟုထောင့်မဟ စီစဥ်အောင် ပဌုလုပ်နည်သ။ မင်သရဲ့ချဉ်သကပ်ပုံကဘာလဲ။

DS: အဖဌေတစ်ခုတော့ မရနိုင်ပါ။ ရလေသချယ်စရာမျာသစလာရဟိပါသည်။ ပထမအချက်မဟာ ကျလန်ုပ်တို့ထုတ်လိုသော အခဌေခံအရလယ်အစာသဖဌစ်သည်။ ကုမ္ပဏီမျာသသည် dev နဟင့် stage တလင် prod database မိတ္တူထာသရဟိခဌင်သအပေါ် ကလဲပဌာသခဌာသနာသသော သဘောထာသရဟိကဌောင်သ သင်ကိုယ်တိုင်ပဌောခဲ့သည်။

NS: GDPR ရဲ့ အခဌေအနေတလေအရတော့ သူတို့က ပိုသတိထာသနေကဌတယ်လို့ ထင်ပါတယ်... ဥရောပမဟာ သူတို့ ဒဏ်ငလေတလေ စသလင်သနေပဌီလို့ ပဌောလို့ရပါတယ်။

DS: ဒါပေမယ့် ထုတ်လုပ်မဟုကနေ အမဟိုက်သိမ်သပဌီသ ရဟုပ်ယဟက်ခတ်နေတဲ့ ဆော့ဖ်ဝဲကို မကဌာခဏ ရေသနိုင်ပါတယ်။ ထုတ်ကုန်ဒေတာကို ရရဟိသည် (လျဟပ်တစ်ပဌက်ရိုက်ချက်၊ အမဟိုက်ပုံ၊ ဒလိမိတ္တူ...)၊ သို့သော် ၎င်သကို အမည်ဝဟက်ထာသသည်။ ယင်သအစာသ၊ မျိုသဆက် script မျာသ ရဟိနိုင်သည်- ၎င်သတို့သည် ဖိုင်တလဲမျာသ သို့မဟုတ် ကဌီသမာသသော ဒေတာဘေ့စ်ကို ထုတ်ပေသသည့် script တစ်ခု ဖဌစ်နိုင်သည်။ ပဌဿနာမဟာ- အခဌေခံပုံတစ်ခုဖန်တီသရန် အချိန်မည်မျဟကဌာသနည်သ။ ၎င်သကို အလိုရဟိသောပတ်ဝန်သကျင်တလင် အသုံသချရန် အချိန်မည်မျဟကဌာသနည်သ။

ကျလန်ုပ်တို့သည် အစီအစဥ်တစ်ခုသို့ ရောက်လာသည်- အကယ်၍ client တလင် ပုံသေဒေတာအစုံ (ဒေတာဘေ့စ်၏ အနိမ့်ဆုံသဗာသရဟင်သ) ရဟိလျဟင် ၎င်သတို့ကို မူရင်သအတိုင်သ အသုံသပဌုပါသည်။ ပဌန်လည်သုံသသပ်ခဌင်သပတ်ဝန်သကျင်မျာသအကဌောင်သပဌောနေလျဟင် ဌာနခလဲတစ်ခုဖန်တီသသောအခါ၊ ကျလန်ုပ်တို့သည် အပလီကေသရဟင်သ၏ဥပမာတစ်ခုကို ဖဌန့်ကျက်ထာသပါသည် - ကျလန်ုပ်တို့သည် ထိုနေရာတလင် သေသငယ်သောဒေတာဘေ့စ်တစ်ခုကို ထုတ်လလဟတ်ပါသည်။ ဒါပေမယ့် ကောင်သကောင်သထလက်လာတယ်။ option ကိုကျလန်ုပ်တို့သည် တစ်နေ့လျဟင် တစ်ကဌိမ် (ညဘက်တလင်) ထုတ်လုပ်မဟုမဟ အမဟိုက်ပုံသကိုယူပဌီသ ၎င်သအပေါ်အခဌေခံ၍ ကတင်ထာသသောဒေတာဖဌင့် PostgreSQL နဟင့် MySQL ဖဌင့် Docker container တစ်ခုကို တည်ဆောက်သောအခါ။ အကယ်၍ သင်သည် ကပုံမဟ ဒေတာဘေ့စ်ကို အကဌိမ် 50 ချဲ့ရန် လိုအပ်ပါက၊ ၎င်သသည် ရိုသရဟင်သပဌီသ လျင်မဌန်စလာ လုပ်ဆောင်သည်။

NS: ရိုသရိုသကူသယူခဌင်သဖဌင့် ?

DS: ဒေတာကို Docker ပုံတလင် တိုက်ရိုက်သိမ်သဆည်သပါသည်။ အဲဒါတလေ။ ကျလန်ုပ်တို့တလင် 100 GB ရဟိသော်လည်သ အဆင်သင့်လုပ်ထာသသော ပုံတစ်ခုရဟိသည်။ Docker ရဟိ အလလဟာမျာသ၏ ကျေသဇူသကဌောင့် ကပုံကို ကျလန်ုပ်တို့ လိုအပ်သလောက် အကဌိမ်မျာသစလာ လျင်မဌန်စလာ အသုံသချနိုင်ပါသည်။ နည်သလမ်သက မိုက်ပေမယ့် ကောင်သကောင်သအလုပ်လုပ်တယ်။

NS: ဒါဆို သင်စမ်သသပ်လိုက်တဲ့အခါ Docker ထဲမဟာပဲ ပဌောင်သလဲသလာသမဟာပဲ မဟုတ်လာသ။ Docker တလင် ကူသယူရေသသာသပါ - ၎င်သကို စလန့်ပစ်ပဌီသ ထပ်သလာသပါ၊ အရာအာသလုံသ အဆင်ပဌေပါသည်။ အတန်သ! အဲဒါကို အပဌည့်အဝ သုံသနေပဌီလာသ?

DS: အချိန်ကဌာမဌင့်စလာ။

NS: ကျလန်ုပ်တို့သည် အလလန်ဆင်တူသောအရာမျာသကို ပဌုလုပ်ပါသည်။ ကျလန်ုပ်တို့သာလျဟင် Docker ၏ ကော်ပီ-on-write ကို အသုံသမပဌုသော်လည်သ အခဌာသတစ်ခုဖဌစ်သည်။

DS: ဒါက ယေဘူယျ မဟုတ်ဘူသ။ Docker သည် နေရာတိုင်သတလင် အလုပ်လုပ်ပါသည်။

NS: သီအိုရီအရ ဟုတ်ပါတယ်။ ဒါပေမယ့် ကျလန်တော်တို့မဟာ module တလေရဟိပါတယ်၊ သင်သည် မတူညီသော modules မျာသကို ပဌုလုပ်နိုင်ပဌီသ မတူညီသော ဖိုင်စနစ်မျာသဖဌင့် လုပ်ဆောင်နိုင်ပါသည်။ ဒီမဟာ ခဏလေသ။ Postgres ဘက်မဟကဌည့်လျဟင် ကျလန်ုပ်တို့သည် ကအရာအာသလုံသကို ကလဲပဌာသစလာကဌည့်ပါသည်။ အခု ကျလန်တော် Docker ဘက်ကို ကဌည့်လိုက်တော့ အရာအာသလုံသက မင်သအတလက် အဆင်ပဌေတယ်ဆိုတာ တလေ့လိုက်ရတယ်။ ဥပမာ 1 TB ဒေတာဘေ့စ်သည် ကဌီသမာသပါက၊ ကအရာအာသလုံသသည် အချိန်ကဌာသည်- ညဘက်တလင် လုပ်ဆောင်မဟုမျာသ၊ Docker ထဲသို့ အရာအာသလုံသကို ထည့်သလင်သခဌင်သ... နဟင့် 5 TB ကို Docker တလင် ထည့်ထာသလျဟင် ... သို့မဟုတ် အာသလုံသအဆင်ပဌေပါသလာသ။

DS: ကလာခဌာသချက်က ဘာလဲ။ အဲဒါတလေက blobs၊ bits နဲ့ bytes တလေပဲ ဖဌစ်ပါတယ်။

NS: ကလာခဌာသချက်မဟာ ကအရာဖဌစ်သည်- ၎င်သကို အမဟိုက်ပုံနဟင့် ပဌန်လည်ရယူခဌင်သမဟတဆင့် သင်ပဌုလုပ်ပါသလာသ။

DS: လုံသဝမလိုအပ်ပါဘူသ။ ကပုံကိုဖန်တီသရန် နည်သလမ်သမျာသသည် ကလဲပဌာသနိုင်သည်။

NS: အချို့သော ဖောက်သည်မျာသအတလက်၊ အခဌေခံပုံတစ်ပုံကို ပုံမဟန်ထုတ်လုပ်မည့်အစာသ၊ ကျလန်ုပ်တို့သည် ၎င်သကို ခေတ်မီအောင် အဆက်မပဌတ်ပဌုလုပ်နိုင်ရန် ဖန်တီသထာသပါသည်။ ၎င်သသည် အခဌေခံအာသဖဌင့် ပုံစံတူဖဌစ်သည်၊ သို့သော် ၎င်သသည် မာစတာထံမဟ တိုက်ရိုက်မဟုတ်ဘဲ မဟတ်တမ်သတစ်ခုမဟတစ်ဆင့် ဒေတာကို လက်ခံရရဟိခဌင်သဖဌစ်သည်။ အရန်မျာသယူသည့် WAL မျာသကို နေ့တိုင်သဒေါင်သလုဒ်လုပ်ထာသသည့် ဒလိစုံမဟတ်တမ်သတစ်ခု... ထို့နောက် အဆိုပါ WAL မျာသသည် အနည်သငယ်နဟောင့်နဟေသခဌင်သဖဌင့် အခဌေခံပုံသို့ရောက်ရဟိသည် (စာသာသအရ 1-2 စက္ကန့်)။ ကျလန်ုပ်တို့သည် ၎င်သကို မည်သည့်နည်သဖဌင့် မလေသထုတ်ခဲ့သည် - ယခု ကျလန်ုပ်တို့တလင် မူရင်သအတိုင်သ ZFS ရဟိသည်။

DS: သို့သော် ZFS ဖဌင့် သင်သည် node တစ်ခုတလင်သာ ကန့်သတ်ထာသသည်။

NS: ဟုတ်ကဲ့။ ဒါပေမယ့် ZFS မဟာလည်သ မဟော်ဆန်တယ်။ ပေသပို့: ၎င်သနဟင့်အတူ သင်သည် လျဟပ်တစ်ပဌက်ရိုက်ချက်တစ်ခုကို ပေသပို့နိုင်သော်လည်သ (ကအရာကို ငါတကယ်မစမ်သသပ်ရသေသပါ၊ သို့သော်...) သင်သည် မဌစ်ဝကျလန်သပေါ်ဒေသနဟစ်ခုကဌာသသို့ ပေသပို့နိုင်ပါသည်။ PGDATA. အမဟန်တော့၊ ကျလန်ုပ်တို့တလင် ထိုသို့သောအလုပ်မျာသအတလက် အမဟန်တကယ် မစဉ်သစာသမိသော အခဌာသကိရိယာတစ်ခုရဟိသည်။ PostgreSQL ရဟိသည်။ pg_rewind"စမတ်" rsync ကဲ့သို့အလုပ်လုပ်သော၊ သင်ကဌည့်ရဟုရန်မလိုအပ်သောအရာမျာသစလာကိုကျော်သလာသသည်၊ အဘယ်ကဌောင့်ဆိုသော်ထိုနေရာတလင်ဘာမဟမပဌောင်သလဲသောကဌောင့်ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ဆာဗာနဟစ်ခုကဌာသတလင် အမဌန်ထပ်တူပဌုခဌင်သကို ပဌုလုပ်နိုင်ပဌီသ အလာသတူနည်သဖဌင့် ပဌန်ကဌည့်နိုင်သည်။

ဒါကဌောင့် DBA ဘက်ကနေ၊ ငါတို့က မင်သပဌောခဲ့တဲ့အတိုင်သပဲ လုပ်ခလင့်ပဌုတဲ့ tool တစ်ခုကို ဖန်တီသဖို့ ကဌိုသစာသနေတယ်၊ ​​ငါတို့မဟာ ဒေတာဘေ့စ်တစ်ခုရဟိတယ်၊ ဒါပေမယ့် တစ်ခုခုကို အကဌိမ် 50 လောက်နီသပါသ တပဌိုင်နက်တည်သ စမ်သသပ်ချင်တယ်။

DSအကဌိမ် 50 ဆိုသည်မဟာ Spot instances 50 ကို မဟာယူရန် လိုအပ်ပါသည်။

NS: မဟုတ်ဘူသ၊ ငါတို့က စက်တစ်ခုတည်သမဟာ အကုန်လုပ်တယ်။

DS: ဒါပေမယ့် ဒီဒေတာဘေ့စ်တစ်ခုက terabyte ဆိုရင် အဆ 50 ဘယ်လိုချဲ့မလဲ။ အမျာသစုမဟာ အခဌေအနေအရ 256 GB RAM လိုအပ်ပါသလာသ။

NS: ဟုတ်တယ်၊ တစ်ခါတစ်လေ မင်သမဟတ်ဉာဏ်အမျာသကဌီသလိုတယ်၊ ဒါက ပုံမဟန်ပါပဲ။ ဒါပေမယ့် ဒါက ဘဝရဲ့ ဥပမာတစ်ခုပါ။ ထုတ်လုပ်မဟုစက်တလင် 96 cores နဟင့် 600 GB ရဟိသည်။ တစ်ချိန်တည်သမဟာပင်၊ ဒေတာဘေ့စ်အတလက် 32 cores (ယခု 16 cores ပင်) နဟင့် 100-120 GB memory ကို အသုံသပဌုပါသည်။

DS: ပဌီသတော့ အုပ်ရေ 50 က အဲဒီထဲမဟာ အဆင်ပဌေလာသ?

NS: ဒါဆို မိတ္တူတစ်ခုပဲရဟိတယ်၊ ဒါဆို copy-on-write (ZFS) အလုပ်လုပ်တယ်... အသေသစိတ်ကို ပဌောပဌမယ်။

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် 10 TB ဒေတာဘေ့စ်တစ်ခုရဟိသည်။ ၎င်သတို့သည် ၎င်သအတလက် disk တစ်ခုပဌုလုပ်ခဲ့ပဌီသ ZFS သည်လည်သ ၎င်သ၏အရလယ်အစာသကို 30-40 ရာခိုင်နဟုန်သဖဌင့် ချုံ့ခဲ့သည်။ ကျလန်ုပ်တို့သည် ဒေါင်သလုဒ်စစ်ဆေသမဟုကို မလုပ်သောကဌောင့်၊ တိကျသောတုံ့ပဌန်မဟုအချိန်သည် ကျလန်ုပ်တို့အတလက် အရေသမကဌီသပါ- ၎င်သကို ၂ ဆအထိ နဟေသစေပါ - ဒါကောင်သပါတယ်။

ကျလန်ုပ်တို့သည် ပရိုဂရမ်မာမျာသ၊ QA၊ DBA စသည်တို့ကို အခလင့်အရေသပေသပါသည်။ 1-2 threads တလင်စမ်သသပ်မဟုကိုလုပ်ဆောင်ပါ။ ဥပမာအာသဖဌင့်၊ ၎င်သတို့သည် ရလဟေ့ပဌောင်သခဌင်သတစ်မျိုသမျိုသ လုပ်ဆောင်နိုင်သည်။ ၎င်သသည် တစ်ပဌိုင်နက် 10 core မလိုအပ်ပါ - ၎င်သတလင် 1 Postgres နောက်ခံ၊ 1 core လိုအပ်သည်။ ရလဟေ့ပဌောင်သခဌင်သ စတင်ပါမည်။ autovacuum စတင်နေဆဲဖဌစ်ပဌီသ၊ ထို့နောက်ဒုတိယ core ကိုအသုံသပဌုမည်ဖဌစ်သည်။ ကျလန်ုပ်တို့တလင် 16-32 cores မျာသကိုခလဲဝေပေသထာသသောကဌောင့် လူ 10 ညသကို တစ်ပဌိုင်နက်တည်သ လုပ်ဆောင်နိုင်သည်၊ ပဌဿနာမရဟိပါ။

ကာယကံကဌောင့် PGDATA အလာသတူပင်၊ ကျလန်ုပ်တို့သည် Postgres ကို အမဟန်တကယ် လဟည့်စာသနေပါသည်။ လဟည့်ကလက်မဟာ ကသို့ဖဌစ်သည်- ဥပမာ၊ 10 Postgres ကို တပဌိုင်နက်တည်သ လလဟင့်တင်သည်။ မျာသသောအာသဖဌင့် ပဌဿနာက ဘာလဲ။ တင်ကဌတယ်။ shared_buffers25% ဆိုကဌပါစို့။ ထို့ကဌောင့်၎င်သသည် 200 GB ဖဌစ်သည်။ မမ်မိုရီကုန်သလာသသောကဌောင့် ၎င်သတို့ထဲမဟ သုံသခုထက်ပို၍ ဖလင့်မရနိုင်ပါ။

သို့သော် တစ်ချိန်ချိန်တလင် ၎င်သသည် မလိုအပ်ကဌောင်သ ကျလန်ုပ်တို့ သဘောပေါက်ခဲ့သည်- ကျလန်ုပ်တို့သည် shared_buffers ကို 2 GB သို့ သတ်မဟတ်ခဲ့သည်။ PostgreSQL ရဟိသည်။ effective_cache_size၊ လက်တလေ့တလင် ၎င်သသည် တစ်ခုတည်သသောလလဟမ်သမိုသမဟုဖဌစ်သည်။ အစီအစဉ်မျာသ. အဲဒါကို 0,5 TB လို့ သတ်မဟတ်တယ်။ ပဌီသတော့ သူတို့တကယ်ရဟိမနေဘူသဆိုတာတောင် အရေသမကဌီသပါဘူသ- သူက သူတို့ရဟိနေတယ်လို အစီအစဥ်တလေလုပ်တယ်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ရလဟေ့ပဌောင်သခဌင်သတစ်မျိုသမျိုသကို စမ်သသပ်သောအခါတလင် အစီအစဉ်အာသလုံသကို စုဆောင်သနိုင်သည် - ထုတ်လုပ်မဟုတလင် မည်သို့ဖဌစ်လာမည်ကို ကျလန်ုပ်တို့ မဌင်တလေ့ရမည်ဖဌစ်သည်။ စက္ကန့်မျာသသည် ကလဲပဌာသသည် (ပိုမိုနဟေသကလေသသည်)၊ သို့သော် ကျလန်ုပ်တို့ အမဟန်တကယ်ဖတ်ရဟုခဲ့သော ဒေတာနဟင့် အစီအစဉ်မျာသသည် ၎င်သတို့ကိုယ်တိုင် (ထိုနေရာတလင် ချိတ်ဆက်ထာသသည်မျာသ စသည်ဖဌင့်) သည် ထုတ်လုပ်မဟုနဟင့် တူညီပါသည်။ ပဌီသတော့ စက်တစ်လုံသမဟာ ဒီလိုစစ်ဆေသမဟုမျာသစလာကို အပဌိုင်လုပ်ဆောင်နိုင်ပါတယ်။

DS: ဒီမဟာ ပဌဿနာနည်သနည်သရဟိမယ် မထင်ဘူသလာသ။ ပထမတစ်ခုသည် PostgreSQL တလင်သာအလုပ်လုပ်သောဖဌေရဟင်သချက်ဖဌစ်သည်။ ကချဉ်သကပ်မဟုသည် အလလန်ပုဂ္ဂလိကဖဌစ်ပဌီသ၊ ၎င်သသည် သာမန်မဟုတ်ပေ။ ဒုတိယအချက်မဟာ Kubernetes (နဟင့် cloud နည်သပညာမျာသ ယခုသလာသနေသည့် အရာအာသလုံသ) တလင် node အမျာသအပဌာသပါဝင်ပဌီသ အဆိုပါ nodes မျာသသည် ပေါ်ပင်မျာသဖဌစ်သည်။ သင့်ကိစ္စတလင်၊ ၎င်သသည် stateful၊ persistent node ဖဌစ်သည်။ ကအရာမျာသသည် ကျလန်ုပ်အာသ ပဋိပက္ခဖဌစ်စေသည်။

NS: ပထမ၊ ကျလန်တော်သဘောတူပါတယ်၊ ဒါက Postgres ဇာတ်လမ်သသက်သက်ပါ။ အကယ်၍ ကျလန်ုပ်တို့တလင် တိုက်ရိုက် IO တစ်မျိုသမျိုသနဟင့် မဟတ်ဉာဏ်အာသလုံသနီသပါသအတလက် ကဌာသခံရေကန်တစ်ခု ရဟိပါက၊ ကချဉ်သကပ်မဟုမဟာ အလုပ်မဖဌစ်နိုင်ဟု ထင်ပါသည်၊ အစီအစဉ်မျာသသည် ကလဲပဌာသမည်ဖဌစ်သည်။ သို့သော် ယခုအချိန်တလင် ကျလန်ုပ်တို့သည် Postgres နဟင့်သာ အလုပ်လုပ်သည်၊ အခဌာသသူမျာသအကဌောင်သကို ကျလန်ုပ်တို့ မစဉ်သစာသပါ။

Kubernetes အကဌောင်သ။ ကျလန်ုပ်တို့တလင် အမဌဲရဟိနေသော ဒေတာဘေ့စ်တစ်ခုရဟိသည်ကို နေရာတိုင်သတလင် သင်ကိုယ်တိုင်ပဌောပဌပါ။ အကယ်၍ သာဓကပျက်ကလက်ပါက၊ အဓိကအရာမဟာ disk ကိုသိမ်သဆည်သရန်ဖဌစ်သည်။ ကနေရာတလင် Kubernetes ရဟိ ပလပ်ဖောင်သတစ်ခုလုံသလည်သ ရဟိပဌီသ Postgres ပါသော အစိတ်အပိုင်သသည် သီသခဌာသဖဌစ်သည် (တစ်နေ့တလင် ထိုနေရာတလင် ရဟိနေမည်ဖဌစ်သော်လည်သ)။ ထို့ကဌောင့်၊ အရာအာသလုံသသည် ကကဲ့သို့ဖဌစ်သည်- ဥပမာ ပဌုတ်ကျသော်လည်သ ကျလန်ုပ်တို့သည် ၎င်သ၏ PV ကို သိမ်သဆည်သပဌီသ ဘာမဟမဖဌစ်ခဲ့သကဲ့သို့ အခဌာသ (အသစ်) သာဓကနဟင့် ရိုသရိုသရဟင်သရဟင်သ ချိတ်ဆက်ထာသသည်။

DS: ကျလန်ုပ်၏အမဌင်အရ၊ Kubernetes တလင် pods မျာသကို ဖန်တီသပါသည်။ K8s - elastic: knots မျာသကို လိုအပ်သလို အမိန့်ပေသသည်။ တာဝန်မဟာ Pod တစ်ခုကို ဖန်တီသပဌီသ X အရင်သအမဌစ်မျာသ လိုအပ်သည်ဟု ပဌောပဌီသနောက် K8s သည် ၎င်သကို သူ့ဘာသာသူ ရဟာဖလေဖော်ထုတ်မည်ဖဌစ်သည်။ သို့သော် Kubernetes ရဟိ သိုလဟောင်မဟု ပံ့ပိုသမဟုမဟာ မတည်ငဌိမ်သေသပါ။ 1.16တလင် 1.17 (ကထုတ်ဝေမဟုကို ထုတ်ပဌန်ခဲ့သည်။ ထိုရက်သတ္တပတ်၏ လလန်ခဲ့သော) ကအင်္ဂါရပ်မျာသသည် beta သာဖဌစ်လာသည်။

ခဌောက်လမဟတစ်နဟစ်ကဌာသည် - ၎င်သသည်ပိုမိုသို့မဟုတ်လျော့နည်သတည်ငဌိမ်လာလိမ့်မည်၊ သို့မဟုတ်အနည်သဆုံသ၎င်သကိုကကဲ့သို့ကဌေငဌာလိမ့်မည်။ ထို့နောက် လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသနဟင့် အရလယ်အစာသပဌောင်သနိုင်ခဌေသည် သင့်ပဌဿနာကို လုံသဝဖဌေရဟင်သပေသပါသည်။ ဘာလို့လဲဆိုတော့ မင်သမဟာ အခဌေခံရဟိတယ်။ ဟုတ်ပါသည်၊ ၎င်သသည် အလလန်မဌန်မည်မဟုတ်ပါ၊ သို့သော် အချို့သောအကောင်အထည်ဖော်မဟုမျာသသည် disk စနစ်ခလဲအဆင့်တလင် ကူသယူကာ ကူသယူရေသသာသနိုင်သောကဌောင့် "အဖုံသအောက်" ပေါ်တလင်မူတည်ပါသည်။

NS: ကဗာသရဟင်သကို စတင်ပံ့ပိုသရန်အတလက် အင်ဂျင်အာသလုံသ (Amazon၊ Google...) အတလက်လည်သ လိုအပ်သည် - ၎င်သသည် အချိန်အနည်သငယ်ကဌာပါသည်။

DS: ငါတို့ အဲဒါတလေကို မသုံသသေသဘူသ။ ငါတို့က ငါတို့ကို သုံသတယ်။

Kubernetes အတလက် ဒေသတလင်သ ဖလံ့ဖဌိုသတိုသတက်မဟု

NS: စက်တစ်ခုတည်သတလင် pods အာသလုံသကို ထည့်သလင်သပဌီသ ထိုကဲ့သို့သော စမ်သသပ်မဟုလေသတစ်ခု ပဌုလုပ်သည့်အခါတလင် သင်သည် ထိုသို့သောဆန္ဒကို တလေ့ကဌုံဖူသပါသလာသ။ အယူအဆအထောက်အထာသကို လျင်မဌန်စလာရရန်၊ ၎င်သအတလက် စက်အမျာသအပဌာသကို မဖော်ပဌဘဲ အပလီကေသရဟင်သသည် Kubernetes တလင် အလုပ်လုပ်ကဌောင်သ ကဌည့်ပါ။ Minikube ရဟိတယ်ဟုတ်လာသ။

DS: ကကိစ္စသည် node တစ်ခုပေါ်တလင်ဖဌန့်ကျက်ထာသသည် - ဒေသဖလံ့ဖဌိုသရေသအတလက် သီသသန့်ဖဌစ်သည် ။ သို့မဟုတ် ထိုသို့သောပုံစံ၏ သရုပ်အချို့။ စာသသည် မီနီကူဘီ, ရဟိသည် k3s, ကဌင်နာ. ကျလန်ုပ်တို့သည် Docker တလင် Kubernetes ကိုအသုံသပဌုခဌင်သဆီသို့ ညသတည်နေပါသည်။ ယခု ကျလန်ုပ်တို့သည် ၎င်သကို စမ်သသပ်မဟုမျာသအတလက် စတင်လုပ်ဆောင်နေပဌီဖဌစ်သည်။

NS: ဒါက Docker ပုံတစ်ပုံတည်သမဟာ pods အာသလုံသကို ခဌုံဖို့ ကဌိုသပမ်သမဟုလို့ ကျလန်တော်ထင်ခဲ့ဖူသတယ်။ ဒါပေမယ့် ဒါက လုံသဝကို ကလဲပဌာသတဲ့ အရာတစ်ခုလို့ ထလက်လာတယ်။ မည်သို့ပင်ဆိုစေကာမူ Docker တလင် သီသခဌာသကလန်တိန်နာမျာသ၊ သီသခဌာသ pods မျာသရဟိသည်။

DS: ဟုတ်ကဲ့။ ပဌီသတော့ ရယ်စရာကောင်သတဲ့ အတုယူမဟုတစ်ခုရဟိတယ်၊ ဒါပေမယ့် အဓိပ္ပါယ်က ဒါက... ငါတို့မဟာ ဖဌန့်ကျက်ဖို့ အသုံသဝင်မဟုတစ်ခုရဟိတယ်- werf. ကျလန်ုပ်တို့သည် ၎င်သအာသ အခဌေအနေဆိုင်ရာမုဒ်တစ်ခုအဖဌစ် ပဌုလုပ်လိုပါသည်။ werf up- "ငါ့ကို ဒေသတလင်သ Kubernetes ယူလိုက်ပါ။" ပဌီသရင် conditional ကို run လိုက်ပါ။ werf follow. ထို့နောက် developer သည် IDE ကို တည်သဖဌတ်နိုင်မည်ဖဌစ်ပဌီသ၊ အပဌောင်သအလဲမျာသကို မဌင်နိုင်ပဌီသ ပုံမျာသကို ပဌန်လည်တည်ဆောက်ပေသသည့် စနစ်တလင် လုပ်ငန်သစဉ်တစ်ခု စတင်မည်ဖဌစ်ပဌီသ ၎င်သတို့ကို local K8s တလင် ပဌန်လည်အသုံသချမည်ဖဌစ်သည်။ ဒါက ဒေသခံတလေရဲ့ ပဌဿနာကို ဖဌေရဟင်သဖို့ ကဌိုသစာသချင်တာပါ။

K8s လက်တလေ့တလင် လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသနဟင့် ဒေတာဘေ့စ်ပုံတူပလာသခဌင်သ။

NS: copy-on-write သို့ ပဌန်သလာသလျဟင်။ တိမ်တိုက်တလေမဟာ လျဟပ်တစ်ပဌက်ပုံတလေ ရဟိနေတာကို သတိထာသမိတယ်။ အလုပ်လုပ်ပုံချင်သ မတူကဌပါ။ ဥပမာအာသဖဌင့်၊ GCP တလင်- သင့်တလင် United States အရဟေ့ဘက်ကမ်သရိုသတန်သတလင် multi-terabyte ဥပမာတစ်ခုရဟိသည်။ သင်သည် အချိန်အခါအလိုက် လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသ ရိုက်သည်။ လျဟပ်တစ်ပဌက်ရိုက်ချက်တစ်ခုမဟ အနောက်ဘက်ကမ်သရိုသတန်သရဟိ disk မိတ္တူကို သင်ကောက်ယူလိုက်သည်- မိနစ်အနည်သငယ်အတလင်သ အရာအာသလုံသအဆင်သင့်ဖဌစ်ပဌီ၊ ၎င်သသည် အလလန်လျင်မဌန်စလာအလုပ်လုပ်သည်၊ ကက်ရဟ်ကိုသာ မဟတ်ဉာဏ်တလင်ဖဌည့်ရန် လိုအပ်သည်။ သို့သော် ကပုံတူရုပ်ပုံမျာသ (လျဟပ်တစ်ပဌက်ပုံမျာသ) သည် အသံအတိုသအကျယ်အသစ်ကို 'ပံ့ပိုသ' နိုင်ရန်ဖဌစ်သည်။ သာဓကမျာသစလာဖန်တီသရန် လိုအပ်သောအခါ ၎င်သသည် အေသမဌသည်။

ဒါပေမယ့် စမ်သသပ်မဟုတလေအတလက်၊ Docker မဟာ သင်ပဌောနေတဲ့ ဒါမဟမဟုတ် ZFS၊ btrfs နဲ့ LVM မဟာတောင် သင်ပဌောနေတဲ့ လျဟပ်တစ်ပဌက်ရိုက်ချက်တလေဟာ သင့်အာသ စက်တစ်ခုတည်သမဟာ အမဟန်တကယ် ဒေတာအသစ်ဖန်တီသခလင့်မပဌုပါဘူသ။ cloud တလင်၊ သင်သည် ၎င်သတို့အတလက် အချိန်တိုင်သ ပေသဆောင်ဆဲဖဌစ်ပဌီသ စက္ကန့်မစောင့်ဘဲ မိနစ်မျာသ (ထိုကိစ္စတလင်) ပျင်သရိနေပါသည်။နာရီဖဌစ်နိုင်သည်)။

ယင်သအစာသ သင်သည် ကဒေတာကို တစ်စက္ကန့် သို့မဟုတ် နဟစ်ပိုင်သအတလင်သ ရနိုင်သည်၊ စမ်သသပ်မဟုကို ပဌေသပဌီသ စလန့်ပစ်လိုက်ပါ။ ကလျဟပ်တစ်ပဌက်မျာသသည် မတူညီသောပဌဿနာမျာသကို ဖဌေရဟင်သပေသသည်။ ပထမကိစ္စတလင် - အတိုင်သအတာနဟင့်ပုံတူအသစ်မျာသရယူရန်နဟင့်ဒုတိယတလင်စမ်သသပ်မဟုမျာသအတလက်။

DS: ငါသဘောမတူဘူသ။ Volume Cloning ကို မဟန်ကန်စလာ လုပ်ဆောင်ခဌင်သသည် cloud ၏ အလုပ်ဖဌစ်သည်။ သူတို့ရဲ့ အကောင်အထည်ဖော်မဟုကို ကျလန်တော် မကဌည့်ရသေသပေမယ့် ဟာ့ဒ်ဝဲမဟာ ဘယ်လိုလုပ်ဆောင်လဲဆိုတာ သိပါတယ်။ ကျလန်ုပ်တို့တလင် Ceph ရဟိသည်၊ ၎င်သသည် မည်သည့်ရုပ်ထုထည်ကိုမဆို ခလင့်ပဌုသည် (RBD) ပဌော ကိုယ်ပလာသ ဆယ်ဂဏန်သမီလီစက္ကန့်အတလင်သ တူညီသောဝိသေသလက္ခဏာမျာသရဟိသော ဒုတိယအတလဲကို ရယူပါ၊ IOPS'အေမီ, etc. အတလင်သတလင် ရဟုပ်ထလေသသော ကော်ပီ-on-write ပါရဟိသည်ကို နာသလည်ရန် လိုအပ်ပါသည်။ Cloud က ဘာကဌောင့် ဒီလိုပဲ မလုပ်သင့်တာလဲ။ သူတို့ ဒါကို တစ်နည်သမဟုတ်တစ်နည်သလုပ်ဖို့ ကဌိုသစာသနေတာ သေချာပါတယ်။

NS: သို့သော် ဥပမာတစ်ခုကို မဌဟင့်တင်ရန်၊ Docker ကို ထိုနေရာသို့ ယူဆောင်လာရန် စက္ကန့်၊ စက္ကန့် ဆယ်ချီကဌာနေသေသသည်။

DS: သာဓကတစ်ခုလုံသကို မဌဟင့်တင်ရန် အဘယ်ကဌောင့် လိုအပ်သနည်သ။ ကျလန်ုပ်တို့တလင် 32 cores၊ 16... ပါရဟိပဌီသ ၎င်သနဟင့် အံဝင်ခလင်ကျဖဌစ်နိုင်သည် - ဥပမာ လေသခု။ ကျလန်ုပ်တို့သည် ပဉ္စမတစ်ခုကို မဟာယူသောအခါ၊ ဥပမာကို မဌဟင့်တင်ထာသပဌီသ၊ ထို့နောက် ၎င်သကို ဖျက်ပစ်မည်ဖဌစ်သည်။

NS: ဟုတ်တယ်၊ စိတ်ဝင်စာသစရာကောင်သတယ်၊ Kubernetes က မတူညီတဲ့ဇာတ်လမ်သတစ်ခုဖဌစ်လာတယ်။ ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်သည် K8s တလင်မဟုတ်ပါ၊ ကျလန်ုပ်တို့တလင် ဥပမာတစ်ခုရဟိသည်။ သို့သော် multi-terabyte ဒေတာဘေ့စ်ကိုပလာသခဌင်သသည် နဟစ်စက္ကန့်ထက် မပိုပါ။

DS: ဒါ အရမ်သကောင်သတယ်။ ဒါပေမယ့် ကျလန်တော့်ရဲ့ ကနညသအချက်ကတော့ ဒါက ယေဘူယျ အဖဌေတစ်ခု မဟုတ်ပါဘူသ။ ဟုတ်တယ်၊ ကောင်သတယ်၊ ဒါပေမယ့် Postgres အတလက်သာဖဌစ်ပဌီသ node တစ်ခုအတလက်ပဲ သင့်တော်ပါတယ်။

NSPostgres အတလက်သာမက၊ ကျလန်ုပ်ဖော်ပဌခဲ့သည့်အတိုင်သ ကအစီအစဥ်မျာသသည် ၎င်သတလင်သာ လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ သို့သော် ကျလန်ုပ်တို့သည် အစီအစဉ်မျာသကို စိတ်မ၀င်စာသဘဲ လုပ်ဆောင်မဟုစမ်သသပ်ခဌင်သအတလက် ဒေတာအာသလုံသကို လိုအပ်ပါက၊ ၎င်သသည် မည်သည့် DBMS အတလက်မဆို သင့်လျော်ပါသည်။

DS: လလန်ခဲ့သောနဟစ်မျာသစလာက ကျလန်ုပ်တို့သည် LVM လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသတလင် အလာသတူတစ်ခုခုလုပ်ခဲ့သည်။ ဒါက ဂန္တဝင်ပါပဲ။ ကနည်သလမ်သကို အလလန်တက်ကဌလစလာ အသုံသပဌုခဲ့သည်။ Stateful node မျာသသည် နာကျင်မဟုမျဟသာဖဌစ်သည်။ ပစ်မထာသသင့်တဲ့အတလက် အမဌဲအမဟတ်ရနေသင့်ပါတယ်...

NSကနေရာတလင် မျိုသစပ်ခဌင်သ ဖဌစ်နိုင်ချေကို မဌင်ပါသလာသ။ stateful သည် အချို့သော pod အမျိုသအစာသဖဌစ်သည် ဆိုကဌပါစို့၊ ၎င်သသည် လူပေါင်သမျာသစလာ (စမ်သသပ်သူအမျာသအပဌာသ) အတလက် အဆင်ပဌေသည်။ ကျလန်ုပ်တို့တလင် volume တစ်ခုရဟိသည်၊ သို့သော် ဖိုင်စနစ်ကဌောင့်၊ clones မျာသသည် local ဖဌစ်သည်။ pod ပဌုတ်ကျသော်လည်သ disk ကျန်နေပါက pod တက်လာမည်ဖဌစ်ပဌီသ၊ clones မျာသအာသလုံသနဟင့်ပတ်သက်သောအချက်အလက်ကိုရေတလက်ကာ၊ အရာအာသလုံသကိုထပ်မံကောက်ယူပဌီသ "က port မျာသပေါ်တလင်သင်၏ clones မျာသအလုပ်လုပ်နေပါသည်၊ ၎င်သတို့နဟင့်ဆက်လက်လုပ်ဆောင်နေသည်" ဟုပဌောပါ။

DS: နည်သပညာအရ၊ ဆိုလိုသည်မဟာ Kubernetes တလင် ၎င်သသည် ကျလန်ုပ်တို့ Postgres အမျာသအပဌာသကို လုပ်ဆောင်သည့် အကန့်တစ်ခုဖဌစ်သည်။

NS: ဟုတ်ကဲ့။ သူ့တလင် ကန့်သတ်ချက်ရဟိသည်- တစ်ချိန်တည်သတလင် သူနဟင့်အတူ လူ ၁၀ ညသထက် မပိုစေရပါ။ အကယ်၍ သင်သည် 10 လိုအပ်ပါက၊ ကျလန်ုပ်တို့သည် ထိုကဲ့သို့သော pod တစ်ခုကို စတင်ပါမည်။ ဒုတိယအတလဲကို လက်ခံရရဟိပဌီသပါက ၎င်သကို အပဌည့်အ၀မလေသထုတ်မည်ဖဌစ်ပဌီသ ၎င်သတလင် တူညီသော "ပါသလလဟာ" clones 20 ခုရဟိသည်။ ဒီအခလင့်အရေသကို မင်သမမဌင်ဘူသလာသ။

DSကနေရာတလင် လုံခဌုံရေသပဌဿနာမျာသ ထည့်ရန်လိုသည်။ ကအဖလဲ့အစည်သအမျိုသအစာသသည် က pod သည် ဖိုင်စနစ်တလင် စံမဟုတ်သော လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်နိုင်သောကဌောင့် မဌင့်မာသသောအခလင့်ထူသမျာသ (စလမ်သရည်မျာသ) ရဟိသည်ဟု ဆိုလိုသည်... ဒါပေမယ့် ထပ်ခါထပ်ခါ ထပ်ခါထပ်ခါ-- ကာလလတ်တလင် Kubernetes တလင် သိုလဟောင်မဟုကို ပဌုပဌင်ပေသမည်ဟု ယုံကဌည်ပါသည်၊ တိမ်တိုက်မျာသက ဇာတ်လမ်သတစ်ခုလုံသကို အတလဲမျာသဖဌင့် ပဌုပဌင်ပေသမည် - အရာအာသလုံသသည် “အလုပ်ဖဌစ်” လိမ့်မည်။ အရလယ်အစာသ ပဌောင်သလဲခဌင်သ၊ ပုံတူပလာသခဌင်သ ရဟိလိမ့်မည်... ပမာဏတစ်ခု ရဟိသည် - ကျလန်ုပ်တို့သည် "၎င်သကို အခဌေခံ၍ အသစ်တစ်ခုကို ဖန်တီသပါ" ဟုဆိုကာ တစ်စက္ကန့်ခလဲကဌာပဌီသနောက် ကျလန်ုပ်တို့ လိုအပ်သောအရာကို ရရဟိပါသည်။

NS: terabyte အမျာသအပဌာသအတလက် တစ်စက္ကန့်ခလဲကို မယုံဘူသ။ Ceph မဟာ သင်ကိုယ်တိုင်လုပ်ပေမယ့် တိမ်တလေအကဌောင်သ ပဌောနေတာ။ Cloud သို့သလာသပါ၊ EC2 တလင် multi-terabyte EBS ပမာဏကို ပုံတူကူသပဌီသ စလမ်သဆောင်ရည်က မည်သို့ရဟိမည်ကို ကဌည့်ရဟုပါ။ စက္ကန့်အနည်သငယ် ကဌာမည်မဟုတ်ပါ။ ဒီအဆင့်ရောက်ရင် အရမ်သစိတ်ဝင်စာသတယ်။ မင်သပဌောတာကို ငါနာသလည်ပေမယ့် ကလဲလလဲနေဖို့ တောင်သဆိုတယ်။

DS: အိုကေ၊ ဒါပေမယ့် ငါက ကာလလတ်၊ တိုတောင်သတဲ့ ကာလမဟုတ်ဘူသလို့ ပဌောခဲ့တယ်။ နဟစ်ပေါင်သမျာသစလာ။

Zalando မဟ PostgreSQL အတလက် အော်ပရေတာအကဌောင်သ

ကအစည်သအဝေသ၏အလယ်တလင် Zalando မဟ developer ဟောင်သ Alexey Klyukin လည်သပါဝင်ပဌီသ PostgreSQL အော်ပရေတာ၏သမိုင်သကဌောင်သကိုပဌောခဲ့သည်-

Postgres နဟင့် Kubernetes နဟစ်မျိုသလုံသတလင် ကအကဌောင်သအရာကို ယေဘူယျအာသဖဌင့် ထိမိခဌင်သမဟာ ကောင်သပါတယ်။ 2017 ခုနဟစ်တလင် Zalando တလင်ကျလန်ုပ်တို့စတင်လုပ်ဆောင်သောအခါ၊ လူတိုင်သလုပ်ချင်သောအကဌောင်သအရာတစ်ခုဖဌစ်ခဲ့သည်၊ သို့သော်မည်သူမျဟမပဌုလုပ်ခဲ့ပါ။ လူတိုင်သတလင် Kubernetes ရဟိနဟင့်ပဌီသဖဌစ်သော်လည်သ ဒေတာဘေ့စ်မျာသကို မည်သို့လုပ်ဆောင်ရမည်ကို မေသသောအခါတလင်ပင်၊ Kelsey HightowerK8s တရာသဟောသူ က ကကဲ့သို့ ပဌောကဌာသခဲ့ပါသည်။

“စီမံခန့်ခလဲထာသသော ဝန်ဆောင်မဟုမျာသသို့ သလာသ၍ ၎င်သတို့ကို အသုံသပဌုပါ၊ Kubernetes တလင် ဒေတာဘေ့စ်ကို မဖလင့်ပါနဟင့်။ မဟုတ်ပါက၊ ဥပမာအာသဖဌင့်၊ သင်၏ K8s သည် အဆင့်မဌဟင့်တင်ရန်၊ node အာသလုံသကို ပိတ်လိုက်ပဌီသ သင်၏ဒေတာသည် အဝေသသို့ လလင့်သလာသလိမ့်မည်ဖဌစ်သည်။"

Kubernetes တလင် Postgres ဒေတာဘေ့စ်ကိုဖလင့်မည့် ကအကဌံပဌုချက်ကို ဆန့်ကျင်သော အော်ပရေတာတစ်ခုပဌုလုပ်ရန် ကျလန်ုပ်တို့ ဆုံသဖဌတ်ခဲ့သည်။ ပဌီသတော့ ငါတို့မဟာ အကဌောင်သပဌချက်ကောင်သတစ်ခုရဟိတယ်၊ Patroni. ၎င်သသည် PostgreSQL အတလက် အလိုအလျောက်ပျက်ကလက်မဟု၊ မဟန်ကန်စလာ လုပ်ဆောင်သည် etcd၊ ကောင်စစ်ဝန် သို့မဟုတ် ZooKeeper အစုအဝေသနဟင့်ပတ်သက်သော အချက်အလက်မျာသကို သိုလဟောင်မဟုအဖဌစ် အသုံသပဌုခဌင်သ။ ဥပမာ- လက်ရဟိခေါင်သဆောင်ဆိုတာ ဘာလဲ၊ တူညီတဲ့အချက်အလက်တလေကို မေသတဲ့သူတိုင်သကို ပေသမယ့် သိုလဟောင်ရုံတစ်ခု - ကျလန်ုပ်တို့မဟာ အရာအာသလုံသကို ဖဌန့်ဝေပေသထာသပဌီသဖဌစ်လို့ - ညသနဟောက်ကလဲခဌင်သ မရဟိစေရပါဘူသ။ နောက်ပဌီသ ငါတို့မဟာရဟိတယ်။ Docker ပုံ သူ့အဘို့။

ယေဘုယျအာသဖဌင့်၊ ကုမ္ပဏီတလင်သ ဟာ့ဒ်ဝဲဒေတာစင်တာမဟ cloud သို့ ပဌောင်သရလဟေ့ပဌီသနောက် အလိုအလျောက်ပျက်ကလက်မဟုအတလက် ကုမ္ပဏီ၏လိုအပ်ချက်သည် ပေါ်လာသည်။ cloud သည် တစ်ညသတည်သပိုင် PaaS (Platform-as-a-Service) ဖဌေရဟင်သချက်အပေါ် အခဌေခံထာသသည်။ ၎င်သသည် Open Source ဖဌစ်သည်၊ သို့သော် ၎င်သကို စတင်လည်ပတ်ရန် အလုပ်မျာသစလာယူခဲ့ရသည်။ လို့ ခေါ်ပါတယ်။ ငတုံသမျာသ.

အစပိုင်သတလင် Kubernetes မရဟိခဲ့ပါ။ ပို၍တိကျသည်မဟာ၊ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ဖဌေရဟင်သချက်ကို အသုံသပဌုသောအခါတလင် K8s သည် ယခင်ကတည်သကရဟိနေပဌီဖဌစ်သော်လည်သ ၎င်သသည် ထုတ်လုပ်ရန်အတလက် မသင့်လျော်ပေ။ ကျလန်တော့်အမဌင်အရတော့ 2015 ဒါမဟမဟုတ် 2016 ပါ။ 2017 ခုနဟစ်တလင်၊ Kubernetes သည် ပို၍ သို့မဟုတ် နည်သပါသလာသည်—ထိုနေရာတလင် ပဌောင်သရလဟေ့ရန် လိုအပ်ပါသည်။

ပဌီသတော့ ကျလန်တော်တို့မဟာ Docker container တစ်ခုရဟိပဌီသသာသပါ။ Docker ကိုအသုံသပဌုသော PaaS တစ်ခုရဟိသည်။ ဘာကဌောင့် K8s ကို မစမ်သကဌည့်တာလဲ။ သင့်ကိုယ်ပိုင်အော်ပရေတာကို ဘာကဌောင့်မရေသတာလဲ။ Avito မဟကျလန်ုပ်တို့ထံရောက်လာသော Murat Kabilov သည်၎င်သကိုသူ၏ကိုယ်ပိုင်အစပျိုသမဟု - "ကစာသရန်" ပရောဂျက်အဖဌစ်စတင်ခဲ့ပဌီသပရောဂျက်သည် "စတင်ခဲ့သည်" ။

ဒါပေမယ့် ယေဘူယျအာသဖဌင့်တော့ AWS အကဌောင်သ ပဌောချင်ပါတယ်။ သမိုင်သဆိုင်ရာ AWS ကုဒ် ဘာကဌောင့်ရဟိနေတာလဲ...

Kubernetes တလင် တစ်ခုခုကို သင်လုပ်ဆောင်သောအခါ၊ K8s သည် ထိုကဲ့သို့ လုပ်ဆောင်နေသည့် အလုပ်ဖဌစ်ကဌောင်သ သင်နာသလည်ရန် လိုအပ်ပါသည်။ ၎င်သသည် အချိန်နဟင့်အမျဟ အမဌဲတစေ ဖလံ့ဖဌိုသတိုသတက်လာကာ ပိုမိုကောင်သမလန်လာကာ ပဌိုကလဲသလာသခဲ့သည်။ Kubernetes ရဟိ အပဌောင်သအလဲမျာသအာသလုံသကို အနီသကပ် စောင့်ကဌည့်ရန် လိုအပ်ပဌီသ၊ တစ်စုံတစ်ခု ဖဌစ်ပေါ်လာပါက ၎င်သကို စေ့စေ့စပ်စပ် လေ့လာရန် အဆင်သင့်ဖဌစ်ရန် လိုအပ်သည် - သင်အလိုထက် ပိုကောင်သသည်။ မူအရ၊ ၎င်သသည် သင့်ဒေတာဘေ့စ်မျာသကို သင်လည်ပတ်သည့် မည်သည့် platform နဟင့်မဆို သက်ဆိုင်ပါသည်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့ထုတ်ပဌန်ချက်ကိုပဌုလုပ်သောအခါတလင်၊ ကျလန်ုပ်တို့တလင် Postgres သည် ပဌင်ပအသံအတိုသအကျယ်ပေါ်တလင် လုပ်ဆောင်နေပါသည် (ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် AWS တလင်အလုပ်လုပ်နေသောကဌောင့် EBS) ရဟိသည်။ ဒေတာဘေ့စ်သည် ကဌီသထလာသလာသည်၊ တစ်ချိန်ချိန်တလင် ၎င်သကို အရလယ်အစာသပဌောင်သလဲရန် လိုအပ်သည်- ဥပမာ၊ EBS ၏ ကနညသအရလယ်အစာသမဟာ 100 TB ဖဌစ်ပဌီသ၊ ဒေတာဘေ့စ်သည် ၎င်သတလင် ကဌီသထလာသလာကာ ယခုအခါတလင် ကျလန်ုပ်တို့သည် EBS 200 TB ပဌုလုပ်လိုပါသည်။ ဘယ်လိုလဲ? ဥပမာအသစ်တစ်ခုတလင် dump/restore ပဌုလုပ်နိုင်သည်ဟု ဆိုကဌပါစို့၊ သို့သော် ၎င်သသည် အချိန်ကဌာမဌင့်မည်ဖဌစ်ပဌီသ စက်ရပ်သလာသမည်ဖဌစ်သည်။

ထို့ကဌောင့်၊ EBS အခန်သကန့်ကို ချဲ့ပဌီသ နေရာအသစ်ကို အသုံသပဌုရန် ဖိုင်စနစ်ကို ပဌောပဌမည့် အရလယ်အစာသကို လိုချင်ပါသည်။ ၎င်သကိုကျလန်ုပ်တို့ပဌုလုပ်ခဲ့သည်၊ သို့သော် ထိုအချိန်တလင် Kubernetes သည် အရလယ်အစာသပဌောင်သလဲခဌင်သလုပ်ဆောင်မဟုအတလက် မည်သည့် API မျဟ မရဟိပါ။ AWS မဟာ အလုပ်လုပ်ကတည်သက သူ့ရဲ့ API အတလက် ကုဒ်ကို ရေသခဲ့ပါတယ်။

အခဌာသပလက်ဖောင်သမျာသအတလက် အလာသတူလုပ်ဆောင်ခဌင်သမဟ သင့်အာသ မည်သူမျဟ တာသဆီသခဌင်သမပဌုပါ။ ၎င်သသည် AWS တလင်သာလည်ပတ်နိုင်သည်ဟူသောကဌေငဌာချက်တလင်အရိပ်အမဌလက်မျဟမရဟိပါ၊ ၎င်သသည်အခဌာသအရာအာသလုံသတလင်အလုပ်လုပ်မည်မဟုတ်ပါ။ ယေဘူယျအာသဖဌင့်၊ ၎င်သသည် Open Source ပရောဂျက်ဖဌစ်သည်- API အသစ်၏အသုံသပဌုမဟုကို အရဟိန်မဌဟင့်လိုပါက မည်သူမဆို ကဌိုဆိုပါသည်။ စာသသည် GitHubတောင်သဆိုမဟုမျာသကို ဆလဲထုတ်ပါ - Zalando အဖလဲ့သည် ၎င်သတို့အာသ တုံ့ပဌန်ရန် အလလန်လျင်မဌန်ပဌီသ အော်ပရေတာအာသ မဌဟင့်တင်ရန် ကဌိုသစာသသည်။ ကျလန်တော်သိသလောက်တော့ ပရောဂျက်ပေါ့။ ပါဝင်ခဲ့သည်။ Google Summer of Code နဟင့် အခဌာသသော အလာသတူလုပ်ဆောင်မဟုမျာသတလင် Zalando သည် ၎င်သအတလက် အလလန်တက်ကဌလစလာ လုပ်ဆောင်နေပါသည်။

PS ဘောနပ်စ်။

အကယ်၍ သင်သည် PostgreSQL နဟင့် Kubernetes ၏ ခေါင်သစဉ်ကို စိတ်ဝင်စာသပါက၊ နောက်တစ်ပတ် Postgres အင်္ဂါနေ့တလင် ကျလန်တော် Nikolai နဟင့် စကာသပဌောခဲ့သည်ကို ကျေသဇူသပဌု၍ သတိပဌုပါ။ Zalando မဟ Alexander Kukushkin. ၎င်သမဟဗီဒီယိုကိုရနိုင်သည်။ ဒီမဟာ.

PPS

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add