# 01 -Understanding the Google Cloud Resource Hierarchy

### Google Cloud’s Resource Hierarchy

Google Cloud ၏ resource hierarchy တွင် အောက်ခြေမှစတင်၍ အဆင့်လေးဆင့်ပါဝင်ပြီး ၎င်းတို့မှာ resources, projects, folders, and an organization node တို့ ဖြစ်ကြသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742672844849/d681e5c5-cd1d-4ef1-8b45-844096534211.png align="left")

ပထမအဆင့်တွင် virtual machines များ၊ Cloud Storage buckets များ၊ BigQuery ရှိ tables များ သို့မဟုတ် Google Cloud အတွင်းရှိ အခြားမည်သည့်အရာကိုမဆို ကိုယ်စားပြုသည့် `resources` များရှိကြသည်။

ဒုတိယအဆင့်တွင် `projects` များရှိပြီး `resources` များကို `projects` များအဖြစ် စုစည်းထားသည်။

တတိယအဆင့်တွင် `projects` များကို `folders` များ သို့မဟုတ် `subfolders` များအဖြစ် စုစည်းနိုင်သည်။

ထို့နောက် အပေါ်ဆုံးအဆင့်တွင် organization node တစ်ခုရှိပြီး ၎င်းသည် `organization` အတွင်းရှိ `projects` များ၊ `folders` များနှင့် `resources` အားလုံးကို လွှမ်းခြုံထားသည်။

ဤ Google Cloud ၏ resource hierarchy အဆင့်ဆင့်ဖွဲ့စည်းပုံကို နားလည်ရန် အလွန်အရေးကြီးပါသည်၊ အကြောင်းမှာ ၎င်းသည် Google Cloud ကို အသုံးပြုသောအခါ policies မူ၀ါဒတွေကို (စီမံခန့်ခွဲခြင်းနှင့် လက်တွေ့အသုံးချခြင်း) တို့နှင့် တိုက်ရိုက်သက်ဆိုင်နေသောကြောင့်ဖြစ်သည်။

`Policies` များကို projects, folders, and an organization node အဆင့်များတွင် သတ်မှတ်နိုင်သည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742675041867/55c15a8b-e7e5-45ed-961c-300f7b40ae27.png align="left")

အချို့သော Google Cloud services များသည် individual resources များပေါ်တွင် `policies` များကို အသုံးပြုခွင့်ပေးသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742674755476/e5e85129-c219-48c3-978b-939a40d4f456.png align="left")

`Policies` များသည် inherited downward အနေဖြင့် အောက်သို့ အမွေဆက်ခံပါသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742675250373/89351e45-fa01-4720-95c9-7571f455871c.png align="left")

ဆိုလိုသည်မှာ သင်သည် `folder` တစ်ခုတွင် `policy` တစ်ခုကို အသုံးချပါက ထို `folder` အတွင်းရှိ `project` အားလုံးတွင်ပါ အသုံးချမည်ဖြစ်သည်။

Resource hierarchy ဖွဲ့စည်းပုံ၏ ဒုတိယအဆင့်ဖြစ်သော `projects` များကို အသေးစိတ်ကြည့်ကြပါစို့။ projects များသည် Google Cloud services များကို `enabl`e ဖွင့်ပြီး အသုံးပြုရန်အတွက် အခြေခံဖြစ်သည်၊ ဥပမာ managing APIs, enabling billing, adding and removing collaborators, and enabling other Google services တို့ကို enable ဖွင့်ပေးခြင်းတို့ ပါဝင်သည်။

Project တစ်ခုစီသည် organization node တစ်ခုအောက်တွင် သီးခြား entity တစ်ခုဖြစ်ပြီး

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742676699839/5b05bae2-c361-498a-85dd-5bb147e9cea5.png align="left")

`resource` တစ်ခုစီသည် project တစ်ခုနှင့်သာ သက်ဆိုင်သည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742676782413/4af4bc4a-bbe3-4e3e-8ac3-e3a53617ae87.png align="left")

Projects များသည် သီးခြားငွေတောင်းခံခြင်းနှင့် စီမံခန့်ခွဲခြင်းများပြုလုပ်နိုင်သောကြောင့် မတူညီသော ပိုင်ရှင်များနှင့် အသုံးပြုသူများ ရှိနိုင်သည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742676913027/362255b9-8400-41ff-8c02-fc250a678d5d.png align="left")

Google Cloud project တစ်ခုစီတွင် သတ်မှတ်ဖော်ပြထားသော `Project ID, Project name and Project number` တို့ရှိသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742677092644/ccc25157-1881-4a78-914c-ecab4f45ebdc.png align="left")

Project ID သည် Google မှ သတ်မှတ်ပေးသော Globally identifier တစ်ခုဖြစ်ပြီး ဖန်တီးပြီးနောက် ပြောင်းလဲ၍မရပါ။ ၎င်းတို့ကို ပြောင်းလဲ၍မရသော (immutable) အဖြစ် ရည်ညွှန်းပါသည်။ Project ID များကို မတူညီသော contexts များတွင် အသုံးပြုပြီး Google Cloud အား အတိအကျ လုပ်ဆောင်ရမည့် project ကို အသိပေးရန်အတွက် ဖြစ်သည်။ ဆိုလိုတာက Google Cloud မှာ projects တွေ အများကြီးရှိနေနိုင်တယ်။ အဲဒီထဲက ဘယ် project မှာ အလုပ်လုပ်မလဲဆိုတာ Google Cloud ကို အတိအကျ သိအောင် ပြောပြဖို့ Project ID ဆိုတာကို သုံးတယ်။ ဥပမာ၊ မတူညီတဲ့ အလုပ်တွေ ဒါမှမဟုတ် အကြောင်းအရာတွေမှာ (ဥပမာ၊ app တစ်ခုဖန်တီးတာ၊ ဒေတာသိမ်းတာ စသဖြင့်) ဘယ် project ကို ရည်ညွှန်းမှာလဲဆိုတာ ရှင်းရှင်းလင်းလင်း သိအောင် သတ်မှတ်ပေးဖို့ ဒီ ID ကို အသုံးပြုတာပါ။

Project name များသည် အသုံးပြုသူမှ ဖန်တီးထားခြင်းဖြစ်သည်။ ၎င်းတို့သည် ထူးခြားရန်မလိုဘဲ အချိန်မရွေး ပြောင်းလဲနိုင်သောကြောင့် ပြောင်းလဲ၍မရသော (immutable) မဟုတ်ပါ။

Google Cloud သည် project တစ်ခုစီကို ထူးခြားသော project number တစ်ခု သတ်မှတ်ပေးပါသည်။ ဤ Google မှ generated ပြုလုပ်သော numbers များတည်ရှိကြောင်း သိရှိထားရမည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742678044780/285eed79-e5ff-4ebc-91f1-d5cbf49bc894.png align="left")

Google Cloud ၏ `Resource Manager tool` သည် သင့် projects များကို pro-grammatically အရ စီမံခန့်ခွဲရန် ကူညီပေးရန် ဒီဇိုင်းထုတ်ထားသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742678267768/35064417-1895-46fe-adcb-c2a6885bee4d.png align="left")

၎င်းသည် အကောင့်တစ်ခုနှင့် ဆက်စပ်နေသော projects အားလုံး၏ စာရင်းကို စုဆောင်းနိုင်သော၊ ပရောဂျက်အသစ်များ ဖန်တီးနိုင်သော၊ ရှိပြီးသား ပရောဂျက်များကို အပ်ဒိတ်လုပ်နိုင်သော နှင့် ပရောဂျက်များကို ဖျက်နိုင်သော API တစ်ခုဖြစ်သည်။ ၎င်းသည် ယခင်က ဖျက်ခဲ့သော ပရောဂျက်များကိုပင် ပြန်လည်ရယူနိုင်ပြီး RPC API နှင့် REST API မှတဆင့် ဝင်ရောက်အသုံးပြုနိုင်သည်။

Resource hierarchy ဖွဲ့စည်းပုံ၏ တတိယအဆင့်မှာ folders များဖြစ်သည်။ Folders များသည် ရွေးချယ်လိုက်သော granularity အဆင့်တွင် resources အတွက် policies များ ချမှတ်လို့ရတယ်၊ သတ်မှတ်နိုင်တယ်။ ဥပမာ၊ သင့်မှာ projects တွေ အများကြီးရှိတယ်ဆိုပါစို့၊ အဲဒါတွေကို သပ်သပ်စီထားဖို့ Folders တွေ ဖန်တီးပြီး စုစည်းလို့ ရတယ်။

“Granularity အဆင့်” ဆိုတာက ဘယ်လောက်ထိ အသေးစိတ် ခွဲခြားသတ်မှတ်ချင်လဲ ဆိုတဲ့ အတိုင်းအတာကို ဆိုလိုတာပါ။ ဆိုလိုတာက သင်ကိုယ်တိုင် ရွေးချယ်လိုက်တဲ့ အဆင့်မှာ (ဥပမာ၊ အကြမ်းဖျင်းပဲ သတ်မှတ်မလား၊ ဒါမှမဟုတ် အသေးစိတ်ထိ သတ်မှတ်မလား) Folders တွေကို အသုံးပြုပြီး resources အတွက် policies တွေ ချမှတ်လို့ ရတယ်၊ သတ်မှတ်လို့ရတယ် ဆိုတဲ့ သဘောပါ။

Folder တစ်ခုရှိ resources များသည် ထို folder သို့ သတ်မှတ်ထားသော policies များနှင့် ခွင့်ပြုချက်များကို အမွေဆက်ခံပါသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742678845524/6d4ee876-2b70-4098-a4ef-f70b67328db5.png align="left")

folder တစ်ခုတွင် projects များ၊ အခြား folders များ (သို့မဟုတ်) နှစ်ခုလုံးပေါင်းစပ်ထားနိုင်သည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742679931431/d3cc28b4-250a-45b9-b5da-9bface479de7.png align="left")

သင်သည် Folders များကို အသုံးပြု၍ organization တစ်ခုအောက်တွင် projects များကို အဆင့်ဆင့် စုစည်းနိုင်သည်။ ဥပမာအားဖြင့် သင့်အဖွဲ့အစည်းတွင် ဌာနများစွာ ပါဝင်နိုင်ပြီး ဌာနတစ်ခုစီတွင် ၎င်းတို့၏ သီးသန့် Google Cloud အရင်းအမြစ်များ ရှိနိုင်သည်။ Folders များသည် ဤအရင်းအမြစ်များကို ဌာနအလိုက် စုစည်းပေးနိုင်စေသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742680055477/41dd918b-5371-48a2-a04e-2f21be361b94.png align="left")

Folders များသည် အဖွဲ့များအား စီမံခန့်ခွဲမှု အခွင့်အရေးများကို လွှဲအပ်ပေးနိုင်သည့် စွမ်းရည်ကိုလည်း ပေးစွမ်းပြီး ထိုအဖွဲ့များအနေဖြင့် သီးသန့်လွတ်လပ်စွာ လုပ်ဆောင်နိုင်စေသည်။

ယခင်က ဖော်ပြခဲ့သည့်အတိုင်း folder တစ်ခုရှိ resource များသည် ထို folder မှ policies and permissions များကို အမွေဆက်ခံပါသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742681352672/9311c9d5-85ca-4f9d-b47b-dd7d904c1e95.png align="left")

ဥပမာအားဖြင့် အဖွဲ့တစ်ခုတည်းမှ စီမံခန့်ခွဲသော မတူညီသော projects နှစ်ခုရှိပါက ၎င်းတို့တွင် တူညီသော ခွင့်ပြုချက်များရှိစေရန် ဘုံ folder တစ်ခုထဲသို့ policies များ ထည့်နိုင်သည်။ ထပ်ခါတလဲလဲ policies များကို projects နှစ်ခုစလုံးတွင် ထည့်သွင်းခြင်းဟာ အလုပ်ရှုပ်ပြီး အမှားအယွင်းများ ဖြစ်ပေါ်လွယ်နိုင်ပါတယ်။ 

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742681640755/e48045dd-fbd6-412b-aca6-0753916f24cf.png align="left")

Folders များကို အသုံးပြုရန် သင့်တွင် Organization Node တစ်ခု ရှိရမည်ဖြစ်ပြီး ၎င်းသည် Google Cloud’s resource hierarchy တွင် အမြင့်ဆုံးဖြစ်သည်။ ထိုအကောင့်နှင့် ချိတ်ဆက်ထားသော အရာအားလုံးသည် ဤ Node အောက်တွင် ရှိပြီး ၎င်းတွင် Folders၊ ပရောဂျက်များ၊ နှင့် အခြားအရင်းအမြစ်များ ပါဝင်သည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742682015538/3387dfb7-0225-4355-b0d7-2e34740deab6.png align="center")

**Organization node** နှင့် ဆက်စပ်နေသော special roles များရှိပါသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742682630363/7135b912-1fdc-427a-acd2-cf08a11b1e42.png align="left")

**Organization Policy Administrator**

* ဤ role ကို သတ်မှတ်ခြင်းဖြင့်၊ policies များကို ပြောင်းလဲနိုင်သူများကို ကန့်သတ်နိုင်ပါသည်။
    
* ဤ role ရှိသူများသာ policies များကို ပြင်ဆင်နိုင်မည်ဖြစ်ပါသည်။
    

**Project Creator Role**

* ဤ role ကို သတ်မှတ်ခြင်းဖြင့်၊ မည်သူများ projects များကို ဖန်တီးနိုင်သည်ကို ထိန်းချုပ်နိုင်ပါသည်။
    
* ဤ role ရှိသူများသာ projects များကို ဖန်တီးနိုင်ပြီး၊ ငွေကြေးသုံးစွဲနိုင်မည်ဖြစ်ပါသည်။
    

**Organization Node ဖန်တီးခြင်း**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742682769705/8690b799-0e03-4070-8f2c-e39ca655b479.png align="left")

* **Google Workspace Customer** - သင့်ကုမ္ပဏီသည် Google Workspace customer ဖြစ်ပါက၊ Google Cloud projects များသည် အလိုအလျောက် organization node နှင့် ချိတ်ဆက်သွားမည်ဖြစ်ပါသည်။
    
* **Cloud Identity** - Google Workspace customer မဟုတ်ပါက၊ Cloud Identity (Google ၏ identity, access, application, နှင့် endpoint management platform) ကို အသုံးပြု၍ organization node တစ်ခုကို ဖန်တီးနိုင်ပါသည်။
    

**Organization Node ဖန်တီးပြီးနောက်**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742682853532/91a52057-cc99-4fa8-be9c-bb876037955e.png align="center")

* **Projects and Billing Accounts** - Domain အတွင်းရှိ မည်သူမဆို projects နှင့် billing accounts များကို ဖန်တီးနိုင်မည်ဖြစ်ပါသည်။
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1742682935176/c233370a-fe86-4453-8b5b-046816e74953.png align="center")

* **Folders and Projects** - Organization node အောက်တွင် folders များကို ဖန်တီးနိုင်ပြီး၊ projects များကို ထည့်သွင်းနိုင်ပါသည်။
    
* **Children** - Folders နှင့် projects များသည် organization node ၏ “children” အဖြစ် သတ်မှတ်ပါသည်။
